О развертывании проекта Django на Apache + mod_python - PullRequest
1 голос
/ 22 июня 2010

У меня были проблемы с развертыванием проекта Django - Review Board.Я сделал то, что говорится в документе, но получил ошибку «Ошибка 403» при попытке зайти на сайт.Возможно, мне следовало бы опубликовать этот вопрос на serverfault.com, но я думаю, что это может помочь людям написать / развернуть приложение Django в целом.

Вот установка:

Я установил Review Board в /data/www/reviewboard:

.
|-- conf
|   |-- apache-modpython.conf
|   |-- search-cron.conf
|   `-- settings_local.py
|-- db
|   `-- reviewboard.db
|-- htdocs
|   |-- errordocs -> /usr/lib/python2.6/site-packages/ReviewBoard-1.0.8-py2.6.egg/reviewboard/htdocs/errordocs
|   |-- media
|   |   |-- admin -> /usr/lib/python2.6/site-packages/ReviewBoard-1.0.8-py2.6.egg/reviewboard/htdocs/media/admin
|   |   |-- djblets -> /usr/lib/python2.6/site-packages/Djblets-0.6.2-py2.6.egg/djblets/media
|   |   |-- rb -> /usr/lib/python2.6/site-packages/ReviewBoard-1.0.8-py2.6.egg/reviewboard/htdocs/media/rb
|   |   `-- uploaded
|   |       `-- images
|   `-- rb
|       |-- errordocs -> ../errordocs/
|       `-- media -> ../media/
|-- logs
`-- tmp

Все файлы имеют разрешение на чтение для пользователя httpd и базы данных, а каталог uploaded имеет разрешение на запись для пользователя httpd.

Содержимое conf/apache-modpython.confэто:

</p> <pre><code> <VirtualHost *:80> ServerName A.B.C.edu DocumentRoot "/data/www/reviewboard/htdocs" # Error handlers ErrorDocument 500 /errordocs/500.html # Serve django pages <Location "/rb"> PythonPath "['/data/www/reviewboard/conf'] + sys.path" SetEnv DJANGO_SETTINGS_MODULE reviewboard.settings SetEnv PYTHON_EGG_CACHE "/data/www/reviewboard/tmp/egg_cache" SetHandler mod_python PythonHandler django.core.handlers.modpython PythonAutoReload Off PythonDebug Off # Used to run multiple mod_python sites in the same apache PythonInterpreter reviewboard_reviewboard </Location> # Serve static media without running it through mod_python # (overrides the above) <Location "/media"> SetHandler None </Location> <Location "/errordocs"> SetHandler None </Location> <Directory "/data/www/reviewboard/htdocs"> AllowOverride All </Directory> # Alias static media requests to filesystem Alias /media /data/www/reviewboard/htdocs/media Alias /errordocs /data/www/reviewboard/htdocs/errordocs </VirtualHost>

Я также цитировал этот файл в основном файле конфигурации Apache, /etc/httpd/conf/httpd.conf, например:

Include /data/www/reviewboard/conf/apache-modpython.conf

Когда я пытался получить доступ к сайту по http://A.B.C.edu/rb, я получил ошибку 403 и увидел это сообщение в журнале ошибок httpd:

[Tue Jun 22 08:52:57 2010] [notice] Apache/2.2.11 (Mandriva Linux/PREFORK-10.1mdv2009.1) mod_python/3.3.1 Python/2.6.1 DAV/2 SVN/1.6.1 mod_ssl/2.2.11 OpenSSL/0.9.8k configured -- resuming normal operations
[Tue Jun 22 08:53:30 2010] [error] [client X.X.X.X] client denied by server configuration: /data/www/reviewboard/htdocs/rb

Кто-нибудь знает, что я сделал не так??Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 23 июня 2010

Нашел ответ от автора рецензионного совета.Хитрость заключается в добавлении

Options FollowSymlinks

в тег <Location>, который указывает на каталог media, поскольку этот каталог содержит символические ссылки.

Более подробно в этом посте:

http://groups.google.com/group/reviewboard/browse_thread/thread/6fac4d0041237f15/

1 голос
/ 22 июня 2010

Вам необходимо предоставить доступ к / data / www / reviewboard / htdocs

<Directory "/data/www/reviewboard/htdocs">
    Order allow,deny
    Allow from *
    AllowOverride All
</Directory>
...