nginx和flask安裝與配置


網上的教程很垃圾,現自己寫一份

其實我也寫的很垃圾,同事怎么也搭不起環境,原因是如果安裝好nginx,那么nginx和uwsgi之間用socket通信,文章中的

 uwsgi --http :5000  --ini uwsgi_conf.ini -d ./uwsgi.log --pidfile=uwsgi.pid不應該去盲目測試,應該用

uwsgi --ini uwsgi_conf.ini -d ./uwsgi.log啟動uwsgi

一、安裝uwsgi,安裝之前應該有python2.7,還有安裝了pip,之前要用tensorflow和syntaxnet,環境已經有了。
    sudo pip install uwsgi
    安裝flask
    sudo pip install flask


二、我們寫一個test.py的測試程序,放在自己的用戶下也行,比如我放在py用戶下

py@ubuntu:~$ ls
Desktop           ma        Public             test.py         uwsgi.pid
Documents         models    syntaxnet-wrapper  test.pyc        Videos
Downloads         Music     Templates          tfsegfault.txt
examples.desktop  Pictures  tensorflow         uwsgi_conf.ini

python程序內容

#coding=utf-8
from flask import Flask


app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello World!'

if __name__ == '__main__':
    app.run(host="127.0.0.1", port=5000,debug=True)



以下粗體先不要測試,否則從nginx到uwsgi跑不能!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
三、使用http協議啟動uwsgi

先編寫一個uwsgi_conf.ini文件,內容如下:


[uwsgi]
socket = 127.0.0.1:5000  
processes = 4   
threads = 2
master = true
pythonpath = /home/py/test
module = test
callable = app
memory-report = true


應用程序要托管,需要告訴uwsgi應用程序的位置,用pythonpath = /home/py/test指明當前應用程序的項目路徑,module指明uwsgi需要托管的主程序文件名,callable就是在應用程序中指明的uwsgi需要調用的應用程序,在程序中是
app = Flask(__name__),因此callable指定為app. socket是uwsgi 進行socket通信的端口.
執行命令:

    uwsgi --http :5000  --ini uwsgi_conf.ini -d ./uwsgi.log --pidfile=uwsgi.pid

–http指定用5800端口啟動http協議

–ini 指定上述的啟動配置文件

-d指定uwsgi的log,方便我們調試

–pidfile將啟動的進程號寫到uwsgi.pid文件中,方便我們在需要停止服務器時kill掉

啟動后查看uwsgi.log,如果一切正常,就在瀏覽器內訪問:
http://127.0.0.1:5800
會輸出hello world,表明此時uwsgi工作正常。

再以socket形式(默認),啟動uwsgi:

uwsgi --ini uwsgi_conf.ini -d ./uwsgi.log

socket端口為配置文件中的端口:5000.
在瀏覽器內訪問:
http://127.0.0.1:5000
會輸出hello world。


四、安裝nginx
    sudo pip install nginx(此命令有可能失敗,)

    sudo apt-get -y install nginx

簡間的管理命令
    sudo nginx -t
    sudo service nginx stop
     sudo service nginx start


    cd /etc/nginx/sites-available
    cat default

server {
        listen       8888;
        server_name  localhost;
        location / {
            include uwsgi_params;
            uwsgi_pass  127.0.0.1:5000;
            }
        }

以上是我修改的default文件,改完后
    sudo nginx -s reload


訪問http://localhost:8888,應該輸出 hello world


五、uwsgi的停止和啟動

重啟uwsgi

先找到指定端口的進程

(ma) py@ubuntu:~$ sudo netstat -ap | grep 5000
tcp        0      0 localhost:5000          *:*                     LISTEN      21458/uwsgi     

結束進程
 kill -9   21458
 
啟動uwsgi
uwsgi --ini uwsgi_conf.ini -d ./uwsgi.log







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM