我的场景是:我正在用yii2开发我的第一个非玩具应用程序。我在一个可以通过ssh访问的开发服务器上执行此操作。最终,我不得不将该应用程序部署到客户的服务器上,结果发现该服务器是一个没有ssh访问的裸主机。
第一次部署是可以的,我下载所有东西并上传到另一台服务器上,更改配置文件等等
从那天起的每一个版本部署都是痛苦的。每次我通过composer安装一些新的插件/小部件/包时,我都无法使其在生产服务器上运行。总是有坏包,致命错误等等。经过一场勇敢的战斗,我最终从生产服务器上删除了所有内容,然后从头开始上传,这不是很方便。
问题是:正确部署更新的步骤是什么?只复制所需的文件,以便在第一次尝试时使包正常工作?是否需要composer.json?composer.lock?供应商文件夹是否足够?资产文件夹是否每次都需要复制,或者我可以假设它们是固定的,我只需要上传新的?
您的托管情况非常不幸。希望你能说服你的客户改用一些可以访问shell的托管包。
部署时,您可以(也可能应该)从/backend/web/assets
、/backend/web/runtime
、/frontend/web/assets
和/frontend/web/runtime
中删除所有文件,而不是同步。不管怎样,这些文件都是临时的。
Composer的composer.json
和composer.lock
不相关,因为您没有在主机上运行Composer。
您应该同步vendor
目录。请记住,那里的一些文件确实发生了更改(autoload.php
等),因此您不能只上传服务器上不存在的文件,您需要同步。
yii2指南中还有一个关于部署到共享主机的页面。
附言:您也可以尝试将composer.phar
上传到您的目录,并使用exec
从php运行composer。此外,请尝试安装php-webshell。