国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Flask + Gunicorn + Nginx 部署 - Ray Liang - 博客園
最近很多朋友都在問(wèn)我關(guān)于 Flask 部署的問(wèn)題,說(shuō)實(shí)在的我很樂(lè)意看到和回答這樣的問(wèn)題,至少證明了越來(lái)越多人開(kāi)始用 Flask 了。
之前我曾發(fā)表過(guò)一篇在 Ubuntu 上用 uwsgi + nginx 的 Flask 部署方法,說(shuō)實(shí)在的 uwsgi 是個(gè)大坑可能用在 Django 上還好吧,不過(guò)用在 Flask 上未必就如此。至少 , uwsgi 是個(gè)極為折騰人的東西??傊沂且恢闭J(rèn)為復(fù)雜的東西未必不好,但一定是不好用的。
我自己也經(jīng)過(guò)多番的糾結(jié)與嘗試,也終于找到了一個(gè) Flask 上靠譜的部署方案。我現(xiàn)在公司的微信后端平臺(tái)也采用這種部署方案。如果有興趣的朋友也不妨一看,或者給我提些更好的方案,畢竟知識(shí)只有共享了才知道是否有價(jià)值。
我在 Flask 官方文檔中找到其中一個(gè)有意思的內(nèi)容,這里是原諒鏈接:Standalone WSGI Containers ,其中并沒(méi)有 uwsgi 的身影。悻然,但是找到了一個(gè)不用折騰的 Flask 部署方案了 —— Gunicorn。
Ubuntu 上的準(zhǔn)備
假定你是在騰迅云或者阿里云購(gòu)買(mǎi)了VPS,那么直接執(zhí)行以下指令吧,其它的不多解釋了,無(wú)非就是準(zhǔn)備一下 python 環(huán)境。
$ sudo apt-get update$ sudo apt-get install python-dev python-pip python-virtualenv
然后安裝 nginx
$ sudo apt-get install nginx
/var/www 目錄下建立一個(gè) myflask 的文件夾(你的項(xiàng)目目錄),然后用 chmod 改一下權(quán)限
$ sudo mkdir /var/www/myflask$ sudo chmod 777 /var/www/myflask
注:當(dāng)然你可以使用 nginx 的默認(rèn)網(wǎng)站目錄 /usr/share/nginx/html
然后用 scp 指令直接將本機(jī)上的 flask 項(xiàng)目傳到服務(wù)器:
$ scp -r myflask root@www.mydomain.com:/var/www/myflask
域名就改成地址或者你的服務(wù)器正在使用的域名,我這里是用 root 用戶進(jìn)入的,你得按你的服務(wù)器的用戶來(lái)修改。兩大云的默認(rèn)根用戶是:
  • 騰迅 :ubuntu
  • 阿里 :root
