Flask+uwsgi+nginx+supervisor 项目部署

2024-06-04 03:18

本文主要是介绍Flask+uwsgi+nginx+supervisor 项目部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

非常感谢知了课堂黄勇老师的教程,但是在部署过程中遇到一点问题,自己总结了一下。

在开发机上的工作:

1.   确认项目可正常运行;

2.   在项目所在文件夹下执行 pip freeze > requirements.txt ,将当前环境的包导入到requirements.txt 文件中;

3.   用git将本地项目先上传到GitHub上

git init

git remote add origin https/SSH  --https和SSH代表你在GitHub上项目文件夹的地址,建议使用SSH,https方式每次需要输入账号密码;

在GitHub上创建项目的时候一般会创建一个README.MD文件,先将此文件pull到本地

git pull origin master

然后执行下列命令:

git add .

git commit -m “message”

git status  ---查看当前工作区的文件是否完全提交到暂存区

 

完成后:

git push origin master

在服务器上的工作:

服务器可以是虚拟机上的Linux或者是云服务,二者是一样的,在这以阿里云服务器为例:

1.    在本地电脑上安装Xshell5,用来访问远程服务器,同时在服务器上安装OpenSSH, 阿里云服务器上已经安装了。

2.   将GitHub上的项目pull到服务器上的/srv目录下,需要先安装git ,Linux下安装git:

sudo apt-get install git

3.   然后在/srv下新建一个文件夹,名字和你的项目名称一样;

git init

git remote add origin https/SSH .

git pull origin master

       注意,在执行git将本地文件上传到远程仓库前,需要将本地的SSH添加到GitHub上。否则不能成功上传。相关操作可百度

4.   安装好项目用到的python

sudoapt install python3

sudoapt install python3-pip

pip3install –upgrade pip

5.   安装virtualenv 以及 virtualenvwrapper

pipinstall virtualenvwrapper

sudoapt install vim

Vim~/.bashrc 编辑该文件,在最后添加一下两行代码:

 

 

      exportWORKON_HOME=$HOME/.virtualenvs

      source/usr/local/bin/virtualenvwrapper.sh

source ~/.bashrc

6.    创建虚拟环境:

在这我们指定用python3创建虚拟环境,执行如下命令:

Mkvirtualenv –python=/usr/bin/python3dxbbs-env

7.    安装mysql服务端和客户端:

Sudo apt install mysql-servermysql-client

Sudo apt-get install libmysqld-dev

8.    用mkvirtualenv命令创建好虚拟环境后会自动进入虚拟环境,然后进入到项目所在目录。执行命令:

Pip install -r requirements.txt

等待系统安装好需要的包

9.    进入mysql,创建数据库,注意,数据库的名称要和你项目所用到的数据库名称一致;

10.   执行pythonmanage.py db upgrade 命令。将数据库的迁移文件,映射到服务器上的mysql数据库中;

11.   然后在项目目录下,执行python dxbbs.py,然后在本地电脑浏览器中访问 服务器地址:端口,确认项目可以正常运行;

12.   关闭项目的DEBUG模式;

 

安装uwsgi

1.   uwsgi 是一个应用服务器,非静态文件的网络请求就必须通过他完成,他也可以充当静态服务器,但不是他的强项。Uwsgi是使用python编写的,因此通过pip install uwsgi 就可以安装。注意:uwsgi 必须安装到系统级别的python环境中,退出虚拟环境的命令为deactivate

2.   编写uwsgi 配置文件:

在项目的路径下面,创建一个文件叫dxbbs_uwsgi.ini的文件,然后填写一下代码:

 

[uwsgi]
 
# Django相关的配置
# 必须全部为绝对路径
# 项目的路径
chdir           = /srv/dxbbs
# 模块
module          = dxbbs
# Python虚拟环境的路径
home            = /root/.virtualenvs/dxbbs-env
 
# 进程相关的设置
# 主进程
master          = true
# 最大数量的工作进程
processes       = 10
# socket文件路径,绝对路径
socket          = /srv/dxbbs/dxbbs.sock
# wsgi文件
wsgi-file       = /srv/dxbbs/wsgi.py
# wsgi文件的app变量
callable        = app
# 设置socket的权限
chmod-socket    = 666
# 退出的时候是否清理环境
vacuum          = true

然后使用命令uwsgi –ini dxbbs_uwsgi.ini ,此时运行这个项目后,在浏览器是不能访问的,继续往下配置。

 

安装nginx:

