Symfony 5.4.54 必须依赖 Nginx + PHP-FPM 部署,核心是确保环境一致性、public/ 为唯一 Web 入口、PHP-FPM 正确通信及权限与缓存配置到位。

直接用 Symfony 5.4.54 搭建应用并部署到 Nginx,关键不在“版本号有多新”,而在于环境一致性、静态资源路径处理和 PHP-FPM 的正确对接。5.4.54 是 Symfony 5.x 系列的后期维护版本(LTS 支持到 2025 年底),它稳定、兼容性好,但默认不带内置服务器,必须依赖 Web 服务器如 Nginx + PHP-FPM 才能对外提供 HTTP 服务。
确认基础运行环境
部署前务必验证三件事:
-
PHP 版本 ≥ 7.2.5:Symfony 5.4 要求最低 PHP 7.2.5,推荐使用 PHP 7.4 或 8.0(需确保所有扩展启用,特别是
mbstring、intl、xml、pdo_mysql或pdo_pgsql) -
Composer 可用且已初始化项目:用
composer create-project symfony/website-skeleton myapp "5.4.54"创建项目,避免用过时的 Symfony Installer -
Nginx 和 PHP-FPM 已安装并可通信:Ubuntu 上常用
sudo apt install nginx php-fpm;确认php-fpm服务正在运行(systemctl status php7.4-fpm或对应版本)
Nginx 配置要点(适配 Symfony 5.4)
不能直接把整个项目目录暴露给 Nginx——public/ 才是唯一应被 Web 访问的入口。典型 server 块配置如下:
(保存为 /etc/nginx/sites-available/myapp,再软链到 sites-enabled)
server {
listen 80;
server_name app.local; # 替换为你的真实域名或测试域名
root /var/www/myapp/public;
index index.php;
<pre class='brush:php;toolbar:false;'>location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 注意匹配你的 PHP-FPM socket 路径
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
internal;
}
location ~ \.php$ {
return 404;
}
location ~ /\.(env|htaccess|htpasswd|git|svn|hg|bzr) {
deny all;
}}
配置后执行:sudo nginx -t && sudo systemctl reload nginx
PHP-FPM 与 Symfony 运行模式适配
Symfony 5.4 默认启用 OPcache 和 APCu(用于缓存元数据),但需确保 PHP-FPM 的配置支持:
- 检查
/etc/php/7.4/fpm/php.ini中opcache.enable=1、opcache.validate_timestamps=0(生产环境建议设为 0,开发环境可设为 1) - 在
php-fpm.d/www.conf中确认clear_env = no,否则 .env 变量可能无法加载 - 设置
environment=prod(非 dev),并在部署后执行:APP_ENV=prod APP_DEBUG=0 php bin/console cache:warmup --no-interaction
权限与部署流程(最小可行步骤)
避免用 root 运行应用,也别让 Nginx 以 www-data 用户写 cache/log:
- 将项目目录归属设为部署用户(如
deploy),Nginx 用户仅需读取权限:sudo chown -R deploy:www-data /var/www/myappsudo chmod -R 755 /var/www/myappsudo chmod -R 775 /var/www/myapp/var/cache /var/www/myapp/var/log - 每次更新代码后,执行:
APP_ENV=prod composer install --no-dev --optimize-autoloaderAPP_ENV=prod php bin/console assets:install --symlink(如有前端资产) - 日志路径建议统一指向
/var/log/myapp/,并在config/packages/prod/monolog.yaml中配置文件落盘
整个过程不复杂但容易忽略细节:Nginx 只代理 public/index.php、PHP-FPM socket 路径要对得上、.env 文件权限不能太松、缓存目录需可写。走完这四步,你的 Symfony 5.4.54 应用就已在 Nginx 上稳定跑起来了。


















