當(dāng)前位置:博客首頁(yè)>>Python >> 閱讀正文

centos6中簡(jiǎn)單配置nginx+uWSGI+python3+bottle環(huán)境新手教程

作者: 鄭曉 分類: Python 發(fā)布于: 2014-01-07 20:49 瀏覽:14,143 評(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;
}

像這樣:
nginx-uwsgi-config

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

回車后檢查回顯的信息中沒(méi)有報(bào)錯(cuò)信息(你的hello.py中如果有語(yǔ)法錯(cuò)誤等也將會(huì)顯示在這些信息中,一般它的報(bào)錯(cuò)在倒數(shù)第四行以上),且最后一行提示spawned uwsgi worker 1 …. 說(shuō)明你的uwsgi已經(jīng)成功啟動(dòng)!
uwsgi-start
現(xiàn)在依舊打開(kāi)你的http://localhost/ 或http://服務(wù)器ip/ 看看是不是輸出hello world了? 恭喜,第一個(gè)bottle app已經(jīng)完成~~~?。?!

上面啟動(dòng)uwsgi的方式不能關(guān)閉命令框,關(guān)閉的話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://www.yjfs.org.cn/centos6-simple-to-configure-nginx-uwsgi-python3-bottle-environment-tutorials.html

centos6中簡(jiǎn)單配置nginx+uWSGI+python3+bottle環(huán)境新手教程:目前有18 條留言

用戶評(píng)論頭像 實(shí)用的二貨發(fā)表于 2016年03月03日 14:28[回復(fù)]

Internal Server Error 照著您的教程操作的,,為嘛會(huì)報(bào)這個(gè)錯(cuò)呢

    用戶評(píng)論頭像 鄭曉發(fā)表于 2016年03月03日 14:50[回復(fù)]

    這個(gè)說(shuō)不定是你程序有問(wèn)題,程序報(bào)錯(cuò)了,但nginx關(guān)閉了具體的錯(cuò)誤輸出。你檢查一下程序看看?

用戶評(píng)論頭像 geniusalien發(fā)表于 2014年02月27日 15:53[回復(fù)]

我想和你做個(gè)友鏈怎么聯(lián)系你??!我也是個(gè)人博客。

    用戶評(píng)論頭像 鄭曉發(fā)表于 2014年02月28日 08:00[回復(fù)]

    在這里留言就是聯(lián)系我了。。 ?? 你要什么詞。

      用戶評(píng)論頭像 geniusalien發(fā)表于 2014年02月28日 08:35[回復(fù)]

      我的詞和鏈接:

      劉俊個(gè)人博客

      鏈接是我上面回復(fù)時(shí)填的網(wǎng)址,我在這個(gè)框里面回復(fù)不能寫(xiě)鏈接。

      你的呢?

        用戶評(píng)論頭像 鄭曉發(fā)表于 2014年02月28日 11:54[回復(fù)]

        已添加。 我的用“個(gè)人博客”。 :mrgreen:

          用戶評(píng)論頭像 geniusalien發(fā)表于 2014年02月28日 12:30[回復(fù)]

          對(duì)了,能不能把首頁(yè)活躍用戶,我的“geniusalien”去掉呢?,F(xiàn)在用站長(zhǎng)工具查,我在你網(wǎng)站的鏈接加了nofollow。我們現(xiàn)在是友情鏈接。

用戶評(píng)論頭像 選床墊發(fā)表于 2014年02月20日 13:32[回復(fù)]

當(dāng)年在學(xué)校學(xué)的編程都忘的差不多了,希望博主堅(jiān)持

    用戶評(píng)論頭像 鄭曉發(fā)表于 2014年02月21日 08:13[回復(fù)]

    嗯,最近懶了,沒(méi)怎么堅(jiān)持更新 ??

用戶評(píng)論頭像 聚劃算發(fā)表于 2014年02月07日 13:59[回復(fù)]

這個(gè)太復(fù)雜,搞不懂,好像有個(gè)可視化的linux管理系統(tǒng)

    用戶評(píng)論頭像 鄭曉發(fā)表于 2014年02月21日 08:16[回復(fù)]

    像wdcp這樣的?現(xiàn)在這個(gè)博客就是wdcp的lnmp管理后臺(tái)。

用戶評(píng)論頭像 王啟星發(fā)表于 2014年02月01日 17:04[回復(fù)]

路過(guò)學(xué)習(xí)

用戶評(píng)論頭像 xyb發(fā)表于 2014年01月22日 15:02[回復(fù)]

python挺好的

用戶評(píng)論頭像 基坑支護(hù)發(fā)表于 2014年01月20日 19:41[回復(fù)]

我前幾天搭建了一個(gè),已經(jīng)成功了。

    用戶評(píng)論頭像 鄭曉發(fā)表于 2014年01月20日 21:28[回復(fù)]

    那應(yīng)該祝賀一下。 ??

用戶評(píng)論頭像 個(gè)人博客發(fā)表于 2014年01月18日 21:07[回復(fù)]

沒(méi)怎么用過(guò)centos,現(xiàn)在基本用的都是SUSE的linux系統(tǒng)。

用戶評(píng)論頭像 山東發(fā)電機(jī)組發(fā)表于 2014年01月16日 08:26[回復(fù)]

支持博主,我又來(lái)逛逛啦!
希望博主的網(wǎng)站越辦越好!
http://www.supermaly.com

發(fā)表評(píng)論

change vcode