我正在将一个相对简单的Laravel应用程序部署到AWS Elastic Beanstalk上。
在压缩之前,我会先准备Laravel应用程序的正常过程:
php artisan config:clear
php artisan route:clear
php artisan cache:clear
php artisan view:clear
我还要确保将所有.env
变量都设置为其生产值。
由于应用程序足够小,我倾向于将/vendor
和/node_modules
留在已上传的压缩应用程序包中,这样我就不必通过SSH进入实例来运行任何作曲家或npm命令。
我为ELB应用程序和环境选择了明显的选项:选择PHP配置,上传我的源包,并将根目录设置为/public
。
以上步骤大约有25%的时间起作用。 75%的情况下,该实例进入错误或严重状态,我必须尝试创建一个新环境。
我不确定出了什么问题,甚至不确定从哪里找到问题日志。 ELB日志区域中的日志仅显示诸如“应用未处于就绪状态时您无法请求日志”之类的信息,等等。
答案 0 :(得分:0)
事实证明,问题出在/node-modules
目录以及文件package.json
和package-lock.json
。原因是在部署时,Elastic Beanstalk试图执行npm update
或类似命令。
这些文件仅对于前端开发是必需的,不需要部署在服务器上。在开发中,使用webpack将它们编译为app.js,然后将其发布到S3。因此,这些前端开发文件都不需要在生产服务器上。
出于良好的考虑,我还排除了composer.json
和composer.lock
,因为在部署期间不需要运行composer update
。