鑒于曾經(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項目,拜訪各路大神文章,折騰了一下午都沒有解決,我也很絕望啊。。。。。。盡管如此,還是把具體過程貼出來,望與后來者共勉之~~