首頁 運維 Nginx centos怎麼使用Nginx部署flask應用

centos怎麼使用Nginx部署flask應用

May 21, 2023 pm 10:13 PM
centos nginx flask

環境準備

python套件安裝工具pip : sudo apt-get install pip
virtualenv:為了避免系統環境與應用環境之間的衝突,使用虛擬環境來安裝應用的依賴,virtualenv可以為每個python應用程式建立獨立的開發環境,安裝方式:sudo pip install virtualenv

虛擬環境使用

flask專案地址:/usr/local/flasky,只需要在專案地址下執行指令:

virtualenv venv
登入後複製

約定俗成一般使用「venv」作為虛擬環境的名稱,這樣我們就建立了一個虛擬環境的資料夾venv如下圖紅框所示:

centos怎麼使用Nginx部署flask應用 

接下來啟動虛擬環境,只用指令

source venv/bin/activate
登入後複製

centos怎麼使用Nginx部署flask應用 

啟動虛擬環境後,命令列抬頭會有(venv)標識,僅需虛擬環境後,一切安裝python的操作都會講包和引用裝在虛擬環境中,不會影響全局的python環境

退出虛擬環境的指令,直接敲:

deactivate

即可退出虛擬環境

# #配置flask應用程式環境

flask應用程式開發的時候,會應用到非常多的模板,「狗書」中有介紹一種比較方便的方式,直接把開發環境的flask依賴等匯出為txt文件,然後在centos的虛擬環境中使​​用對應指令根據這個txt文件安裝會非常方便。

pip freeze >requerements.txt
登入後複製

 該指令匯出一個檔案名為requirements.txt的文本,裡面的內容如下圖所示

 centos怎麼使用Nginx部署flask應用

然後centos中使用以下指令

pip install -r requerments.txt

這樣就會在虛擬環境中安裝一個與開發環境一致的副本了。

注意一定要在虛擬環境中使​​用批次安裝指令,不然就安裝到全域去了,後果還是比較蛋痛的。

安裝uwsgi

flask的實際生產運作環境選擇不多,比較成熟的是【gunicorn】和【uwsgi】,這裡推荐一本書董偉明的《 python web開發實戰》裡面有講這兩種部署。

以下內容來自百度百科:

uwsgi是一個web伺服器,它實作了wsgi協定、uwsgi、http等協定。 nginx中httpuwsgimodule的作用是與uwsgi伺服器進行交換。 wsgi是一種web伺服器網關介面。它是一個web伺服器(如nginx,uwsgi等伺服器)與web應用(如用flask框架寫的程式)通訊的一種規範。

安裝指令如下,注意一定要保證已經進入了虛擬環境並啟動:

pip install uwsgi

不需要使用sudo ,因為virtualvenv沒有權限要求。

上傳專案檔案

部落客使用的linux連線工具是xshell,在之前的文章中講如何上傳檔案到linux主機,這裡不再詳細說明,展示一下大概的專案結構以及啟動檔案manage.py

 centos怎麼使用Nginx部署flask應用

tree指令可以以樹狀圖的形式展示檔案結構,可以賦予參數設定樹的深度,這裡部落客展示了2層

安裝指令:

sudo apt-get install tr​​ee

manage.py程式碼如下

#coding=utf-8
#!/usr/local/flasky/venv python
'''
created on 2017/11/9
@author: savitar丶
project:
'''
import os
from app import create_app
from flask_script import manager, shell
app = create_app(os.getenv('flask_config') or 'default')
manager = manager(app)

def make_shell_context():
 return dict(app=app)
manager.add_command("shell", shell(make_context=make_shell_context))
@manager.command
def deploy():
 """run deployment tasks."""
 pass
if __name__ == '__main__':
 manager.run()
 #app.run()
登入後複製

命令列運行flask項目

python manage.py runserver

以上命令一般都是在開發環境進行調試的時候使用,或者註釋掉“manager.run()”,使用“app.run()”,後者可以直接在pycharm中執行項目,這裡不再詳細說明

配置uwsgi

我們直接在flask的根目錄下面新建一個檔案「config.ini」,使用的方式是設定啟動。檔案內容如下

[uwsgi]

# uwsgi 启动时所使用的地址与端口

socket = 127.0.0.1:5000

#虚拟环境目录 
home = /usr/local/flasky/venv

#指向网站根目录
chdir = /usr/local/flasky

#python启动程序文件
wsgi-file = manage.py

#python程序内用于启动的application变量名
callable = app

#处理器数
processes = 4

#线程数
threads = 2

#状态监测地址
stats = 127.0.0.1:9191

#设置uwsgi包解析的内部缓存区大小。默认4k

buffer-size = 32768
登入後複製

