運用Nginx代理和UWSGI將Flask項目部署在Linux中 詳細步驟

nginx:
安裝可以參照的路徑:
? http://nginx.org/en/linux_packages.html#Ubuntu

啟動Nginx

?? ?nginx ?? ?[ -c ?configpath] ? 默認配置目錄:/etc/nginx/nginx.conf

查看進程:

?? ?ps -ef |grep nginx

控制Nginx

?? ?nginx -s xxxstop ?? ??? ?快速關閉quit?? ??? ?優雅的關閉reload?? ??? ?重新加載配置

nginx的配置:/etc/nginx/nginx.conf ?----》 nginx默認的啟動文件

cp一個啟動文件到項目目錄中?

配置代碼內容:


user ?root; ? -----》 要與master process名稱保持相同

運行要用絕對路徑
worker_processes ?1;

error_log ?/var/log/nginx/error.log warn;
pid ? ? ? ?/var/run/nginx.pid;


events {
? ? worker_connections ?1024;
}


http {
? ? include ? ? ? /etc/nginx/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 ?/var/log/nginx/access.log ?main;

? ? sendfile ? ? ? ?on;
? ? #tcp_nopush ? ? on;

? ? keepalive_timeout ?65;

? ? #gzip ?on;

? ? server {
? ? ? ? listen ? ? ? 80;
? ? ? ? server_name ?localhost;

? ? ? ? #charset koi8-r;
? ? ? ? #access_log ?/var/log/nginx/host.access.log ?main;
? ? ? ? ? root ? /home/liu/flask0923; ? -----》 項目目錄

? ? ? ? location /static { ? ?-----》 配置靜態文件
? ? ? ? ? alias ?/home/liu/flask0923/static;
? ? ? ? }

? ? ? ? location / { ? ?------》 python相關的文件 ?對接uwsgi服務器
? ? ? ? ? ? include ?/etc/nginx/uwsgi_params;
? ? ? ? ? ? uwsgi_pass ?localhost:8000; ? -----》 端口號要注意與uwsgi.ini的保持一致
? ? ? ? }


? ? }
}


啟動: nginx -c? +絕對路徑?

如果出現日志log文件錯誤 命令前 加上? sudo!!!!!!!?

nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
2019/09/25 19:57:51 [warn] 4096#4096: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2
2019/09/25 19:57:51 [notice] 4096#4096: signal process started
2019/09/25 19:57:51 [alert] 4096#4096: kill(3886, 3) failed (1: Operation not permitted)


?

? ? ?nginx -c /home/liu/flask0923/nginx.conf

? ? ?nginx -s quit

? ? ?nginx -s reload

配置: uwsgi

進入虛擬環境 workon中

pip install uwsgi

在項目下:創建uwsgi.ini 文件??!!!!!!!!踩坑用錯會無法監聽80端口

內容:
[uwsgi]
# 使用nginx連接時 使用
# socket = 0.0.0.0:8000

# 直接作為web服務器使用
http = 0.0.0.0:8000

# 配置工程目錄
chdir = /home/running/Documents/day46_blog
wsgi-file = manage.py
# router
callable = app

# 配置項目的wsgi目錄。相對于工程目錄 django
# chdir = /root/shop/aixianfeng
# wsgi-file = aixianfeng/wsgi.py


#配置進程,線程信息
processes = 4

threads = 10

enable-threads = True

master = True

pidfile = uwsgi.pid

daemonize = uwsgi.log

啟動: uwsgi --ini ?/home/running/Documents/day46_blog/uwsgi.ini

停止: uwsgi --stop uwsgi.pid

Nginx.conf


