【问题标题】:Yii2 app update deployment to shared hostYii2 应用更新部署到共享主机
【发布时间】:2015-11-03 22:12:10
【问题描述】:

我的场景是:我正在使用 yii2 开发我的第一个非玩具应用程序。我在可以通过 ssh 访问的开发服务器上执行此操作。最终我不得不将应用程序部署到我客户的服务器上,结果证明这是一个没有 ssh 访问权限的裸主机。

第一次部署没问题,我下载了所有东西,然后把所有东西上传到另一台服务器上,更改配置文件等等。

从那天起,每个版本的部署都很痛苦。每次我通过 composer 安装一些新的插件/小部件/包时,我都无法使其在生产服务器上运行。总是有损坏的包,致命的错误等等。经过一番勇敢的战斗,我最终投降了,从生产服务器中删除所有内容并从头开始上传,这不是很方便。

问题是:正确部署我的更新的步骤是,仅复制所需的文件以使包在第一次尝试时就可以工作?需要 composer.json 吗?作曲家锁? vendor 文件夹是否足够? assets 文件夹是否需要每次都复制,或者我可以假设它们是固定的,我只需要上传新的?

【问题讨论】:

  • 没有 SSH 访问权限?我建议选择其他主机。
  • 恐怕无论是我的决定还是我的权力都没有

标签: yii2 composer-php packages continuous-deployment


【解决方案1】:

您的托管情况非常不幸。希望您可以说服您的客户切换到具有 shell 访问权限的托管包。

您可以(并且可能应该)在部署时从/backend/web/assets/backend/web/runtime/frontend/web/assets/frontend/web/runtime 中删除所有文件,而不是同步。无论如何,这些文件都是临时的。

Composer 的 composer.jsoncomposer.lock 不相关,因为您没有在主机上运行 composer。

您应该同步vendor 目录。请记住,那里的某些文件确实会发生变化(autoload.php 等),因此您不能只上传服务器上不存在的文件,您需要同步。

yii2 guide 中还有一个关于部署到共享主机的页面。

P.S.:您也可以尝试将composer.phar 上传到您的目录并使用exec 从php 运行composer。另外,尝试安装一个 php web shell。

【讨论】:

  • 完全回答了我的问题。特别有用的是assets是临时的,特别是通过exec使用composer的想法,我一定会试一试
  • 要么,要么只是获得一些像样的托管:)
猜你喜欢
  • 2015-05-20
  • 2015-10-31
  • 2018-06-05
  • 2020-09-30
  • 2019-09-25
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
  • 2018-12-02
相关资源
最近更新 更多