博客 / 詳情

返回

CentOs7用nginx+uwsgi部署flask項目

前言

  1. 最近在學習CentOs服務器環境,剛好做騰訊小程序設計大賽,項目需要用到flask和爬蟲寫後端。本文記錄瞭如何部署flask項目
  2. 若是在Ubuntu上用nginx+uwsgi部署flask項目,可以參考我之前寫過的一篇筆記。
  3. 版本:python3.5.0,CentOs7.6

一.環境準備

  • python3.5.0
  • setuptools
  • pip3
  • uwsgi
  • flask
  1. 安裝python3.5.0

    1. 下載python的包[root@VM_0_15_centos local]# wget --no-check-certificate https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz
    2. [root@VM_0_15_centos local]# tar -zxvf python3.5.0
    3. [root@VM_0_15_centos local]# cd Python3.5.0
    4. [root@VM_0_15_centos local]# ./configure
    5. [root@VM_0_15_centos local]# make &&make install
    6. 現在python3.5.0已經安裝好了,但是很可能你輸入python3 --version會發現找不到python
    7. 解決辦法:看第二步
  2. uwsgi(/nginx/python/pip3等)安裝好後,command not found的解決辦法

    • find / -name uwsgi
    • 假設找到的地址為 /usr/local/bin/uwsgi
    • 建立軟連接 sudo ln -s /usr/local/bin/uwsgi /usr/bin/uwsgi
    • 注意:建立軟鏈接時最好sudo,不然很可能還是command not found
  3. 安裝setuptools

    1. 同樣下載setuptools的包wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26
    2. 解壓 tar -zxvf setuptools-19.6.tar.gz
    3. cd setuptools-19.6
    4. 分別執行python3 setup.py buildpython3 setup.py install
    5. 順利的話:

      Processing dependencies for setuptools==19.6
      Finished processing dependencies for setuptools==19.6
  4. 安裝pip

    1. 同樣下載pip的包wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-8.0.2.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb
    2. 解壓 tar -zxvf pip-8.0.2.tar.gz
    3. cd pip-8.0.2
    4. 分別執行python3 setup.py buildpython3 setup.py install
    5. 順利的話:

      Processing dependencies for pip==8.0.2
      Finished processing dependencies for pip==8.0.2
  5. 安裝pip需要的openssl和openssl-devel
    執行yum install opensslyum install openssl-devel

    注意很可能還需yum -y install python3-devel
  6. 安裝uwsgi pip3 install uwsgi
  7. 安裝flask和項目需要的一些包(只是本項目需要的包)
    首先進入到項目目錄裏

    • pip3 install flask
    • pip3 install virtualenv
    • pip3 install flask_sqlalchemy
    • pip3 install sqlalchemy
    • pip3 install flasgger
    • pip3 install flask_cors
    • pip3 install pymysql

二.代理服務器配置

  1. 配置文件uwsgi.ini
    sudo vim uwsgi.ini
    基本內容:

    [uwsgi]
    chdir=/home/dbc/gameEvent
    callable=app
    wsgi-file=app.py
    processes = 5
    #掛載uwsgi到內網(要保證nginx能訪問此內網)
    #也可以通過.sock文件與nginx通信
    socket=127.0.0.1:5000 
     #http=0.0.0.0:8001#不用nginx的方式
    chmod-socket=666
    max-requests=1000
  2. nginx配置
    進入nginx的conf目錄下(目錄結構不一樣喲!)
    cd /www/server/nginx/conf
    sudo vim flask.conf

     server{
      listen 8001;
      server_name 0.0.0.0; #訪問ip
    
      location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:5000;  #代理到uwsgi.ini裏部署的ip+端口
        #uwsgi_pass unix:uwsgi.sock;#通過.sock文件通信的寫法
      }
     }
  3. 生成uwsgi日誌目錄
    mkdir /var/log/uwsgi
  4. 跑起來
    uwsgi uwsgi.ini -d /var/log/uwsgi.log

最後

  • 參考鏈接:1,2
  • 説明:uwsgi與nginx都是代理服務器,我們上面做的是將nginx掛載到公網某端口,將uwsgi掛載到內網某端口。當我們訪問nginx時,nginx自動將業務傳給uwsgi所在端口,然後uwsgi進行業務處理。所以我們的項目是部署到uwsgi上:

    1. uwsgi對內,nginx對外
    2. 對於類似ssl等操作,就可以直接在nginx上配置。
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.