user  root;
worker_processes  1;error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/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  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;server {listen       80;server_name  localhost;#charset koi8-r;#access_log  /var/log/nginx/host.access.log  main;root   /home/liu/flask0923;location /static {alias  /home/liu/flask0923/static;}location / {include  /etc/nginx/uwsgi_params;uwsgi_pass  localhost:8000;}#error_page   500 502 503 504  /50x.html;#location = /50x.html {#    root   /usr/share/nginx/html;#}}}

uwsgi.ini

[uwsgi]
# 使用nginx連接時 使用
socket = 0.0.0.0:8000# 直接作為web服務器使用
#http = 0.0.0.0:8000# 配置工程目錄
chdir = /home/liu/flask0923
wsgi-file = manage.py
# router
callable = app# 配置項目的wsgi目錄。相對于工程目錄
# chdir = /root/shop/flaskday5
# wsgi-file = aixianfeng/wsgi.py#配置進程,線程信息
processes = 4threads = 10enable-threads = Truemaster = Truepidfile = uwsgi.piddaemonize = uwsgi.log

成功啟動uwsgi和nginx 即可將項目成功部署!

root@ubuntu:~# workon flaskenv


(flaskenv) root@ubuntu:~# uwsgi --ini /home/admin/flask0923/uwsgi.ini?

(flaskenv) root@ubuntu:~# nginx -c /home/admin/flask0923/nginx.conf?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456316.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456316.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456316.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

機器學習算法之KNN

前言 KNN一般用于有監督的分類場景,除此之外,KNN在異常檢測場景中也有應用,下面主要介紹下KNN在這兩面的應用原理。 KNN做分類的原理 計算步驟如下: 1)算距離:給定測試對象,計算它與訓練集中…

Supermap 組合單值專題圖與標簽專題圖演示樣例

效果圖例如以下&#xff1a;單值專題圖并顯示每一個區域的相關文字信息 代碼&#xff1a; <!DOCTYPE> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> <title>單值專題圖</title>…

[劍指Offer] 25.復雜鏈表的復制

