Re[2]: мультипользовательские процессы http сервера

Pavel V. pavel2000 at ngs.ru
Thu Dec 18 23:29:43 MSK 2008


Здравствуйте, 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 at ngs.ru






More information about the nginx-ru mailing list