我正在通过Github和Code Deploy将Laravel站点部署到AWS Elastic Beanstalk,并且我保留了有关权限或目录问题的错误,例如:
There is no existing directory at "/var/app/staging/storage/logs" and it could not be created: Permission denied
现在这个错误很容易修复,我只需要ssh进入服务器并运行
sudo php artisan config:cache
但这是不切实际的。我的.ebextensions/98-artisan.config文件包含以下内容:
container_commands:
01-no_dev:
command: "composer.phar install --optimize-autoloader"
02_set_directory:
command: "cd /var/www/html"
03_create_env:
command: "cp .env.empty .env"
04_popluate_env:
command: "/opt/elasticbeanstalk/bin/get-config environment | jq -r 'to_entries | .[] | \"\\(.key)=\\(.value)\"' > .env"
05-migrate:
command: "sudo php artisan migrate --no-interaction --force"
10-migrate:
command: "sudo php artisan key:generate --no-interaction --force"
11-migrate:
command: "sudo php artisan config:cache"
12_set_directory:
command: "cd /var/app/current/"
13-migrate:
command: "sudo php artisan key:generate --no-interaction --force"
14-migrate:
command: "sudo php artisan config:cache"
我在部署中做错了什么?
1条答案
按热度按时间rqenqsqc1#
我认为您的问题是将
artisan config:cache
作为容器命令运行。如果这样做,Elastic Beanstalk将在部署过程中将文件移动到当前目录之前,在staging目录中运行该命令。这意味着您的存储路径被错误地缓存为暂存,如错误消息中所示。
相反,将其作为post deploy hook shell脚本添加到以下两个位置:
/.platform/hooks/postdeploy/cache.sh
/.platform/confighooks/postdeploy/cache.sh
通过添加这两个文件,该高速缓存将仅针对完全更新和环境配置变量的更新进行维护。