Flask_項目部署Linux+uwsgi+nginx

Flask_項目部署Linux+uwsgi+nginx

1、 安裝Python環境

  • 從源碼編譯python
  1. # 安裝gcc 默認centos7.4已經安裝了gcc工具,此步驟能夠省略
    yum install gcc
    # 裝一些依賴庫,這些庫都以devel爲後綴
    yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel expat-devel
  2. 下載python3壓縮包html

    # https://www.python.org/downloads/release/python-363/ 有下載地址
    wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
    # 或者在windnows下下載好,拉到linux中
  3. 解壓vue

    # 解壓
    tar -zxvf Python-3.6.3.tgz
    # 進入到目錄
    cd Python-3.6.3
  4. 源碼安裝 三步走node

    # 配置
    ./configure --enable-optimizations --prefix=/usr/local/python
    # 編譯
    make
    #安裝
    make install
    # 能夠合成一步 make && make install
  5. 如何執行python3python

    #經過修改profile文件:
    vim /etc/profile
    export PATH="/usr/local/python/bin:$PATH"	#(注意:等號兩邊都不能有任何的空格) 
    #不過該文件註釋也說明了,這種作法不太推薦,建議是在/etc/profile.d/目錄下建立一個.sh後綴文件
    # 主要目的是方便往後維護(推薦方案)
    $ vim /etc/profile.d/py36.sh
    # 添加以下內容
    export PATH=$PATH:/usr/local/python36/bin
    保存,退出,而後運行:
    source /etc/profile
    #便可生效
  6. virtualenv工具的安裝linux

# 直接使用pip3安裝virtualenv便可,這樣安裝到的是在python36目錄下的bin目錄裏
$ pip3 install virtualenv

2、Redis的安裝及基本配置

  • 下載源碼nginx

    # 建議以root身份建立redis源碼安裝目錄
    $ mkdir -p /root/soft-build/redis-lab
    # 下載redis源碼,目前下載4.0版本
    $ wget http://download.redis.io/releases/redis-4.0.11.tar.gz
    # 解壓
    $ tar -zxvf redis-4.0.11.tar.gz
  • 編譯及安裝web

    cd redis-4.0.11
    # 爲了能夠在系統任何位置上均可以使用redis,同時也方便管理,在/usr/local內,建立redis目錄
    $ mkdir -p /usr/local/redis4.0/bin
    # 進入到redis源碼目錄的src目錄
    $ cd src
    # 拷貝編譯好的可執行文件到/usr/local/redis4.0/bin目錄下
    $ cp mkreleasehdr.sh /usr/local/redis4.0/bin/
    $ cp redis-benchmark /usr/local/redis4.0/bin/
    $ cp redis-check-aof /usr/local/redis4.0/bin/
    $ cp redis-check-rdb /usr/local/redis4.0/bin/
    $ cp redis-cli /usr/local/redis4.0/bin/
    $ cp redis-sentinel /usr/local/redis4.0/bin/
    $ cp redis-server /usr/local/redis4.0/bin/
    # 將/usr/local/redis4.0/bin目錄配置到系統PATH路徑上
    # 在/etc/profile.d/下建立一個叫redis.sh文件
    export PATH=$PATH:/usr/local/redis4.0/bin
  • 配置文件redis

默認在源碼目錄下,會有一個參考配置文件redis.conf,能夠在這個文件基礎上進行二次修改.
  位置:
  /root/soft-build/redis-lab/redis-4.0.11/redis.conf

3、安裝UWSGIF服務器

  • 利用pip安裝,注意uWSGI安裝時,須要系統有gcc等的C語言編譯環境
pip install uwsgi
  • 商家後臺服務配置(文件參考): 文件位置: 工程項目中的ini目錄下cms_app.inisql

    [uwsgi]
    # 全部的配置文件的路徑必須爲絕對路徑
    
    # uwsgi服務開放的socket接口的信息
    socket = 127.0.0.1:5050
    # wsgi規範的模塊的路徑信息		入口文件
    wsgi-file = /webapps/whn/elm_webapps/cms_app.py		
    # application的對象名   主APP對象
    callable = cms_app		
    
    # 運行時,先進入到哪一個工程目錄
    chdir = /webapps/whn/elm_webapps/   # 工程目錄
    
    # 虛擬環境的路徑
    virtualenv = /webapps/whn/virtual/elm/		
    
    processes = 1
    threads = 1
    master = true
    # 守護進行的日誌文件路徑
    daemonize = /webapps/whn/logs/cms.log		# 文件必須存在
    • 買家前臺服務配置(文件參考):文件位置: 工程項目中的ini目錄下api_app.inishell

      [uwsgi]
      # 全部的配置文件的路徑必須爲絕對路徑
      
      # 服務的端口
      socket = 127.0.0.1:5080
      # wsgi規範的模塊的路徑信息
      wsgi-file = /webapps/whn/elm_webapps/api_app.py
      callable = api_app
      
      # 運行時,先進入到哪一個工程目錄
      chdir = /webapps/whn/elm_webapps/
      
      # 虛擬環境的路徑
      virtualenv = /webapps/whn/virtual/elm/
      
      processes = 1
      threads = 1
      master = true
      
      daemonize = /webapps/whn/logs/api.log

