ubuntu(Flask + Gunicorn + Nginx 部署)


Ubuntu 上的准備

准備一下 python 環境。

$ sudo apt-get update $ sudo apt-get install python-dev python-pip python-virtualenv

然后安裝 nginx

$ sudo apt-get install nginx

在 /var/www 目錄下建立一個 myflask 的文件夾(你的項目目錄),然后用 chmod 改一下權限

$ sudo mkdir /var/www/myflask $ sudo chmod 777 /var/www/myflask

注:當然你可以使用 nginx 的默認網站目錄 /usr/share/nginx/html

然后用 scp 指令直接將本機上的 abc 項目傳到服務器:

$ scp -r abc root@abc.com:/var/www/myflask

Gunicorn

安裝 Gunicorn

Gunicorn 應該裝在你的 virtualenv 環境下,關於 virtualenv 就不多說了,如果沒用過那就趕快腦補吧。安裝前記得激活 venv

(venv) $ pip install gunicorn

運行 Gunicorn

(venv) $ gunicorn -w 4 -b 127.0.0.1:8080 wsgi:application

That's all! 它的安裝就這么簡單。不過這里得作一個解釋。就是最后的那個參數 wsgi:application 這個是程序入口,我得寫個小小的范例來說明一下:

新建一個 wsgi.py 的文件, 注意,這里和 Flask 項目中常用的 manage.py 引導腳本是沒有半點毛關系的。(這是我笨,以前一直沒分清被uwsgi搞糊塗了)

# wsgi.py from flask import Flask def create_app(): # 這個工廠方法可以從你的原有的 `__init__.py` 或者其它地方引入。 app = Flask(__name__) return app application = create_app() if __name__ == '__main__': application.run()

好了,這個 wsgi:application 參數就很好理解了, 分兩部:wsgi 就是引導用的 python 文件名稱(不包括后綴/模塊名)application 就是 Flask 實例的名稱。這樣 gunicorn 就會找到具體要 host 哪一個 flask 實例了。

從這里開始就可以體現 gunicorn 的好了,我們根本不用配什么配置文件的,一個指令就可以將它起動。

Nginx 的配置

關於 Nginx 我也就不詳細講了,我們就直奔主題,殺入 Nginx 的默認配置文件

sudo nano /etc/nginx/site-avalidable/default

暴力修改成為以下的內容

建議先備份一下 default 文件
sudo cp /etc/nginx/site-avalidable/default /etc/nginx/site-avalidable/default.bak

server { listen 80; server_name example.org; # 這是HOST機器的外部域名,用地址也行 location / { proxy_pass http://127.0.0.1:8080; # 這里是指向 gunicorn host 的服務地址 proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

記得完成 nginx 需要重新起動 nginx 服務喔!

sudo service nginx restart

將 Gunicorn 作為服務運行

這就是最后一步了,我們在此將采用 UpStart 配置Flask程序作為服務程序在Linux起動時運行。首先建立起動配置文件:

sudo nano /etc/init/myflask.conf

然后加入如下配置

description "The myflask service" start on runlevel [2345] stop on runlevel [!2345] respawn setuid root setgid www-data env PATH= /var/www/myflask/venv/bin chdir /var/www/myflask/ exec gunicorn -w 4 -b 127.0.0.1:8080 wsgi:application 

OK 大功告成,啟動 myflask 服務

sudo service myflask start

這里有一點必須補充的,請留意在 myflask.conf 中的

env PATH= /var/www/myflask/venv/bin chdir /var/www/myflask/

這里所指向的地址就是你的項目路徑和 virtualenv 的路徑


免責聲明!

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



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