django + wsgi + suexec + userdir + apache?
У меня есть веб-сайт django 1.1, который я хочу запустить в wsgi (так как это, кажется, рекомендуемое развертывание на apache). Я хочу, чтобы он работал как пользователь www (apache работает как www-data). В идеале мне бы хотелось, чтобы это работало как с http://hostname/~www/ (~ www / public_html), так и с http://virtualhostname/. Я также хочу, чтобы это работало для других пользователей, которые могут позже использовать wsgi. Могу ли я сделать это? Я смотрел на документы, пытаясь понять, с чего начать, но у меня возникают проблемы при объединении userdir и wsgi, чтобы я мог запустить ~ xxx / public_html / index.wsgi от имени пользователя xxx для каждого пользователя xxx.
2 ответа
Моя конкретная проблема была решена следующим образом:
В блоке VirtualHost:
DocumentRoot /home/www/public_html WSGIDaemonProcess ~www user=www group=www
В userdir.conf:
RewriteEngine On RewriteCond %{REQUEST_URI} ^/~([^/]+) RewriteRule . - [E=URL_USER:~%1] WSGIProcessGroup %{ENV:URL_USER}
В ~www/public_html/.htaccess
Options +ExecCGI RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /~www/index.wsgi/$1 [QSA,PT,L] RewriteRule ^$ /~www/index.wsgi/$1 [QSA,PT,L]
И некоторые вещи, которые мне действительно не нужны:
dir.conf:
DirectoryIndex index.wsgi
wsgi.conf
AddHandler wsgi-script .wsgi
Для начала посмотрите на режим демона mod_wsgi. Это позволяет делегировать приложения WSGI для запуска в отдельных процессах демона. Затем эти процессы могут быть запущены от имени указанного пользователя без необходимости использования suxec. Увидеть:
http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide
Для исчерпания настроенного каталога UserDir, когда пользователь может контролировать, где монтируются приложения, вы не можете использовать WSGIScriptAlias, и вместо этого вам нужно использовать метод AddHandler для настройки mod_wsgi. Увидеть:
http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines
Директива UserDir неявно предоставляет директиву Alias, поэтому вам нужно только беспокоиться о директиве AddHandler и т. Д.
Однако обратите внимание, что из-за правил приоритета в Apache вы, вероятно, не сможете использовать WSGIScriptAlias в "/" для того же общего виртуального хоста, который может маскировать пользовательские каталоги. Просто означает, что вам нужно положиться на AddHandler с исправлением mod_rewrite, если он монтируется в корне сайта, как описано в последней части этого раздела документации.
Предлагаем вам использовать официальный список рассылки mod_wsgi для более подробной информации.