腾讯云+flask+uwsgi+nginx部署入门
2020-04-08 本文已影响0人
钉某人
此篇是在腾讯云上部署flask项目的入门文章(nginx后面有时间添加)。
腾讯云配置:
- 操作系统:Ubuntu Server 18.04.1 LTS 64位
- 系统盘大小:50G
- 1核 2GB 1Mbps
1.Ubuntu创建新用户
- ①创建新用户
sudo useradd -r -m -s /bin/bash dingmouren
-r:建立系统账号
-m:自动建立用户登入目录
-s:指定用户登录后使用的shell
- ②设置新用户的密码
sudo passwd dingmouren
image.png
- ③修改用户权限
这里采用修改/etc/sudoers文件的方法分配用户权限,文件只有r权限,我们这里改动之前需要增加w权限,修改后,再去掉w权限
sudo chmod +w /etc/sudoers
sudo vim /etc/sudoers
# 添加下图的配置语句
sudo chmod -w /etc/sudoers
image.png
到这里新用户创建成功
image.png
切换到新用户命令
su - dingmouren
image.png
附:删除用户
①.执行命令
sudo userdel dingmouren
②.删除用户目录
sudo rm -rf /home/dingmouren
③.删除用户权限的配置:就是删除掉 /etc/sudoers中关于dingmouren的语句,否则不能创建同名用户
2.Ubuntu上配置python开发环境以及创建flask测试项目
①更新软件列表
sudo apt update
image.png
②安装相关软件包
sudo apt install python3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools
③安装python虚拟环境以及使用
1.安装virtualenv
sudo apt install virtualenv
2.创建项目目录
mkdir flaskweb
cd flaskweb
3.创建独立运行的虚拟环境并命名
virtualenv --python=python3 venv
4.进入虚拟环境
source venv/bin/activate
5.退出虚拟环境命令
deactivate
image.png
④安装wheel uwsgi flask
pip3 install wheel
pip3 install flask
pip3 install uwsgi
image.png
⑤创建flask项目程序
touch api.py
sudo vim api.py
image.png
⑥放开5000端口
image.png image.png
⑦启动flask程序测试,使用flask自带的服务器
img.png3.使用uwsgi启动flask项目
- ①创建uwsgi.ini文件,并配置如下
[uwsgi]
master = true
http=:5000
chdir = /home/dingmouren/flaskweb
wsgi-file=/home/dingmouren/flaskweb/api.py
callable=app
processes=4
threads=2
buffer-size = 65536
vacuum=true
pidfile =/home/dingmouren/flaskweb/uwsgi.pid
启动uwsgi
uwsgi uwsgi.ini
停止uwsgi
pkill -f -9 uwsgi
- ②创建启动脚本
创建启动脚本可以让Ubuntu系统自动启动uwsgi服务器来启动flask应用。
编辑启动脚本
sudo nano /etc/systemd/system/flaskweb.service
image.png
[Unit]
Description=uWSGI instance to serve flaskweb
After=network.target
[Service]
User=dingmouren
Group=www-data
WorkingDirectory=/home/dingmouren/flaskweb
Environment="PATH=/home/dingmouren/flaskweb/venv/bin"
ExecStart=/home/dingmouren/flaskweb/venv/bin/uwsgi --ini uwsgi.ini
[Install]
WantedBy=multi-user.target
# 属性解释
[Unit]部分用于指定元数据和依赖项
Description是对服务的描述
After=network.target指启动服务的条件为达到网络目标
[Service]部分指定我们要在其中运行进程的用户和组
User=dingmouren表示设置用户组,ubuntu是腾讯云Ubuntu系统默认的用户,如果你的用户名为其他,需要改为你自己的用户名
Group=www-data是将组所有权授予该www-data组,以便Nginx可以快捷地与uWSGI进程进行通信
WorkingDirectory是flask程序所在的路径
Environment是虚拟环境bin文件夹的地址
ExecStart设置后可以快捷地调用uWSGI可执行文件myproject.ini并将其传递给我们的配置文件
WantedBy=multi-user.target表示我们设置该服务在常规多用户系统启动并运行时启动
复制粘贴后,按control+o,进入下一步,然后按回车进行保存,最后按control+x回到命令行界面。
完成以上执行启动服务命令
sudo systemctl start flaskweb
sudo systemctl enable flaskweb
查看服务状态命令
sudo systemctl status flaskweb
image.png
执行完,按control+c,回到正常命令界面,退出ssh客户端,访问地址仍然可以是访问的哦,
如果修改了service中的配置,需要执行重新加载命令:sudo systemctl daemon-reload,再启动服务:sudo systemctl start flaskweb,可以再查看下服务状态:sudo systemctl status flaskweb
附加:
1.查看uwsgi相关进程
ps aux|grep uwsgi
image.png
2.停止服务命令
sudo systemctl stop flaskweb