운영 및 유지보수 엔진스 Nginx를 사용하여 Centos에 플라스크 애플리케이션을 배포하는 방법

Nginx를 사용하여 Centos에 플라스크 애플리케이션을 배포하는 방법

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

환경 준비

Python 패키지 설치 도구 pip: sudo apt-get install pip
virtualenv: 시스템 환경과 애플리케이션 환경 간의 충돌을 피하기 위해 가상 환경을 사용합니다. 애플리케이션 설치 종속성, virtualenv는 각 Python 애플리케이션에 대한 독립적인 개발 환경을 생성할 수 있습니다. 설치 방법: sudo pip install virtualenvsudo apt-get install pip
virtualenv:为了避免系统环境与应用环境之间的冲突,使用虚拟环境来安装应用的依赖,virtualenv可以为每个python应用创建独立的开发环境,安装方式:sudo pip install virtualenv

虚拟环境使用

flask项目地址:/usr/local/flasky,只需要在项目地址下运行指令:

virtualenv venv
로그인 후 복사

约定俗成一般使用“venv”作为虚拟环境的名称,这样我们就创建了一个虚拟环境的文件夹venv如下图红框所示:

Nginx를 사용하여 Centos에 플라스크 애플리케이션을 배포하는 방법

接下来激活虚拟环境,只用指令

source venv/bin/activate
로그인 후 복사

Nginx를 사용하여 Centos에 플라스크 애플리케이션을 배포하는 방법

激活虚拟环境后,命令行抬头会有(venv)标识,仅需虚拟环境后,一切安装python的操作都会讲包和引用装在虚拟环境中,不会影响全局的python环境

退出虚拟环境的指令,直接敲:

deactivate

即可退出虚拟环境

配置flask应用环境

flask应用开发的时候,会应用到非常多的模板,“狗书”中有介绍一种比较方便的方式,直接把开发环境的flask依赖等导出为一个txt文件,然后在centos的虚拟环境中使用相应指令根据这个txt文件安装会非常方便。

pip freeze >requerements.txt
로그인 후 복사

该指令导出一个文件名为requirements.txt的文本,里面的内容如下图所示

Nginx를 사용하여 Centos에 플라스크 애플리케이션을 배포하는 방법

然后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

Nginx를 사용하여 Centos에 플라스크 애플리케이션을 배포하는 방법

tree命令可以以树形图的形式展示文件结构,可以赋予参数设置树的深度,这里博主展示了2层
安装命令:

sudo apt-get install tree

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

가상 환경 사용법

flask 프로젝트 주소: /usr/local/flasky , 프로젝트 주소 아래에 명령어를 실행하면 됩니다:

