當前位置:首頁 » 雲伺服器 » flask搭建伺服器

flask搭建伺服器

發布時間: 2022-04-23 11:25:34

1. 【python基礎】flask框架是用來干什麼的

你可以用來開發網站伺服器,它包含一個wsgi工具包(werkzeug)、 模板引擎(jinja2)還有主體(flask)。

安裝方式:

  1. 打開命令行
  2. 輸入命令
  3. 命令是"pip install flask"

2. nginx+uwsgi+flask搭建後怎麼訪問.py文件

一、介紹

最近開發要用一個測試環境,是這樣的Nginx+uwsgi+flask 的一個結構。下面是一些記錄,在Centos 系統上使用Flask 架構部署一個簡單的Python應用。然後使用Nginx作為前端反向代理,設置uWSGI應用網關處理web應用程序。

二、條件

1) 環境要求

  • Server OS:最小化安裝 Centos 6.8

  • Nginx :反向代理

  • Python2.6~2.7:開發語言

  • Flask/uWSGI:框架

  • Pip:python包管理工具

  • iptables&selinux:開放用到的埠,關閉selinux。

  • 以上內容代理了uwsgi的埠,客戶端通過訪問nginx的80埠,然後nginx在將請求轉發到後台flask應用的8000埠上。

    啟動nginx

  • [root@hcloud ~]# service nginx start

  • Starting nginx: [ OK ]

  • 在瀏覽器內測試訪問一下nginx:http://192.168.30.58

    每個人都應是守望者,守望我們的心智,我們的理想,以防它在生活中不知不覺地墜落、被操控和被自己遺忘。。。

3. 如何部署簡單python + flask應用

所需工具:
python3.4
flask
nginx
gunicorn
supervisor

系統環境:
Ubuntu 14.04LTS

我們先寫一個最基本的flask應用:

demo.py

