一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 在Mac OS上部署Nginx和FastCGI以及Flask框架的教程

在Mac OS上部署Nginx和FastCGI以及Flask框架的教程

2020-06-20 10:09wzyplus Python

這篇文章主要介紹了在Mac OS上部署Nginx和FastCGI以及Flask框架的教程,Flask是Python下一個極簡的web開放框架,需要的朋友可以參考下

最近在學習Flask,本文介紹一下如何部署Flask開發的應用,同時也學習一下Nginx的使用,這只是在Mac上的一個實驗。
應用

這里使用的應用就是官方的文檔中給出的Flaskr
安裝Nginx

使用HomeBrew安裝Nginx:

?
1
$ brew install nginx

HomeBrew會自動安裝Nginx及其依賴的程序。在我的電腦上安裝的是Nginx 1.6.2,配置文件的路徑是/usr/local/etc/nginx/nginx.conf。

啟動Nginx的命令:

?
1
$ nginx

Nginx的默認端口是8080,用瀏覽器打開localhost:8080,顯示如下所示的頁面說明Nginx已經工作了。

在Mac OS上部署Nginx和FastCGI以及Flask框架的教程

配置Nginx

修改Nginx的配置文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
server {
  listen 80;
  server_name localhost;
  charset utf-8;
 
  location / { try_files $uri @flaskr; }
  location @flaskr {
    include fastcgi_params;
    fastcgi_param PATH_INFO $fastcgi_script_name;
    fastcgi_param SCRIPT_NAME "";
    fastcgi_pass unix:/tmp/flaskr-fcgi.sock;
  }
}

重新啟動Nginx:

?
1
2
$ nginx -s quit
$ sudo nginx

因為使用了80端口,啟動Nginx時需要加上sudo。

啟動完成后,訪問localhost:

在Mac OS上部署Nginx和FastCGI以及Flask框架的教程

訪問時出現了錯誤,這是因為我們的應用還沒有啟動。
FastCGI Server

Nginx是一個靜態WEB服務器,不能直接運行我們的Python應用,當Nginx接受到請求時,會通過FastCGI轉發給我們的應用,應用是運行在FastCGI Server上的,這個server接收Nginx的請求并調用我們的程序,將結果返回給Nginx,Nginx再將結果返回給用戶。

我們要使用的FastCGI Server是flup,安裝方法:

?
1
$ pip install flup

在應用目錄下創建一個fcgi文件,例如flaskr.fcgi:

?
1
2
3
4
5
6
#!/usr/bin/python
from flup.server.fcgi import WSGIServer
from flaskr import app
 
if __name__ == '__main__':
  WSGIServer(app, bindAddress='/tmp/flaskr-fcgi.sock').run()

同時給fcgi文件可執行的權限:

?
1
$ chmod +x flaskr.fcgi

手動啟動server:

?
1
2
$ screen
$ ./flaskr.fcgi

使用screen使server在后臺運行,或者:

?
1
$ nohup ./flaskr.fcgi &

再次訪問localhost就可以看到我們的應用了。
遇到的問題

第一次運行FastCGI server后,任然無法訪問,查看Nginx的日志后發現Nginx服務器沒有權限訪問socket文件,修改nginx.conf添加user配置:

 

復制代碼 代碼如下:
user wzy;

啟動的時候Nginx報錯:

?
1
nginx: [emerg] getgrnam("wzy") failed in /usr/local/etc/nginx/nginx.conf:2

Google一下后發現要加上用戶組才行,改成這樣:

 

復制代碼 代碼如下:
user wzy wheel;

再次啟動Nginx后一切正常了。

Nginx配置項user的使用方法:

?
1
2
Syntax: user user [group];
Default: user nobody nobody;

如果忽略group,Nginx會使用和user名稱一樣的用戶組,例如我設置user wzy,那么Nginx啟動的時候會去查找用戶組wzy,我的電腦上沒有這個用戶組,所以Nginx會報錯。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 黑人巨大精品战中国美女 | 国产综合亚洲专区在线 | 97热在线 | 久久精品一卡二卡三卡四卡视频版 | xxxx性欧美极品另类 | 色综合久久中文字幕网 | 91系列在线观看免费 | 四虎成人永久地址 | 欧美日韩一区二区三区韩大 | 激情乱文| 99在线视频免费 | 女同全黄h全肉动漫 | 乌克兰黄色录像 | 男人网站视频 | 精品一区二区三区高清免费观看 | 婷婷综合亚洲 | 特级老女人淫片高清视频 | 亚洲成年网站在线观看 | 超强台风免费观看完整版视频 | 精品日韩一区二区三区 | 久久久这里有精品999 | 青春草在线观看精品免费视频 | 玩两个少妇女邻居 | 国色天香社区视频免费观看3 | 175m美女被网友灌醉啪啪玩脚 | 玩两个少妇女邻居 | 亚洲成人三级 | 成人特级毛片69免费观看 | 91av导航| 秋霞一级| 天天躁天天碰天天看 | 免费lulu网站 | yjsp妖精视频在线观看免费 | 国产在线看片护士免费视频 | 国产亚洲精品看片在线观看 | 国产成人精品一区 | 亚洲精品中文 | 毛毛片在线 | 国产在线播放一区 | 国产精品久久久久影院色老大 | 成人动漫在线免费看 |