centos 6.4下nginx+uwsgi+flask的運行環境搭建

以下的安裝過程,筆者在centos 6.4實際配置成功過,記錄起來供大家參考,有問題可以聯繫我。

1、安裝nginx

安裝nginx之前先要安裝gcc編譯器和相關工具,使用yum安裝,非常方便。

$ sudo yum -y install gcc gcc-c++ make autoconf automake

nginx的一些模塊需要第三方庫的支持,例如gzip需要zlib,rewrite模塊需要pcre庫,ssl功能需要openssl庫。直接使用yum安裝就行了。

$ sudo yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel

前往nginx官網nginx.org下載最新的版本,筆者下載的是1.2.7的版本。

$ wget http://nginx.org/download/nginx-1.2.7.tar.gz

解壓安裝

$ tar -zxv -f nginx-1.2.7.tar.gz
$ cd nginx-1.2.7
$ ./configure
$ make
$ sudo make install

這裏configure使用的都是默認的參數,可以根據自己的需要進行修改。可以使用./configure –help查看幫助說明。

啓動nginx服務器

sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

其中/usr/local/nginx/sbin/nginx表示啓動程序,這裏用全路徑更加直觀,可以根據自己的習慣做軟鏈接到系統路徑。

使用瀏覽器訪問http://127.0.0.1/,如果看到Welcome to nginx!的字樣,就表示安裝成功了。

2、安裝uwsgi

先安裝相關依賴python-devel、setuptools,libxml2-devel,直接用yum安裝。如果是自行編譯安裝的python,可以不用安裝python-devel。

$ sudo yum -y install python-devel python-setuptools libxml2-devel

前網官網http://projects.unbit.it/uwsgi/下載uwsgi,雖然頁面都是英文的,但是不難找到到下載頁面。

$ wget http://projects.unbit.it/downloads/uwsgi-1.9.tar.gz

解壓安裝:

$ tar -zxv -f uwsgi-1.9.tar.gz
$ cd uwsgi-1.9
$ python setup.py install

3、安裝flask

前往官網http://flask.pocoo.org/下載flask。

$ wget http://pypi.python.org/packages/source/F/Flask/Flask-0.9.tar.gz

解壓安裝

$ tar -zxv -f Flask-0.9.tar.gz
$ cd Flask-0.9
$ sudo python setup.py install

新建flask項目,就一個程序文件app.py,內容如下:

1 from flask import Flask
2 app = Flask(__name__)
3  
4 @app.route("/")
5 def hello():
6     return "Hello World!"
7  
8 if __name__ == "__main__":
9     app.run()

確保用flask自帶的web服務器能夠運行。

4、配置nginx和uwsgi

這個步驟是比較麻煩,但是理解原理後也不難。

uwsgi在nginx 1.2.7是標準模塊,所以不需要安裝。編輯nginx的配置文件,使其加載uwsgi。

location / {
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:3031;
    root   html;
    index  index.html index.htm;
}

修改完成後可以測試下配置文件是否沒有錯誤。

$ sudo /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

配置完成之後,重新啓動nginx。先找到nginx主進程編號:

$ ps -ef | grep nginx

筆者電腦上是13367,然後重新啓動

$ sudo kill -HUP 13367

在flask的項目下新建一個配置文件app_config.xml,用來設置uwsgi相關的參數,一會uwsgi在啓動時需要指明這個配置文件,內容如下:

1 <uwsgi>
2      <pythonpath>/home/chenjiebin/web/flaskdemo</pythonpath>
3      <module>app</module>
4      <callable>app</callable>
5      <socket>127.0.0.1:3031</socket>
6      <master/>
7      <processes>4</processes>
8      <memory-report/>
9 </uwsgi>

其中個參數表示:

  • pythonpath表示項目目錄
  • module表示項目啓動模塊,如上例爲app.py,這裏就爲app
  • callable表示flask項目的實例名稱,上例代碼中app = Flask(__name__),所以這裏爲app
  • socket表示和nginx通信的地址和端口,和nginx配置裏的uwsgi_pass一致。
  • processes表示開啓多少個子進程處理請求。

啓動uwsgi:

$ sudo /usr/local/bin/uwsgi -x /home/chenjiebin/web/flaskdemo/app_config.xml

其中-x參數表示加載的配置文件路徑。

這時候在瀏覽器裏訪問http://localhost,看到輸出Hello World!就大功告成了。

小提示:如果需要讓uwsgi以守護進程的方式運行,使用-d參數並指明日誌路徑就可以了。

$ sudo /usr/local/bin/uwsgi -x /home/chenjiebin/web/flaskdemo/app_config.xml -d /var/log/uwsgi/uwsgi.log

小結

nginx和uwsgi之間的通信這裏是使用端口進行通信,也可以使用socket文件。uwsgi的配置也可以使用其他的配置文件,不一定要用xml,這裏就不再說明了。有什麼一問題可以來信交流。


源引自:http://www.01happy.com/centos-nginx-uwsgi-flask/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章