статический файл с mod_wsgi в django

Я искал много, но у меня все еще есть проблема со статическими файлами (CSS, изображение...) с моим django веб-сайтом.

Я использую mod_wsgi с апачем на archlinux 64 битах

Я добавил его в своем http.conf:

LoadModule wsgi_module modules/mod_wsgi.so


    WSGIDaemonProcess mart.localhost user=mart group=users processes=2 threads=25
    WSGIProcessGroup mart.localhost
    LogLevel debug

    Alias /media /home/mart/programmation/python/django/martfiles/media/
    
        Order allow,deny
        Allow from all
    

    WSGIScriptAlias / /srv/http/wsgi-scripts/django.wsgi

Я пытался использовать django.wsgi в своей домашней папке, но это не работает (permission denied to access /) (странно это работает, если я использую сценарий тестирования, данный здесь),

все каталоги и содержание (апачская папка, wsgi-сценарий, martfiles) имеют разрешение 775 root:devusers с группой devusers включая моего пользователя, http и корень

в моем шаблоне base.html я называю CSS этим путем:

   
     

и ошибка в /var/log/http/error.log

 [Sat Jan 16 13:22:21 2010] [error] [client 127.0.0.1] (13)Permission denied: access to /media/css/style.css denied, referer: http://localhost/
 [Sat Jan 16 13:22:21 2010] [info] mod_wsgi (pid=14783): Attach interpreter ''

/etc/httpd/conf/http.conf

/srv/http/wsgi-script/django.wsgi

/home/../martfiles/settings.py

спасибо


редактирование: Я точный, что мой django веб-сайт хорошо работает (кроме сессий, но я не думаю, что он связан), таким образом, я не уверен, что он связан с django.wsgi файлом (возможно, я неправ), но что уверено, - то, что я должен смочь использовать django.wsgi снаружи апачской папки

если я изменяю строку Alias /media /home/mart/programmation/python/django/martfiles/media/ с Alias /media /srv/http/media/ и дает правильные полномочия, это работает. Но я не хочу (и не был должен) помещать все мои медиа в апачскую папку

6
задан Martin Trigaux 17 January 2010 в 06:46
поделиться

3 ответа

Недостаточно, чтобы только каталог "/home/mart/programmation/python/django/martfiles/media", содержащий статические файлы, был удобен для чтения и поиска. Пользователь, который работает с Apache, должен иметь доступ на чтение и потенциально осуществлять поиск, ко всем родительским каталогам Apache, вплоть до корневого каталога. Так как на многих системах домашними каталогами являются 'rwx------', это может запретить доступ Apache независимо от директив Deny/Allow в конфигурации Apache.

Предложите разместить где-нибудь проект Django и статические файлы вне вашей домашней учетной записи и ослабить разрешения файловой системы по мере необходимости.

7
ответ дан 10 December 2019 в 00:38
поделиться

Ваш файл django.wsgi

WSGIScriptAlias / /srv/http/wsgi-scripts/django.wsgi

находится за пределами <каталога> , определенный:

<Directory /home/mart/programmation/python/django/martfiles/>

, попробуйте добавить это на httpd.conf :

<Directory /srv/http/wsgi-scripts/>
    Order allow,deny
    Allow from all
</Directory>

или, поставьте файл django.wsgi где-то внутри / home / mart / программирование / python / django / markfiles / . Это должно работать.

Редактировать: Хорошо, вот пример httpd.conf, который работает на производственной машине:

<VirtualHost *:80>
    # Admin email, Server Name (domain name) and any aliases
    ServerAdmin testing@example.de
    ServerName  www.example.de

    DocumentRoot /home/example/testing/parts/public

    Alias /media /home/example/testing/parts/public/media

    # WSGI Settings
    WSGIDaemonProcess example user=example group=example threads=25
    WSGIProcessGroup example
    WSGIScriptAlias / /home/example/testing/parts/public/django.wsgi

    <Directory "/home/example/testing/parts/public">
        # Allow Apache to follow links
        Options FollowSymLinks
        # Turn on the ability to use .htaccess files
        AllowOverride All
        # Controls who can get stuff from this directory
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

так, если ваш DHANGO.WSGI определяется в месте, на который можно доступен на <каталог> Директива, вы также можете Sudo SU HTTPD , если это пользователь, который запускает Apache в вашей системе, и просто попробуйте прочитать файлы CSS, чтобы увидеть, может ли Apache действительно получить доступ к ним ...

3
ответ дан 10 December 2019 в 00:38
поделиться

Кажется, это то, что у меня есть для моего приложения, за исключением того, что я не видел директивы NameVirtualHost в http.conf, которая нужна, если вы хотите настроить виртуальные серверы. Можно попробовать добавить NameVirtualHost *:80 перед определением виртуального хоста.

0
ответ дан 10 December 2019 в 00:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: