Как использовать SSL с приложением Django (развернуто с использованием mod_wsgi и virtualenv) - PullRequest
7 голосов
/ 28 октября 2011

Отказ от ответственности: я действительно не знаю, что я делаю, поэтому, возможно, я неправильно сформулировал.Я также никогда не задавал / отвечал на вопросы здесь раньше!

У меня есть приложение Django, работающее на Apache, которое я развернул, используя mod_wsgi и virtualenv.Я хочу, чтобы некоторые части приложения использовали SSL, однако при установке сертификата SSL URL-адрес https переходит в файл index.html из моей папки public_html вместо приложения (которое находится вне public_html)

Например, посетите https://tradekandi.com. Этот URL-адрес является простым HTML-файлом: public_html / index.html Затем посетите http://tradekandi.com. Это моя страница Django (в режиме обслуживания).

I 'Я искал stackoverflow и Google весь день.Я попытался удалить documentroot из файла виртуальных хостов, но ничего не сделал.Я попытался добавить к нему строку SetEnvIf X-Forwarded-Proto https HTTPS = 1, но это тоже ничего не дало.

В моем файле виртуальных хостов есть следующие строки:

SSLEngine on 
SSLCertificateFile /etc/ssl/certs/tradekandi.com.crt
SSLCertificateKeyFile /etc/ssl/private/tradekandi.com.key
SSLCACertificateFile /etc/ssl/certs/tradekandi.com.cabundle

Всякий раз, когда я делаю какие-либо изменения, я перезапускаю apache и "трогаю" файл wsgi приложения.

Какя могу заставить URL-адрес https загрузить приложение Django?Любая помощь приветствуется.Спасибо.

Дополнительные сведения о конфигурации httpd:

<VirtualHost 69.65.42.153:80>
ServerName tradekandi.com
ServerAlias www.tradekandi.com
DocumentRoot /home/trade/public_html
ServerAdmin webmaster@tradekandi.com
UseCanonicalName Off
CustomLog /usr/local/apache/domlogs/tradekandi.com combined
CustomLog /usr/local/apache/domlogs/tradekandi.com-bytes_log "%{%s}t %I .\n%{%s}t %O ."
## User trade # Needed for Cpanel::ApacheConf
<IfModule mod_suphp.c>
    suPHP_UserGroup trade trade
</IfModule>
<IfModule !mod_disable_suexec.c>
    SuexecUserGroup trade trade
</IfModule>
ScriptAlias /cgi-bin/ /home/trade/public_html/cgi-bin/

Include "/usr/local/apache/conf/userdata/*.conf"  
Include "/usr/local/apache/conf/userdata/*.owner-root" 
Include "/usr/local/apache/conf/userdata/std/*.conf" 
Include "/usr/local/apache/conf/userdata/std/*.owner-root" 
Include "/usr/local/apache/conf/userdata/std/2/*.conf" 
Include "/usr/local/apache/conf/userdata/std/2/*.owner-root" 
Include "/usr/local/apache/conf/userdata/std/2/trade/*.conf"  
Include "/usr/local/apache/conf/userdata/std/2/trade/tradekandi.com/*.conf"

</VirtualHost>

<VirtualHost 69.65.42.153:443>
ServerName tradekandi.com
ServerAlias www.tradekandi.com
DocumentRoot /home/trade/public_html
ServerAdmin webmaster@tradekandi.com
UseCanonicalName Off
CustomLog /usr/local/apache/domlogs/tradekandi.com combined
CustomLog /usr/local/apache/domlogs/tradekandi.com-bytes_log "%{%s}t %I .\n%{%s}t %O ."
## User nobody # Needed for Cpanel::ApacheConf
<IfModule mod_suphp.c>
    suPHP_UserGroup nobody nobody
</IfModule>
ScriptAlias /cgi-bin/ /home/trade/public_html/cgi-bin/
SSLEngine on

SSLCertificateFile /etc/ssl/certs/tradekandi.com.crt
SSLCertificateKeyFile /etc/ssl/private/tradekandi.com.key
SSLCACertificateFile /etc/ssl/certs/tradekandi.com.cabundle
CustomLog /usr/local/apache/domlogs/tradekandi.com-ssl_log combined
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
<Directory "/home/trade/public_html/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>
Include "/usr/local/apache/conf/userdata/*.conf"
</VirtualHost>

Если это актуально, это выделенный сервер под управлением CentOS, и я также использую его для размещения одного сайта на основе PHP.

WSGI-файл:

import os
import sys
sys.stdout = sys.stderr

from os.path import abspath, dirname, join
from site import addsitedir
sys.path.append('/home/trade/sites/tradekandi.com.env/lib/python2.7/site-packages')
sys.path.insert(0, abspath(join(dirname(__file__), "../../")))

from django.conf import settings
os.environ["DJANGO_SETTINGS_MODULE"] = "trade.settings"

sys.path.insert(0, join(settings.PROJECT_ROOT, "apps"))

from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()

extra.conf с директивами mod_wsgi:

Alias /static/ /home/trade/public_html/static/

<Directory /home/trade/public_html/static>
Order deny,allow
Allow from all
</Directory>

WSGIDaemonProcess trade python-path=/home/trade/sites/tradekandi.com.env/lib/python2.7/site-packages
WSGIProcessGroup trade

WSGIScriptAlias / /home/trade/sites/tradekandi.com.env/site/trade/deploy/pinax.wsgi

<Directory /home/trade/sites/tradekandi.com.env/site/trade/deploy>
Order deny,allow
Allow from all
</Directory>

1 Ответ

1 голос
/ 29 октября 2011

Отвечая на мой вопрос в интересах любого, кто может столкнуться с этим:

Я добавил следующие строки:

WSGIProcessGroup tradek

WSGIScriptAlias / /home/trade/sites/tradekandi.com.env/site/trade/deploy/pinax.wsgi

в файл .conf, расположенный в /usr/local/apache/conf/userdata/ssl/2/trade/tradekandi.com, затем использовал команду / scripts / sure_vhost_include --user = trade

(я также случайно изменил имя группы процессов)

Кажется, что добился цели, хотя теперь мне нужно избавиться от небезопасных элементов на странице! Спасибо Грэму, потому что это был один из ваших ответов кому-то еще, который помог мне понять это.

...