CentOS7.5搭建Flask環境gunicorn(uWSGI)+nginx

gunicorn 的安裝與使用很是的簡單   

gunicorn的使用很是簡單  一條命令  -w 爲工做數量  -b爲綁定的host       wsgi所在文件:實例名html

sudo pip3 intstall gunicorn


sudo gunicorn -w 4 -b 127.0.0.1:8000  Project.wsgi:application

 

gunicorn的配置

gunicorn.conf文件也支持py文件python

# 並行工做進程數
workers = 4
# 指定每一個工做者的線程數
threads = 2
# 監聽內網端口5000
bind = '127.0.0.1:5000'
# 設置守護進程,將進程交給supervisor管理
daemon = 'false'
# 工做模式協程
worker_class = 'gevent'
# 設置最大併發量
worker_connections = 2000
# 設置進程文件目錄
pidfile = '/var/run/gunicorn.pid'
# 設置訪問日誌和錯誤信息日誌路徑
accesslog = '/var/log/gunicorn_acess.log'
errorlog = '/var/log/gunicorn_error.log'
# 設置日誌記錄水平
loglevel = 'warning'
使用配置文件中的參數啓動

gunicorn -c gunicorn.conf app:app

 

uWSGI配置

pip 安裝 uwsginginx

# 啓動命令
uwsgi --http :8000 --wsgi-file test.py
    http :8000: 使用http協議,端口8000
    wsgi-file test.py: 加載指定的文件,test.py

 

uwsgi支持ini、xml等多種配置方式,本文以 ini 爲例, 在/etc/目錄下新建uwsgi_nginx.ini,添加以下配置:

# mysite_uwsgi.ini file
# 配置
[uwsgi]
#配置文件路徑
chdir           = /opt/mysite
# wsgi文件路徑
module          = mysite.wsgi
# 環境目錄
home            = /opt/venv

# master
master          = true

processes       = 1

socket          = 0.0.0.0:8000
vacuum          = true

 

 

nginx的配置

安裝

 yum install nginx    默認安裝到/usr/local/nginx/目錄,進入目錄。

 

簡單配置啓動

# 打開/usr/local/nginx/conf/nginx.conf文件


server {
    # 監聽80端口
    listen 80;
    # 本機
    server_name localhost; 
    # 默認請求的url
    location / {
        #請求轉發到 項目服務器(gunicorn,uwsgi)
        proxy_pass http://127.0.0.1:5001; 
        #設置請求頭,並將頭信息傳遞給服務器端 
        proxy_set_header Host $host; 
    }
}

 

啓動nginx:

#啓動
sbin/nginx
#查看
ps aux | grep nginx
#中止
sbin/nginx -s stop

 

nginx配置文件

worker_processes  1;
error_log  logs/error.log;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    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  logs/access.log  main;
    sendfile        on;
    keepalive_timeout  65;
  #nginx反向代理uwsgi
    server {
        listen       80;
        server_name  192.168.11.64;
        location / {
      #nginx自帶ngx_http_uwsgi_module模塊,起到nginx和uwsgi交互做用
         #經過uwsgi_pass設置服務器地址和協議,講動態請求轉發給uwsgi處理
         include  /opt/nginx1-12/conf/uwsgi_params;
         uwsgi_pass 0.0.0.0:8000;
            root   html;
            index  index.html index.htm;
        }
      #nginx處理靜態頁面資源
      location /static{
        alias /opt/nginx1-12/static;   
         }
     #nginx處理媒體資源
     location /media{
        alias /opt/nginx1-12/media;  
         }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

django靜態文件配置問題

# 修改django配置

STATIC_ROOT='/opt/nginx1-12/static'
STATIC_URL = '/static/'
STATICFILES_DIRS=[
    os.path.join(BASE_DIR,"static"),
]


經過python3 manage.py collectstatic 收集全部你使用的靜態文件保存到STATIC_ROOT!django

 
 
STATIC_ROOT 文件夾 是用來將全部STATICFILES_DIRS中全部文件夾中的文件,以及各app中static中的文件都複製過來
# 把這些文件放到一塊兒是爲了用nginx等部署的時候更方便
相關文章
相關標籤/搜索