Файлы журнала не доступны для записи
Я создаю сайт на основе Django с помощью Docker. У меня возникла проблема с управлением лог-файлами Gunicorn. С приведенным ниже скриптом сайт работает без проблем:
#!/usr/bin/env bash
cd personal_website
exec gunicorn personal_website.wsgi:application \
--name personal_website \
--bind 0.0.0.0:"${PROJECT_PORT}" \
--workers 3 \
"$@"
Вот что я вижу на терминале:
dev_website | [2022-01-21 16:36:17 +0000] [1] [INFO] Starting gunicorn 20.1.0
dev_website | [2022-01-21 16:36:17 +0000] [1] [DEBUG] Arbiter booted
dev_website | [2022-01-21 16:36:17 +0000] [1] [INFO] Listening at: http://0.0.0.0:8301 (1)
dev_website | [2022-01-21 16:36:17 +0000] [1] [INFO] Using worker: sync
dev_website | [2022-01-21 16:36:17 +0000] [11] [INFO] Booting worker with pid: 11
dev_website | [2022-01-21 16:36:17 +0000] [12] [INFO] Booting worker with pid: 12
dev_website | [2022-01-21 16:36:17 +0000] [13] [INFO] Booting worker with pid: 13
dev_website | [2022-01-21 16:36:17 +0000] [1] [DEBUG] 3 workers
Но когда я добавляю файлы регистрации:
#!/usr/bin/env bash
# Prepare log files and start outputting logs to stdout
touch ./logs/gunicorn.log
touch ./logs/gunicorn-access.log
cd personal_website
exec gunicorn personal_website.wsgi:application \
--name personal_website \
--bind 0.0.0.0:"${PROJECT_PORT}" \
--workers 3 \
--log-level=debug \
--error-logfile=./logs/gunicorn.log \
--access-logfile=./logs/gunicorn-access.log \
"$@"
Я вижу ошибку ниже:
dev_website | Error: Error: './logs/gunicorn.log' isn't writable [FileNotFoundError(2, 'No such file or directory')]
А сайт не может запуститься. Где ошибка? Я вижу оба файла в томе проекта
В своем сценарии bash вы сначала касаетесь (создаете) файлы журнала, а затем меняете рабочий каталог. Когда вы запускаете веб-сервер, файлы не располагаются относительно текущего рабочего каталога.
<Проблема была в том, что я искал файлы журналов в неправильной папке.
#!/usr/bin/env bash
# Prepare log files and start outputting logs to stdout
touch ./logs/gunicorn.log
touch ./logs/gunicorn-access.log
cd personal_website
exec gunicorn personal_website.wsgi:application \
--name personal_website \
--bind 0.0.0.0:"${PROJECT_PORT}" \
--workers 3 \
--log-level=debug \
--error-logfile=../logs/gunicorn.log \
--access-logfile=../logs/gunicorn-access.log \
"$@"