You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在主机上无需第三方应用部署Symfony REST API项目?

Symfony API 无第三方应用部署步骤

前置环境检查

主机必须满足:

  • 对应Symfony版本的PHP(例如Symfony 6+需要PHP 8.1+)
  • 启用必要PHP扩展:mbstring、xml、ctype、iconv、intl、pdo_mysql(根据数据库类型调整)
  • 服务器开启URL重写(Apache的mod_rewrite或Nginx的rewrite规则)

1. 本地代码预准备

  • 生成生产环境依赖:
    composer install --no-dev --optimize-autoloader
    
  • 清理并生成生产环境缓存:
    php bin/console cache:clear --env=prod
    
  • 调整.env配置:设置APP_ENV=prod、APP_DEBUG=0,填写正确的数据库连接信息(敏感信息建议部署后在主机直接修改,避免提交到版本库)

2. 上传代码到主机

仅上传必要文件:

  • bin/、config/、public/、src/、vendor/
  • .env、composer.json、composer.lock
  • 无需上传:.git/、tests/、本地生成的var/cache/(主机将重新生成)

权限配置

给项目目录设置服务器可读写权限(以Apache为例,服务器用户通常为www-data):

chown -R www-data:www-data var public
chmod -R 775 var public

3. 服务器根目录配置

Apache 配置

将网站根目录指向项目的public/文件夹,虚拟主机配置示例:

<Directory /path/to/your/project/public>
    AllowOverride All
    Require all granted
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</Directory>

(若主机支持.htaccess,Symfony默认的public/.htaccess已包含重写规则,确保开启AllowOverride All)

Nginx 配置

根目录指向public/,添加路由重写规则:

server {
    listen 80;
    server_name your-domain.com;
    root /path/to/your/project/public;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ ^/index\.php(/|$) {
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 替换为你的PHP-FPM路径
        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;
    }
}

4. 主机最终操作

  • 进入项目目录,预热生产环境缓存:
    php bin/console cache:warmup --env=prod
    
  • 若有数据库迁移,执行:
    php bin/console doctrine:migrations:migrate --env=prod --no-interaction
    

常见问题排查

  • 500错误:查看主机服务器日志(Apache的error.log/Nginx的error.log)或Symfony的var/log/prod.log
  • 权限报错:确认var/和public/目录服务器用户可读写
  • 依赖缺失:对照Symfony官方文档检查主机PHP扩展是否齐全

内容的提问来源于stack exchange,提问作者dashadow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:35:36