設定檔的執行方式,命令列輸入指令:

#uwsgi config.ini##或不寫入設定檔(不建議這樣做),直接命令列輸入

uwsgi –socket 127.0.0.1:5000 –wsgi-file manage.py –callable app –process 4 –threads 2

這裡的callable=app這個app是manage.py程式檔案內的一個變量,這個變數的型別是flask的application類別

 

#

这里是因为博主已经配置好了项目自启动,已经有一个配置文件在运行了,大家按照正常流程配置就好。ctrl+c关闭程序,在实际项目中我们的服务器上可能会有多个项目在运行,我们需要应用随同服务器启动并作为后台服务运行才是实际项目需要,所以我们需要安装另一个工具来引导执行uwsgi

安装supervisor

supervisor可以同时启动多个应用,最重要的是当某个应用down掉的时候,他可以自动重启该应用,保证可用性。

sudo apt-get install supervisor

supervisor的全局配置文件在

centos怎麼使用Nginx部署flask應用

打开该默认配置文件,最下面一行我们看到,该默认配置文件会从 /etc/supervisord/目录下面加载所有的配置文件

centos怎麼使用Nginx部署flask應用

我们不需要修改默认的配置文件,只需要在/etc/supervisord/目录下新建一个配置文件(命名为flask_supervisor.conf)
centos怎麼使用Nginx部署flask應用

该文件内容如下:

[program:flasky]
# 启动命令入口
command=/usr/local/flasky/venv/bin/uwsgi /usr/local/flasky/config.ini

# 命令程序所在目录
directory=/usr/local/flasky
#运行命令的用户名
user=root

autostart=true
autorestart=true
#日志地址
stdout_logfile=/usr/local/flasky/logs/uwsgi_super.log
登入後複製

这里command这一行代码看起来很长,其实就是之前我们的 “uwsgi config.ini”指令,这里使用的是绝对路径,保证命令和文件的准确性,大家也可以copy这一行代码出去执行,结果是ok的。autostart和autorestart参数保证了我们的应用可以一直保持启动的状态,即使是down掉了也能重启服务。

启动服务

sudo service supervisor start

终止服务

sudo service supervisor stop

安装nginx

nginx是轻量级,性能强,占用资源少,能很好的处理高并发的反向代理软件。

正向代理和反向代理

正向代理,作为一个媒介将互联网上获取的资源返回给相关联的客户端。代理和客户端在一个局域网,对于服务是透明的。反向代理,根据客户端的请求,从后端的服务器上获取资源,然后再讲这些资源返回给客户端。代理和服务器再一个局域网,对客户端是透明的。nginx是反向代理的最佳选择。

反向代理的作用

提高动态语言的io处理能力
加密和ssl加速
安全。
负载均衡
缓存静态内容
支持压缩。

nginx安装指令:

sudo apt-get install nginx

配置nginx

我们找到nginx的配置文件,不要修改默认的nginx.conf(路径 /etc/nginx/nginx.conf)文件,只需要在同样的文件夹下面新建一个文件夹(conf.d)然后在conf.d下面新建配置文件(flask_ng.conf)即可,如下图

centos怎麼使用Nginx部署flask應用

flask_ng.conf文件内容如下

server {
  listen 80;
  server_name www.cloud-test.com; #公网地址

  location / {
  include  uwsgi_params;
  uwsgi_pass 127.0.0.1:5000; # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理
  uwsgi_param uwsgi_pyhome /usr/local/flasky/venv; # 指向虚拟环境目录
  uwsgi_param uwsgi_chdir /usr/local/flasky; # 指向网站根目录
  uwsgi_param uwsgi_script manage:app; # 指定启动程序
  }
 }
登入後複製

启动nginx

sudo service nginx restart

然后浏览器直接访问服务器http://www.cloud-test.com地址,结果如下

centos怎麼使用Nginx部署flask應用 

小case,解决办法,直接修改本机hosts,绑定就好了,如下图所示

centos怎麼使用Nginx部署flask應用 

然后再去访问

centos怎麼使用Nginx部署flask應用 

然后也可以找自己的同事一起访问,看看并发请求,网站的运行情况,想来能解决在开发环境使用了host 0.0.0.0 也只能处理一个用户的请求的问题

查看应用的运行情况

supervisorctl 是 supervisord 的命令行客户端工具,使用的配置和 supervisord 一样,这里就不再说了。下面,主要介绍 supervisorctl 操作的常用命令:
输入命令 supervisorctl 进入 supervisorctl 的 shell 交互界面(还是纯命令行),可以看到应用的运行情况
就可以在下面输入命令了。:

