Django學(xué)習(xí)(9)在Windows中部署(IIS和Apache)

Windews 7 + Apache + wsgi

基本思路是鼠渺,wsgi和django依賴python挎塌,安裝wsgi就是將wsgi安裝為python的本地包插件丧没,安裝完成時會顯示python和wsgi的位置信息混槐,將這些信息以及django項目位置信息寫入解壓好的apache的配置文件中,運行apache的httpd文件即可按照配置文件去啟動wsgi也搓、開啟django網(wǎng)站入口。
apache本身不需要“安裝”到注冊表暮现,

安裝并測試Apache

安裝

實際上是下載Apache公司的一個httpd程序还绘。Apache官網(wǎng)不提供安裝程序,只提供源代碼栖袋,安裝包可去合作伙伴的網(wǎng)站下載:

二者都可以拍顷,但需要根據(jù)對應(yīng)的VS或VC版本來選擇Apache版本,提前檢查一下電腦上有沒有VC或VS組件塘幅,有哪個版本昔案。


image.png
image.png

配置

壓縮包下載完成后,解壓到你期望的程序目錄(D盤目錄是此程序默認認為的)电媳。不需要安裝過程踏揣,解壓完成這就是程序運行目錄了。不過在 apache httpd 運行的時候程序還是需要知道自己的絕對路徑的匾乓,所以需要我們在配置文件中自定義一下程序目錄絕對路徑捞稿。找到并打開D:\Apache24\conf\httpd.conf文件,找到Define SRVROOT這一行:

Define SRVROOT "D:/Apache24"

這里寫的目錄就是默認用戶會解壓到D盤目錄, 但移動到別處也可以,如果你的apache不在此位置娱局,就更改此處彰亥。

兩種運行方式

httpd.exe

查看apache版本信息:Apache24\bin路徑下運行httpd.exe -V (注意,是大寫V),
cmd運行, 或者雙擊運行apache24\bin中的httpd.exe衰齐,服務(wù)器程序就會運行在黑框中任斋,如果有could not reliably ...的提示,不用解決耻涛,打開瀏覽器輸入本機地址直接訪問废酷,如果正常出現(xiàn)網(wǎng)頁就是成功了。==注意==:關(guān)閉網(wǎng)站時盡量不要直接關(guān)閉命令行窗口, 而要在命令行窗口使用快捷鍵Ctrl+C停止程序運行, Ctrl+C后延遲10秒才有反應(yīng), 不要著急.

安裝到系統(tǒng)服務(wù)項

加入服務(wù)前須做兩個準備:

  1. 先修改Apache24\conf\httpd.conf文件內(nèi)的本機域名, 在文件中搜索ServerName抹缕,后面改為域名:端口號, 如果沒有域名, 就寫IP:端口號.
  2. 檢查確保系統(tǒng)環(huán)境變量中有"PYTHONHOME"澈蟆,路徑指向Python安裝目錄,就是有python.exe的那個位置("PYTHONPATH"是不需要的)歉嗓。如果不加這條環(huán)境變量丰介,會報錯Fatal Python error: initfsencoding: unable to load the file system codec

準備好之后,在apache24\bin的命令行中輸入:

httpd.exe -k install -n "apache24"

其中"apache24"是自定義的名稱, 如果不加-n, 名稱就默認設(shè)為Apache2.4鉴分。完成后哮幢,在系統(tǒng)服務(wù)項頁面就能看到并控制這條服務(wù)項了,也可以用apache24\bin中的 ApacheMonitor.exe 圖形界面去控制志珍。

下載mod_wsgi

是apache的插件橙垢,用于協(xié)助Python后端程序在Apache上運行
Python Extension Packages for Windows - Christoph Gohlke (uci.edu)

image.png

選擇一個匹配apache版本、VC版本伦糯、python版本柜某、Windows版本的mod_wsgi,沒寫ap24的默認就是ap24版本敛纲。
可以下載到默認下載位置喂击,到python腳本目錄不是必須的。在下載的whl文件的文件夾中淤翔,打開命令行翰绊,使用pip安裝mod_wsgi:

pip install "mod_wsgi-x.x.xx-cpxxx-win_amd64.whl"

引號內(nèi)改為實際的文件名.
如果pip命令無效, 嘗試在前面加python -m.
如果一切正常, 將會在python的Lib目錄安裝wsgi模塊, 并在Scripts目錄生成一個mod_wsgi-express.exe程序, 所以我們可以在命令行執(zhí)行:

mod_wsgi-express  module-config

這行命令是給mod_wsgi做一下配置, 完成后會出現(xiàn)三行配置信息, 分別是LoadFile LoadModule WSGIPythonHome, 我們要將其填寫到Apache24\conf\httpd.conf中.

