Yii2 应用程序更新部署到共享主机

Yii2 app update deployment to shared host

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

第一次部署没问题,我在另一台服务器上下载并上传所有内容,更改配置文件等等。

从那天开始,每个版本的部署都很痛苦。每次我通过作曲家安装一些新的 plugin/widget/package 时,我都无法使其在生产服务器上运行。总是有破包、致命错误等等。一番激战后我投降了,删除了生产服务器的所有内容,然后从头开始上传,这不是很方便。

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

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

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

作曲家的 composer.jsoncomposer.lock 不相关,因为您不是您主机上的 运行 作曲家。

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

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

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