摘要:最近在學(xué)習(xí),本文介紹一下如何部署開發(fā)的應(yīng)用,同時(shí)也學(xué)習(xí)一下的使用,這只是在上的一個(gè)實(shí)驗(yàn)。應(yīng)用這里使用的應(yīng)用就是官方的文檔中給出的。安裝使用安裝會(huì)自動(dòng)安裝及其依賴的程序。啟動(dòng)完成后,訪問訪問時(shí)出現(xiàn)了錯(cuò)誤,這是因?yàn)槲覀兊膽?yīng)用還沒有啟動(dòng)。
最近在學(xué)習(xí)Flask,本文介紹一下如何部署Flask開發(fā)的應(yīng)用,同時(shí)也學(xué)習(xí)一下Nginx的使用,這只是在Mac上的一個(gè)實(shí)驗(yàn)。
應(yīng)用這里使用的應(yīng)用就是官方的文檔中給出的Flaskr。
安裝Nginx使用HomeBrew安裝Nginx:
shell$ brew install nginx
HomeBrew會(huì)自動(dòng)安裝Nginx及其依賴的程序。在我的電腦上安裝的是Nginx 1.6.2,配置文件的路徑是/usr/local/etc/nginx/nginx.conf。
啟動(dòng)Nginx的命令:
shell$ nginx
Nginx的默認(rèn)端口是8080,用瀏覽器打開localhost:8080,顯示如下所示的頁(yè)面說明Nginx已經(jīng)工作了。
配置Nginx修改Nginx的配置文件:
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; } }
重新啟動(dòng)Nginx:
shell$ nginx -s quit $ sudo nginx
因?yàn)槭褂昧?0端口,啟動(dòng)Nginx時(shí)需要加上sudo。
啟動(dòng)完成后,訪問localhost:
訪問時(shí)出現(xiàn)了錯(cuò)誤,這是因?yàn)槲覀兊膽?yīng)用還沒有啟動(dòng)。
FastCGI ServerNginx是一個(gè)靜態(tài)WEB服務(wù)器,不能直接運(yùn)行我們的Python應(yīng)用,當(dāng)Nginx接受到請(qǐng)求時(shí),會(huì)通過FastCGI轉(zhuǎn)發(fā)給我們的應(yīng)用,應(yīng)用是運(yùn)行在FastCGI Server上的,這個(gè)server接收Nginx的請(qǐng)求并調(diào)用我們的程序,將結(jié)果返回給Nginx,Nginx再將結(jié)果返回給用戶。
我們要使用的FastCGI Server是flup,安裝方法:
shell$ pip install flup
在應(yīng)用目錄下創(chuàng)建一個(gè)fcgi文件,例如flaskr.fcgi:
Python#!/usr/bin/python from flup.server.fcgi import WSGIServer from flaskr import app if __name__ == "__main__": WSGIServer(app, bindAddress="/tmp/flaskr-fcgi.sock").run()
同時(shí)給fcgi文件可執(zhí)行的權(quán)限:
shell$ chmod +x flaskr.fcgi
手動(dòng)啟動(dòng)server:
shell$ screen $ ./flaskr.fcgi
使用screen使server在后臺(tái)運(yùn)行,或者:
shell$ nohup ./flaskr.fcgi &
再次訪問localhost就可以看到我們的應(yīng)用了。
遇到的問題第一次運(yùn)行FastCGI server后,任然無法訪問,查看Nginx的日志后發(fā)現(xiàn)Nginx服務(wù)器沒有權(quán)限訪問socket文件,修改nginx.conf添加user配置:
user wzy;
啟動(dòng)的時(shí)候Nginx報(bào)錯(cuò):
nginx: [emerg] getgrnam("wzy") failed in /usr/local/etc/nginx/nginx.conf:2
Google一下后發(fā)現(xiàn)要加上用戶組才行,改成這樣:
user wzy wheel;
再次啟動(dòng)Nginx后一切正常了。
Nginx配置項(xiàng)user的使用方法:
Syntax: user user [group]; Default: user nobody nobody;
如果忽略group,Nginx會(huì)使用和user名稱一樣的用戶組,例如我設(shè)置user wzy,那么Nginx啟動(dòng)的時(shí)候會(huì)去查找用戶組wzy,我的電腦上沒有這個(gè)用戶組,所以Nginx會(huì)報(bào)錯(cuò)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/37520.html
摘要:最近想學(xué)點(diǎn),發(fā)現(xiàn)大家一般都是自己編譯。安裝前,可以用查看各個(gè)安裝包支持的模塊。權(quán)衡之后,發(fā)現(xiàn)最佳選擇為,也就是標(biāo)準(zhǔn)版。需要安裝以支持注意啟動(dòng)時(shí),綁定的文件。這個(gè)文件后續(xù)配置時(shí)要用到,它是和通信的橋梁。訪問,不出意外即可看到另請(qǐng)參閱 最近想學(xué)點(diǎn) Nginx,發(fā)現(xiàn)大家一般都是自己編譯。自己編譯也不難,但是考慮到 Ubuntu 自帶的安裝包就已經(jīng)夠用了,所以姑且先用起來再說。 安裝 Ngin...
摘要:最近想學(xué)點(diǎn),發(fā)現(xiàn)大家一般都是自己編譯。安裝前,可以用查看各個(gè)安裝包支持的模塊。權(quán)衡之后,發(fā)現(xiàn)最佳選擇為,也就是標(biāo)準(zhǔn)版。需要安裝以支持注意啟動(dòng)時(shí),綁定的文件。這個(gè)文件后續(xù)配置時(shí)要用到,它是和通信的橋梁。訪問,不出意外即可看到另請(qǐng)參閱 最近想學(xué)點(diǎn) Nginx,發(fā)現(xiàn)大家一般都是自己編譯。自己編譯也不難,但是考慮到 Ubuntu 自帶的安裝包就已經(jīng)夠用了,所以姑且先用起來再說。 安裝 Ngin...
摘要:實(shí)際上還是單進(jìn)程阻塞運(yùn)行的,即使在中配置了也無法實(shí)現(xiàn)多線程使用。多線程情況配置啟用多線程在中配置兩條測(cè)試路由先用瀏覽器訪問隨即立刻訪問可見兩次訪問是不同的線程處理的,不會(huì)出現(xiàn)堵塞的情況。 背景 由于目前在用的Flask項(xiàng)目涉及到一部分依賴Windows的處理,還無法遷移到linux平臺(tái),那么在windows環(huán)境下,要怎么部署呢? 思路 根據(jù)Flask官網(wǎng)介紹,由于Flask內(nèi)置的服務(wù)器...
摘要:實(shí)際上還是單進(jìn)程阻塞運(yùn)行的,即使在中配置了也無法實(shí)現(xiàn)多線程使用。多線程情況配置啟用多線程在中配置兩條測(cè)試路由先用瀏覽器訪問隨即立刻訪問可見兩次訪問是不同的線程處理的,不會(huì)出現(xiàn)堵塞的情況。 背景 由于目前在用的Flask項(xiàng)目涉及到一部分依賴Windows的處理,還無法遷移到linux平臺(tái),那么在windows環(huán)境下,要怎么部署呢? 思路 根據(jù)Flask官網(wǎng)介紹,由于Flask內(nèi)置的服務(wù)器...
閱讀 1699·2021-10-29 13:11
閱讀 871·2021-09-22 10:02
閱讀 1719·2021-08-20 09:35
閱讀 1581·2019-08-30 15:54
閱讀 2534·2019-08-30 15:44
閱讀 1413·2019-08-29 16:52
閱讀 1132·2019-08-23 12:56
閱讀 790·2019-08-22 15:16