Ubuntu下Python+Flask分分鐘搭建自己的服務器教程
最近幫朋友做了點東西,最后需要將結(jié)果在網(wǎng)頁中展示,這就需要搭建個服務器,做幾個網(wǎng)頁把數(shù)據(jù)信息展示出來。網(wǎng)上找了一下,阿里騰訊都有租服務器的業(yè)務,但是有的時候我們并不需要那么復雜大型的服務器,只是一個小功能,小展示,并不復雜,那么我們完全可以自己動手,在自己的小電腦上搭建一個服務器。下面文章記錄一下自己折騰的過程。
Flask安裝
Ubuntu自帶python2,因此不用麻煩裝python了。Flask是pyhton下的一個很實用的web框架,接下來安裝Flask就好,網(wǎng)上找了一圈,大部分都說要先裝virtualenv,還要配置環(huán)境巴拉巴拉,其實并不用這么麻煩,virtualenv確實有一些優(yōu)點,比如隔離環(huán)境啥的,不過如果我們就是在自己機器上使用,沒有過多需求要切換各種環(huán)境啥的,可以直接安裝Flask使用,感興趣的小伙伴也可以自己查virtualenv的功能和使用。真正安裝Flask只需一句話,在命令行中輸入已下代碼即可:
sudo pip install flask
當然如果你沒安裝pip的話就得先安裝pip了,這里不再概述,網(wǎng)上都有講怎么安裝pip。
Flask的使用
ok,裝好flask之后就可以馬上試一試了,當然最開始我們都是用helloword的例子來開始,可以這么認為,flask的框架是有一定模板的,那么我們只需要記住幾個基本模板,等需要具體操作的時候再根據(jù)具體情況進行相應修改就可以了。下面是helloword的模板,也是最基本的一種用法。
新建一個python文件,輸入下面的代碼:
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "hello world" if __name__ == "__main__": app.run(host='0.0.0.0',port =8080)
寫完之后,在文件夾下運行該python文件,此時啟動服務,然后在瀏覽器中輸入localhost:8080即可訪問,此時返回我們之前定義的helloword,如下圖所示:
完這些,我們又有了新的需求,如果我在瀏覽器上面不僅僅要輸入localhost:8080,我還想輸入或者傳入其他的參數(shù),比如一個id或者一個字符,很多時候我們都是根據(jù)請求的這一串url中根據(jù)傳入的參數(shù)去進行數(shù)據(jù)的篩選等操作。接下來我們只需要對傳入的url進行處理即可,使用下面代碼即可:
from flask import Flask from flask import request app = Flask(__name__) @app.route("/info",methods=['GET',]) def sendinfo(): #獲取到傳入url中參數(shù)id對應的值 sendid = request.args.get('id') return "Get info id is " + str(sendid) if __name__ == "__main__": app.run(host='0.0.0.0',port =8080)
改完代碼之后重新啟動,然后在瀏覽器中輸入"http://localhost:8080/info?id=666",即可顯示效果,如下圖所示:
可以看到這個時候界面把我們在url中傳入的參數(shù)顯示出來了。
接下來我們又會有想法了,能不能顯示html文件?當然可以!這個時候我們要在原來的放置python腳本的文件夾下新建一個templates文件夾,所有你想調(diào)用的html文件都放在這個文件夾里面。下面簡單實現(xiàn)一個html文件,當然小伙伴們也可以自己去網(wǎng)上下載一些更好的html模板。
<html> <body> <h1>Hello World</h1> <p>This is a Test for Flask</p> </body> </html>
這個時候,我們的文件夾結(jié)構(gòu)如下圖所示:
然后我們修改python腳本。
from flask import Flask from flask import render_template app = Flask(__name__) @app.route("/") def sendtemplate): return render_template("test.html") if __name__ == "__main__": app.run(host='0.0.0.0',port =8080)
重啟之后,運行腳本,在瀏覽器中輸入地址,效果如下圖所示:
晉級-Flask模板中顯示參數(shù)
剛剛講到了怎么在url中傳入?yún)?shù),也講到了怎么調(diào)用html模板文件,那么如何將兩者結(jié)合起來,輸入的url參數(shù)在模板中顯示出來?不要急,跟著下面一起做。首先修改python腳本。
from flask import Flask from flask import request from flask import render_template app = Flask(__name__) @app.route("/info",methods=['GET',]) def sendinfo_tem(): #獲取到傳入url中參數(shù)id對應的值 sendid = request.args.get('id') return render_template("test.html",u=sendid) if __name__ == "__main__": app.run(host='0.0.0.0',port=8080)
u這個參數(shù)就是傳入html模板中的值,當然也可以有第二個、第三個參數(shù)值傳入。接下來修改一下html文件,接收并顯示我們傳入的參數(shù)值。
<html> <body> <h1>Hello World</h1> <p>The send id is {{u}}</p> </body> </html>
"{{u}}"就是我們傳入的參數(shù)值,接下來重啟運行,在瀏覽器輸入url,效果如下圖所示:
晉級-顯示圖片
一般說到顯示圖片,大家就會想到,ok我在html文件中寫好要顯示的圖片的路徑,比如/home/xxx/xxx.jpg這種,但是在這里不能直接寫絕對路徑,一定要通過url寫,因為這個時候相當于通過服務器的請求來顯示圖片。這個時候我們首先要在腳本所在的文件夾中新建static目錄,再在static目錄中新建images目錄,然后將要顯示的圖片放入images目錄中,具體文件結(jié)構(gòu)如下圖所示。
然后我們修改之前的html文件。
<html> <body> <h1>Hello World</h1> <p>The send id is {{u}}</p> <img src="{{url_for('static',filename='images/1.jpg')}}"/> </body> </html>
對于python腳本不用修改,但是由于python2的一些編碼問題,如果運行后報錯
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 10: ordinal not in range(128)
等內(nèi)容,可以在前面加入以下三句話。
import sys reload(sys) sys.setdefaultencoding('utf8')
然后重啟運行,在瀏覽器中輸入url,顯示如下所示:
這回圖片、傳參、html模板、文字全都教會大家了,小伙伴們可以自己設計美美的html,搭建服務器顯示了!
其他
此時搭建完的網(wǎng)站,只有和你的筆記本或者電腦(現(xiàn)在已經(jīng)變成服務器了)處于同一個局域網(wǎng)的小伙伴才能訪問你的網(wǎng)站,訪問的方式是將上面的url網(wǎng)址的localhost換成你的ip地址即可。有的時候如果我們想用外網(wǎng)讓其他人訪問,可以使用一些工具做內(nèi)網(wǎng)穿透,這里就不再細說,網(wǎng)上有很多免費做內(nèi)網(wǎng)穿透的軟件,比如“花生殼"或者”nat123“等,大家可以自行查找。當然我們這里只是最簡單的操作介紹了flask搭建服務器的操作,真正的大型服務器還要考慮性能、壓力、效率、安全等多種因素,感興趣的小伙伴可以再深入學習^_^
以上這篇Ubuntu下Python+Flask分分鐘搭建自己的服務器教程就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux系統(tǒng)中設置Python程序開機啟動的兩種方式
在 Linux 系統(tǒng)中設置Python 腳本開機啟動,通??梢酝ㄟ^以下幾種方式實現(xiàn), 使用 systemd(推薦方式)和使用 crontab(對于簡單任務),文章通過代碼示例給大家講解的非常詳細,需要的朋友可以參考下2024-05-05Python使用missingno模塊輕松處理數(shù)據(jù)缺失
missingno是一個基于Python的開源數(shù)據(jù)可視化工具,旨在幫助數(shù)據(jù)分析師和科學家更好地理解和處理數(shù)據(jù)缺失,下面我們就來看看如何使用missingno處理數(shù)據(jù)缺失吧2024-02-02查看django執(zhí)行的sql語句及消耗時間的兩種方法
今天小編就為大家分享一篇查看django執(zhí)行的sql語句及消耗時間的兩種方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05python實現(xiàn)輸入的數(shù)據(jù)在地圖上生成熱力圖效果
今天小編就為大家分享一篇python實現(xiàn)輸入的數(shù)據(jù)在地圖上生成熱力圖效果,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12