如何在没有SSH和CLI访问生产的情况下部署symfony项目

时间:2017-12-22 14:21:36

标签: php symfony

大多数托管服务提供商只能访问FTP。

是否可以/通常进行symfony项目(3.x或4.x)的本地安装,然后通过FTP上传并手动创建/更新数据库?

这个问题让我重新开始使用symfony。

谢谢!

2 个答案:

答案 0 :(得分:3)

这种情况并不理想,但可以做到。

实际上,我们正在通过持续集成服务器构建所有内容,并且只有一个zip文件,其中包含可以生产的所有内容,以便部署到AWS Beanstalk,因此我们可以将部署过程从几分钟加速到几秒钟。

<强>方案

以前的制作版:/ var / www / mywebsite-old

当前生产版本:/ var / www / mywebsite

下一个制作版:/ var / www / mywebsite-new

准备构建

您需要离线准备应用程序:

  • set parameters.yml
  • Environtment vars - 我认为在$ parameter-&gt; resolve()
  • 期间将它们复制到缓存中
  • composer install
  • composer dump-autoload
  • cache:clean --env prod
  • 删除日志
  • assets:install --env prod

上传构建

完成&#34;构建&#34;您将所有内容上传到您的服务器,而不是非实时位置。在这个阶段,您的项目非常繁重,因此上传可能需要一些时间,或者可以部分上传,因此您不希望破坏生产服务器。 在var / cache和var / logs var / sessions以及上传文件夹中设置正确的文件夹权限。

示例:/ var / wwww / mywebsite-new /

交换构建

Capistrano有一个非常有趣的模型。

  1. 将/ var / www / mywebsite重命名为/ var / www / mywebsite-old
  2. 将/ var / www / mywebsite-new重命名为/ var / www / mywebsite
  3. 运行学说迁移

    您有一个本地设置来进行构建,如果您必须进行一些数据库迁移,那么运行它们就连接到生产数据库

    最终建议

    这可能是出现问题的很多步骤,我建议您自动执行升级和降级(将旧版本重命名为生产版)的所有内容,以防万一出错。

    选项:

    • Bash脚本/ Makefile
    • Capistrano的
    • 部署

答案 1 :(得分:0)

不,不幸的是,这是不可能的 即使您通过FTP复制文件,您也会遇到执行shell命令的问题,例如:

php bin/console cache:warmup --env=prod

因此 - 不要这样做......这是痛苦和不正确的......