help # 查看帮助
status # 查看程序状态
stop program_name # 关闭 指定的程序
start program_name # 启动 指定的程序
restart program_name # 重启 指定的程序
tail -f program_name # 查看 该程序的日志
update # 重启配置文件修改过的程序(修改了配置,通过这个命令加载新的配置)

也可以直接透過 shell 指令操作:

supervisorctl status
supervisorctl update

centos怎麼使用Nginx部署flask應用

以上是centos怎麼使用Nginx部署flask應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

怎樣優化CentOS HDFS配置 怎樣優化CentOS HDFS配置 Apr 14, 2025 pm 07:15 PM

提升CentOS上HDFS性能:全方位優化指南優化CentOS上的HDFS(Hadoop分佈式文件系統)需要綜合考慮硬件、系統配置和網絡設置等多個方面。本文提供一系列優化策略,助您提升HDFS性能。一、硬件升級與選型資源擴容:盡可能增加服務器的CPU、內存和存儲容量。高性能硬件:採用高性能網卡和交換機,提升網絡吞吐量。二、系統配置精調內核參數調整:修改/etc/sysctl.conf文件,優化TCP連接數、文件句柄數和內存管理等內核參數。例如,調整TCP連接狀態和緩衝區大小

centos關機命令行 centos關機命令行 Apr 14, 2025 pm 09:12 PM

CentOS 關機命令為 shutdown,語法為 shutdown [選項] 時間 [信息]。選項包括:-h 立即停止系統;-P 關機後關電源;-r 重新啟動;-t 等待時間。時間可指定為立即 (now)、分鐘數 ( minutes) 或特定時間 (hh:mm)。可添加信息在系統消息中顯示。

centos配置ip地址 centos配置ip地址 Apr 14, 2025 pm 09:06 PM

CentOS 中配置 IP 地址的步驟:查看當前網絡配置:ip addr編輯網絡配置文件:sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0更改 IP 地址:編輯 IPADDR= 行更改子網掩碼和網關(可選):編輯 NETMASK= 和 GATEWAY= 行重啟網絡服務:sudo systemctl restart network驗證 IP 地址:ip addr

centos和ubuntu的區別 centos和ubuntu的區別 Apr 14, 2025 pm 09:09 PM

CentOS 和 Ubuntu 的關鍵差異在於:起源(CentOS 源自 Red Hat,面向企業;Ubuntu 源自 Debian,面向個人)、包管理(CentOS 使用 yum,注重穩定;Ubuntu 使用 apt,更新頻率高)、支持週期(CentOS 提供 10 年支持,Ubuntu 提供 5 年 LTS 支持)、社區支持(CentOS 側重穩定,Ubuntu 提供廣泛教程和文檔)、用途(CentOS 偏向服務器,Ubuntu 適用於服務器和桌面),其他差異包括安裝精簡度(CentOS 精

CentOS上GitLab的備份方法有哪些 CentOS上GitLab的備份方法有哪些 Apr 14, 2025 pm 05:33 PM

CentOS系統下GitLab的備份與恢復策略為了保障數據安全和可恢復性,CentOS上的GitLab提供了多種備份方法。本文將詳細介紹幾種常見的備份方法、配置參數以及恢復流程,幫助您建立完善的GitLab備份與恢復策略。一、手動備份利用gitlab-rakegitlab:backup:create命令即可執行手動備份。此命令會備份GitLab倉庫、數據庫、用戶、用戶組、密鑰和權限等關鍵信息。默認備份文件存儲於/var/opt/gitlab/backups目錄,您可通過修改/etc/gitlab

centos如何安裝 centos如何安裝 Apr 14, 2025 pm 09:03 PM

CentOS 安裝步驟:下載 ISO 映像並刻錄可引導媒體;啟動並選擇安裝源;選擇語言和鍵盤佈局;配置網絡;分區硬盤;設置系統時鐘;創建 root 用戶;選擇軟件包;開始安裝;安裝完成後重啟並從硬盤啟動。

Centos停止維護2024 Centos停止維護2024 Apr 14, 2025 pm 08:39 PM

CentOS將於2024年停止維護,原因是其上游發行版RHEL 8已停止維護。該停更將影響CentOS 8系統,使其無法繼續接收更新。用戶應規劃遷移,建議選項包括CentOS Stream、AlmaLinux和Rocky Linux,以保持系統安全和穩定。

centos8怎麼重啟網絡 centos8怎麼重啟網絡 Apr 14, 2025 pm 08:57 PM

在 CentOS 8 中重啟網絡需執行以下步驟:停止網絡服務(NetworkManager)重新加載網絡模塊(r8169)啟動網絡服務(NetworkManager)檢查網絡狀態(通過 ping 8.8.8.8)

See all articles