python官網網址是什么意思_大家都是怎么部署python網站的?

flask+gunicorn+nginx

作者:Python小白

鏈接:centos下通過gunicorn和nginx部署Flask項目 - Python小白的文章 - 知乎專欄

來源:知乎

著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

之前用Flask寫了個解析Tumblr博客(為Tumblr默哀)的網站,然后直接放在DigitalOcean上運行:

python run.py結果感覺怎么那么不穩定!!!然后就以為是服務器不行

后來才知道原來Flask的app.run()只是用來本地調試用的,如果真正放到服務器上運行的話,是完全不行的!需要配合gunicorn/uWsgi和Nginx才行。

然后就在網上找到這篇文章《python web 部署:nginx + gunicorn + supervisor + flask 部署筆記》。文章看起來不錯,但是尼瑪寫文章能不能用點心!!你根本就沒有說完整個部署過程好嗎!!Nginx的配置都沒有說完好嗎!!!對于沒有接觸過Nginx的小白來說,這是致命的好嗎!!!

結果就搭配著gunicorn把Flask半部署,直接運行

gunicorn -w4 -b 0.0.0.0:80 run:app

把網站運行起來了!

ok,以上屬于吐槽部分,接下來講整個的部署過程!

首先說明搭建環境:DigitalOcean服務器

CentOS 64位系統

通過鏈接https://m.do.co/c/dbd97068223d注冊,可以獲得10刀!可以相當于免費用兩個月哦!

1首先安裝Flask、gunicorn、Nginx

DO的CentOS是沒有安裝pip和setuptools的,所以如果需要安裝Python庫的話,需要自己先安裝setuptools。我比較懶,所以只安裝了setuptools,用easy_install來安裝Python庫。

安裝setuptools過程:

(1)下載setuptools包

# wget http://pypi.python.org/packages/source/s/setuptools/setuptools-2.0.tar.gz

(2)解壓setuptools包

# tar zxvf setuptools-2.0.tar.gz

# cd setuptools-2.0

(3)編譯setuptools

# python setup.py build

(4)開始執行setuptools安裝

# python setup.py install

咳咳!!DO的CentOS好像連wget也沒有安裝,所以需要提前安裝wget:

yum install wget

安裝好setuptools后,就可以通過easy_install 安裝各種Python庫了:

easy_install flask

easy_install gunicorn

Flask和gunicorn安裝好之后就安裝Nginx,CentOS不能直接安裝Nginx,還需要添加rpm(其實我根本不知道這是什么鬼,可能就是一個源吧)

1、CentOS 6,先執行:

[root@server ~]# rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

2,安裝nignx

[root@server ~]# yum install nginx

嗯,Nginx安裝好了!2、添加Flask項目

這里就創建一個最簡單的Flask項目,項目目錄是/home/flask,在該目錄下創建一個run.py的Python文件。

#run.py

from flask import Flask

app = Flask(__name__)

@app.route('/')

def index():

return '

Hello World!

'

if __name__ == '__main__':

app.run()

然后運行gunicorn

[root@server ~]# gunicorn -w 4 -b 0.0.0.0:5000 run:app

[2016-05-28 12:35:26 +0000] [1541] [INFO] Starting gunicorn 19.6.0

[2016-05-28 12:35:26 +0000] [1541] [INFO] Listening at: http://0.0.0.0:5000 (1541)

[2016-05-28 12:35:26 +0000] [1541] [INFO] Using worker: sync

[2016-05-28 12:35:26 +0000] [1546] [INFO] Booting worker with pid: 1546

[2016-05-28 12:35:26 +0000] [1551] [INFO] Booting worker with pid: 1551

[2016-05-28 12:35:26 +0000] [1552] [INFO] Booting worker with pid: 1552

[2016-05-28 12:35:26 +0000] [1553] [INFO] Booting worker with pid: 1553

這個時候打開瀏覽器,輸入http://你的服務器ip:5000就可以看到運行結果

然后配置Nginx,剛才安裝了Nginx之后,我們打開/etc/nginx/conf.d/default.conf,然后修改默認的default.conf為:

