以下的安裝過程,筆者在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,這裏就不再說明了。有什麼一問題可以來信交流。