Django + mod_wsgi: Может ли кто-нибудь посоветовать мне, как настроить и переписать правила

Это мой первый раз, когда я развертываю Django на недавно приобретенном сервере Linode, и мне любопытно, может ли кто-нибудь просмотреть мое развертывание, помочь мне исправить некоторые проблемы и посоветовать мне, делаю ли я что-то неправильно.

Структура каталогов

home\
    -public\
        -example.com\
            -public\
                -.htaccess
                -index.html
            -log\
            -application\
                -mysite\
                    -mysite\
                    -manage.py
                    -static\
                    -myapp\
                    -logs\

Как это для структуры развертывания для Django?

Неверное название URL

Я разместил приложение Django под названием «myapp» в своем домене «example.com». Следуя инструкциям на веб-сайте Django, я сделал так, что urls.py для приложения должен начинаться с «/myapp». Это привело к тому, что домен для приложения стал «example.com/myapp».

Как я могу настроить его так, чтобы example.com был просто приложением Django, которое я написал? Я хотел бы просто перейти на example.com и загрузить мое приложение вместо example.com/myapp.

Еще более странно то, что я думал, что example.com загрузит мой файл index.html, однако вместо этого он попытается найти сопоставление URL-адреса для Django...

Разрешения на запись файла журнала Django

Всякий раз, когда я подключаюсь к своей машине по SSH с помощью «syncdb» или «collectstatic», модуль ведения журнала создает файл журнала, который я назвал в своем файле settings.py. Это вызывает у меня проблемы, потому что я являюсь владельцем файла, а apache2 (www-data) не может писать в него. Просто раздражает необходимость вручную удалять файл журнала после каждой команды, прежде чем я перезапущу сервер apache.

Вот мой файл /etc/apache2/sites-available/example.com:

# domain: example.com
# public: /home/setheron/public/example.com/

WSGIPythonPath /home/setheron/public/example.com/applications/mysite:/home/setheron/env/lib/python2.7/site-packages

<VirtualHost *:80>
  # Admin email, Server Name (domain name), and any aliases
  ServerAdmin [email protected]
  ServerName  www.example.example.com
  ServerAlias example.com

  WSGIScriptAlias / /home/setheron/public/example.com/applications/mysite/mysite/wsgi.py

  Alias /static/ /home/setheron/public/example.com/applications/mysite/static/
  <Directory /home/setheron/public/example.com/applications/mysite/static/>
        Order deny,allow
        Allow from all
  </Directory>

  <Directory /home/setheron/public/example.com/applications/mysite/mysite>
  <Files wsgi.py>
        Order deny,allow
        Allow from all
  </Files>
  </Directory>

  # Index file and Document Root (where the public files are located)
  DirectoryIndex index.html index.php
  DocumentRoot /home/setheron/public/example.com/public

  # Log file locations
  LogLevel warn
  ErrorLog  /home/setheron/public/example.com/log/error.log
  CustomLog /home/setheron/public/example.com/log/access.log combined
</VirtualHost>

person Setheron    schedule 09.10.2012    source источник


Ответы (1)


Если вы хотите, чтобы Django обслуживал весь сайт, избавьтесь от общего каталога, индексов и прочего. Кроме /static, вам нужна только ваша директива WSGIScriptAlias. Исправьте urls.py, чтобы указать, что ваш сайт должен исходить из /, а не из /myapp.

person Sean McSomething    schedule 10.10.2012
comment
эй спасибо! Я исправил это. Еще один вопрос. Нужно ли устанавливать разрешения для www-data (apache) в качестве группы для файлов? Я хотел бы использовать ткань, но я запутался в настройках прав доступа к файлам. - person Setheron; 10.10.2012
comment
@Setheron Файлы программы должны быть доступны для чтения процессом веб-сервера для запуска. Каталоги должны быть доступны для записи, чтобы он мог создавать файлы .pyc. Очевидно, файлы журнала должны быть доступны для записи. - person Sean McSomething; 11.10.2012
comment
так типично ли для сценариев развертывания затем chgrp в группу apache всех файлов/каталогов? - person Setheron; 11.10.2012
comment
Я бы не сказал, что это типично, но это не редкость. - person Sean McSomething; 11.10.2012