flask 部署

項目部署

基於ubuntu 16.04系統,使用 Gunicorn + Nginx 進行佈署html

  • 給安全組配置規則,添加5000端口(一併加上5001端口)

  • 利用命令行進行遠程服務器登陸
ssh 用戶名@ip地址

相關環境安裝

如下操做都在遠程服務器上進行操做 (ubuntu 16.04)python

  • 先更新 apt 相關源
sudo apt-get update
  • mysql安裝
apt-get install mysql-server
apt-get install libmysqlclient-dev
  • redis安裝
sudo apt-get install redis-server
  • 安裝虛擬環境
pip install virtualenv
pip install virtualenvwrapper
  • 使得安裝的virtualenvwrapper生效,編輯~/.bashrc文件,內容以下:
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /usr/local/bin/virtualenvwrapper.sh
  • 使編輯後的文件生效
source ~/.bashrc

requirements文件

Python 項目中能夠包含一個 requirements.txt 文件,用於記錄全部依賴包及其精確的版本號,以便在新環境中進行部署操做。mysql

  • 在虛擬環境使用如下命令將當前虛擬環境中的依賴包以版本號生成至文件中:
pip freeze > requirements.txt
  • 當須要建立這個虛擬環境的徹底副本,能夠建立一個新的虛擬環境,並在其上運行如下命令:
pip install -r requirements.txt
  • 在安裝 Flask-MySQLdb 的時候可能會報錯,多是依賴包沒有安裝,執行如下命令安裝依賴包:
sudo apt-get build-dep python-mysqldb

Nginx (軟件)

  • 採用 C 語言編寫
  • 實現分流、轉發、負載均衡

相關操做

  • 安裝
$ sudo apt-get install nginx
  • 運行及中止
/etc/init.d/nginx start #啓動
/etc/init.d/nginx stop  #中止

啓動失敗大機率是由於配置文件錯誤
  • 配置文件
    • 編輯文件:/etc/nginx/sites-available/default
# 若是是多臺服務器的話,則在此配置,並修改 location 節點下面的 proxy_pass upstream flask { server 127.0.0.1:5000; server 127.0.0.1:5001; } server { # 監聽80端口 listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name _; location / { # 請求轉發到gunicorn服務器 proxy_pass http://127.0.0.1:5000; # 請求轉發到多個gunicorn服務器 # proxy_pass http://flask; # 設置請求頭,並將頭信息傳遞給服務器端 proxy_set_header Host $host; # 設置請求頭,傳遞原始請求ip給 gunicorn 服務器 proxy_set_header X-Real-IP $remote_addr; } } 

Gunicorn(python拓展包)

  • Gunicorn(綠色獨角獸)是一個Python WSGI的HTTP服務器
  • 從Ruby的獨角獸(Unicorn )項目移植
  • 該Gunicorn服務器與各類Web框架兼容,實現很是簡單,輕量級的資源消耗
  • Gunicorn直接用命令啓動,不須要編寫配置文件

相關操做

  • 安裝
pip install gunicorn
  • 查看選項
gunicorn -h
  • 運行
# -w: 表示進程(worker) -b:表示綁定ip地址和端口號(bind) gunicorn -w 2 -b 127.0.0.1:5000 運行文件名稱(注意只是名稱 沒有.py的後綴):Flask程序實例名

啓動失敗大機率是由於解釋器或者環境問題

參考閱讀: Gunicorn相關配置:https://blog.csdn.net/y472360651/article/details/78538188nginx

其餘操做

  • 拷貝本地代碼到遠程
scp -r 本地文件路徑 root@39.106.21.198:遠程保存路徑

數據庫模板文件遷移
相關文章
相關標籤/搜索