1. nginx是一个web服务器,用来加载静态文件和接受http请求。通过命令sudo apt install nginx安装。

2.编写nginx配置文件:

/etc/nginx/conf.d目录下,新建一个文件,叫做dxbbs.conf,然后将以下代码粘贴进去:

upstream dxbbs {
    server unix:///srv/dxbbs/dxbbs.sock; 
}
 
# 配置服务器
server {
    # 监听的端口号
    listen      80;
    # 域名
    server_name 192.168.0.101; //此处是服务器的公网IP
    charset     utf-8;
 
    # 最大的文件上传尺寸
    client_max_body_size 75M;  
 
    # 静态文件访问的url
    location /static {
        # 静态文件地址
        alias /srv/dxbbs/static; 
    }
 
    # 最后,发送所有非静态文件请求到django服务器
    location / {
        uwsgi_pass  dxbbs;
        # uwsgi_params文件地址
        include     /etc/nginx/uwsgi_params; 
    }
}

       完成后测试配置文件是否正确,执行service nginx configtest,出现

说明配置成功,然后执行service nginx restart 重新启动nginx 。如果修改了配置文件,每次都要重新执行service nginx restart 才能生效。

 

此时在浏览器访问服务器公网IP(不加端口号),会出现下面这个界面:

别急,我们还没启动uwsgi。

使用supervisor管理uwsgi

让supervisor管理uwsgi,可以在uwsgi发生意外的情况下,自动重启。

1.安装supervisor,由于Python3目前不支持supervisor ,因此我们可以使用python2进行安装,然后用它来管理python3,这样是可以的。因此我们要将supervisor安装在系统级别的环境中。

2.在项目的根目录下创建一个文件dxbbs_supervisor.conf,配置文件如下:

 
# supervisor的程序名字
 [program:dxbbs]
# supervisor执行的命令
 command=uwsgi --ini dxbbs_uwsgi.ini
# 项目的目录
 directory = /srv/dxbbs 
 # 开始的时候等待多少秒
 startsecs=0
# 停止的时候等待多少秒
 stopwaitsecs=0  
 # 自动开始
 autostart=true
# 程序挂了后自动重启
 autorestart=true
# 输出的log文件
 stdout_logfile=/srv/dxbbs/log/supervisord.log
# 输出的错误文件
 stderr_logfile=/srv/dxbbs/log/supervisord.err
 
 [supervisord]
# log的级别
 loglevel=info
 
# 使用supervisorctl的配置
 [supervisorctl]
# 使用supervisorctl登录的地址和端口号
 serverurl = http://127.0.0.1:9001
 
# 登录supervisorctl的用户名和密码
 username = admin
 password = 123
 
 [inet_http_server]
# supervisor的服务器
 port = :9001
# 用户名和密码
 username = admin
 password = 123
 
 [rpcinterface:supervisor]
 supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

然后使用命令 supervisord -c dxbbs_supervosir.conf运行项目。再执行命令supervisorctl-c dxbbs_supervosir.conf

进入到supervisor 管理控制台,可以执行下面相关的命令进行管理:

Ø  status # 查看状态

Ø  start program_name #启动程序

Ø  restart program_name #重新启动程序

Ø  stop program_name # 关闭程序

Ø  reload # 重新加载配置文件

Ø  quit # 退出控制台

另外,非常重要的一点是在阿里云服务器上需要添加http访问的安全组,详情请看这篇文章应用案例中的案例6,添加80端口安全组规则。

项目运行后,在浏览器访问服务器IP,是不是发现一家可以正常进入网站了?

 

1.如果需要修改项目,建议在本地电脑上修改、测试无bug后再上传到服务器。

2.每次更新项目后需要在supervisor重新加载配置文件;

这篇关于Flask+uwsgi+nginx+supervisor 项目部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1028912

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

nginx部署https网站的实现步骤(亲测)

《nginx部署https网站的实现步骤(亲测)》本文详细介绍了使用Nginx在保持与http服务兼容的情况下部署HTTPS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录步骤 1:安装 Nginx步骤 2:获取 SSL 证书步骤 3:手动配置 Nginx步骤 4:测

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

Windows设置nginx启动端口的方法

《Windows设置nginx启动端口的方法》在服务器配置与开发过程中,nginx作为一款高效的HTTP和反向代理服务器,被广泛应用,而在Windows系统中,合理设置nginx的启动端口,是确保其正... 目录一、为什么要设置 nginx 启动端口二、设置步骤三、常见问题及解决一、为什么要设置 nginx