我将laravel应用程序部署到AWS Elastic Beanstalk后,它给出了文件夹var/app/current/vendor
中缺少文件的错误...
该文件存在于我本地计算机上的app/vendor
内。在将本地应用程序部署到AWS之前,是否必须配置本地应用程序,以便它也能反映AWS'首选目录结构?
编辑:这是收到的错误:
ErrorException in ClassLoader.php line 412:
include(/var/app/current/vendor/composer/../symfony/http-foundation/Session/Storage/MetadataBag.php): failed to open stream: No such file or directory
答案 0 :(得分:7)
Elastic beanstalk首先在/var/app/ondeck
目录中设置应用程序,然后将其交换为/var/app/current
。
它们提供了一种方法来运行所有必要的脚本,如composer install
到.config文件来处理这类任务。
这是我的setup.config
文件:
commands:
composer_update:
command: export COMPOSER_HOME=/root && /usr/bin/composer.phar self-update
option_settings:
- namespace: aws:elasticbeanstalk:application:environment
option_name: COMPOSER_HOME
value: /root
container_commands:
01-install_dependencies:
command: "php /usr/bin/composer.phar install"
cwd: "/var/app/ondeck"
02-artisan_migrate:
command: "php artisan migrate --force"
cwd: "/var/app/ondeck"
leader_only: true
您可以将其保存在项目根目录的.ebextensions
目录中。
脚本正在做的是首先更新composer,运行composer install然后再进行artisan migrate。
最后,整个事物(以及供应商目录)随后被移动到/var/app/current
目录。
希望这会有所帮助,AWS文档页面中有更多信息:
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html
这篇文章" Laravel on AWS Elastic Beanstalk"
http://blog.goforyt.com/laravel-aws-elastic-beanstalk-dev-guide/