apache2 с django - невозможно записать в файл журнала - PullRequest
0 голосов
/ 09 января 2019

У меня запущен django на сервере apache2.

my settings.py выглядит так:

WSGI_APPLICATION = 'my_app.wsgi.application'
...

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
    'verbose': {
        'format': '%(levelname)s %(asctime)s %(module)s: %(message)s'
    }
},
'handlers': {
    'file': {
        'level': 'INFO',
        'class': 'logging.handlers.RotatingFileHandler',
        'filename': '../django.log',
        'formatter': 'verbose',
        'maxBytes': 1024 * 1024 * 5,  # 5 MB
        'backupCount': 5,
    },
},
'loggers': {
    'my_app': {
        'handlers': ['file'],
        'level': 'INFO',
        'propagate': True,
    },
},

}

Моя идея заключалась в создании журнала, в который будут записываться все компоненты моего приложения django, с уровнем INFO.

Проблема, с которой я сталкиваюсь, заключается в том, что при запуске сервера журнал создается с правами доступа root:

 ll ../django.log 
 -rw-r--r-- 1 root root 0 Jan  9 10:17 ../django.log

Итак, что происходит, когда я пытаюсь войти в систему:

/ вар / Журнал / apache2 / error.log

[Wed Jan 09 11:37:43.677755 2019] [:error] [pid 1457:tid 140554321598208] [remote 192.168.254.52:60257] ValueError: Unable to configure handler 'file': [Errno 13] Permission denied: '../django.log'

Я обнаружил эти проблемы: Отказано в доступе при записи файла журнала и Django: настройка эффективной системы ведения журнала для работающего веб-сайта .

и если я изменю права доступа к файлу, который будет принадлежать www-data , а не root , он будет работать.

Мой вопрос - где правильное место, чтобы установить это в производство? это должно изменить это вручную? может быть где-то в settings.py или apache2-config?

Я ищу лучшую практику ведения журнала django.

EDIT: ps aux | grep apache2 показывает:

root      1444  0.0  0.0  97916  7452 ?        Ss   13:22   0:00 /usr/sbin/apache2 -k start

ps aux | grep wsgi показывает:

www-data  1447  0.0  0.2 510528 23692 ?        Sl   13:22   0:00 (wsgi:name -k start

Спасибо!

1 Ответ

0 голосов
/ 09 января 2019

Заранее создайте папку журналов с разрешением www-data на сервере и сохраните путь к ней в переменной среды, используйте python's os.getenv('LOG_PATH') в файле settings.py, чтобы использовать путь.

...