怎样使用uswgi部署一个高性能的python web在线服务

系列文章目录


环境部署条件: centos7+anncodena+python3+flask+uswgi

前言

flask 自身提供web服务器适用于开发debug测试,性能不佳,并不适用与线上web服务部署。今天介绍flask 应用生产环境部署的一套方案。centos7+anaconda+python3+falsk+uwgi

centos: 非常流行的linux版本、稳定免费

anaconda:很好用的python集成安装包

python3: python2 已经过时 ,python3才是主流

flask:轻量级的python web 框架 读写mysql 机器学习模型 报表展示页面等对外提供web服务

uwgi:高性能的web服务器


一.准备前提

1. 新建一个anpython 用户,密码设置为python@123

 useradd anpython
 passwd anpython 

2 将新建的anpython用户,添加sudo 用户组

gpasswd -a anpython wheel

3. 切换到anpython用户

sudo -iu  anpython

二. 初始化化境

1.初始化仓库化境

   sudo yum install -y epel-release

2 .安装gcc 和nginx

sudo yum install -y  gcc nginx
   

3.安装anaconda

wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh

路径选择的时候不要改动,默认是/home/anpython/anaconda3
在这里插入图片描述
安装

sh  Anaconda3-2019.10-Linux-x86_64.sh

按回车执行
在这里插入图片描述

在这里插入图片描述

4.创建虚拟python环境

激活anaconda

cd /home/anpython
source anaconda3/bin/activate

5.安装virtualenv

pip install  virtualenv

在这里插入图片描述
创建目录

mkdir -p ~/myproject
cd ~/myproject

创建虚拟环境目录

virtualenv myprojectenv

激活新创建的虚拟环境

source myprojectenv/bin/activate

在这里插入图片描述

6.安装flask

pip install flask

7.安装uwsgi

pip install uwsgi

8. 新建一个flask 简单应用代码

vi ~/myproject/myproject.py
from flask import Flask
applicaiton= Flask(__name__)

@applicaiton.route('/')
def hello_world():
   return 'Hello World'

if __name__ == '__main__':
   applicaiton.run('0.0.0.0')

8.回到命令行,启动flask服务测试

python myproject.py

在这里插入图片描述
访问服务
在这里插入图片描述
发现不可用,这主要是linux 5000端口没有开放导致的

9.开放系统的5000端口

sudo firewall-cmd --permanent --add-port=5000/tcp
sudo firewall-cmd --reload

10 创建一个uwgi入口

vi ~/myproject/myuwgi.py
from myproject import applicaiton
if __name__ == '__main__':
   applicaiton.run()

使用如下命令测试下uswgi

uwsgi --socket 0.0.0.0:5000 --protocol=http -w myuwgi在这里插入图片描述
测试通过

11 .配置uwsgi配置文件

vi /home/anpython/myproject/myproject.ini

[uwsgi]
module=myuwgi
master = true
processes = 5
threads = 100
http = 0.0.0.0:5000
virtualenv = /home/anpython/myproject/myprojectenv
die-on-term = true

使用配置文件启动uwsgi

uwsgi --ini myproject.ini

在这里插入图片描述

12 创建系统服务随开机自启动

sudo vi /etc/systemd/system/myproject.service

[Unit]
Description=uWSFI instance to serve myproject
After = network.target
[Service]
User=anpython
Group=nginx
WorkingDirectory=/home/anpython/myproject
Envrironment="PATH=/home/anpython/myproject/myprojectenv/bin"
ExecStart=/home/anpython/myproject/myprojectenv/bin/uwsgi --ini myproject.ini
[Install]
WantedBy=multi-user.target

启动服务

sudo systemctl start myproject.service

设置开机自启服务
sudo systemctl enable myproject.service 使用此条命令无效
解决方案创建一个软连接如下,已验证开机可以自启动

ln -s ‘/etc/systemd/system/myproject.service’ ‘/etc/systemd/system/multi-user.target.wants/myproject.service’
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值