此次部署重點不在 Django 項目本身穴肘,而是為了測試在 Django 框架中集成的微信框架 Werobot
命贴,作為微信個人訂閱號的后臺梢莽,測試相關(guān)功能囤捻。
部署軟硬件準(zhǔn)備
- 騰訊云(學(xué)生)服務(wù)器 (Windows Server 2012 R2)(1G1核1M)
- Apache 2.4.28 Win64(http-2.4.28-win64-VC14.zip)
- mod_wsgi?4.5.19+ap24vc14?cp35?cp35m?win_amd64.whl
- Python-3.5
- Django 1.8
Apache臼朗、mod_wsgi、Python
版本分別對上蝎土,以 mod_wsgi 版本需要為準(zhǔn)
视哑。
安裝 Python
Python 安裝,將 Add Python 3.5 to PATH 選項勾上
誊涯,安裝完后可免去命令配置:
安裝完后打開命令行輸入 python挡毅,出現(xiàn)如圖指令即安裝成功:
安裝第三方庫
在本地調(diào)試的 Django 項目中使用 pip freeze > requirements.txt
命令生成需求庫:
并且配置 settings.py
文件:
# settings.py
DEBUG = False # 關(guān)閉調(diào)試模式
ALLOWED_HOSTS = ["119.29.92.184",] # 添加服務(wù)器公網(wǎng)IP
將整個 Django 項目復(fù)制到服務(wù)器的目標(biāo)文件夾中,在項目的根目錄下啟動 cmd.exe暴构,輸入命令 pip install -r requirements.txt
安裝第三方庫:
等待全部安裝成功:
安裝 Mod_wsgi
在 http://www.lfd.uci.edu/~gohlke/pythonlibs/#jsonlib 網(wǎng)站里下載相應(yīng)版本的 Mod_wsgi 到本地跪呈,用 pip install path/to/mod_wsgi
安裝段磨,等待安裝成功后,使用 mod_wsgi-express module-config
查看 mod_wsgi 配置庆械,保存輸出信息薇溃。
配置 Apache
將下載好的文件直接解壓到 C 盤根目錄( C 盤為 Apache 默認(rèn)的安裝路徑),運(yùn)行 bin 文件下的 httpd.exe
缭乘,如果彈出的命令行不閃退沐序,再打開瀏覽器輸入公網(wǎng) IP ,出現(xiàn)下圖及表示解壓沒問題:
接下來堕绩,開始正式配置 Django 項目策幼,打開 conf 文件夾
下的 httpd.conf
配置文件進(jìn)行配置,首先添加之前配置 mod_wsgi 時輸出的信息
:
# httpd.conf
LoadFile "c:/users/administrator/appdata/local/programs/python/python35/python35.dll"
LoadModule wsgi_module "c:/users/administrator/appdata/local/programs/python/python35/lib/site-packages/mo
d_wsgi/server/mod_wsgi.cp35-win_amd64.pyd"
WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python35"
之后再配置 Django 項目目錄
:
# httpd.conf 基本配置
WSGIScriptAlias / C:/Zhaha/Django/ServerTest1/ServerTest1/wsgi.py
WSGIPythonPath C:/Zhaha/Django/ServerTest1
<Directory C:/Zhaha/Django/ServerTest1/ServerTest1>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
基本配置后奴紧,還需要檢查 httpd.conf 配置文件另一些訪問權(quán)限
:
# httpd.conf
<Directory /> # 當(dāng)前版本 229-232 行
AllowOverride none
Require all denied
</Directory>
<Files ".ht*"> # 當(dāng)前版本 287-289 行
Require all denied
</Files>
改為:
<Directory /> # 當(dāng)前版本 229-232 行
AllowOverride none
Require all granted
</Directory>
<Files ".ht*"> # 當(dāng)前版本 287-289 行
Require all denied
</Files>
之后運(yùn)行 httpd.exe
無閃退即運(yùn)行成功特姐,下面是 Django 項目一些信息:
# urls.py
...
urlpatterns = [
...
url(r'^wechat/', include("wx_develop.urls"), name="wechat"),
url(r'^robot/', make_view(robot)), # 微信框架
]
# views.py
...
def index_of_wechat(request):
return HttpResponse("You're at the wechat index.")
此時,在外網(wǎng)即可訪問到 Django 項目:
?之后就可以測試 werobot 相關(guān)功能黍氮,這里不予記錄唐含。
在部署遇到問題的時候可以查看 Apache/logs/error.txt
文件,錯誤日志及提醒都會在里面提示沫浆。
此次 Django 部署是基于 Apache 最基本的配置捷枯,有些靜態(tài)文件路徑并沒有配置到。
Apache 和 mod_wsgi 搭配部署 Django 項目也許并不是最好的組合专执,但是在學(xué)習(xí)過程中不需要一步就達(dá)到最優(yōu)解淮捆,而是先成型—發(fā)現(xiàn)性能不足—再選擇方案優(yōu)化。
參考資料:
How to use Django with Apache and mod_wsgi
mod_wsgi getting started