from flask import Flask
app = Flask(**name**)
@app.route('\')
def index():
return 'Hello World.'
if __name__ == __main__:
app.run()
運行這個py文件,打開瀏覽器訪問127.0.0.1:5000就能看到顯示Hello World的頁面 .
如果讓這個flask引用監聽來自公網ip的請求,理論上你跑此程序的機器就相當於一個伺服器了,然而這個伺服器並不完美,所以我們需要nginx和gunicorn來增加它的功能,讓它真刀真槍上生產環境的時候能按要求運行。

flask自帶的WSGI框架性能很差勁,只能適用於開發環境調試使用。我們用專業一點的gunicorn(還有很多其他優秀的框架)替代flask自帶的WSGI框架。

配置完後,通過命令』/usr/local/bin/gunicorn -b127.0.0.1:5000『啟動應用。打開瀏覽器訪問127.0.0.1:5000,同樣能夠得到返回頁面

然而gunicorn也僅僅是一個python的WSGI框架而已,要讓它真正處理來自互聯網的各類訪問功能還是有點欠缺,這時候就需要用到大名鼎鼎的nginx 伺服器來替gunicorn遮風擋雨了。

Ubuntu下安裝nginx可以用命令

sudo apt-get install nginx

安裝後需要進行下配置:

cd /etc/nginx/sites-available
sudo vi test (test為配置名稱,可以根據自己項目進行命名)

test文件的配置為:
server {
listen 80; # 監聽80埠
location / {

proxy_pass http://127.0.0.1:5000; # 代理本機127.0.0.1:5000的服務

}
location /static {

alias /home/ubuntu/myproject/myblog/app/static; # 負載均衡

}
}

cd ..

cd sites-enable

sudo ln -s ../sites-available/lwhile . (創建軟鏈接,別漏掉最後的.)

sudo service nginx reload

sudo service nginx restart

這樣nginx的基本配置文件就寫好了 接下來我們配置進程管理工具supervisor supervisor可以在後面啟動你的python進程,這樣很方便
1.cd /etc/supervisor/conf.d

2.sudo vi test.conf (test為文件名)

[program:test]
command = /usr/local/bin/gunicorn -b127.0.0.1:5000 /home/ubuntu/myproject/test.py

3.sudo supervisorctl

4.reload

5.start test

如果一切正常,做完這所有步驟之後,現在公網的ip訪問你的主機,就可以打開你的flask應用了

4. flask 博客怎麼部署在騰訊雲伺服器

值得注意的是,小鳥雲的三層存儲技術是在保障用戶數據完整性、可用性的理念上,專業打造的革新技術。該技術響應用戶對防止數據丟失的需求,基於卓越的底層硬體對用戶數據實行三層保護與備份:緩存層、沉澱層、備份層分別進行數據處理、數據緩存與數據災備。第一層:緩存層,預先在內存中分配緩存塊,對數據進行緩存、處理,保證用戶數據的訪問速度;第二層:沉澱層,對大量數據在線通過統計、分析對數據實行沉澱、備份、處理數據,與第一層緩存層實時同步,保證數據安全;第三層:備份層,也稱災備層,跨機房做數據災備,利用數據切片技術,對系統數據進行監控與跟蹤備份,防止系統出現操作失誤或系統故障導致數據丟失。我用的是小鳥雲伺服器,感覺挺好的。

5. flask 配合什麼web伺服器好

nginx 大多數人的選擇~ 一下內容來自網路~

Nginx是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,並在一個BSD-like 協議下發行。其特點是佔有內存少,並發能力強,事實上nginx的並發能力確實在同類型的網頁伺服器中表現較好,中國大陸使用nginx網站用戶有:網路、京東、新浪、網易、騰訊、淘寶等。

6. 如何理解Flask

Flask 是一種具有平緩學習曲線和龐大社區支持的微框架,利用它可以構建大規模的web應用。是搭建社區平台的神器之一。 利用它可以構建大規模的web應用。學習上手Flask非常輕松,但要深入理解卻並不容易。本書從一個簡單的Flask應用開始,通過解決若干實戰中的問題,對一系列進階的話題進行了探討。書中使用MVC(模型-視圖-控制器)架構對示例應用進行了轉化重構,以演示如何正確地組織應用代碼結構。有了可擴展性強的應用結構之後,接下來的章節使用Flask擴展為應用提供了額外的功能,包括用戶登錄和注冊、NoSQL查詢、REST API、一套後台管理界面,以及其他特性。然後,你會學到如何使用單元測試,保障代碼持續按照正確的方式工作,避免極具風險的猜測式編程。 一個簡單的Flask 項目入手,由淺入深地探討了一系列實戰問題,包括如何使用SQLAlchemy 和Jinja 等工具進行Web 開發;如何正確地設計擴展性強的Flask 應用架構和搭建MVC 環境;對於各種NoSQL 資料庫的特性,何時應該、何時不應該及如何使用它們;通過使用Flask 擴展快速實現用戶的身份系統、RESTful API、NoSQL查詢、後台管理等功能;如何創建自己的擴展;使用Celery 編寫非同步任務,使用pytest 進行單元測試等;最後介紹了如何部署上線,包括使用自己搭建的伺服器或使用各種雲服務,以及如何權衡和選擇這些不同的解決方案。

7. 怎麼使用python flask搭建靜態伺服器

Frozen-Flask freezes aFlaskapplication into a set of static files. The result can be hosted without any server-side software other than a traditional web server.

Note:This project used to be called Flask-Static.

Installation

Install the extension with one of the following commands:

$ easy_install Frozen-Flask

or alternatively if you have pip installed:

$ pip install Frozen-Flask

or you can get thesource code from github.

Context

This documentation assumes that you already have a workingFlaskapplication. You can run it and test it with the development server:

from myapplication import appapp.run(debug=True)

Frozen-Flask is only about deployment: instead of installing Python, a WGSI server and Flask on your server, you can use Frozen-Flask tofreezeyour application and only have static HTML files on your server.

Getting started

Create aFreezerinstance with yourappobject and call itsfreeze()method. Put that in afreeze.pyscript (or call it whatever you like):

from flask_frozen import Freezerfrom myapplication import appfreezer = Freezer(app)if __name__ == '__main__':
freezer.freeze()

This will create abuilddirectory next to your application』, with your application』s content frozen into static files.

Note

Frozen-Flask considers it 「owns」 its build directory. By default, it willsilently overwritefiles in that directory, andremovethose it did not create.

Theconfigurationallows you to change the destination directory, or control what files are removed if at all.

This build will most likely be partial since Frozen-Flask can only guess so much about your application.

Finding URLs

Frozen-Flask works by simulating requests at the WSGI level and writing the responses to aptly named files. So it needs to find out which URLs exist in your application.

The following URLs can be found automatically:

  • Static files handled by Flask for your application or any of itsblueprints.

  • Views with no variable parts in the URL, if they accept theGETmethod.

  • New in version 0.6:Results of calls toflask.url_for()made by your application in the request for another URL. In other words, if you useurl_for()to create links in your application, these links will be 「followed」.

  • This means that if your application has an index page at the URL/(without parameters) and every other page can be found from there by recursively following links built withurl_for(), then Frozen-Flask can discover all URLs automatically and you』re done.

    Otherwise, you may need to write URL generators.

    URL generators

    Let』s say that your application looks like this:

  • @app.route('/')def procts_list():

  • return render_template('index.html', procts=models.Proct.all())@app.route('/proct_<int:proct_id>/')def proct_details():

  • proct = models.Proct.get_or_404(id=proct_id)

  • return render_template('proct.html', proct=proct)

  • If, for some reason, some procts pages are not linked from another page (or these links are not built byurl_for()), Frozen-Flask will not find them.

    To tell Frozen-Flask about them, write an URL generator and put it after creating yourFreezerinstance and before callingfreeze():

  • @freezer.register_generatordef proct_details():

  • for proct in models.Proct.all():

  • yield {'proct_id': proct.id}

  • Frozen-Flask will find the URL by callingurl_for(endpoint,**values)whereendpointis the name of the generator function andvaluesis each dict yielded by the function.

    You can specify a different endpoint by yielding a(endpoint,values)tuple instead of justvalues, or you can by-passurl_forand simply yield URLs as strings.

    Also, generator functions do not have to bePython generatorsusingyield, they can be any callable and return any iterable object.

    All of these are thus equivalent:

  • @freezer.register_generatordef proct_details(): # endpoint defaults to the function name

  • # `values` dicts

  • yield {'proct_id': '1'}

  • yield {'proct_id': '2'}@freezer.register_generatordef proct_url_generator(): # Some other function name

  • # `(endpoint, values)` tuples

  • yield 'proct_details', {'proct_id': '1'}

  • yield 'proct_details', {'proct_id': '2'}@freezer.register_generatordef proct_url_generator():

  • # URLs as strings

  • yield '/proct_1/'

  • yield '/proct_2/'@freezer.register_generatordef proct_url_generator():

  • # Return a list. (Any iterable type will do.)

  • return [

  • '/proct_1/',

  • # Mixing forms works too.

  • ('proct_details', {'proct_id': '2'}),

  • ]

  • Generating the same URL more than once is okay, Frozen-Flask will build it only once. Having different functions with the same name is generally a bad practice, but still work here as they are only used by their decorators. In practice you will probably have a mole for your views and another one for the freezer and URL generators, so having the same name is not a problem.

    Testing URL generators

    The idea behind Frozen-Flask is that you canuse Flask directlyto develop and test your application. However, it is also useful to test yourURL generatorsand see that nothing is missing, before deploying to a proction server.

    You can open the newly generated static HTML files in a web browser, but links probably won』t work. TheFREEZER_RELATIVE_URLSconfigurationcan fix this, but adds a visibleindex.htmlto the links. Alternatively, use therun()method to start an HTTP server on the build result, so you can check that everything is fine before uploading:

  • if __name__ == '__main__':

  • freezer.run(debug=True)

  • Freezer.run()will freeze your application before serving and when the reloader kicks in. But the reloader only watches Python files, not templates or static files. Because of that, you probably want to useFreezer.run()only for testing the URL generators. For everything else use the usualapp.run().

    Flask-Scriptmay come in handy here.

    Controlling What Is Followed

    Frozen-Flask follows links automatically or with some help from URL generators. If you want to control what gets followed, then URL generators should be used with the Freezer』swith_no_argument_rulesandlog_url_forflags. Disabling these flags will force Frozen-Flask to use URL generators only. The combination of these three elements determines how much Frozen-Flask will follow.

    Configuration

    Frozen-Flask can be configured using Flask』sconfiguration system. The following configuration values are accepted:

  • FREEZER_BASE_URL

  • Full URL your application is supposed to be installed at. This affects the output offlask.url_for()for absolute URLs (with_external=True) or if your application is not at the root of its domain name. Defaults to'http://localhost/'.

  • FREEZER_RELATIVE_URLS

  • If set toTrue, Frozen-Flask will patch the Jinja environment so thaturl_for()returns relative URLs. Defaults toFalse. Python code is not affected unless you userelative_url_for()explicitly. This enables the frozen site to be browsed without a web server (opening the files directly in a browser) but appends a visibleindex.htmlto URLs that would otherwise end with/.

    New in version 0.10.

  • FREEZER_DEFAULT_MIMETYPE

  • The MIME type that is assumed when it can not be determined from the filename extension. If you』re using the Apache web server, this should match theDefaultTypevalue of Apache』s configuration. Defaults toapplication/octet-stream.

    New in version 0.7.

  • FREEZER_IGNORE_MIMETYPE_WARNINGS

  • If set toTrue, Frozen-Flask won』t show warnings if the MIME type returned from the server doesn』t match the MIME type derived from the filename extension. Defaults toFalse.

    New in version 0.8.

  • FREEZER_DESTINATION

  • Path to the directory where to put the generated static site. If relative, interpreted as relative to the application root, next to . Defaults tobuild.

  • FREEZER_REMOVE_EXTRA_FILES

  • If set toTrue(the default), Frozen-Flask will remove files in the destination directory that were not built ring the current freeze. This is intended to clean up files generated by a previous call toFreezer.freeze()that are no longer needed. Setting this toFalseis equivalent to settingFREEZER_DESTINATION_IGNOREto['*'].

    New in version 0.5.

  • FREEZER_DESTINATION_IGNORE

  • A list (defaults empty) offnmatchpatterns. Files or directories in the destination that match any of the patterns are not removed, even ifFREEZER_REMOVE_EXTRA_FILESis true. As in.gitignorefiles, patterns apply to the whole path if they contain a slash/, to each slash-separated part otherwise. For example, this could be set to['.git

8. flask框架有什麼用

Flask是一個使用 Python 編寫的輕量級 Web 應用框架。其 WSGI 工具箱採用 Werkzeug ,模板引擎則使用 Jinja2 。
Flask使用 BSD 授權。Flask也被稱為 「microframework」 ,因為它使用簡單的核心,用 extension 增加其他功能。Flask沒有默認使用的資料庫、窗體驗證工具。
web網站發展至今,特別是伺服器端,涉及到的知識、內容,非常廣泛,這對程序員的要求會越來越高的。如果採用成熟,穩健的框架,那麼一些基礎的工作,比如說安全性,數據流控制等都可以讓框架來處理,那麼程序開發人員就可以將精力放在具體的業務邏輯上面。
使用框架的優勢:穩定性、可擴展性強,可以降低開發效率,提高開發效率。
而Flask框架是Python的web框架,最大特徵就是輕便,讓開發者自由靈活的兼容開發的feature。Python語言靈活性給予了Flask框架同樣的特徵,無論用戶畫像還是產品推薦,Python對比其他語言都有很大的優勢。
另外Flask框架輕便,容易上手,試錯成本低,搭建網站的時候,Flask框架是最好的選擇。

9. 新浪雲怎麼部署 python flask

首先安裝python,這個我就不多說了,記得配置好系統的環境變數,python和python包(Scripts目錄)都要加入系統的環境變數。
接下來就pip安裝flask,windows下的命令為:
$ pip install flask
接下來創建一個文件夾,就是你將來整個工程的文件。通過cmd命令進入到這個文件夾中。(cd命令)
然後在這個文件夾中創建一個python文件,py為後綴的文件。

接下來編輯這個文件(文本編輯器、IDE都可以)
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '
Hello World!
'
if __name__ == '__main__':
app.run(debug = True)
寫入代碼就可以簡單的啟動伺服器了,默認根目錄下返回「hello,world!」,如何運行的就只需要在cmd中運行
$ python myapp.py
運行成功的話可以看到下圖的提示。
訪問localhost:5000的時候(默認埠5000,可以通過host參數修改),例如
app.run(debug=True,host='0.0.0.0:5000')
基本上這樣完成了flask的基本配置,接下來就是將其放到新浪雲SAE上,SAE本身就支持flask框架的部署,但是後期我們需要引入其他的一些第三方的包,因此最好就是講自己的包放到工程文件中調用。
方法就是在使用pip安裝的時候,使用這樣子的命令:
$ pip install -t vendor PACKAGENAME
這個樣子在本地安裝的時候就會將包放在一個vendor文件夾中,然後安裝SAE官方的文檔,在工程文件中添加一個名為「index.wsgi」的文件,內容為:
import sae
sae.add_vendor_dir('vendor')
from myapp import app
application = sae.create_wsgi_app(app)
這樣子基本就完成了,只需要講文件上傳到SAE上就可以完成部署。
SAE上的操作記得在新建應用的時候選擇python2.7,然後我用的代碼管理方式是git。
接下來的方式就是git的內容了,這里我就不多說,寫下幾個命令:
將倉庫的內容復制到本地
$git clone 你的git倉庫地址
創建分支
$git branck 分支名
使用分支
$git checkout 分支名
修改代碼
$git add --all
$git commit -a "注釋"
$git pust 分支名
(以前都是用svn的所以git還不是特別熟)
部署上傳完代碼之後就可以好好折騰啦

10. python flask 怎麼組織程序

1.初始化

所有的flask程序都必須創建一個程序實例

web伺服器使用wsgi介面協議,把接收客戶端的請求都轉發給這個程序實例來進行處理。這個程序實例就是flask對象

from flask import Flask
app = Flask(__name__)
#__name__決定程序的根目錄,以便以後能找到相對於程序根目錄的資源文件位置


2.路由和視圖函數

程序實例需要知道接收請求後,需要知道url請求應該運行哪些代碼。所以保存了一個url和python函數的映射關系;這個映射關系就叫做路由

flask程序中路由的寫法:

2.1#使用app.route裝飾器,把修飾的函數注冊為路由。例如

@app.route('/')def index(): return "<h1>Hello World</h1>"

#函數的名字不是必須寫index的,只是和裝飾器關聯的時候寫的函數名而已

#把index函數注冊為程序根路徑的處理程序。函數的返回值稱為響應,是客戶端接收的內容。

像index這樣的函數稱為試圖函數,試圖函數返回的響應可以是包含html的簡單字元串,也可以是復雜的東西

2.2#可變url部分映射,使用特定的裝飾器語法就可以

@app.route('/user/<name>')def user(name): return "<h1>hello %s</h1>"%(name)

裝飾器中的<name>指定可變內容為name,name對user(name)函數中的傳遞參數,這2個部分內容必須一致

調用試圖函數時候,flask會自動的將動態部分作為參數傳入參數,這個函數中,參數用於生成個人的歡迎信息

#備註:路由中的動態部分默認使用字元串類型,可以使用int,float,path來定義;例如<int:id>;path類型也是字元串,但不把斜線視作分隔符,而將其當做動態片段的一部分

3.啟動伺服器

調用程序實例app的run方法啟動flask集成開發的web伺服器

if __name__ == "__main__":
app.run(debug=True)

debug=True代表的是調試模式,這個flask自帶的run方法開啟的伺服器不適合在生產中使用,此處只用來測試

4.一個完整的Flask程序

啥也不說,先上例子hello.py

熱點內容
存儲卡交流 發布:2025-01-13 07:16:06 瀏覽:982
php字元串浮點數 發布:2025-01-13 07:15:28 瀏覽:997
python排序cmp 發布:2025-01-13 07:09:04 瀏覽:71
雲腳本精靈 發布:2025-01-13 07:03:27 瀏覽:617
高維訪問 發布:2025-01-13 07:03:23 瀏覽:974
保衛蘿卜有腳本嗎 發布:2025-01-13 06:30:29 瀏覽:741
天貓上傳 發布:2025-01-13 06:06:35 瀏覽:156
php處理並發 發布:2025-01-13 06:03:44 瀏覽:282
安卓傳文件的軟體哪個最好 發布:2025-01-13 06:03:07 瀏覽:885
電腦伺服器可以做嗎 發布:2025-01-13 05:59:49 瀏覽:846