折騰了一下午,總算把django項目部署到apache中了,在這裏做下簡單的小結。本文不做詳細介紹,只是把要注意的事項強調一下。
方案
本來打算使用nginx+gunicorn+django啓動項目,但是發現安裝gunicorn之後,無法運行,查原因說是gunicorn不支持在windows系統,於是作罷。
轉戰nginx+uwsgi+django,但是又發現uwsgi也不支持windows,於是找到apache,開始折騰。
- 所以:如果你是windows環境下:那麼gunicorn和uwsgi方案都是不可行的,apache+django可行。
具體實施
1.安裝apache
下載地址:https://www.apachelounge.com/download/VC14/
- 注意:要下載VC14版本的,具體是64還是32,這個要和你安裝的python版本一樣
- 安裝好做下簡單的配置
Define SRVROOT "C:\Apache24" #Apache24文件的路徑,其餘不用改。
Listen 192.168.31.227:8000 #此處爲你要發佈的網站ip地址,此處我用我電腦的ip和端口,你也可以用127.0.0.1:8000用於本地測試;80端口自己設置
ServerName 192.168.31.227:8000
- apache一些命令
httpd -k install
httpd -k start
重啓命令:httpd -k restart
關閉命令:httpd -k stop
2.安裝mod_wsgi
下載地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
- 注意:第一處紅線,與apache VC14對應,所以,第一步下載apache要下載VC14版本,明白了吧。否則可能出現
cannot load *.dll into server
的錯誤。 - 然後下載你電腦中python版本對應的whl文件即可。
- 把下載的 .whl文件複製到 python\Scripts下使用 pip 進行安裝
pip install mod_wsgi‑4.5.17+ap24vc14‑cp36‑cp36m‑win32.whl
進行安裝在安裝成功後在python的安裝目錄的\scripts文件夾下運行
mod_wsgi-express module-config
運行後命令行得到如下結果
LoadFile "e:/hx_work/python36_32/python36.dll"
LoadModule wsgi_module "e:/hx_work/python36_32/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win32.pyd"
WSGIPythonHome "e:/hx_work/python36_32"
配置django
打開 httpd.conf 文件,在文件末尾加入以下信息
#添加mod_wsgi.so模塊,這三行是上面命令行中顯示出來的
LoadFile "e:/hx_work/python36_32/python36.dll"
LoadModule wsgi_module "e:/hx_work/python36_32/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win32.pyd"
WSGIPythonHome "e:/hx_work/python36_32"
#指定項目的wsgi.py配置文件路徑,這個py文件是在你的Django項目中
WSGIScriptAlias / d:/picture/picture/wsgi.py
#指定項目目錄,即你的Django項目路徑
WSGIPythonPath d:/picture
<Directory d:/picture/picture>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
#項目靜態文件地址, Django項目中靜態文件的路徑
Alias /static D:/picture/tu/static
<Directory D:/picture/tu/static>
AllowOverride None
Options None
Require all granted
</Directory>
#項目media地址, 上傳圖片等文件夾的路徑
Alias /media D:/picture/tu/media
<Directory D:/picture/tu/media>
AllowOverride None
Options None
Require all granted
</Directory>
注意:在django的setting中要設置 STATIC_ROOT的路徑
參考
https://blog.csdn.net/weixin_40754816/article/details/80955817
https://blog.csdn.net/u014305812/article/details/72636342
https://blog.csdn.net/Mr_blueD/article/details/79759483
https://blog.csdn.net/dave_haijie/article/details/78060888