Gunicorn
Gunicorn 綠色獨(dú)角獸 是一個(gè)Python WSGI UNIX的HTTP服務(wù)器。這是一個(gè)pre-fork worker的模型,從Ruby的獨(dú)角獸(Unicorn )項(xiàng)目移植。該Gunicorn服務(wù)器大致與各種Web框架兼容,只需非常簡(jiǎn)單的執(zhí)行,輕量級(jí)的資源消耗,以及相當(dāng)迅速。
我曾經(jīng)Google 過(guò) Gunicorn 與 uwsgi ,都說(shuō)uwsgi 的性能要比 gunicorn 高,所以最終結(jié)果就杯具了。不過(guò),現(xiàn)在回過(guò)頭來(lái)看這只 “獨(dú)角獸”還為時(shí)不晚吧。
安裝 Gunicorn
Gunicorn 應(yīng)該裝在你的 virtualenv 環(huán)境下,關(guān)于 virtualenv 就不多說(shuō)了,如果沒(méi)用過(guò)那就趕快腦補(bǔ)吧。安裝前記得激活 venv
(venv) $ pip install gunicorn
運(yùn)行 Gunicorn
(venv) $ gunicorn -w 4 -b 127.0.0.1:8080 wsgi:application
That's all! 它的安裝就這么簡(jiǎn)單。不過(guò)這里得作一個(gè)解釋。就是最后的那個(gè)參數(shù) wsgi:application 這個(gè)是程序入口,我得寫(xiě)個(gè)小小的范例來(lái)說(shuō)明一下:
新建一個(gè) wsgi.py 的文件, 注意,這里和 Flask 項(xiàng)目中常用的 manage.py 引導(dǎo)腳本是沒(méi)有半點(diǎn)毛關(guān)系的。(這是我笨,以前一直沒(méi)分清被uwsgi搞糊涂了)
# wsgi.pyfrom flask import Flaskdef create_app(): # 這個(gè)工廠方法可以從你的原有的 `__init__.py` 或者其它地方引入。 app = Flask(__name__) return appapplication = create_app()if __name__ == '__main__': application.run()
好了,這個(gè) wsgi:application 參數(shù)就很好理解了, 分兩部:wsgi 就是引導(dǎo)用的 python 文件名稱(不包括后綴/模塊名)application 就是 Flask 實(shí)例的名稱。這樣 gunicorn 就會(huì)找到具體要 host 哪一個(gè) flask 實(shí)例了。
從這里開(kāi)始就可以體現(xiàn) gunicorn 的好了,我們根本不用配什么配置文件的,一個(gè)指令就可以將它起動(dòng)。
Nginx 的配置
關(guān)于 Nginx 我也就不詳細(xì)講了,我們就直奔主題,殺入 Nginx 的默認(rèn)配置文件
sudo nano /etc/nginx/site-avalidable/default
暴力修改成為以下的內(nèi)容
建議先備份一下 default 文件
sudo cp /etc/nginx/site-avalidable/default /etc/nginx/site-avalidable/default.bak
server { listen 80; server_name example.org; # 這是HOST機(jī)器的外部域名,用地址也行 location / { proxy_pass http://127.0.0.1:8080; # 這里是指向 gunicorn host 的服務(wù)地址 proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
記得完成 nginx 需要重新起動(dòng) nginx 服務(wù)喔!
sudo service nginx restart
將 Gunicorn 作為服務(wù)運(yùn)行
這就是最后一步了,我們?cè)诖藢⒉捎?UpStart 配置Flask程序作為服務(wù)程序在Linux起動(dòng)時(shí)運(yùn)行。首先建立起動(dòng)配置文件:
sudo nano /etc/init/myflask.conf
然后加入如下配置
description "The myflask service"start on runlevel [2345]stop on runlevel [!2345]respawnsetuid rootsetgid www-dataenv PATH= /var/www/myflask/venv/binchdir /var/www/myflask/exec gunicorn -w 4 -b 127.0.0.1:8080 wsgi:application
OK 大功告成,啟動(dòng) myflask 服務(wù)
sudo service myflask start
這里有一點(diǎn)必須補(bǔ)充的,請(qǐng)留意在 myflask.conf 中的
env PATH= /var/www/myflask/venv/binchdir /var/www/myflask/
這里所指向的地址就是你的項(xiàng)目路徑和 virtualenv 的路徑
小結(jié)
這個(gè)部署過(guò)程感覺(jué)比我之前所介紹的 uwsgi 那種簡(jiǎn)單很多吧。這里給一點(diǎn)小 Tips 如果你用 Fabric 來(lái)完成這個(gè)部署過(guò)程的話那么就是純自動(dòng)化部署了喔,值得嘗試的。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Django 部署(Nginx)
云主機(jī)配置微信公眾號(hào)后臺(tái)全記錄
如何在uwsgi和nginx上部署Django項(xiàng)目?
Ubuntu 12.04 下部署 Nginx+uWSGI+Flask
用gunicorn和gevent提高python web框架的性能 | 峰云就她了
一文讀懂 Python web 框架和 web 服務(wù)器之間的關(guān)系
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服