Где некорневое веб-приложение должно записать, что находится под человечностью журнала?

Xen сделает то, что Вы хотите.

Вам будет нужен Dom0, который является ОС, которая управляет целым шоу, но минимальная установка Linux сделает все, что Вы хотите.

1
задан 16 February 2013 в 20:57
2 ответа

Для этого нужен / dev / log . Вы можете настроить демон syslog для перенаправления сообщений из вашего приложения в любой файл, который вам нравится.

Из python это должно быть так же просто, как вызов syslog.syslog .

3
ответ дан 3 December 2019 в 17:10

Возможно, ваше приложение не должно работать как www-data . Создайте для него нового системного пользователя - - параметр system , если вы используете adduser - и поместите его файлы в папку / srv / yourapp . Затем вы можете создать для него каталог журналов, например / var / log / yourapp , или хранить журналы в / srv / yourapp / logs .

Таким образом, ваш веб-сервер будет работать как www-data , ваше приложение будет работать как yourapp , и вы сможете запустить оба из корневых. Например, при использовании nginx с опцией user www-data; в его конфигурации и запуске вашего приложения как приложения uWSGI (это сервер контейнера приложений) с соответствующим

uid = yourapp
gid = yourapp

в конфигурации .ini для yourapp в / etc / uwsgi / apps-enabled / . Конфигурация uWSGI отражает стиль конфигурации nginx. Вы создаете профили приложений в / etc / uwsgi / apps-available / и символически связываете их с / etc / uwsgi / apps-enabled / . Все остальное должно обрабатываться вашим дистрибутивом.

Насколько я могу судить, это канонический подход. По крайней мере, для веб-приложений Ubuntu и python. И это упрощает общее администрирование: сценарии запуска должны работать, как задумано, без каких-либо специальных изменений, обновления ничего не должны нарушать ... обычные преимущества.

В качестве еще более конкретного примера у меня есть вики MoinMoin, работающая как приложение uWSGI за nginx в Ubuntu.

С сайта nginx:

location = /wiki { return 301 /wiki/; }
location /wiki/ {
    gzip off;
    include uwsgi_params;
    uwsgi_param SCRIPT_NAME /wiki;
    uwsgi_modifier1 30;
    uwsgi_pass unix:/run/uwsgi/app/moin/socket;
}

Из uWSGI moin.ini:

[uwsgi]
uid = moin
gid = moin

plugins = python
wsgi-file = /usr/share/moin/server/moin.wsgi
master = true

chmod-socket = 666
processes = 1

со всеми остальными настройками по умолчанию ( usr / share / uwsgi / conf / default.ini для меня)

MoinMoin имеет своего отдельного пользователя

# grep moin /etc/passwd
moin:x:109:111::/srv/moin:/bin/false

и, поскольку он был установлен из репозитория, как и все остальное (nginx, uwsgi), оставшаяся конфигурация находится в / etc / moin / .

2
ответ дан 3 December 2019 в 17:10

Теги

Похожие вопросы