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

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

SpringBoot项目是如何启动

启动步骤 概念 运行main方法,初始化SpringApplication 从spring.factories读取listener ApplicationContentInitializer运行run方法读取环境变量,配置信息创建SpringApplication上下文预初始化上下文,将启动类作为配置类进行读取调用 refresh 加载 IOC容器,加载所有的自动配置类,创建容器在这个过程

Maven创建项目中的groupId, artifactId, 和 version的意思

文章目录 groupIdartifactIdversionname groupId 定义:groupId 是 Maven 项目坐标的第一个部分,它通常表示项目的组织或公司的域名反转写法。例如,如果你为公司 example.com 开发软件,groupId 可能是 com.example。作用:groupId 被用来组织和分组相关的 Maven artifacts,这样可以避免

2. 下载rknn-toolkit2项目

官网链接: https://github.com/airockchip/rknn-toolkit2 安装好git:[[1. Git的安装]] 下载项目: git clone https://github.com/airockchip/rknn-toolkit2.git 或者直接去github下载压缩文件,解压即可。

在 Windows 上部署 gitblit

在 Windows 上部署 gitblit 在 Windows 上部署 gitblit 缘起gitblit 是什么安装JDK部署 gitblit 下载 gitblit 并解压配置登录注册为 windows 服务 修改 installService.cmd 文件运行 installService.cmd运行 gitblitw.exe查看 services.msc 缘起