Mac Python Web開發(fā)環(huán)境:nginx+uwsgi+django搭建

鑒于曾經(jīng)觀戰(zhàn)過大神配置“nginx+php-fpm+php CI”環(huán)境的搭建過程,雖確未上手實踐過,但大體流程還是曉得的。Python,作為一門腳本語言,眾所周知其在數(shù)據(jù)分析領(lǐng)域確實炙手可熱,但若使用于Web開發(fā)時,就萬變不離其宗了:nginx【http守護進程】——>uwsgi【W(wǎng)eb服務(wù)器,http://shenwang.blog.ustc.edu.cn/nginx%E5%92%8Cuwsgi%E9%80%9A%E4%BF%A1%E6%9C%BA%E5%88%B6/】——>django【開源的Web應(yīng)用框架】;

那,我們切入正題啦~~

1. 安裝Python

$ brew install python

2. 安裝virtualenv

關(guān)于virtualenv的詳細介紹可參見:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432712108300322c61f256c74803b43bfd65c6f8d0d0000

virtualenv經(jīng)典的python環(huán)境隔離工具,幾乎所有的相關(guān)文章都會告訴讀者這樣安裝:

sudo easy_install virtualenv

這樣的話,1. virtualenv會安裝到全局的/Library文件夾中,而不是用戶文件夾;2.?

“Distribute”安裝系統(tǒng)比默認的easy_install的bug要少;3. 將Python包和用戶賬戶隔離顯得更有意義一些,故而大神推薦了如下的安裝方法:

https://hackercodex.com/guide/python-install-django-on-mac-osx-lion-10.7/

遺憾的是,雖然前序進展順利,但當執(zhí)行$ sudo easy_install --prefix=~/.local virtualenv virtualenvwrapper,報了如下錯誤:

根據(jù)如此良心的錯誤提示提供的解決方案,嘗試"add the installation directory to PYTHONPATH enviroment":?

$ export PYTHONPATH=$PYTHONPATH:/Users/hannah/.local/lib/python2.7/site-packages

python setup.py install --prefix=~/.local

easy_install --prefix=~/.local virtualenv virtualenvwrapper【切記不要慣性的加sudo】

似乎一切又開始運行順利了,接著照大神流程執(zhí)行安裝virtualenv和virtualenvwrapper完成。

創(chuàng)建Virtual environment

mkvirtualenv personnelBlog

創(chuàng)建一個叫personnelBlog的虛擬環(huán)境,并自動切換到該虛擬環(huán)境中。如果要切換虛擬環(huán)境可使用 “cdvirtualenv” 命令。

??:http://qicheng0211.blog.51cto.com/3958621/1561685

3. 安裝Django Project

1. 在personnelBlog虛擬環(huán)境下,創(chuàng)建項目目錄,比如我的本地環(huán)境:

mkdir /Users/hannah/dev/PycharmProjects/personnelBlog

Django普為常見的安裝方式可能是:pip install Django

2. 比較好的做法應(yīng)該是定義項目的依賴關(guān)系:vim personnelBlog/requirements.txt

比如此處僅依賴了Django,那就直接requirements.txt輸入“Django”即可。

然后安裝定義的依賴關(guān)系:pip install -r personnelBlog/requirements.txt

3. 使用 Django’s “startproject” 命令,在personnelBlog目錄下創(chuàng)建新的網(wǎng)站:django-admin.py startproject sdwangblogs personnelBlog/

然后start Django’s development web server…,但是它卻出現(xiàn)了:

依然是良心的錯誤提示,so 執(zhí)行如下命令:

python manage.py migrate

python manage.py runserver

最后url輸入http://127.0.0.1:8000/,你會看到It Worked,這表明Django測試正常,恭喜你,距離成功更近了一步。

4. 安裝uWSGI

lsvirtualenv

在虛擬環(huán)境personnelBlog下安裝uwsgi服務(wù)器:

workon personnelBlog

pip install uwsgi

連接Django和uwsgi

