Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re[2]: мультипользовательские процессы http сервера
Здравствуйте, Slava.
Вы писали 18 декабря 2008 г., 21:57:07:
>>> И далее, выполнение всех http-запросов в пределах текущей сессии
>>> пользователя должно выполняться от имени этого >> пользователя.
> Если я правильно понял надо чтобы все процессы исполнялись от имени (uid)
> этого пользователя.
>
> Если пользователей немного и нужно чтобы обязательно чтобы worker-ы
> apache работали из-под пользователя, то я бы попробовал сделать на
> каждого пользователя свой instance apache (httpd.conf) с небольшим
> количеством воркеров. Сам апач установлен и настроен в единственном числе.
> Т.к. у каждого свой document_root и логи и порты у всех разные (я
> бы сделал например 8000+uid), то конфиг нужно генерить скриптиком.
> Авторизацию я бы возложил на nginx. В nginx-е придётся пошаманить
> чтобы proxy_pass проходил на нужный instalnce apache (localhost:порт).
>
Я поделал следующим образом:
Дебиан. имеется некоторая БД виртхостов. по ней происходит запуск и мониторинг
процессов апача.
апачи висят на порт 80, разделенные по хостам в 127.0.0.0/8. Алиасы при этом на
интерфейсе lo описывать не надо.
Порт 80 чтобы правильнее редиректы работали. Но тогда надо от рута апачи
исходно стартовать.
Либо запускать на 8000 порту уже от имени пользователя, но тогда надо как-то
скриптам фейковый порт отдавать.
сам апач настроен штатными пакетами. Штатные conf-файлы симлинками собраны в
нужные нам конфигурации.
Например имеются staticsite, modperl, modphp.
Примерно так:
директория configs/modperl/ содержит симлинки на файлы в
/etc/apache2/mods-available/:
alias.conf authz_user.load info.conf rewrite.load
alias.load autoindex.conf info.load rpaf.conf
auth_basic.load autoindex.load mime.conf rpaf.load
authn_file.load cgi.load mime.load setenvif.conf
authz_default.load dir.conf negotiation.conf setenvif.load
authz_groupfile.load dir.load negotiation.load status.conf
authz_host.load env.load perl.load status.load
Конфигурации также прописаны в БД для соответствующего пользователя. На основе
БД генерятся конф-файлы исходя из соответствующего шаблона конфига (для
виртхоста апача, виртхоста nginx, основной конфиг для самого апача ).
Шаблон апача содержит инклуды на configs/<configuration>
Загенеренные шаблоны далее раскладываются в соответствующие места.
В том числе и виртхост нжынкса кладется в папку /etc/nginx/sites-enabled,
откуда затем инклудится в основном конфиге.Апач запускается с указанием конфига
через -c. Конфиг (и вначале шаблон) содержит указание куда писать pid и лог,
имя и группу пользователя от которого крутиться. Шаблон нжынкса соответственно,
докрут для статики и айпи+порт апача куда проксировать динамику.
+ Всегда можно внести ручную правку в конфиги, если конечно понимать что это
потом автоматически нельзя обновить "если вдруг надо станет".
--
С уважением,
Pavel mailto:pavel2000@xxxxxx
|