4、Nginx服務器篇

  • Nginx安裝

    • 阿里雲自帶了nginx的yum源,能夠直接使用yum進行安裝,建議仍是使用root用戶進行安裝

      $ yum install nginx
  • Nginx的經常使用控制方式

    • nginx的啓動

      $ nginx
    • nginx的重啓

      $ nginx -s reload
    • nginx的配置文件測試

      $ nginx -t
  • Nginx的配置文件

    • nginx的配置文件採用的是主從配置的關係,即由主配置文件,而後在主配置文件內經過include包含其餘子配置文件.
    • nginx的主配置文件所在位置: /etc/nginx/nginx.conf
    • nginx主配置文件main空間字段含義:
# user指定了nginx的worker進程以什麼用戶和組權限運行,必須改成你開發的用戶和所屬組
user whn webapps;			# 須要修改 例: user 用戶名   組名
# worker_processes表明工人進程的數量,建議和CPU核心數一致
worker_processes auto;
# 全局錯誤日誌文件
error_log /var/log/nginx/error.log;
# master進程的進程號存放的位置
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
# ★ 不建議修改這裏的include文件,他是表明全局; ★
# ★ 建議修改http空間裏的include來包含我的業務網站的配置信息. ★
  • nginx的事件空間字段含義:
events {
	# 每一個工人進程的鏈接最大數
    worker_connections 1024;
    # 使用什麼模型進行IO複用
    use epoll;
}
  • nginx的http空間字段含義:

    http {
    	# 日誌打印格式
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        # 訪問日誌存儲位置及存儲內容所使用的格式
        access_log  /var/log/nginx/access.log  main;
    
    	# 打開內核文件傳輸的開關
        sendfile            on;
        tcp_nopush          on;
        tcp_nodelay         on;
        keepalive_timeout   65;
        types_hash_max_size 2048;
    
    	# 包含content-type的取值依據文件
        include             /etc/nginx/mime.types;
        # 若傳輸文件後綴名無效時,默認content-type的取值
        default_type        application/octet-stream;
    
        # Load modular configuration files from the /etc/nginx/conf.d directory.
        # See http://nginx.org/en/docs/ngx_core_module.html#include
        # for more information.
        # ★ 系統默認的子配置存儲的位置,建議屏蔽後,包含本身工程目錄下的文件 ★
        #include /etc/nginx/conf.d/*.conf;
        # ★ 配置本身工程項目的nginx配置文件 ★
        include /webapps/whn/elm_webapps/conf.d/*.conf;		# 放在工程目錄內
    
    	# nginx官方提供的參考server配置,能夠屏蔽來使自定義的虛擬服務起做用
        # server {
        #     listen       80 default_server;
        #     listen       [::]:80 default_server;
        #     server_name  _;
        #     root         /usr/share/nginx/html;
    
        # Load configuration files for the default server block.
        #     include /etc/nginx/default.d/*.conf;
    
        #    location / {
        #     }
    
        #     error_page 404 /404.html;
        #         location = /40x.html {
        #     }
    
        #     error_page 500 502 503 504 /50x.html;
        #         location = /50x.html {
        #     }
        # }
    }
  • Nginx的反向代理

    • nginx的虛擬服務器配置,其實就是把靜態請求和動態請求經過location區分出來

    • 後臺虛擬服務的參考配置:文件位置: 工程項目中的conf.d目錄下cms_app.conf

      server {
      	# listen表明監聽端口
          listen   80;
          # server_name表明虛擬服務器的域名
          server_name _;
      
      	# location表明一條匹配規則,當規則知足時,指定括號裏的映射關係
          location /static/ {			# 靜態文件  當訪問靜態文件時,自動到alias 指定的路徑 尋找
          	# 使用alias作虛擬url和物理目錄的映射關係.
              alias    /webapps/whn/elm_webapps/apps/cms_statics/; # 靜態文件路徑
          }
      
          location / {
          	# 加載nginx提供的uwsgi模塊
              include uwsgi_params;
              # 利用uwsgi_pass訪問本地socket的5050端口,進行進程間通訊
              uwsgi_pass 127.0.0.1:5050; # 對應uwsgi的端口
          }
      }
    • API虛擬服務的參考配置:文件位置: 工程項目中的conf.d目錄下api_app.conf

      server {
          listen   9801;		# 監聽此端口
          server_name _;
      
          location /api/ {	# 爲動態資源請求
              include uwsgi_params;
              uwsgi_pass 127.0.0.1:5080; # 與本地5080 端口進行進程間通訊 對應uwsgi的端口
          }
      
          location / {
              alias   /webapps/whn/elm_webapps/apps/vue_client/; # 靜態文件資源
              # 默認訪問該路徑時,找哪一個文件做爲首頁文件
              index   index.html;	# 當訪問跟目錄時,自動響應index.html 資源
          }
      }

5、 啓動服務注意(關閉Linux系統防火牆)

每次啓動Nginx前 都必須映射兩個ini文件至uwsgi服務器,不然動態內容不可訪問

命令語法: uwsgi文件位置 ini文件位置

查看啓動狀態: netstat -tanp 使用此命令查看服務是否開啓

相關文章
相關標籤/搜索