A. python寫的飛機大戰怎麼部署到伺服器
如何把Python項目部署到伺服器上
一,不需要域名的情況下
1,訪問阿里雲官網
2,注冊登錄(建議支付寶授權)
3,登陸後---》產品--》雲伺服器ECS
4,滾動條拉倒頁面底部--》點擊學生機
5,進入該頁面後默認是輕量應用伺服器們可以切換至雲伺服器ECS
6,右側選擇系統鏡像-à選擇我們熟悉的(相比之下比較熟悉的)windows
7,購買完成後回到之前的登陸後的頁面à點擊右上角的控制台à點擊左上角的雲服務ESCà點擊如圖所示位置(藍框位置)
8,進入管理
9,更多--》重置密碼--》(密碼重置成功後)--》右側點擊重啟(需要手機驗證碼)
10,本示例安全組--》配置規則
11,導入規則」安全組規則.json」(json文件在後面給大家)
12.添加成功後返回上一個頁面--》配置信息--》公網IP 找到公網ip,復制公網IP,(一會有用)
13,返回電腦桌面--》按windows鍵(或者點擊開始)--》搜索」遠程桌面連接」
14,點擊連接按鈕--》確定
15,根據上述步驟完成,就能順利連接到伺服器了,
1,此時把你的項目復制到上面,
2,安裝一下Python環境,
3,安裝需要的模塊:
pip install pymysql
pip install Djanjo
pip install pillow
最後 pip list 查看一下是否安裝成功
4,安裝mysql資料庫可視化工具
安裝XAMPP,可以直接啟動mysql,比較簡單方便操作(推薦使用)
5,連接資料庫,建立一個和你項目中一樣的資料庫名
把你原來的資料庫導出來,把裡面的數據復制粘貼到新建立的資料庫中
6,配置setting.py文件中的DATABASES(根據自己的密碼情況進行更 改)ALLOWED_HOSTS = ['*']
7,打開cmd窗口,同步資料庫
8,運行(python manage.py runserver 0.0.0.0:8000),指定埠號
9,在瀏覽器中訪問伺服器中的公網ip即可(伺服器不能關掉,不然不能訪問)
二,使用花生殼的情況,會送一個域名(也可申請域名)
1,在伺服器計算機中,安裝花生殼軟體
2,進入花生殼官網--》注冊---》下載--》安裝--》登錄
3,點擊內網穿透(添加映射,可以添加兩個)
購買內網穿透基礎服務(6元,購買送一個殼域名)-->購買成功重啟花生殼-->重復上一步操作-->添加映射
4,在瀏覽器地址欄輸入外網訪問地址就可以訪問了(花生殼不要關閉)
30
© 著作權歸作者所有
成年人記憶力衰退嚴重,快來學孫韜老師整理的記憶「口訣」
00:30
講真高效記憶訓練營
廣告
推薦閱讀
頁面訪問調試
squidbrother
閱讀99
搭建MySQL伺服器
技術老男孩
閱讀200
怎麼使用SSH Windows鏈接虛擬機的linux終端
小黃不頭禿
閱讀671
MySQL服務圖形管理工具·phpMyAdmin
技術老男孩
閱讀196
虛擬機Ubuntu剪切板無法共享的解決方案
小黃不頭禿
閱讀614
【送財氣】適合家庭的理財方法?送你免費的爆款理財課,幫到你!
00:51
0元學理財快領
廣告
2條評論
寫評論
陌路班車
Djanjo寫錯了,是Django
3樓 · 2019-08-24 23:22
浪得虛佲
謝謝
B. 如何部署python程序
簡單的方法就是安裝python環境,這樣就可以直接使用python程序
不用安裝的方法就是下載python的便攜版,然後直接批處理python 腳本文件路徑
還有一種就是使用pyinstaller之類的工具把python腳本打包成可執行文件。
C. 怎麼把python部署到伺服器
使用pip或easy_install可以管理和安裝python的package包,實際上它們都是從pypi伺服器中搜索和下載package的。目前在pypi伺服器上,有超過三萬多個package,同時還允許我們將自己的代碼也上傳發布到伺服器上。這樣,世界上的所有人都能使用pip或easy_install來下載使用我們的代碼了。
具體步驟如下:
首先創建項目文件和setup文件。
目錄文件結構如下:
project/
simpletest/
__init__.py
test.py
setup.py
假設項目文件只有一個simpletest包,裡面有一個test.py文件。
創建的setup.py文件格式大致如下,其中,install_requires欄位可以列出依賴的包信息,用戶使用pip或easy_install安裝時會自動下載依賴的包。詳細的格式參考文檔。
from setuptools import setup, find_packages
setup(
name = 'simpletest',
version = '0.0.1',
keywords = ('simple', 'test'),
description = 'just a simple test',
license = 'MIT License',
install_requires = ['simplejson>=1.1'],
author = 'yjx',
author_email = '[email protected]',
packages = find_packages(),
platforms = 'any',
)
然後將代碼打包。
打包只需要執行python
setup.py xxx命令即可,其中xxx是打包格式的選項,如下:
# 以下所有生成文件將在當前路徑下 dist 目錄中
python setup.py bdist_egg # 生成easy_install支持的格式
python setup.py sdist # 生成pip支持的格式,下文以此為例
發布到pypi。
發布到pypi首先需要注冊一個賬號,然後進行如下兩步:
注冊package。輸入python setup.py register。
上傳文件。輸入python setup.py sdist upload。
安裝測試
上傳成功後,就可以使用pip來下載安裝了。
另外,pypi還有一個測試伺服器,可以在這個測試伺服器上做測試,測試的時候需要給命令指定額外的"-r"或"-i"選項,如python
setup.py register -r "",python
setup.py sdist upload -r "",pip
install -i "" simpletest。
發布到測試伺服器的時候,建議在linux或cygwin中發布,如果是在windows中,參考文檔,需要生成.pypirc文件
D. 花了2萬多買的Python70個項目,現在分享給大家,練手進廠靠它了
前言:
不管學習哪門語言都希望能做出實際的東西來,這個實際的東西當然就是項目啦,不用多說大家都知道學編程語言一定要做項目才行。
這里整理了70個Python實戰項目列表,都有完整且詳細的教程,你可以從中選擇自己想做的項目進行參考學習練手,你也可以從中尋找靈感去做自己的項目。
1、【Python 圖片轉字元畫】
2、【200行Python代碼實現2048】
3、【Python3 實現火車票查詢工具】
4、【高德API+Python解決租房問題 】
5、【Python3 色情圖片識別】
6、【Python 破解驗證碼】
7、【Python實現簡單的Web伺服器】
8、【pygame開發打飛機 游戲 】
9、【Django 搭建簡易博客】
10、【Python基於共現提取《釜山行》人物關系】
11、【基於scrapy爬蟲的天氣數據採集(python)】
12、【Flask 開發輕博客】
13、【Python3 圖片隱寫術】
14、【Python 實現簡易 Shell】
15、【使用 Python 解數學方程】
16、【PyQt 實現簡易瀏覽器】
17、【神經網路實現手寫字元識別系統 】
18、【Python 實現簡單畫板】
19、【Python實現3D建模工具】
20、【NBA常規賽結果預測——利用Python進行比賽數據分析】
21、【神經網路實現人臉識別任務】
22、【Python文本解析器】
23、【Python3 & OpenCV 視頻轉字元動畫】
24、【Python3 實現淘女郎照片爬蟲 】
25、【Python3實現簡單的FTP認證伺服器】
26、【基於 Flask 與 MySQL 實現番劇推薦系統】
27、【Python 實現埠掃描器】
28、【使用 Python 3 編寫系列實用腳本】
29、【Python 實現康威生命 游戲 】
30、【川普撞臉希拉里(基於 OpenCV 的面部特徵交換) 】
31、【Python 3 實現 Markdown 解析器】
32、【Python 氣象數據分析 -- 《Python 數據分析實戰》】
33、【Python實現鍵值資料庫】
34、【k-近鄰演算法實現手寫數字識別系統】
35、【ebay在線拍賣數據分析】
36、【Python 實現英文新聞摘要自動提取 】
37、【Python實現簡易區域網視頻聊天工具】
38、【基於 Flask 及爬蟲實現微信 娛樂 機器人】
39、【Python實現Python解釋器】
40、【Python3基於Scapy實現DDos】
41、【Python 實現密碼強度檢測器】
42、【使用 Python 實現深度神經網路】
43、【Python實現從excel讀取數據並繪製成精美圖像】
44、【人機對戰初體驗:Python基於Pygame實現四子棋 游戲 】
45、【Python3 實現可控制肉雞的反向Shell】
46、【Python打造漏洞掃描器 】
47、【Python應用馬爾可夫鏈演算法實現隨機文本生成】
48、【數獨 游戲 的Python實現與破解】
49、【使用Python定製詞雲】
50、【Python開發簡單計算器】
51、【Python 實現 FTP 弱口令掃描器】
52、【Python實現Huffman編碼解壓縮文件】
53、【Python實現Zip文件的暴力破解 】
54、【Python3 智能裁切圖片】
55、【Python實現網站模擬登陸】
56、【給Python3爬蟲做一個界面.妹子圖網實戰】
57、【Python 3 實現圖片轉彩色字元】
58、【自聯想器的 Python 實現】
59、【Python 實現簡單濾鏡】
60、【Flask 實現簡單聊天室】
61、【基於PyQt5 實現地圖中定位相片拍攝位置】
62、【Python實現模板引擎】
63、【Python實現遺傳演算法求解n-queens問題】
64、【Python3 實現命令行動態進度條】
65、【Python 獲取掛號信息並郵件通知】
66、【Python實現java web項目遠端自動化更新部署】
67、【使用 Python3 編寫 Github 自動周報生成器】
68、【使用 Python 生成分形圖片】
69、【Python 實現 Redis 非同步客戶端】
70、【Python 實現中文錯別字高亮系統】
最後:
以上項目列表希望可以給你在Python學習中帶來幫助~
獲取方式:轉發 私信「1」
E. docker-compose 部署python項目
docker-compose.yml
啟滑蘆動容器
項目文件夾:demo01 的結構羨讓褲
app.py文件內容如下:
requirements.txt文兄簡件內容如下:
Dockerfile文件內容如下:
Dockerfile還可以這樣寫:
和上一種寫法稍稍有一點區別 。
docker-compose.yml
啟動
打開鏈接: http://localhost:5000
F. Python3+Gunicorn+Nginx 部署Flask項目
前言: 之前在本地測試項目的過程中一直使用python app.py的方式來啟動項目,這種方式在本地測試的話還可以,但是在生產環境的話就不能使用這種方式。
原因:
1.可能會出現無響應情況
2.無法支持高並發和多線程
3.無法合理利用伺服器資源
生產環境: Centos7、Python3
需要模塊: Gunicon、Nginx、Flask
一、安裝Gunicorn
Gunicorn是一個高效的Web伺服器,地位相當於Java中的Tomcat。簡單來說gunicorn封裝了HTTP的底層實現,我們通過gunicorn啟動服務,用戶請求與服務相應都經過gunicorn傳輸。
1.創建虛擬環境
項目上傳到伺服器指定目錄下,然後創建python3的虛擬環境,激活並進去虛擬環境,在虛擬環境下可以看到命令前有虛擬環境的名稱。(之前在使用Gunicorn模塊的過程中,沒有使用虛擬環境,導致我啟動項目有一直提示沒有找到gunicorn這個命令,可能是我在使用python全局環境的過程中,有某些模塊影響到這個gunicorn模塊,後面在使用虛擬環境就沒有出現這個問題。)
2.安裝項目所需的模塊
3.安裝gunicorn
二、項目配置啟動
1.創建一個簡易的web程序
2.啟動服務
4--啟動4個進程來分配服務
0.0.0.0--允許任意主機訪問
5000--啟動埠(與nginx轉發的埠一致)
app:目標文件
app:指定模塊
補充部分: gunicorn和nginx關系
gunicorn 可以單獨提供服務,但生產環境一般不這樣做。首先靜態資源(jscssimg)會佔用不少的請求資源,而對於 gunicorn 來講它本身更應該關注實際業務的請求與處理而不應該把資源浪費在靜態資源請求上;此外,單獨運行 gunicorn 是沒有辦法起多個進程多個埠來負載均衡的。
nginx 的作用就是彌補以上問題,首先作為前端伺服器它可以處理一切靜態文件請求,此時 gunicorn 作為後端伺服器,nginx 將會把動態請求轉發給後端伺服器,因此我們可以起多個 gunicorn 進程,然後讓 nginx 作均衡負載轉發請求給多個 gunicorn 進程從而提升伺服器處理效率與處理能力。最後,nginx 還可以配置很多安全相關、認證相關等很多處理,可以讓你的網站更專注業務的編寫,把一些轉發規則等其它業務無關的事情交給 nginx 做。
參考鏈接: https://www.jianshu.com/p/da28ec28ef4b
G. python web 怎麼部署
學過PHP的都了解,php的正式環境部署非常簡單,改幾個文件就OK,用FastCgi方式也是分分鍾的事情。相比起來,Python在web應用上的部署就繁雜的多,主要是工具繁多,主流伺服器支持不足,在了解Python的生產環境部署方式之前,先明確一些概念!很重要!
CGI:
CGI即通用網關介面(Common Gateway Interface),是外部應用程序(CGI程序)與Web伺服器之間的介面標准,是在CGI程序和Web伺服器之間傳遞信息的規程。CGI規范允許Web伺服器執行外部程序,並將它們的輸出發送給Web瀏覽器,CGI將Web的一組簡單的靜態超媒體文檔變成一個完整的新的互動式媒體。通俗的講CGI就像是一座橋,把網頁和WEB伺服器中的執行程序連接起來,它把HTML接收的指令傳遞給伺服器的執行程序,再把伺服器執行程序的結果返還給HTML頁。CGI的跨平台性能極佳,幾乎可以在任何操作系統上實現。
CGI方式在遇到連接請求(用戶請求)先要創建cgi的子進程,激活一個CGI進程,然後處理請求,處理完後結束這個子進程。這就是fork-and-execute模式。所以用cgi方式的伺服器有多少連接請求就會有多少cgi子進程,子進程反復載入是cgi性能低下的主要原因。當用戶請求數量非常多時,會大量擠占系統的資源如內存,CPU時間等,造成效能低下。
CGI腳本工作流程:
瀏覽器通過HTML表單或超鏈接請求指向一個CGI應用程序的URL。
伺服器執行務器收發到請求。所指定的CGI應用程序。
CGI應用程序執行所需要的操作,通常是基於瀏覽者輸入的內容。
CGI應用程序把結果格式化為網路伺服器和瀏覽器能夠理解的文檔(通常是HTML網頁)。
網路伺服器把結果返回到瀏覽器中。
python有cgi模塊可支持原生cgi程序
FastCGI:
FastCGI是一個可伸縮地、高速地在HTTP server和動態腳本語言間通信的介面。多數流行的HTTP server都支持FastCGI,包括Apache、Nginx和lighttpd等,同時,FastCGI也被許多腳本語言所支持,其中就有Python。FastCGI是從CGI發展改進而來的。傳統CGI介面方式的主要缺點是性能很差,因為每次HTTP伺服器遇到動態程序時都需要重新啟動腳本解析器來執行解析,然後結果被返回給HTTP伺服器。這在處理高並發訪問時,幾乎是不可用的。FastCGI像是一個常駐(long-live)型的CGI,它可以一直執行著,只要激活後,不會每次都要花費時間去fork一次(這是CGI最為人詬病的fork-and-execute 模式)。CGI 就是所謂的短生存期應用程序,FastCGI 就是所謂的長生存期應用程序。由於 FastCGI 程序並不需要不斷的產生新進程,可以大大降低伺服器的壓力並且產生較高的應用效率。它的速度效率最少要比CGI 技術提高 5 倍以上。它還支持分布式的運算, 即 FastCGI 程序可以在網站伺服器以外的主機上執行並且接受來自其它網站伺服器來的請求。
FastCGI是語言無關的、可伸縮架構的CGI開放擴展,其主要行為是將CGI解釋器進程保持在內存中並因此獲得較高的性能。眾所周知,CGI解釋器的反復載入是CGI性能低下的主要原因,如果CGI解釋器保持在內存中並接受FastCGI進程管理器調度,則可以提供良好的性能、伸縮性、Fail-Over特性等等。FastCGI介面方式採用C/S結構,可以將HTTP伺服器和腳本解析伺服器分開,同時在腳本解析伺服器上啟動一個或者多個腳本解析守護進程。當HTTP伺服器每次遇到動態程序時,可以將其直接交付給FastCGI進程來執行,然後將得到的結果返回給瀏覽器。這種方式可以讓HTTP伺服器專一地處理靜態請求或者將動態腳本伺服器的結果返回給客戶端,這在很大程度上提高了整個應用系統的性能。
FastCGI的工作流程:
Web Server啟動時載入FastCGI進程管理器(PHP-CGI或者PHP-FPM或者spawn-cgi)
FastCGI進程管理器自身初始化,啟動多個CGI解釋器進程(可見多個php-cgi)並等待來自Web Server的連接。
當客戶端請求到達Web Server時,FastCGI進程管理器選擇並連接到一個CGI解釋器。Web server將CGI環境變數和標准輸入發送到FastCGI子進程php-cgi。
FastCGI子進程完成處理後將標准輸出和錯誤信息從同一連接返回Web Server。當FastCGI子進程關閉連接時,請求便告處理完成。FastCGI子進程接著等待並處理來自FastCGI進程管理器(運行在Web Server中)的下一個連接。 在CGI模式中,php-cgi在此便退出。
FastCGI 的特點:
打破傳統頁面處理技術。傳統的頁面處理技術,程序必須與 Web 伺服器或 Application 伺服器處於同一台伺服器中。這種歷史已經早N年被FastCGI技術所打破,FastCGI技術的應用程序可以被安裝在伺服器群中的任何一台伺服器,而通過 TCP/IP 協議與 Web 伺服器通訊,這樣做既適合開發大型分布式 Web 群,也適合高效資料庫控制。
明確的請求模式。CGI 技術沒有一個明確的角色,在 FastCGI 程序中,程序被賦予明確的角色(響應器角色、認證器角色、過濾器角色)。
WSGI:
PythonWeb伺服器網關介面(Python Web Server Gateway Interface,縮寫為WSGI)是為Python語言定義的Web伺服器和Web應用程序或框架之間的一種簡單而通用的介面。自從WSGI被開發出來以後,許多其它語言中也出現了類似介面。WSGI是作為Web伺服器與Web應用程序或應用框架之間的一種低級別的介面,以提升可移植Web應用開發的共同點。WSGI是基於現存的CGI標准而設計的。
WSGI區分為兩個部份:一為「伺服器」或「網關」,另一為「應用程序」或「應用框架」。在處理一個WSGI請求時,伺服器會為應用程序提供環境上下文及一個回調函數(Callback Function)。當應用程序完成處理請求後,透過先前的回調函數,將結果回傳給伺服器。所謂的 WSGI 中間件同時實現了API的兩方,因此可以在WSGI服務和WSGI應用之間起調解作用:從WSGI伺服器的角度來說,中間件扮演應用程序,而從應用程序的角度來說,中間件扮演伺服器。「中間件」組件可以執行以下功能:
重寫環境變數後,根據目標URL,將請求消息路由到不同的應用對象。
允許在一個進程中同時運行多個應用程序或應用框架。
負載均衡和遠程處理,通過在網路上轉發請求和響應消息。
進行內容後處理,例如應用XSLT樣式表。
以前,如何選擇合適的Web應用程序框架成為困擾Python初學者的一個問題,這是因為,一般而言,Web應用框架的選擇將限制可用的Web伺服器的選擇,反之亦然。那時的Python應用程序通常是為CGI,FastCGI,mod_python中的一個而設計,甚至是為特定Web伺服器的自定義的API介面而設計的。WSGI沒有官方的實現, 因為WSGI更像一個協議。只要遵照這些協議,WSGI應用(Application)都可以在任何伺服器(Server)上運行, 反之亦然。WSGI就是Python的CGI包裝,相對於Fastcgi是PHP的CGI包裝。
WSGI將 web 組件分為三類: web伺服器,web中間件,web應用程序, wsgi基本處理模式為 : WSGI Server -> (WSGI Middleware)* -> WSGI Application 。
uwsgi:
uwsgi協議是一個uWSGI伺服器自有的協議,它用於定義傳輸信息的類型(type of information),每一個uwsgi packet前4byte為傳輸信息類型描述,它與WSGI相比是兩樣東西。據稱其效率是fcgi的10倍。具體的協議內容請參考:the uwsgi protocol
以上四者都可以理解為協議!協議!協議!實現了這樣的協議,就可以實現Web伺服器與Web應用程序相關聯的web服務!
uWSGI:
uWSGI項目旨在為部署分布式集群的網路應用開發一套完整的解決方案。uWSGI主要面向web及其標准服務,已經成功的應用於多種不同的語言。由於uWSGI的可擴展架構,它能夠被無限制的擴展用來支持更多的平台和語言。目前,你可以使用C,C++和Objective-C來編寫插件。項目名稱中的「WSGI」是為了向同名的Python Web標准表示感謝,因為WSGI為該項目開發了第一個插件。uWSGI是一個Web伺服器,它實現了WSGI協議、uwsgi、http等協議。uWSGI,既不用wsgi協議也不用FastCGI協議,而是自創了上文說將的uwsgi協議。
uWSGI的主要特點如下:
超快的性能。
低內存佔用(實測為apache2的mod_wsgi的一半左右)。
多app管理。
詳盡的日誌功能(可以用來分析app性能和瓶頸)。
高度可定製(內存大小限制,服務一定次數後重啟等)。
Gunicorn:
和uWSGi類似的工具,從rails的部署工具(Unicorn)移植過來的。但是它使用的協議是前文所講的WSGI,這是python2.5時定義的官方標准(PEP 333),根紅苗正,而且部署比較簡單,詳細的使用教程請點擊這里。Gunicorn採用prefork模式,Gunicorn 伺服器與各種 Web 框架兼容,只需非常簡單的執行,輕量級的資源消耗,以及相當迅速。它的特點是與 Django 結合緊密,部署特別方便。 缺點也很多,不支持 HTTP 1.1,並發訪問性能不高,與 uWSGI,Gevent 等有一定的性能差距。
1. Gunicorn設計
Gunicorn 是一個 master進程,spawn 出數個工作進程的 web 伺服器。master 進程式控制制工作進程的產生與消亡,工作進程只需要接受請求並且處理。這樣分離的方式使得 reload 代碼非常方便,也很容易增加或減少工作進程。 工作進程這塊作者給了很大的擴展餘地,它可以支持不同的IO方式,如 Gevent,Sync 同步進程,Asyc 非同步進程,Eventlet 等等。master 跟 worker 進程完全分離,使得 Gunicorn 實質上就是一個控制進程的服務。
2. Gunicorn源碼結構
從 Application.run() 開始,首先初始化配置,從文件讀取,終端讀取等等方式完成 configurate。然後啟動 Arbiter,Arbiter 是實質上的 master 進程的核心,它首先從配置類中讀取並設置,然後初始化信號處理函數,建立 socket。然後就是開始 spawn 工作進程,根據配置的工作進程數進行 spawn。然後就進入了輪詢狀態,收到信號,處理信號然後繼續。這里喚醒進程的方式是建立一個 PIPE,通過信號處理函數往 pipe 里 write,然後 master 從 select.select() 中喚醒。
工作進程在 spawn 後,開始初始化,然後同樣對信號進行處理,並且開始輪詢,處理 HTTP 請求,調用 WSGI 的應用端,得到 resopnse 返回。然後繼續。
Sync 同步進程的好處在於每個 request 都是分離的,每個 request 失敗都不會影響其他 request,但這樣導致了性能上的瓶頸。
Tornado:
Tornado即使一款python 的開發框架,也是一個非同步非阻塞的http伺服器,它本身的數據產出實現沒有遵從上文所說的一些通用協議,因為自身就是web伺服器,所以動態請求就直接通過內部的機制,輸出成用戶所請求的動態內容。如果把它作為一個單獨伺服器,想用它來配合其他的框架如Flask來部署,則需要採用WSGI協議,Tornado內置了該協議,tornado.wsgi.WSGIContainer。
wsgiref:
Python自帶的實現了WSGI協議的的wsgi server。wsgi server可以理解為一個符合wsgi規范的web server,接收request請求,封裝一系列環境變數,按照wsgi規范調用注冊的wsgi app,最後將response返回給客戶端。Django的自帶伺服器就是它了。
以上都可以理解為實現!實現!實現!實現了協議的工具!
註:mod_wsgi(apache的模塊)其實也是實現了wsgi協議的一個模塊,現在幾乎不廢棄了,所以也不多說了,感興趣的自己查一下吧。
所以如果你採用Django框架開發了應用之後,想部署到生產環境,肯定不能用Django自帶的,可以用使用uwsgi協議的uWSGI伺服器,也可以採用實現了WSGI協議的gunicorn或者Tornado,亦可以用FastCGI、CGI模式的Nginx、lighttpd、apache伺服器。其他框架亦如此!明白了這些概念在部署的時候就可以做到心中有數,各種工具之間的搭配也就「知其然,並知其所以然」了。
在我們組的項目中有兩種框架Django和Tornado,生產環境也用到了兩種部署方式。uWSGI和Gunicorn:
Django項目用Nginx+uWSGI方式部署,Tornado項目用Nginx+Gunicorn方式部署:
Nginx都作為負載均衡以及靜態內容轉發。Tornado項目用supervisord來管理Gunicorn,用Gunicorn管理Tornado。眾所周知,由於Python的GIL存在,所以Python的並發都採用多進程模式,所以我們部署的方式是一個核心兩個進程。
H. python程序怎麼部署到雲伺服器
你需要登錄雲伺服器管理控制台,記錄被我打馬賽克位置的公網ip。
登錄伺服器
windows推薦下putty進行連接遠程伺服器,linux和macos不需要那麼麻煩,ssl就行了。
putty
在下圖的host name中輸入你的公網IP,點擊open。
putty界面
輸入密碼,看不見輸入不要慌,linux就是這樣保護安全的。
Paste_Image.png
登錄成功界面見下圖,然後想怎麼操作就怎麼操作了。
登陸成功界面
運行我的python文件
推薦FileZilla進行文件傳輸(不具體說明了),我上傳了我的flask網站項目
我的項目
記住伺服器同時有Python2和Python3,
python
運行的時候記得使用合適的版本,我用的是虛擬環境(自行網路如何創建虛擬環境)
在運行python之前先安裝一個screen,他可以將一個程序在後台運行
sudo apt-get install screen
運行python文件,成功後按下ctrl+A和ctrl+D可以隱藏。隱藏後可以輸入screen -r 恢復。
運行成功
I. Python的web項目如何進行動態重載和熱部署
真正意義上的代碼熱部署應該是類似erlang那樣的,將代碼更新到節點後不停服務,不斷連接的自動應用新代碼。auto reload什麼的還是會造成業務瞬間中斷。我感覺是可以從wsgi容器級別上實現,比如更新代碼後檢測到文件變更,然後通知容器創建新的wsgi application的實例,之後所有新的請求都發送到新的wdgi application實例上。等舊wsgi application實例的最後一個請求返回後就將其回收掉。不過貌似沒有看到類似的實現