我的情景是:我用yii2开发我的第一个非玩具应用程序。我在可以通过ssh访问的开发服务器上进行此操作。最终,我必须将应用程序部署到我的客户服务器,结果是一个没有ssh访问权限的裸托管服务器。
第一次部署没问题,我下载所有内容并上传其他服务器上的所有内容,更改配置文件等等。
从那天开始的每个版本部署都很痛苦。每次我通过composer安装一些新的插件/小部件/包我都无法在生产服务器上运行。总有破损的包裹,致命的错误等等。在一场勇敢的战斗之后,我最终获得了生存,删除了生产服务器上的所有内容并从头开始上传,这不是很方便。
问题是:正确部署我的更新的步骤是什么,只复制所需的文件,以便在第一次尝试时使包工作? composer.json需要吗? composer.lock? 供应商文件夹是否足够?每次都需要复制资产文件夹,或者我可以假设它们已修复,我只需要上传新文件夹吗?
答案 0 :(得分:2)
您的托管情况非常不幸。希望您能说服您的客户切换到一些具有shell访问权限的托管包。
在部署时,您可以(并且可能应该)从/backend/web/assets
,/backend/web/runtime
,/frontend/web/assets
和/frontend/web/runtime
删除所有文件,而不是同步。这些文件无论如何都是暂时的。
作曲家的composer.json
和composer.lock
不相关,因为你没有在你的托管上运行作曲家。
您应该同步vendor
目录。请记住,那里的某些文件会发生变化(autoload.php
等等),因此您不能只上传服务器上不存在的文件,您需要同步。
在部署到共享主机的yii2 guide中还有一个页面。
P.S。:您还可以尝试将composer.phar
上传到您的目录,并使用exec
从php运行composer。另外,尝试安装php web shell。