php Laravel Elastic Beanstack在部署时没有现有目录错误

qvk1mo1f  于 2023-10-15  发布在  PHP
关注(0)|答案(1)|浏览(104)

我正在通过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"

我在部署中做错了什么?

rqenqsqc

rqenqsqc1#

我认为您的问题是将artisan config:cache作为容器命令运行。
如果这样做,Elastic Beanstalk将在部署过程中将文件移动到当前目录之前,在staging目录中运行该命令。这意味着您的存储路径被错误地缓存为暂存,如错误消息中所示。
相反,将其作为post deploy hook shell脚本添加到以下两个位置:

/.platform/hooks/postdeploy/cache.sh
/.platform/confighooks/postdeploy/cache.sh

#!/bin/bash

php artisan config:cache

php artisan route:cache

php artisan view:cache

通过添加这两个文件,该高速缓存将仅针对完全更新和环境配置变量的更新进行维护。

相关问题