[英]Django on Apache with mod_wsgi: ImportError on settings
[英]Asking for advice on Django deployment settings with Apache and mod_wsgi
按照官方文檔和其他文章,我已經用Apache和mod_wsgi部署了Django。 當我的網站正常工作時,我擔心我的設置可能有誤。 我希望在安裝過程中遵循最佳實踐提出一些建議。 如果您發現此設置有問題,請告訴我。 謝謝李
wsgi.py
import os
import sys
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../../")))
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../")))
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoProject.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
settings.py
...
ALLOWED_HOSTS = ['DjangoProject.example.com']
STATIC_ROOT = "/var/www/DjangoProject/static/"
STATIC_URL = '/static/'
....
/etc/apache2/apache2.conf-其他設置在此行上方
...
WSGIPythonPath /var/www/DjangoProject/DjangoProject:/var/www/DjangoProject/env/lib/python2.6/site-packages
/etc/apache2/httpd.conf-沒有其他設置,但已部署此行
WSGIPythonPath /var/www/DjangoProject:/var/www/DjangoProject/DjangoProject:/var/www/DjangoProject/env/lib/python2.6/site-packages
/ etc / apache2 / sites-available / default
NameVirtualHost *:8080
<VirtualHost *:8080>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
##############################
## DjangoProject WSGI ##
##############################
ServerName DjangoProject.example.com
Alias /favicon.ico /var/www/DjangoProject/DjangoProject/static/favicon.ico
AliasMatch ^/([^/]*\.css) /var/www/DjangoProject/MyApp/static/MyApp/css/$1
Alias /media/ /var/www/DjangoProject/DjangoProject/media/
Alias /static/ /var/www/DjangoProject/MyApp/static/
<Directory /var/www/DjangoProject/MyApp/static>
Order deny,allow
Allow from all
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType text/html "access plus 1 seconds"
ExpiresByType image/gif "access plus 10080 minutes"
ExpiresByType image/jpeg "access plus 10080 minutes"
ExpiresByType image/png "access plus 10080 minutes"
ExpiresByType text/css "access plus 60 minutes"
ExpiresByType text/javascript "access plus 60 minutes"
ExpiresByType application/x-javascript "access plus 60 minutes"
ExpiresByType text/xml "access plus 60 minutes"
ExpiresByType text/xml "access plus 60 minutes"
</IfModule>
</Directory>
<Directory /var/www/DjangoProject/DjangoProject/media>
Order deny,allow
Allow from all
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType text/html "access plus 1 seconds"
ExpiresByType image/gif "access plus 10080 minutes"
ExpiresByType image/jpeg "access plus 10080 minutes"
ExpiresByType image/png "access plus 10080 minutes"
ExpiresByType text/css "access plus 60 minutes"
ExpiresByType text/javascript "access plus 60 minutes"
ExpiresByType application/x-javascript "access plus 60 minutes"
ExpiresByType text/xml "access plus 60 minutes"
</IfModule>
</Directory>
WSGIDaemonProcess DjangoProject.example.com processes=2 threads=15 display-name=%{GROUP}
WSGIProcessGroup DjangoProject.example.com
WSGIScriptAlias /MyApp /var/www/DjangoProject/DjangoProject/wsgi.py
WSGIScriptAlias / /var/www/DjangoProject/DjangoProject/wsgi.py
<Directory /var/www/DjangoProject/DjangoProject>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType text/html "access plus 1 seconds"
ExpiresByType image/gif "access plus 10080 minutes"
ExpiresByType image/jpeg "access plus 10080 minutes"
ExpiresByType image/png "access plus 10080 minutes"
ExpiresByType text/css "access plus 60 minutes"
ExpiresByType text/javascript "access plus 60 minutes"
ExpiresByType application/x-javascript "access plus 60 minutes"
ExpiresByType text/xml "access plus 60 minutes"
</IfModule>
</Directory>
AddType audio/mpeg .mp1 .mp2 .mp3 .mpg .mpeg
</VirtualHost>
設置:
DocumentRoot /var/www
因為開始時很危險。
永遠不要將DocumentRoot目錄設置為Django項目存儲位置的父目錄。 如果您填充配置的其他部分,則可能導致Django設置文件可下載,包括所有數據庫密碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.