1 /*2 struct RandomListNode {3 int label;4 struct RandomListNode *next, *random;5 RandomListNode(int x) :6 label(x), next(NULL), random(NULL) {7 }8 };9 */ 10 class Solution 11 { 12 public: 13 //在舊鏈表中創建新鏈表&#xff0…

Flask項目中應用七牛云存儲

七牛云存儲&#xff1a; https://developer.qiniu.com/kodo/sdk/1242/python 點擊注冊開通七牛開發者帳號 如果已有賬號&#xff0c;直接登錄七牛開發者后臺&#xff0c;點擊這里查看 Access Key 和 Secret Key pip install qiniu q Auth(Access Key,Secret Key) b…

異常檢測算法之IForest

前言 IForest即孤立森林&#xff0c;可以用于做異常檢測。一句話總結IForest做異常檢測的原理&#xff1a;異常點密度小&#xff0c;基于樹模型容易被一下切割出來&#xff0c;正常值密度大&#xff0c;需要切割多次才能得到目標值。 原理 iForest算法得益于隨機森林的思想&…

JavaScript - 動態數據

1、使用ajax進行數據的請求 function getData(params){$.ajax({type: "POST", //提交方式data: "{params}", //請求參數url:, //請求接口contentType: "application/text;charsetutf-8",async: false, //是否同步dataType: &quo…

用c#編寫爬蟲在marinetraffic下載船僅僅圖片

近期在做船僅僅識別方面的事情&#xff0c;須要大量的正樣本來訓練adaboost分類器。于是到marinetraffic這個站點上下載船僅僅圖片。寫個爬蟲來自己主動下載顯然非常方便。 站點特點 在介紹爬蟲之前首先了解一下marinetraffic這個站點的一些特點&#xff1a; 1. 會定期檢測爬蟲…

發送手機驗證碼通過調用第三方網易云信API(flask項目)

一、 獲取驗證碼&#xff1a; 1. 輸入手機號碼 2. 通過ajax發送請求 3. 后端&#xff1a; 獲取手機號碼 使用requests向第三方的服務端&#xff08;網易云信&#xff09;發送請求 官方文檔 https://dev.yunxin.163.com/docs/product/%E7%9F%AD%E4%BF%A1/%E7%9F…

異常檢測算法之LOF

前言&#xff1a; LOF&#xff1a;Local outlier factor&#xff0c;即局部異常因子。LOF主要是通過比較每個點p和其鄰域點的密度來判斷該點是否為異常點&#xff0c;如果點p的密度越低&#xff0c;越可能被認定是異常點。至于密度&#xff0c;是通過點之間的距離來計算的&…

Android屬性動畫進階用法

2019獨角獸企業重金招聘Python工程師標準>>> 在上周二文章中介紹補間動畫缺點的時候有提到過&#xff0c;補間動畫是只能對View對象進行動畫操作的。而屬性動畫就不再受這個限制&#xff0c;它可以對任意對象進行動畫操作。那么大家應該還記得之前我舉的一個例子&am…

5.3linux下C語言socket網絡編程簡例

原創文章&#xff0c;轉載請注明轉載字樣和出處&#xff0c;謝謝&#xff01; 這里給出在Linux下的簡單socket網絡編程的實例&#xff0c;使用tcp協議進行通信&#xff0c;服務端進行監聽&#xff0c;在收到客戶端的連接后&#xff0c;發送數據給客戶端&#xff1b;客戶端在接受…

parser.add_argument驗證格式

article_bp Blueprint(article, __name__, url_prefix/api) api Api(article_bp) parser reqparse.RequestParser() parser.add_argument(name, typestr, help必須填寫名稱, requiredTrue) channel_fields { id: fields.Integer, cname: fields.String } clas…

異常檢測算法之HBOS

前言 HBOS&#xff08;Histogram-based Outlier Score&#xff09;核心思想&#xff1a;將樣本按照特征分成多個區間&#xff0c;樣本數少的區間是異常值的概率大。 原理 該方法為每一個樣本進行異常評分&#xff0c;評分越高越可能是異常點。評分模型為&#xff1a; 假設樣…

字典和json 的區別 和轉換

前言&#xff1a;字典和json非常像。接下來比較一下兩者的異同 先看一下字典的寫法&#xff1a; a {a:1,b:2,c:3} 再看一下json的寫法&#xff1a; {"studentInfo":{"id":123456,"stu_name":"Dorra"} } 從形式上看&#xff0c;都是…

Struts2的工作原理及工作流程

眾所周知&#xff0c;Struts2是個非常優秀的開源框架&#xff0c;我們能用Struts2框架進行開發&#xff0c;同時能 快速搭建好一個Struts2框架&#xff0c;但我們是否能把Struts2框架的工作原理用語言表達清楚&#xff0c;你表達的原理不需要說出底層是怎么實現的&#xff0c;我…

正則表達式采坑

[a-zA-Z]匹配大小寫字符 \w 匹配字母、數字、下劃線 {5,7} 表示前面的字符&#xff08;即&#xff1a;\w&#xff09;必須至少出現 5 次最多出現 7 次. 合起來就是 >6 少于8個的字符 [a-zA-Z]\w{6,12} --------------》》 就是要輸入七位數到十三位&#x…

easyui動態顯示和隱藏表頭

為什么80%的碼農都做不了架構師&#xff1f;>>> var _bt{date:日期,subtime:填寫時間,xz:小組,uname:操作人,qdbh:渠道編號,mt:媒體,zh:賬戶,sjd:時間段,tfwz:投放位置,tfh:投放號,td:團隊,sjje:實際金額,jxs:進線數,cb:成本,yxzyjx:有效資源進線,yxzyl:有效資源率…

物聯網

如果要說未來什么技術正在或將徹底改變人類生活、工作和娛樂的方式&#xff0c;那必須是物聯網。小到各種可穿戴產品&#xff0c;大到汽車、工廠和樓宇&#xff0c;物聯網能使一切設備互聯并具備智慧。物聯網也正改變著產業的格局&#xff0c;索尼、夏普、東芝等日本傳統電子設…

理解:復雜度是O(log^n) 就是二分法

冒昧問一下&#xff0c;為什么二分法查找的復雜度是O(log^n)&#xff1f;這是怎么計算的&#xff1f; 你要從1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6&#xff0c;7&#xff0c;8里面找到3&#xff0c;分成幾步&#xff1f; 第一步&#xff0c;…

淺談管理數據平臺的一些想法

前言&#xff1a; 對于任何使用大數據技術的公司來說&#xff0c;大數據平臺特別是Hive來說&#xff0c;維護其高效快速的運行&#xff0c;對整個公司的運作來說至關重要。比如說&#xff1a;某個調度任務失敗了造成業務部門的某些報表無法正常產出&#xff1b;hive平臺最近速…