centos6中簡(jiǎn)單配置nginx+uWSGI+python3+bottle環(huán)境新手教程
作者: 鄭曉 分類(lèi): Python 發(fā)布于: 2014-01-07 20:49 瀏覽:14,394 評(píng)論(18)
這兩天在學(xué)習(xí)python的web開(kāi)發(fā),一開(kāi)始是選擇的是django,好不容易入門(mén)了,發(fā)現(xiàn)其與mysql.connector不兼容。褲子都脫了居然鬧這樣。。。
于是改用Bottle框架,這個(gè)框架對(duì)python3.3支持比較好一些?,F(xiàn)在就簡(jiǎn)單記錄一下我在centos6.4上的環(huán)境搭建之路,準(zhǔn)備脫。
(教程中所有的~$只是代表linux命令輸入的開(kāi)始)
1.第一步:安裝nginx。 我這人比較懶,所以nginx安裝我選擇的是使用lnmp一鍵安裝包。(百度搜索lnmp第一個(gè)就是) 這樣,nginx、mysql、php也都有了。安裝照著它的教程來(lái)就是了。安裝好后 訪問(wèn)你的服務(wù)器地址如http://localhost/ 或http://你的服務(wù)器ip/ 顯示一個(gè)帶有大大的nginx圖片的頁(yè)面就說(shuō)明安裝正常。
2.第二步:編譯安裝python3.3。由于我的centos6.4默認(rèn)安裝的是python2.6,所以我要安裝個(gè)3.3。
1) 下載python3.3
~$ wget http://www.python.org/ftp/python/3.3.0/Python-3.3.0.tgz
2) 解壓、進(jìn)入目錄、創(chuàng)建安裝目錄
~$ tar -zxvf Python-3.3.0.tgz
~$ cd Python-3.3.0
~$ mkdir /usr/local/python33
3) 編譯、安裝。(–prefix 指定安裝到的位置;如果是centos5或其它版本,有可能在安裝完后python中import zlib時(shí)會(huì)提示no module named zlib,需要在這條語(yǔ)句后面追加參數(shù) –with-zlib)
~$ ./configure –prefix=/usr/local/python33
~$ make && make install
4) 設(shè)置,因?yàn)榘惭b完后 系統(tǒng)默認(rèn)執(zhí)行python命令時(shí)還是啟動(dòng)的2.6,我們需要把默認(rèn)的2.6從bin目錄中轉(zhuǎn)移走,換成我們的python3.3。
~$ mv /usr/bin/python /usr/bin/python26
~$ ln -s /usr/local/python33/bin/python3.3 /usr/bin/python
以上兩句 第一句 將原系統(tǒng)中的python重命令為python26,第二句創(chuàng)建軟連接(快捷方式)指向到我們新安裝的python3.3。這樣在系統(tǒng)命令行中兩個(gè)版本python都可以用。運(yùn)行python將啟動(dòng)python3.3,運(yùn)行python26將啟動(dòng)python2.6。
3.第三步,編譯安裝uWSGI。
1) 下載uwsgi
~$ wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
2) 解壓、進(jìn)入目錄
~$ tar zxvf uwsgi-latest.tar.gz
~$ cd uwsgi-2.0
3) 編譯安裝
~$ yum install python-devel
~$ make
4) 配置、修改權(quán)限
~$ cp uwsgi /usr/bin/
~$ chmod a+x /usr/bin/uwsgi
~$ groupadd -g 51 uwsgi
~$ useradd -g 51 uwsgi
4.第四步,配置nginx
~$ vi /usr/local/nginx/conf/nginx.conf
在server中加入一段
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8080;
}
像這樣:
5.第五步,重啟你的nignx: ~$ service nginx restart
重新訪問(wèn)你的服務(wù)器地址如http://localhost/ 或http://服務(wù)器ip/ 如果顯示一個(gè)大大的502,說(shuō)明應(yīng)該正常。。
6.第六步,安裝Bottle框架。安裝這個(gè)bottle很簡(jiǎn)單,去它官網(wǎng)下載這個(gè)bottle.py文件,直接放到你的網(wǎng)站目錄就行了,我們現(xiàn)在下載后放到default中。測(cè)試期間 使用lnmp默認(rèn)的網(wǎng)站目錄就行。默認(rèn)網(wǎng)站目錄在/home/wwwroot/default/中。
我比較喜歡定位到default后再支持wget下載。
~$ cd /home/wwwroot/default
default$ wget https://github.com/defnull/bottle/raw/master/bottle.py
7.第七步,現(xiàn)在可以編寫(xiě)你的python項(xiàng)目程序了。記得也放到這個(gè)default目錄中(只是測(cè)試時(shí))。
比如你寫(xiě)了一個(gè)hello world程序如下:
from bottle import route, default_app
@route('/')
def hello():
return 'hello world!'
application = default_app()
我們把這個(gè)文件命名為hello.py吧。。(注意它是/home/wwwroot/default/hello.py)
8.第八步,運(yùn)行uWSGI。(注意現(xiàn)在我們當(dāng)前目錄還定位在default中)
$ uwsgi -s 127.0.0.1:8080 -w hello
回車(chē)后檢查回顯的信息中沒(méi)有報(bào)錯(cuò)信息(你的hello.py中如果有語(yǔ)法錯(cuò)誤等也將會(huì)顯示在這些信息中,一般它的報(bào)錯(cuò)在倒數(shù)第四行以上),且最后一行提示spawned uwsgi worker 1 …. 說(shuō)明你的uwsgi已經(jīng)成功啟動(dòng)!
現(xiàn)在依舊打開(kāi)你的http://localhost/ 或http://服務(wù)器ip/ 看看是不是輸出hello world了? 恭喜,第一個(gè)bottle app已經(jīng)完成~~~?。?!
上面啟動(dòng)uwsgi的方式不能關(guān)閉命令框,關(guān)閉的話(huà)uwsgi也將停止,訪問(wèn)頁(yè)面時(shí)還是502。 要想把uwsgi放到后臺(tái),追加參數(shù) –daemonize /var/log/uwsgi.log 這樣,運(yùn)行完命令后,不會(huì)顯示那一片信息,像是什么都沒(méi)做。 所有的回顯信息都以日志的信息保存在uwsgi.log文件中。
linux的整個(gè)過(guò)程中,如果你想知道某個(gè)文件xxx的路徑,可以用查找命令 find / -name xxx 。
happy!
本文采用知識(shí)共享署名-非商業(yè)性使用 3.0 中國(guó)大陸許可協(xié)議進(jìn)行許可,轉(zhuǎn)載時(shí)請(qǐng)注明出處及相應(yīng)鏈接。
本文永久鏈接: http://yjfs.org.cn/centos6-simple-to-configure-nginx-uwsgi-python3-bottle-environment-tutorials.html
Internal Server Error 照著您的教程操作的,,為嘛會(huì)報(bào)這個(gè)錯(cuò)呢
這個(gè)說(shuō)不定是你程序有問(wèn)題,程序報(bào)錯(cuò)了,但nginx關(guān)閉了具體的錯(cuò)誤輸出。你檢查一下程序看看?