碰巧该项目的客户在没有 ssh 支持的情况下支付了托管费用,并且更新服务器上文件的唯一方法是使用 ftp。如果以前,使用 symfony,我可以执行 git pull 命令并在几分钟后以 prod 模式将所有文件获取到服务器,现在我每次更新文件都必须等待大约一个小时(并且有 100k他们)。
很想请教那些在部署symfony时使用ftp的人,这个过程如何自动化?在不每次都下载不必要的文件、分隔生产环境和开发环境等的意义上。
第二个问题:symfony 是如何理解它所处的环境的?以前用ssh,这个是自动配置的,现在ftp下载所有文件,还需要在什么地方指定环境?
实例化应用程序时,环境作为第一个参数显式传递。查看前端控制器的代码(通常这些是文件
app.php
并app_dev.php
位于文件夹中web
):使用控制台命令时,可以使用选项
--env
(默认值dev
)传递环境:或环境变量:
名称以 . 开头的变量
SYMFONY__
。会作为容器参数添加进来,参数的名字经过一系列的转换后就是环境变量的名字:SYMFONY__
将被删除,__
对替换为点字符.
Apache、Nginx 等 Web 服务器也可以设置环境变量。在文档中阅读更多内容
不。此外,值得仅部署与所需环境相关的文件。例如,文件 'web/app_dev.php、web/config.php、app/config/*_dev.yml、*_test.yml' 在生产环境中没有位置。排除开发依赖并优化自动加载也很有意义:
确保您不通过网络传输“额外”:前面提到的开发依赖项、测试、.git、svn 文件夹和应用程序本身和第三方模块的其他 VCS 工件、各种缓存文件、日志、文档 -产品中不需要所有这些。如果应用程序的依赖项不经常更新,那么不断地“拖”它们是没有意义的。
您还可以查看lftp或ncftp