server {

listen 80;

server_name localhost;

location / {

proxy_pass http://127.0.0.1:5000;

proxy_redirect off;

proxy_set_header Host $host:80;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

其中server_name就是你的域名,這里用localhost代表通過ip訪問

配置好default.conf之后就啟動Nginx吧!

[root@server ~]# service nginx start

Starting nginx: [ OK ]

[root@server ~]# nginx -s reload

ok!到這一步,整個部署過程就搞定了!打開瀏覽器輸入http://你的服務器ip 看是否運行?

整個部署過程可以總結為:

安裝Flask、gunicorn、Nginx -->

添加Flask項目 -->

運行Gunicorn -->

修改Nginx配置文件 -->

運行Nginx

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

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

相關文章

java回形數矩陣

題目 從鍵盤輸入一個整數(1~20) 則以該數字為矩陣的大小,把1,2,3…n*n 的數字按照順時針螺旋的形式填入其中。例如: 輸入數字2,則程序輸出: 1 2 4 3 輸入數字3,則程序輸出: 1 2 3 8…

STL源碼剖析 基本算法 equal | fill | iter_awap | lexicographical_compare | max | min | swap |mismatch

Equal 兩個序列在[first,last)區間內相等,equal()返回true。以第一個序列作為基準,如果第二序列元素多不予考慮,如果要保證兩個序列完全相等需要比較元素的個數 if(vec1.size() vec2.size() && equal(vec1.begin(),vec1.end(),vec2…

svm分類器訓練詳細步驟_「五分鐘機器學習」向量支持機SVM——學霸中的戰斗機...

大家好,我是愛講故事的某某某。 歡迎來到今天的【五分鐘機器學習】專欄內容 --《向量支持機SVM》 今天的內容將詳細介紹SVM這個算法的訓練過程以及他的主要優缺點,還沒有看過的小伙伴歡迎去補番:【五分鐘機器學習】向量支持機SVM——學霸中的…

java一維數組的復制

題目 使用簡單數組(1)創建一個名為ArrayTest的類,在main()方法中聲明array1和array2兩個變量,他們是int[]類型的數組。(2)使用大括號{},把array1初始化為8個素數:2,3,5,7,11,13,17,19。(3)顯示array1的內容。(4)賦值array2變量等…

STL源碼剖析 數值算法 copy 算法

copy復制操作,其操作通過使用assignment operator 。針對使用trivial assignment operator的元素型別可以直接使用內存直接復制行為(使用C函數 memove或者memcpy)節約時間。還可以通過函數重載(function overloading)、型別特性(type traits)、偏特化(partial speci…

python輸入數字成數組_python – Numpy:將數值插入數組的最快方法,使得數組按順序排列...

假設我有一個數組my_array和一個奇異值my_val. (請注意,my_array始終排序). my_array np.array([1, 2, 3, 4, 5]) my_val 1.5 因為my_val是1.5,我想把它放在1和2之間,給我數組[1,1.5,2,3,4,5]. 我的問題是:當my_array任意增大時,生成有序輸出數組的最快方式(即以微…

java 一維數組的反轉

代碼 public class ReverseArray {public static void main(String[] args) {String[] str {"AA", "BB", "CC", "DD"};System.out.println(Arrays.toString(str));reverse1(str);System.out.println(Arrays.toString(str));reverse2…

STL源碼剖析 數值算法 copy_backward 算法

copy_backward 時間技巧和copy類似主要是將[first,last)區間范圍內的元素按照逆行方向復制到以result-1為起點,方向同樣是逆行的區間上返回的迭代器的類型是result - (last - first)copy_backward支持的類型必須是BidirectionalIterators ,才…

java線性查找和二分查找

線性查找 package lesson.l7_array;/*** Illustration** author DengQing* version 1.0* datetime 2022/6/23 14:19* function 線性查找*/ public class LineSearch {public static void main(String[] args) {String[]str{"AA","BB","CC"};boo…

python開發web項目_Django2:Web項目開發入門筆記(20)

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓 這一篇教程,我們一起來了解如何在CentOS系統中將Django2的Web項目部署到Nginx服務器。 CentOS系統雖然和Ubuntu系統都是Linux系統,但是環境搭建和部署過程還是有一些區別。 整個流程分為幾個部分&#xff1…

STL源碼剖析 Set相關算法 并集 set_union|交集 set_intersection|差集 set_difference |對稱差集 set_symmetric_difference

注意事項 四種相關算法:并集、交集、差集、對稱差集本章的四個算法要求元素不可以重復并且經過了排序底層接受STL的set/multiset容器作為輸入空間不接受底層為hash_set和hash_multiset兩種容器 并集 set_union s1 U s2考慮到s1 和 s2中每個元素都不唯一&#xff0…

python sqlserver 數據操作_python對Excel數據進行讀寫操作

python對Excel數據進行讀寫操作將學習到的基礎操作記錄在這里,便與復習查看1.python讀取Excel工作簿、工作表import xlrd # 讀取工作簿 wbxlrd.open_workbook(招生表.xls) # 讀取工作簿下所有的工作表 wswb.sheets() # 讀取工作簿下所有工作表名稱 wsnamewb.sheet_n…

Arrays數組工具類

介紹 代碼 package lesson.l8_arrays;import java.util.Arrays;/*** Illustration** author DengQing* version 1.0* datetime 2022/6/23 16:53* function Arrays數組工具類*/ public class ArraysUtil {public static void main(String[] args) {int[] arr1 new int[]{1, 12…

通過解析URL實現通過Wifi的用戶查找

使用鏈接 遇見數據倉庫|遇見工具|IP地址精確查詢|WIFI精確查詢|在線語音識別|夢幻藏寶閣估價|福利資源|自定義導航-met.redhttps://sina.lt/ 操作步驟 打開第一個鏈接,點擊高精度IP定位,然后點擊右上角,創建一個Key,隨便輸入一…

anaconda中怎么sh_【好工具】 深度學習煉丹,你怎么能少了這款工具!JupyterLab 遠程訪問指南...

歡迎來到【好工具】專欄,本次我們給介紹一款可以進行遠程深度學習煉丹的工具 JupyterLab 及其配置流程,幫助讀者在本地進行調試,Max 開發效率。作者 & 編輯 | Leong導言不知道讀者們有沒有發現,如果你用 Anaconda 中的 Notebo…

java 類和對象 屬性和行為 成員變量和局部變量

概念 使用 案例 public class PersonText {public static void main(String[] args) {Person person new Person();person.name "dq";person.age 11;person.eat("番茄炒蛋");} }class Person {/*** 姓名*/String name;/*** 年齡*/Integer age;/*** 方…

STL源碼剖析 數值算法 heap算法

算法 adjacent_findcountcount_iffindfind_iffind_endfor_eachgenerategenerate_nincludesmax_elementmergemin_elementpartitionremoveremoveremove_copyremove_ifremove_copy_ifreplacereplace_copyreplace_ifreplace_copy_ifreversereverse_copyrotaterotate_copysearchsea…

java 學生對象數組

題目 代碼 package lesson.l10_oop;/*** Illustration** author DengQing* version 1.0* datetime 2022/7/1 9:57* function*/ public class Student {int number;int state;int score;public static final int NUM 20;public static void main(String[] args) { // 對…

STL源碼剖析 lower_bound | upper_bound | binary_search

lower_bound 二分查找的一種版本,試圖在已經排序的區間內查找元素value,如果區間內存在和value數值相等的元素,便返回一個迭代器,指向其中的第一個元素。如果沒有數值相等的元素,會返回假設這個元素存在的前提下應該出…

java能調用python嗎_如何使用運行時在Java中調用python程序 - java

我想用來自Java的參數調用python程序。但是我的輸出是空白。代碼在這里。 Python代碼在這里: import sys print(sys.argv[1]) Java代碼在這里: public class PrintNumber{ public static void main(String[] args){ Process proc; try { proc Runtime.g…