Laravel на AWS: проблема с правами доступа к файлу журнала - PullRequest
0 голосов
/ 18 октября 2019

Я очень расстраиваюсь, когда развертываю веб-приложение Laravel в Amazon Web Services Elastic Beanstalk. Иногда это нормально, но примерно в 50% случаев я получаю следующее падение:

Поток или файл "/ var / app / current / storage / logs / laravel-2019-10-18.log "не удалось открыть: не удалось открыть поток: отказано в разрешении

(где дата - текущая дата.)

Конечно, когда я SSH на сервер яможно увидеть, что разрешения для этого конкретного файла журнала установлены на root:root.

-rw-r--r-- 1 root   root   3400 Oct 18 13:39 laravel-2019-10-18.log
-rw-rw-r-- 1 webapp webapp    0 Oct 18 13:39 laravel.log

Если я изменю владельца на webapp:webapp, приложение снова будет работать нормально. Аналогичным образом, если я удалю файл журнала, сайт снова будет работать нормально ... до следующего развертывания.

Мой вопрос заключается в том, как я могу предотвратить это. Отключить все журналы? Изменить разрешения во время развертывания? Только потому, что для debug установлено значение "true"?

Вот мой deploy.config. Что-то не так или отсутствует?

container_commands:
  01-migrations:
    command: "php artisan migrate --force"
  02-import:
    command: "php artisan import:initial-data"

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/99_make_storage_writable.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      echo "Making /storage writeable..."
      chmod -R 755 /var/app/current/storage

      if [ ! -f /var/app/current/storage/logs/laravel.log ]; then
          echo "Creating /storage/logs/laravel.log..."
          touch /var/app/current/storage/logs/laravel.log
          sudo chown -R webapp:webapp /var/app/current/storage/logs
          sudo chmod -R ug+w /var/app/current/storage/logs

      fi


#https://serverfault.com/a/669547/24863
  "/opt/elasticbeanstalk/hooks/appdeploy/post/99_restart_workers.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      echo "Spawn worker..."
      nohup php /var/app/current/artisan queue:work >/dev/null 2>&1 &

  "/opt/elasticbeanstalk/tasks/publishlogs.d/laravel-logs.conf":
    mode: "000755"
    owner: root
    group: root
    content: |
      /var/app/current/storage/logs/*.log

#https://stackoverflow.com/a/38751749/199700
  "/etc/httpd/conf.d/https_redirect.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
      RewriteEngine on
      <If "-n '%{HTTP:X-Forwarded-Proto}' && %{HTTP:X-Forwarded-Proto} != 'https'">
      RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
      </If>

#https://stackoverflow.com/a/38600025/199700
  "/etc/php.d/project.ini" :
    mode: "000644"
    owner: root
    group: root
    content: |
      upload_max_filesize=10M
      post_max_size=32M

1 Ответ

0 голосов
/ 18 октября 2019

Обычно это происходит потому, что вы запускаете команду php artisan, которая записывает в журналы как root. Взглянув на начальное содержимое laravel-2019-10-18.log, вы поймете, какая команда задействована.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...