2012-05-25 2 views
1

Я пытаюсь запустить Django 1.3.1 на апача 2.6.6, используя mod_wsgi, CentOS 6.Джанго: Apache DocumentRoot не существует

У меня есть изменения httpd.conf файл:

WSGIPythonPath /var/www/vhosts/domain.co.uk 
<VirtualHost *:80> 
    #ServerName domain.co.uk 
    ServerName 46...233 

    ##DocumentRoot /var/www/vhosts/domain.co.uk/httpdocs 

    LogLevel debug 
    ErrorLog /var/www/vhosts/domain.co.uk/logs/error.log 
    CustomLog /var/www/vhosts/domain.co.uk/logs/access.log combinedio 

    HostnameLookups Off 

    UseCanonicalName On 

    WSGIScriptAlias//var/www/vhosts/domain.co.uk/sites/somod/apache/django.wsgi 
    WSGIDaemonProcess somod:80 user=somod group=psaserv processes=1 threads=1 
    WSGIProcessGroup somod:80 
    #WSGIPythonPath /var/www/vhosts/domain.co.uk 

    Alias /robots.txt /var/www/vhosts/domain.co.uk/sites/templates/robots.txt 
    Alias /favicon.ico /var/www/vhosts/domain.co.uk/sites/media/favicon.ico 

    <Directory "/var/www/vhosts/domain.co.uk/httpdocs"> 
    AllowOverride None 
    Options -ExecCGI -Includes -FollowSymLinks -Indexes 
    Order allow,deny 
    Allow from all 
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript 
    </Directory> 

    <Directory "/var/www/vhosts/domain.co.uk/sites"> 
    AllowOverride None 
    Options +ExecCGI -Includes +FollowSymLinks -Indexes 
    Order allow,deny 
    Allow from all 
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript 
    </Directory> 

    Alias /media "/var/www/vhosts/domain.co.uk/media" 
    <Location "/media/"> 
    SetHandler None 
    </Location> 
</VirtualHost> 

Итак, я вставляю свою конфигурацию apache (только код, который я добавляю). Это находится в /etc/httpd/conf/httpd.conf.

Я могу перезапустить apache без ошибок, но веб-сайт пока не отображается. К сожалению, я не смог запустить sudo a2enmod wsgi, я использую cenos 6 и a2enmod недоступен. Но я уверен, что он был установлен, потому что я заказываю vps с ним, просто не уверен, что он работает. Я проверю.

Мой вопрос теперь в том, что URL должен быть для просмотра веб-сайта? Является ли это значением формы ServerName, или ip address/ServerName value? Могу ли я использовать IP-адрес? Потому что я хочу запустить веб-сайт и убедиться, что все в порядке, прежде чем переключать домен, потому что сейчас под этим доменом находится сайт, на котором я перехожу на новый сервер.

Большое спасибо за помощь

+0

Что вы делаете с 'DocumentRoot'? mod_wsgi не использует его, и вы не должны размещать свой код там. –

+0

Я использовал это, потому что он был в файле конфигурации с сервера-пользователя. Но даже если я удалю его, apache не запускается. Im получение '[root @ 575283 /] # /etc/init.d/httpd restart Остановка httpd: [FAILED] Запуск httpd: [FAILED] '. – miszczu

+0

Дополнительную информацию можно найти в '/ var/log/apache2/error.log.' –

ответ

3

Не знаю, что вы делаете, но вот пример конфигурации для вас брат:

WSGIPythonPath /var/www/yoursite 
<VirtualHost *:80> 
    ServerName yoursite.com 
    ServerAlias testing.yoursite.com 

    Alias /static/ /var/www/yoursite/yourdjangoproject/static/ 
    # Alias /sitemap.xml /var/www/yoursite/yourdjangoproject/static/sitemap.xml 
    WSGIScriptAlias//var/www/yoursite/yourdjangoproject/wsgi.py 

    <Directory /> 
     AllowOverride None 
     Options -Indexes 
    </Directory> 

    <Directory /var/www/yoursite/.git/> 
     Deny From All 
    </Directory> 

    LogLevel info 
    ErrorLog /var/log/apache2/yoursite-error.log 
    CustomLog /var/log/apache2/yoursite-access.log combined 
</VirtualHost> 

Создайте этот файл и назовите его yoursite и поставить его под /etc/apache2/sites-available , Затем запустите sudo a2ensite yoursite, и он будет блиен un sites-enabled, тоже.

Это зависит от:

  • apache2
  • libapache2-mod-wsgi

Убедитесь WSGI включен, запустив sudo a2enmod wsgi.

Я рекомендую иметь файл в вашем репозитории контроля версий, а затем символически привязать его от /etc/apache2/sites-available.

Также обратите внимание, что я создал псевдоним для/static /, и если вы хотите его использовать, убедитесь, что вы запустили sudo ./manage.py collectstatic. Это поместит все статические файлы в /var/www/yoursite/yourproject/static.

Удачи.

+0

Удалить« DocumentRoot/var/www/yoursite/», и ваш сайт будет более безопасным. –

+0

WSGIPythonPath достаточно? Не могли бы вы подробнее рассказать об аспектах безопасности? –

+0

Комментарий WSGIScriptAlias ​​и весь исходный код, включая пароли в settings.py, доступны для загрузки. Установив DocumentRoot в том месте, где ваш код сайта имеет структуру разрешений, которую вы имеете для Apache, может показаться вам простой элемент конфигурации. Поэтому никогда не рекомендуется устанавливать DocumentRoot в том месте, где находится ваш код. –

Смежные вопросы