摘要:目前在和平臺(tái)下使用最廣泛的免費(fèi)服務(wù)器有和。涉及到普通用戶執(zhí)行命令時(shí)權(quán)限不足的問題,可在命令前增加指令解決。是基于二進(jìn)制的線路協(xié)議,與協(xié)議作用相同,但屬于服務(wù)器自有協(xié)議是服務(wù)器,它實(shí)現(xiàn)了協(xié)議等協(xié)議安裝。
前言
瀏覽器上網(wǎng)的過程簡單來說即是瀏覽器從服務(wù)器中獲取網(wǎng)站信息,經(jīng)過渲染后將效果呈現(xiàn)給用戶。這里側(cè)重介紹下在幕后默默工作著的服務(wù)器。
Web服務(wù)器是運(yùn)行在物理服務(wù)器上的一個(gè)程序,永久地等待客戶端(主要是瀏覽器,比如Chrome,F(xiàn)irefox等)發(fā)送請求。Web服務(wù)器通過HTTP協(xié)議與客戶端通信,當(dāng)收到請求之后,如果是靜態(tài)文件的話Web服務(wù)器可直接返回,如果不是靜態(tài)文件的話需要有一個(gè)Web應(yīng)用服務(wù)器根據(jù)不同的請求處理對應(yīng)的業(yè)務(wù)邏輯生成相應(yīng)的響應(yīng),如下圖所示。
目前在UNIX和LINUX平臺(tái)下使用最廣泛的免費(fèi)Web服務(wù)器有Apache和Nginx。Nginx是高效的Web服務(wù)器和反向代理服務(wù)器,可以用作負(fù)載均衡,與Apache相比,Nginx支持高并發(fā),可以支持百萬級(jí)的TCP連接,十萬級(jí)別的并發(fā)連接,部署簡單,內(nèi)存消耗少,成本低,雖然動(dòng)態(tài)請求處理沒有Apache豐富,但Nginx支持uWSGI的uwsgi協(xié)議,可將動(dòng)態(tài)請求傳遞至uWSGI處理。
這里選擇使用Nginx和uWSGI相結(jié)合的應(yīng)用,由于Nginx是反向代理服務(wù)器,因此需要網(wǎng)絡(luò)上的Web應(yīng)用服務(wù)器uWSGI負(fù)責(zé)具體的應(yīng)用邏輯處理,雖然uWSGI也可以作為Web服務(wù)器應(yīng)用在小規(guī)模網(wǎng)站,但配合Nginx使用可以更好的利用Nginx在緩存、并發(fā)處理,安全防護(hù),日志等方面的強(qiáng)大功能。
下面就來介紹下如何搭建Nginx+uWSGI環(huán)境來運(yùn)行Python應(yīng)用。
下載源碼庫。Nginx服務(wù)器的安裝依托于openssl、zlib、pcre庫的支持,在安裝Nginx之前需要對這三個(gè)庫進(jìn)行安裝,以下提供各個(gè)源碼庫的下載地址:
(1)openssl-fips-2.0.2.tar.gz(安全通訊庫)https://www.openssl.org/source/
(2)zlib-1.2.7.tar.gz(數(shù)據(jù)壓縮庫)http://www.zlib.net/
(3)pcre-8.21.tar.gz(正則表達(dá)式庫)http://www.pcre.org
(4)nginx-1.2.6.tar.gz http://nginx.org/en/download....
安裝源碼庫。在Shell終端界面中輸入Linux命令執(zhí)行安裝。涉及到普通用戶執(zhí)行root命令時(shí)權(quán)限不足的問題,可在命令前增加sudo指令解決。執(zhí)行安裝分為以下幾步:
(1)解壓文件。tar zxvf openssl-fips-2.0.2.tar.gz
(2)進(jìn)入至存儲(chǔ)的文件夾路徑。cd openssl-fips-2.0.2
(3)運(yùn)行shell配置腳本檢測運(yùn)行環(huán)境,生成makefile文件。./configure(Nginx的配置腳本需要結(jié)合依托庫運(yùn)行:./configure --with-pcre=../pcre-8.21 --with-zlib=../zlib-1.2.7 --with-openssl=../openssl-fips-2.0.2)
若運(yùn)行環(huán)境不滿足,如運(yùn)行pcre配置文件時(shí)提示“configure: error: You need a C++ compiler for C++ support”,即缺少C++編譯器,那么需要安裝C++編譯器“sudo apt-get install g++”
(4)編譯源碼庫:make
(5)安裝源碼庫:make instal
執(zhí)行測試命令:./nginx -t(在/usr/local/nginx/sbin路徑下執(zhí)行),出現(xiàn)如下提示表示已經(jīng)安裝成功
啟動(dòng)/停止服務(wù)器
(1)執(zhí)行啟動(dòng)命令:./nginx。啟動(dòng)后在瀏覽器輸入http://localhost:80監(jiān)聽本機(jī)80端口,出現(xiàn)如下圖所示內(nèi)容,表示已經(jīng)成功啟動(dòng)nginx服務(wù)器
(2)執(zhí)行查看端口命令:netstat -ntlp
(3)篩選出nginx進(jìn)程并打?。簆s -ef|grep nginx
(4)Kill進(jìn)程ID方式退出nginx進(jìn)程:kill -QUIT
在介紹uWSGI服務(wù)器部署前,先梳理uwsgi、uWSGI、WSGI的區(qū)別:
WSGI(Web Server Gateway Interface)是為Python語言定義的Web服務(wù)器和Web應(yīng)用程序或框架之間的一種簡單而通用的接口協(xié)議,只要web服務(wù)器和 web應(yīng)用都遵守WSGI協(xié)議,那么兩者之間就可以任意組合。
uwsgi是基于二進(jìn)制的線路協(xié)議,與WSGI協(xié)議作用相同,但屬于uWSGI服務(wù)器自有協(xié)議
uWSGI是Web服務(wù)器,它實(shí)現(xiàn)了WSGI協(xié)議、uwsgi、http等協(xié)議
安裝uWSGI。此處通過pip安裝,也可以下載源碼進(jìn)行安裝。
pip install uwsgi
Python編寫應(yīng)用程序server.py,在網(wǎng)頁上顯示“Hello World”,代碼如下:
def application(environ, start_response): ??? status = "200 OK" ??? output = "Hello World!" ??? response_headers = [("Content-type", "text/plain"), ??????????????????????? ("Content-Length", str(len(output)))] ??? start_response(status, response_headers) ??? return [output]
啟動(dòng)uWSGI服務(wù)器??赏ㄟ^命令方式啟動(dòng)uWSGI,也可以將參數(shù)寫在配置文件中(inixmljsonyaml),指定配置文件來啟動(dòng)uWSGI(命令“uwsgi myapp.ini”)。
sudo uwsgi --http-socket :8001 --plugin python --wsgi-file server.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191
--http-socket參數(shù)指定了HTTP監(jiān)聽地址和端口,
--wsgi-file參數(shù)指定了WSGI應(yīng)用程序入口,uWSGI會(huì)自動(dòng)搜尋名為”application”的應(yīng)用對象并調(diào)用它。
--plugin python參數(shù)指定uWSGI?使用 python 插件去解析文件
--master 參數(shù)配置主進(jìn)程
--processes 參數(shù)配置多進(jìn)程
--threads參數(shù)配置多線程
--stats 參數(shù)配置在指定地址訪問狀態(tài)信息,如下圖在”127.0.0.1:9191″獲取JSON格式的運(yùn)行信息
配置文件內(nèi)容如下: [uwsgi] http-socket=:8001 plugins = python wsgi-file=server.py master=true processes=4 threads=2 stats=127.0.0.1:9191
瀏覽器URL輸入”http://localhost:8001″,可以訪問到server.py執(zhí)行的結(jié)果”Hello World!”
更多關(guān)于uWSGI的介紹可參考官網(wǎng)文檔:http://uwsgi-docs.readthedocs...
Ngx_http_uwsgi_module模塊起到Nginx服務(wù)器與uWSGI服務(wù)器交互作用,通過對uwsgi_pass設(shè)置服務(wù)器地址和協(xié)議,可將動(dòng)態(tài)內(nèi)容傳遞至uWSGI處理。
配置uWSGI。將uWSGI的HTTP端口監(jiān)聽改為socket端口監(jiān)聽,即配置文件中的“http-socket”項(xiàng)改為“socket”項(xiàng)。
[uwsgi] socket=127.0.0.1:3031 plugins = python wsgi-file=server.py master=true processes=4 threads=2 stats=127.0.0.1:9191
配置Nginx。打開Nginx的配置文件nginx.conf(Ubuntu上路徑“/usr/local/nginx/conf”),需要執(zhí)行“sudo chmod -R 777 nginx.conf”降低配置文件權(quán)限才可對服務(wù)器相關(guān)屬性進(jìn)行配置
配置代碼如下: server {? ???listen?????? 80;? ???server_name? localhost;? ???location / {? #root?? html; #index? index.html index.htm; include uwsgi_params;#加載uWSGI配置參數(shù) uwsgi_pass 127.0.0.1:3031;#請求轉(zhuǎn)發(fā)至”127.0.0.1:3031″端口上,即uWSGI服務(wù)器 ????????? }? ?? }?
啟動(dòng)uWSGI服務(wù)器和nginx服務(wù)器,再次訪問”http://localhost:80”時(shí)會(huì)看到python應(yīng)用程序返回“Hello World!”,表示已經(jīng)完成nginx服務(wù)器對uWSGI服務(wù)器的反向代理功能。
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf sudo service nginx restart$ uwsgi myapp.ini
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/39760.html
摘要:目前在和平臺(tái)下使用最廣泛的免費(fèi)服務(wù)器有和。涉及到普通用戶執(zhí)行命令時(shí)權(quán)限不足的問題,可在命令前增加指令解決。是基于二進(jìn)制的線路協(xié)議,與協(xié)議作用相同,但屬于服務(wù)器自有協(xié)議是服務(wù)器,它實(shí)現(xiàn)了協(xié)議等協(xié)議安裝。 前言 瀏覽器上網(wǎng)的過程簡單來說即是瀏覽器從服務(wù)器中獲取網(wǎng)站信息,經(jīng)過渲染后將效果呈現(xiàn)給用戶。這里側(cè)重介紹下在幕后默默工作著的服務(wù)器。Web服務(wù)器是運(yùn)行在物理服務(wù)器上的一個(gè)程序,永久地等待...
摘要:服務(wù)器上部署項(xiàng)目說白了就是讓你的項(xiàng)目在這臺(tái)服務(wù)器上運(yùn)行并且做到可以在公網(wǎng)上訪問你的項(xiàng)目??梢越鉀Q項(xiàng)目與項(xiàng)目之間對同一個(gè)包的不同版本的依賴問題。有可能會(huì)報(bào)的錯(cuò)是項(xiàng)目相關(guān)模塊的引入路徑不對,修改一下便可。 前一陣自己用flask框架寫了一個(gè)博客程序,寫完之后想部署到服務(wù)器上,因?yàn)槭切“祝宰约篻oogle了好些資料,講的零零碎碎而且有些地方只是告訴你怎么配置,但具體為什么這樣配卻沒有說明...
摘要:服務(wù)器上部署項(xiàng)目說白了就是讓你的項(xiàng)目在這臺(tái)服務(wù)器上運(yùn)行并且做到可以在公網(wǎng)上訪問你的項(xiàng)目。可以解決項(xiàng)目與項(xiàng)目之間對同一個(gè)包的不同版本的依賴問題。有可能會(huì)報(bào)的錯(cuò)是項(xiàng)目相關(guān)模塊的引入路徑不對,修改一下便可。 前一陣自己用flask框架寫了一個(gè)博客程序,寫完之后想部署到服務(wù)器上,因?yàn)槭切“?,所以自己google了好些資料,講的零零碎碎而且有些地方只是告訴你怎么配置,但具體為什么這樣配卻沒有說明...
閱讀 2912·2021-10-27 14:19
閱讀 543·2021-10-18 13:29
閱讀 1138·2021-07-29 13:56
閱讀 3556·2019-08-30 13:19
閱讀 1935·2019-08-29 12:50
閱讀 1060·2019-08-23 18:16
閱讀 3527·2019-08-22 15:37
閱讀 1905·2019-08-22 15:37