[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
로그인 후 복사
로그인 후 복사

가상 환경 이름은 "venv"를 사용하는 것이 관례이므로 아래 빨간색 상자와 같이 가상 환경 폴더 venv를 생성합니다.

Nginx를 사용하여 Centos에 플라스크 애플리케이션을 배포하는 방법< img src="https://img.php.cn/upload/article/000/887/227/168467838686388.png" alt="Nginx를 사용하여 centos에 플라스크 애플리케이션을 배포하는 방법" />

🎜 다음 가상 환경을 활성화하려면 🎜
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를 사용하여 배포하는 방법 🎜🎜Activate 가상 환경 이후에는 명령줄 헤더에 (venv) 표시가 있습니다. 가상 환경을 사용하는 한 모든 Python 설치 작업에는 설치된 패키지 및 참조가 포함됩니다. 🎜🎜가상 환경 종료 지침 🎜🎜deactivate🎜🎜을 입력하여 가상 환경을 종료하세요🎜🎜🎜Flask 애플리케이션 환경 구성🎜 🎜🎜Flask 애플리케이션을 개발할 때 많은 템플릿이 사용됩니다. "dog book"에는 개발 환경의 플라스크 종속성을 txt 파일로 직접 내보낸 다음 해당 지침을 사용하는 더 편리한 방법이 있습니다. 이 txt 파일에 따라 centos 가상 환경을 설치하면 매우 편리합니다. 🎜rrreee🎜 이 명령은 require.txt라는 텍스트 파일을 내보냅니다. 내용은 아래와 같습니다🎜🎜Nginx를 사용하여 centos에 플라스크 애플리케이션을 배포하는 방법 🎜🎜그런 다음 centos에서 다음 명령을 사용하세요. 🎜🎜pip install -r requerments.txt🎜🎜이것은 가상 환경에 있습니다. 환경 개발 환경과 일치하는 복사본을 설치합니다.
가상 환경에서 일괄 설치 지침을 사용해야 합니다. 그렇지 않으면 전역적으로 설치되며 그 결과는 매우 고통스럽습니다. 🎜🎜🎜Uwsgi 설치🎜🎜🎜Flask의 실제 제작 실행 환경에는 선택의 여지가 많지 않습니다. 더 성숙한 것은 [gunicorn]과 [uwsgi]입니다. Dong Weiming의 "Python Web Development in Practice"가 추천하는 책입니다. 이 두 가지 배포에 대해 설명합니다. 🎜🎜다음 콘텐츠는 Baidu Encyclopedia에서 가져온 것입니다. 🎜🎜uwsgi는 wsgi 프로토콜, uwsgi, http 및 기타 프로토콜을 구현하는 웹 서버입니다. nginx의 httpuwsgimodule 기능은 uwsgi 서버와 교환하는 것입니다. wsgi는 웹 서버 게이트웨이 인터페이스입니다. 이는 웹 서버(예: nginx, uwsgi 등)와 웹 애플리케이션(예: Flask 프레임워크로 작성된 프로그램) 간의 통신을 위한 사양입니다.
설치 지침은 다음과 같습니다. 가상 환경에 진입하여 활성화했는지 확인하세요. 🎜🎜pip install uwsgi🎜🎜virtualvenv에는 권한 요구 사항이 없으므로 sudo를 사용할 필요가 없습니다. . 🎜🎜🎜프로젝트 파일 업로드🎜🎜🎜블로거가 사용하는 Linux 연결 도구는 xshell입니다. 이전 글에서 Linux 호스트에 파일을 업로드하는 방법에 대해 이야기했는데 여기서는 자세히 설명하지 않고 일반적인 프로젝트만 보여드리겠습니다. 구조 및 시작 파일.manage.py🎜🎜Nginx를 사용하여 플라스크 애플리케이션을 배포하는 방법 in centos 🎜🎜tree 이 명령은 파일 구조를 트리 다이어그램 형식으로 표시할 수 있으며 매개변수 설정 트리의 깊이를 제공할 수 있습니다. 여기서 블로거는 2계층
설치 명령을 보여줍니다. 🎜 🎜sudo apt-get 설치 트리🎜 🎜manage.py 코드는 다음과 같습니다🎜rrreee🎜🎜Flask 프로젝트를 실행하는 명령줄🎜🎜🎜pythonmanage.py runserver🎜🎜 위 명령은 일반적으로 개발 환경에서 디버깅할 때 사용됩니다. 또는 "manager.run()"을 주석 처리하고 "app.run()"을 사용합니다. 후자는 pycharm에서 프로젝트를 직접 실행할 수 있습니다. 여기서는 자세한 내용을 설명하지 않습니다🎜 🎜🎜Configure uwsgi🎜🎜🎜Flask "config.ini"의 루트 디렉토리 아래에 직접 새 파일을 생성하여 시작을 구성합니다. 파일 내용은 다음과 같습니다🎜rrreee🎜구성 파일을 실행하는 방법은 명령줄에 다음 명령을 입력하세요:🎜🎜uwsgi config.ini🎜🎜또는 구성 파일을 작성하지 마세요. 권장), 명령줄에 직접 입력🎜🎜 uwsgi –socket 127.0.0.1:5000 –wsgi-filemanage.py –callable app –process 4 –threads 2🎜🎜callable=app 여기서 app은manage.py의 변수입니다. 프로그램 파일에서 이 변수의 유형은 플라스크 애플리케이션 클래스🎜🎜🎜🎜입니다.

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

安装supervisor

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

sudo apt-get install supervisor

supervisor的全局配置文件在

Nginx를 사용하여 Centos에 플라스크 애플리케이션을 배포하는 방법

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

Nginx를 사용하여 Centos에 플라스크 애플리케이션을 배포하는 방법

我们不需要修改默认的配置文件,只需要在/etc/supervisord/目录下新建一个配置文件(命名为flask_supervisor.conf)
Nginx를 사용하여 Centos에 플라스크 애플리케이션을 배포하는 방법

该文件内容如下:

[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)即可,如下图

Nginx를 사용하여 Centos에 플라스크 애플리케이션을 배포하는 방법

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地址,结果如下

Nginx를 사용하여 Centos에 플라스크 애플리케이션을 배포하는 방법 

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

Nginx를 사용하여 Centos에 플라스크 애플리케이션을 배포하는 방법 

然后再去访问

Nginx를 사용하여 Centos에 플라스크 애플리케이션을 배포하는 방법 

然后也可以找自己的同事一起访问,看看并发请求,网站的运行情况,想来能解决在开发环境使用了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 # 重启配置文件修改过的程序(修改了配置,通过这个命令加载新的配置)

쉘 명령을 통해 직접 작업할 수도 있습니다:

supervisorctl status
supervisorctl update

Nginx를 사용하여 Centos에 플라스크 애플리케이션을 배포하는 방법

위 내용은 Nginx를 사용하여 Centos에 플라스크 애플리케이션을 배포하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

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 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

CentOS HDFS 구성을 최적화하는 방법 CentOS HDFS 구성을 최적화하는 방법 Apr 14, 2025 pm 07:15 PM