編輯配置文件

打開Apache24\conf\httpd.conf. 勿忘記最開始配置的httpd程序目錄: Define SRVROOT "D:/Apache24"

wsgi和Django項目的相關(guān)配置

將下面的代碼修改為適合自己項目的, 然后復(fù)制到開頭, (后面可能常打開看看, 放開頭比較方便)

# 1.安裝wsgi模塊后,出來的三行字符旁壮,直接復(fù)制過來
LoadFile "c:/users/administrator/appdata/local/programs/python/python37/python37.dll"
LoadModule wsgi_module "c:/users/administrator/appdata/local/programs/python/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python37"
# 2.設(shè)置工程中的wsgi路徑
WSGIScriptAlias / D:\website\website\wsgi.py
# 3.設(shè)置工程路徑
WSGIPythonPath D:\website
# 4.再設(shè)置工程中的wsgi路徑
<Directory D:\website\website>
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>
# 5.設(shè)置靜態(tài)和媒體文件路徑
Alias /media D:\website\website\media
<Directory D:\website\website\media>  
    AllowOverride None  
    Options None  
    Require all granted  
</Directory> 
Alias /static D:\website\website\website\static
<Directory D:\website\website\website\static>  
    AllowOverride None  
    Options None  
    Require all granted  
</Directory> 

django-admin頁面的靜態(tài)文件是不能直接訪問, 需要收集到一起.
第一步: 修改應(yīng)用的settings.py:

 STATIC_URL = '/static/' #下方新增如下內(nèi)容:
 STATIC_ROOT = os.path.join(BASE_DIR, 'static')

第二步: 運行命令监嗜,收集靜態(tài)文件到指定的static目錄

python manage.py collectstatic

配置完以上內(nèi)容應(yīng)當就可以運行服務(wù)端, 訪問網(wǎng)站了. 如果訪問網(wǎng)站出現(xiàn)問題, 再看下面的設(shè)置內(nèi)容

IP和端口設(shè)置

檢查并設(shè)置一下主機IP和端口號:

  1. 找到Listen, 可寫IP:端口, 也可只寫端口:
#Listen 12.34.56.78:80
Listen 80
  1. 不設(shè)ServerName也能運行, 但總報警告. 找到ServerName, 應(yīng)當寫DNS的那個域名帶端口號, 如果沒有域名, 就寫IP和端口號:
ServerName 192.168.31.161:80
  1. 去掉#注釋,打開訪問日志
 CustomLog "logs/access.log" common
  1. 若出現(xiàn)You don't have permission to access / on this server., 就修改訪問權(quán)限:
    找到如下配置
<Directory />
    AllowOverride none
    Require all denied
</Directory>

中間部分修改為

     AllowOverride ALL
     Require all granted

Windows Server + IIS + wfastcgi

啊抡谐,圖形界面真香裁奇!
參考:cnblog-飄逸的小樂

安裝Python和Django

Python沒有的話去官網(wǎng)下載,可以安裝在C盤根目錄麦撵,記住一定要安裝在非用戶目錄刽肠,不然后期會有難以解決的權(quán)限問題溃肪。新版本Python一般自帶pip,在cmd或PowerShell輸入python -m pip -version查看是否有pip音五,如果顯示了pip版本號的話乍惊,python安裝目錄下的Scripts文件夾中的cmd中輸入

python -m pip install django

即可安裝django。如果報錯權(quán)限問題放仗,則用管理員權(quán)限打開cmd。

運行測試

對已存在的項目撬碟,要確保項目路徑不在用戶目錄內(nèi)诞挨,會有權(quán)限問題,可以在C目錄下也可以在C:\inetpub\wwwroot呢蛤。在項目根目錄執(zhí)行命令python manage.py runserver(0:80不要用了惶傻,Windows下不太支持) ,嘗試啟動服務(wù)其障,可能會出現(xiàn)類似下面的報錯:

import requests  ModuleNotFoundError: No module named ‘requests’

原因:沒有導(dǎo)入requests庫银室。原文鏈接:CSDN博主「stone_tomcat」
解決辦法:
進入到python安裝目錄下的Scripts文件夾中,然后在cmd輸入python -m pip install requests励翼,就好了蜈敢。如果缺少其他module,同理汽抚。

安裝wfastcgi

類似上面抓狭,在Scripts文件夾中在cmd輸入

python -m pip install wfastcgi

wfastcgi是cgi的一種,類似于wsgi造烁,作為服務(wù)器和Django的中間件,很重要。

開始IIS部署

復(fù)制wfastcgi.py

去python下site-package目錄


image.png

把“wfastcgi.py”這個文件復(fù)制到網(wǎng)站根目錄


image.png