編寫django_wsgi.py文件,將其放在與文件manage.py同一個目錄下,文件內(nèi)容如下:

#!/usr/bin/env python

# coding: utf-8

import os

import sys


# 將系統(tǒng)的編碼設(shè)置為UTF8

reload(sys)

sys.setdefaultencoding('utf8')

os.environ.setdefault("DJANGO_SETTINGS_MODULE","personnel Blog.settings")

from django.core.handlers.wsgi import WSGIHandler

application=WSGIHandler()

然后,進入虛擬環(huán)境執(zhí)行指令:

uwsgi --http :8000 --chdir /Users/hannah/dev/PycharmProjects/personnelBlog/ --module django_wsgi

成功顯示Django It Works頁面即表示uwsgi與Django已經(jīng)連接起來了。

5. Ngnix配置

nginx配置

nginx安裝這里就不贅述了,這里采用多站點的配置方式,新建/usr/local/nginx/conf/vhosts/personnel.blog.conf,輸入以下內(nèi)容:

server {

? ? listen80;

? ? server_name personnel.blog;


? ? access_log /Users/hannah/dev/PycharmProjects/personnelBlog/logs/access.log;

? ? error_log /Users/hannah/dev/PycharmProjects/personnelBlog/logs/error.log;


? ? location / {?

? ? ? ? uwsgi_pass127.0.0.1:9090;

? ? ? ? include uwsgi_params;

? ? ? ? uwsgi_param UWSGI_SCRIPT index;

? ? ? ? uwsgi_param UWSGI_PYHOME /Users/hannah/dev/PycharmProjects/personnelBlog/;

? ? ?}

}

TIPS:1. 9090是為nginx和uwsgi通信指定的交互端口,當然也可以是8087之類的,但要確認端口號未被占用;

2. 確定為access.log,error.log指定的目錄文件存在,當然如果想簡化配置,不指定acces.log,error.log也可以;

3. 參數(shù)UWSGI_PYHOME指定了虛擬env的Python環(huán)境目錄;

4. UWSGI_SCRIPT則是包含application的入口模塊。這里配置的index,uwsgi將在PYTHONPATH中搜索模塊index.py。

uWSGI配置

我們可以直接使用命令行來啟動并配置uWSGI,但實際部署環(huán)境中通常采用部署文件的方式,而非命令行方式。

我的Django程序目錄:/Users/hannah/dev/PycharmProjects/personnelBlog/

uWSGI 支持多種配置文件格式,比如 xml,ini,json 等等都可以,這里我們采用xml配置。

在personnelBlog目錄下新建一個XML文件,比如personnelBlog.xml輸入內(nèi)容如下:

<uwsgi>

? ? <socket>127.0.0.1:9090</socket>

? ? <listen>80</listen>

? ? <master>true</master>

?<pythonpath>/Users/hannah/dev/PycharmProjects/personnelBlog</pythonpath>

? ? <processes>1</processes>

? ? <logdate>true</logdate>

? ? <daemonize>uwsgi.log</daemoniz>

? ? <plugins>python</plugins>

</uwsgi>

然后執(zhí)行命令:uwsgi -x /Users/hannah/dev/PycharmProjects/personnelBlog/personnelBlog.xml。

加載指定的xml配置文件,有時候因各種環(huán)境問題,-x --xml 命令識別不了,可以使用ini 配置方式【http://www.nowamagic.net/academy/detail/1330334】uwsgi 這樣就啟動起來了。如果無意外的話,就能在網(wǎng)上訪問你的 Python 項目了。


然而。。。然而。。。然而。。。

雖然一切都看起來似乎合情合理,我卻并沒有成功訪問到python項目,拜訪各路大神文章,折騰了一下午都沒有解決,我也很絕望啊。。。。。。盡管如此,還是把具體過程貼出來,望與后來者共勉之~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,460評論 6 538
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,067評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 177,467評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,468評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,184評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,582評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,616評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,794評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,343評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,096評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,291評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,863評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,513評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,941評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,190評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,026評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,253評論 2 375

推薦閱讀更多精彩內(nèi)容