CentOS에서 HDFS 성능 향상 : CentOS에서 HDFS (Hadoop 분산 파일 시스템)를 최적화하기위한 포괄적 인 최적화 안내서에는 하드웨어, 시스템 구성 및 네트워크 설정에 대한 포괄적 인 고려가 필요합니다. 이 기사는 HDFS 성능을 향상시키는 데 도움이되는 일련의 최적화 전략을 제공합니다. 1. 하드웨어 업그레이드 및 선택 리소스 확장 : 서버의 CPU, 메모리 및 저장 용량을 최대한 많이 늘립니다. 고성능 하드웨어 : 고성능 네트워크 카드 및 스위치를 채택하여 네트워크 처리량을 개선합니다. 2. 시스템 구성 미세 조정 커널 매개 변수 조정 : TCP 연결 번호, 파일 핸들 번호 및 메모리 관리와 같은 커널 매개 변수를 최적화하기 위해 /etc/sysctl.conf 파일을 수정합니다. 예를 들어 TCP 연결 상태 및 버퍼 크기를 조정하십시오

Centos Shutdown 명령 줄 Centos Shutdown 명령 줄 Apr 14, 2025 pm 09:12 PM

CentOS 종료 명령은 종료이며 구문은 종료 [옵션] 시간 [정보]입니다. 옵션은 다음과 같습니다. -H 시스템 중지 즉시 옵션; -P 종료 후 전원을 끕니다. -R 다시 시작; -대기 시간. 시간은 즉시 (현재), 분 (분) 또는 특정 시간 (HH : MM)으로 지정할 수 있습니다. 추가 정보는 시스템 메시지에 표시 될 수 있습니다.

CentOS 구성 IP 주소 CentOS 구성 IP 주소 Apr 14, 2025 pm 09:06 PM

CentOS에서 IP 주소를 구성하는 단계 : 현재 네트워크 구성보기 : IP Addr 네트워크 구성 파일 편집 : Sudo vi/etc/ifcfg-eths 스크립트/IFCFG-ETH-Scripts 변경 IP 주소 : iPaddr = 라인 변경 서브넷 마스크 및 게이트웨이 (옵션) (옵션) 네트워크 주소 : Su Systemctl CTL CTL CTLCTCTCTCTC TH SYSTEMCCTL

Centos와 Ubuntu의 차이 Centos와 Ubuntu의 차이 Apr 14, 2025 pm 09:09 PM

Centos와 Ubuntu의 주요 차이점은 다음과 같습니다. Origin (Centos는 Red Hat, Enterprise의 경우, Ubuntu는 Debian에서 시작하여 개인의 경우), 패키지 관리 (Centos는 안정성에 중점을 둡니다. Ubuntu는 APT를 사용하여 APT를 사용합니다), 지원주기 (Ubuntu는 5 년 동안 LTS 지원을 제공합니다), 커뮤니티에 중점을 둔다 (Centos Conciors on ubuntu). 튜토리얼 및 문서), 사용 (Centos는 서버에 편향되어 있으며 Ubuntu는 서버 및 데스크탑에 적합), 다른 차이점에는 설치 단순성 (Centos는 얇음)이 포함됩니다.

Centos에서 Gitlab의 백업 방법은 무엇입니까? Centos에서 Gitlab의 백업 방법은 무엇입니까? Apr 14, 2025 pm 05:33 PM

CentOS 시스템 하에서 Gitlab의 백업 및 복구 정책 데이터 보안 및 복구 가능성을 보장하기 위해 CentOS의 Gitlab은 다양한 백업 방법을 제공합니다. 이 기사는 완전한 GITLAB 백업 및 복구 전략을 설정하는 데 도움이되는 몇 가지 일반적인 백업 방법, 구성 매개 변수 및 복구 프로세스를 자세히 소개합니다. 1. 수동 백업 gitlab-rakegitlab : 백업 : 명령을 작성하여 수동 백업을 실행하십시오. 이 명령은 gitlab 저장소, 데이터베이스, 사용자, 사용자 그룹, 키 및 권한과 같은 주요 정보를 백업합니다. 기본 백업 파일은/var/opt/gitlab/backups 디렉토리에 저장됩니다. /etc /gitlab을 수정할 수 있습니다

Centos를 설치하는 방법 Centos를 설치하는 방법 Apr 14, 2025 pm 09:03 PM

CentOS 설치 단계 : ISO 이미지를 다운로드하고 부팅 가능한 미디어를 실행하십시오. 부팅하고 설치 소스를 선택하십시오. 언어 및 키보드 레이아웃을 선택하십시오. 네트워크 구성; 하드 디스크를 분할; 시스템 시계를 설정하십시오. 루트 사용자를 만듭니다. 소프트웨어 패키지를 선택하십시오. 설치를 시작하십시오. 설치가 완료된 후 하드 디스크에서 다시 시작하고 부팅하십시오.

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에서 네트워크를 다시 시작하려면 다음 단계가 필요합니다. 네트워크 서비스를 중지하고 네트워크 모듈 (R8169)을 다시로드하고 네트워크 서비스 (NetworkManager)를 시작하고 네트워크 상태를 확인하고 (Ping 8.8.8.8) 네트워크 상태를 확인합니다.

See all articles