flask項目部署

1.安裝

安裝ssh

新版本安裝位 apt/apt-getpython

老版本爲 apt-getmysql

安裝之後 ifconfig查看當前的ip地址nginx

若是網絡不在同一個ip段 將網絡模式設置爲橋接redis

安裝pip3

sudo apt install python3-pipsql

  1. 在要安裝項目的目錄建立虛擬環境數據庫

    virtualenv venvflask

  2. source activate # 開啓虛擬開發環境模式bootstrap

  3. 退出 deactivate 瀏覽器

  4. pip3 install uwsgi # 安裝uwsgi服務器

2.配置

uwsgi配置文件支持不少格式,我採用.ini格式,命名爲uconfig.ini具體內容以下:

socket指出了一個套接字,至關於爲外界留出一個uwsgi服務器的接口。

[uwsgi]

# 外部訪問地址,能夠指定多種協議,如今用http便於調試,以後用socket  #
socket = 0.0.0.0:8000 # uwsgi的監聽端口

# 指向項目目錄
chdir =  /home/xlg/blog/

# flask啓動程序文件
wsgi-file = manage.py

# flask在manage.py文件中的app名
callable = app

plugins = python# 這行必定要加上,否則請求時會出現-- unavailable modifier requested: 0 --錯誤提示

# 處理器數
processes = 1

# 線程數
threads = 2

socket和http的差異。從概念上來講,socket自己不是協議而是一種具體的TCP/IP實現方式,而HTTP是一種協議且基於TCP/IP。具體到這個配置這裏來,若是我只配了socket = 127.0.0.1:5051的話,經過瀏覽器或者其餘HTTP手段是沒法成功訪問的。而在uwsgi這邊的日誌裏會提示請求包的長度超過了最大固定長度。另外一方面,若是配置的是http = 127.0.0.1:5051的話,那麼就能夠直接經過通常的http手段來訪問到目標。但這會引發nginx沒法正常工做。正確的作法應該是,若是有nginx在uwsgi以前做爲代理的話應該配socket,而若是想讓請求直接甩給uwsgi的話那麼就要配http

pythonpath指出了項目的目錄,module指出了項目啓動腳本的名字而緊接着的wsgi-file指出了真正的腳本的文件名。callable指出的是具體執行.run方法的那個實體的名字,通常而言都是app=Flask(name)的因此這裏是app。processes和threads指出了啓動uwsgi服務器以後,服務器會打開幾個並行的進程,每一個進程會開幾條線程來等待處理請求,顯然這個數字應該合理,過小會使得處理性能很差而太大則會給服務器自己帶來太大負擔。daemonize項的出現表示把uwsgi服務器做爲後臺進程啓動,項的值指向一個文件代表後臺中的全部輸出都重定向到這個日誌中去。

daemonize = /home/wyz/flask/server.log

3.安裝nginx

sudo apt-get install nginx

 

Nginx是輕量級、性能強、佔用資源少,能很好的處理高併發的反向代理軟件。Ubuntu 上配置 Nginx 也是很簡單,不要去改動默認的 nginx.conf 只須要將/etca/nginx/sites-available/default文件替換掉就能夠了。 新建一個 default 文件:+

server{
listen  80; # 服務器監聽端口
        server_name 10.0.121.116; # 這裏寫你的域名或者公網IP
        location / {
                uwsgi_pass      127.0.0.1:8000; # 轉發端口,須要和uwsgi配置當中的監聽端口一致
                   include uwsgi_params; # 導入uwsgi配置
                #uwsgi_param UWSGI_PYTHON /home/本身建立的目錄/venv; # Python解釋器所在的路徑(這裏爲虛擬環境)
                uwsgi_param UWSGI_PYTHON /usr/bin/python3;  
                 uwsgi_param UWSGI_CHDIR  /home/xlg/blog/;# # 本身建立的目錄 項目根目錄
                uwsgi_param UWSGI_SCRIPT manage:app; # 指定啓動程序
                #好比你測試用test.py文件,文件中app = Flask(name),那麼這裏就填 test:app
        }
}

服務啓動

  1. sudo service nginx start

  2. sudo service nginx stop

  3. sudo service nginx restart

安裝mysql數據庫

sudo apt-get install mysql-server

指定配置文件,後臺運行 uwsgi, 這時再刷新一下以前打開的頁面,就能夠看到應用正常運行了。

pip3 -V 查看是哪一個python解釋器的

pip3 list  查看安裝了哪些包

pip3 freeze 安裝的模塊和版本號

pip3 freeze>requirements.txt

pip3 install -r requirements.txt

安裝項目須要的第三方庫

1. flask
2. pymysql
3. flask-wtf
4. flask-login
5. flask-mail
6. flask-script
7. flask-bootstrap
8. flask-cache
9. flask-sqlalchemy
10. pillow
11. flask-migrate
12. flask-moment
13. flask-uploads
14. redis

日誌分類

Nginx(http://www.jbxue.com/server/nginx/)日誌主要分爲兩種:訪問日誌和錯誤日誌。日誌開關在Nginx配置文件(/etc/nginx/nginx.conf)中設置,兩種日誌均可以選擇性關閉,默認都是打開的。

access_log /var/log/nginx/access.log;

error_log /var/log/nginx/error.log;

相關文章
相關標籤/搜索