軟體:Apache
Package:Django
Apache 官網
簡介:Django 利用 Apache 架站
Windows下用Apache、mod_wsgi部署Django网页服务器实践小结
Package:Django
Apache 官網
簡介:Django 利用 Apache 架站
- 前期準備
- 所有版本皆需對應,Apache, Python, VC
- Window Apache 執行檔
- 安裝 mod_wsgi
- 執行 cmd:mod_wsgi-express module-config
(mod_wsgi-express 已在 python scripts 路徑內)
LoadModule wsgi_module "d:/pythonvenv/djangoenv/lib/site-packages/mod_wsgi/server/mod_wsgi.cp35-win_amd64.pyd" WSGIPythonHome "d:/pythonvenv/djangoenv"
- Apache
- 修改 C:\Apache24\conf\httpd.conf
- LoadModule 中加入剛得到的路徑,並加入 python dll 路徑以供執行 pyd
LoadFile "D:\pythonVenv\djangoEnv\Scripts\python35.dll" LoadModule wsgi_module "d:/pythonvenv/djangoenv/lib/site-packages/mod_wsgi/server/mod_wsgi.cp35-win_amd64.pyd" WSGIPythonHome "d:/pythonvenv/djangoenv"
- 文末加入
Include "/path/apache_setting.conf"
- 建立 apache_setting.conf,可放在 djangoProject 下
# 設定專案位置 WSGIPythonPath D:/djangoProject # VirtualHost:你可以通過設定虛擬主機容器以實現在你的主機上保有多個 # 功能變數名稱/主機名。大多數設定資訊只使用基於名字的虛擬主機,因此伺服器 # 不必擔心IP位址的問題,下面的命令以*號代替虛擬主機名。 # # 在你試著設定你的虛擬主機以前,請參見 # URL:http://httpd.apache.org/docs-2.0/vhosts/>以取得更多的資訊。 <VirtualHost *:80> ServerName abc.dd.ee ServerName abc123.dd.ee #ServerAlias www.example.com #access_log 命名結果為 access_log.2013-06-06 #86400 代表記錄一天 CustomLog "|./bin/rotatelogs.exe ./logs/djangoProject/access_%Y-%m-%d.log 86400" common ErrorLog "|./bin/rotatelogs.exe ./logs/djangoProject/error_%Y-%m-%d.log 86400" # 指定包含服務腳本的目錄 WSGIScriptAlias / D:/djangoProject/djangoProject/wsgi.py <Directory D:/djangoProject/djangoProject> <Files wsgi.py> Require all granted </Files> </Directory> # 指定靜態文件的目錄 Alias /static/ D:/djangoProject/static/ <Directory D:/djangoProject/static> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> # 指定 media 文件的目錄 Alias /media/ D:/djangoProject/media/ <Directory D:/djangoProject/media> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost>
- Django
- Setting 加入
STATIC_ROOT = os.path.join(BASE_DIR, 'static') STATIC_URL = '/static/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/'
- Setting 的 ALLOWED_HOSTS 需確認,以免出現 Internal Server Error
- 執行
python manage.py collectstatic
- 環境變數 (需設定在系統變數)
- PYTHONPATH
/Path/Python/Python35/DLLs;/Path/Python/Python35/Lib;/Path/Python/Python35/Lib/site-packages;
- 設定錯誤,在 apache log 中會看到
Fatal Python error: Py_Initialize: unable to load the file system codec ImportError: No module named 'encodings'
- 執行
- httpd.exe -t
- 確認是否有錯誤
- httpd.exe -k install
- 安裝至服務
- httpd.exe -k install -n "MyServiceName"
- 安裝並設定服務名字
- httpd.exe -k uninstall
- 移除服務
- httpd.exe -k uninstall -n "MyServiceName"
- 移除特定名字的服務
- httpd -S
- 目前的設定
- C:\Apache24\logs
- 可查看錯誤
- ApacheMonitor.exe
- 用來控制伺服器的開關
- 提醒
- 中文路徑 & 空格 會造成錯誤
用雙引號包路徑,即可成功用空格 & 中文
參考
How to use Django with Apache and mod_wsgiWindows下用Apache、mod_wsgi部署Django网页服务器实践小结
留言
張貼留言