如果只是調(diào)用“site-package”目錄下的同一個“wfastcgi.py”文件鱼辙,如果你要部署多個網(wǎng)站的話逼泣,將無法對不同網(wǎng)站創(chuàng)建不同的FastCGI執(zhí)行環(huán)境。

在IIS里添加網(wǎng)站

image.png

物理路徑就是有wfastcgi.py的目錄告组。

添加程序映射

在新建的網(wǎng)站的控制臺內(nèi)點開“處理程序映射”煤伟。


image.png

右面點擊“添加模塊映射”,具體內(nèi)容如下


image.png

可執(zhí)行文件一欄輸入“python解釋器”的目錄位置和我們的“wfastcgi.py”的位置惹谐,注意中間使用“|”符號隔開持偏,名稱隨意填寫。
填完后點開請求限制氨肌,把“僅當請求映射至以下內(nèi)容時才調(diào)用處理程序”去掉
image.png

確認添加后會彈出創(chuàng)建FastCGI應(yīng)用程序?qū)υ捒蚝韪眩c擊確認創(chuàng)建。注意怎囚,這里每多創(chuàng)建一個FastCGI應(yīng)用程序卿叽,同時運行的Django網(wǎng)站就可以多一個桥胞。如果你添加了多個網(wǎng)站但不需要同時運行多個網(wǎng)站,只創(chuàng)建一個應(yīng)用程序就夠了考婴。應(yīng)用程序池可以管理創(chuàng)建的應(yīng)用程序贩虾,網(wǎng)站的基本設(shè)置可以變更應(yīng)用程序。


image.png

配置Django執(zhí)行的環(huán)境變量

在服務(wù)器控制臺沥阱,進入“FastCGI設(shè)置”


image.png

可以看到剛剛添加的映射


image.png

雙擊打開缎罢,添加Django執(zhí)行時候的環(huán)境變量
image.png

這里環(huán)境變量一共要添加三個:
WSGI_HANDLER 為固定的 django.core.handlers.wsgi.WSGIHandler()
PYTHONPATH 為 網(wǎng)站根目錄
DJANGO_SETTINGS_MODULE 為 django settings文件位置


image.png

添加完成后去應(yīng)用程序池回收一下FastCGI應(yīng)用程序就好了
image.png

靜態(tài)文件的處理

在IIS內(nèi)找到“static”文件夾的頁面,打開處理程序映射

image.png

可以看到這里的列表跟網(wǎng)站是一致的
image.png

將為網(wǎng)站創(chuàng)建的FastCGI映射刪除掉考杉,static文件夾就可以直接訪問了策精,右側(cè)的“恢復(fù)為父項”可以恢復(fù)對此目錄的修改
image.png

這樣可以測試一下網(wǎng)站是否正常。Django后臺管理頁面可能出現(xiàn)靜態(tài)文件丟失崇棠,那么需要使用python manage.py collectstatic咽袜,詳見Django學(xué)習(xí)(7)上傳文件和文件儲存的最后部分。

搞定枕稀。雖然步驟比較多询刹,但是比較之下,圖形界面已經(jīng)方便太多了萎坷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凹联,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子食铐,更是在濱河造成了極大的恐慌匕垫,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件虐呻,死亡現(xiàn)場離奇詭異象泵,居然都是意外死亡,警方通過查閱死者的電腦和手機斟叼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門偶惠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人朗涩,你說我怎么就攤上這事忽孽。” “怎么了谢床?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵兄一,是天一觀的道長。 經(jīng)常有香客問我识腿,道長出革,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任渡讼,我火速辦了婚禮骂束,結(jié)果婚禮上耳璧,老公的妹妹穿的比我還像新娘。我一直安慰自己展箱,他們只是感情好旨枯,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著混驰,像睡著了一般攀隔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上栖榨,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天竞慢,我揣著相機與錄音,去河邊找鬼治泥。 笑死,一個胖子當著我的面吹牛遮精,可吹牛的內(nèi)容都是我干的居夹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼本冲,長吁一口氣:“原來是場噩夢啊……” “哼准脂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起檬洞,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤狸膏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后添怔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體湾戳,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年广料,在試婚紗的時候發(fā)現(xiàn)自己被綠了砾脑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡艾杏,死狀恐怖韧衣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情购桑,我是刑警寧澤畅铭,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站勃蜘,受9級特大地震影響硕噩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜元旬,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一榴徐、第九天 我趴在偏房一處隱蔽的房頂上張望守问。 院中可真熱鬧,春花似錦坑资、人聲如沸耗帕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仿便。三九已至,卻和暖如春攒巍,著一層夾襖步出監(jiān)牢的瞬間嗽仪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工柒莉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留闻坚,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓兢孝,卻偏偏與公主長得像窿凤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子跨蟹,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354