centos8+flask + nginx + uwsgi部署测试
服务器版本:centos 8.2 + python3.6.8
- 创建自己的flask应用代码路径/root/test/project.py 内容如下为flask简单接口测试(xshell内部文件夹下即可,或者打在后台再将.py粘贴过来)
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
@app.route('/index')
def hello_world2():
return '你好世界!'
if __name__ == '__main__':
app.run(host='0.0.0.0',port=5005)
- 安装FLASK
pip3 install flask
- flask自带服务器测试
python3 project.py
- 网址输入http:/xxx.xxx.xxx.xxx/:5005查看是否成功(xxx为自己服务器公网地址)
- 安装nginx
yum install nginx
- nginx配置
进入目录: cd /etc/nginx
打开文件:vim nginx.conf
- 修改server
server {
listen 5050; # web访问的nginx端口,可自行修改
server_name xx.xxx.xxx.xxx; # 修改为自己的ip,我的是阿里云公网ip
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
# 配置uwsgi服务 指定反向代理
include uwsgi_params; #设置uwsgi_params文件路径,导入的uwsgi配置
uwsgi_pass 127.0.0.1:5005; # #设置为uwsgi服务器开启的端口,需要和uwsgi的配置文件里socket项的地址相同,否则无法让uwsgi接收到请求。
uwsgi_param UWSGI_PYHOME /usr/local/bin/python3.6; # python环境位置
uwsgi_param UWSGI_SCRIPT project:app; # flask web应用启动脚本文件名称,我这里是project, 及实例对象app
uwsgi_param UWSGI_CHDIR /root/test/; # flask web项目所在路径地址
}
- 验证nginx配置文件是否配置正确
nginx -t -c /etc/nginx/nginx.conf
或者nginx -t
#出现下面这句则代表配置正确
nginx: configuration file /etc/nginx/nginx.conf test is successful
- 先不启动nginx服务,接着进入项目所在路径cd /root/test/下安装uwsgi
使用该种方法没有安装成功:yum install uwsgi
改成使用pip3 install uwsgi 则安装成功
- 还是在所在项目目录下,即/root/test 创建uwsgi配置文件,即uwsgi.ini
touch uwsgi.ini
进行如下配置
[uwsgi]
socket = 127.0.0.1:5005 # 线上部署时采用服务器ip和端口
#项目所在目录路径
chdir = /root/test/
#flask程序的启动文件
module=project.py # 线上部署时module改为wsgi-file
#程序内启用的application变量名 必须参数,否则会报Internal Server Error
callable=app
# 启动主进程,自己测试时没用这个配置
master = true
#启动4个子进程处理请求
processes = 4
#启动2个线程
threads = 2
# 日志
daemonize = /root/test/logs/uwsgi.log # uwsgi.log该文件需在路径中先创建
#获取uwsgi统计信息的服务地址
stats=%(chdir)uwsgi.status # uwsgi.status该文件需在路径中先创建 用来查看uwsgi的服务状态
#uwsgi进程的pid,用于以后的stop和reload
pidfile=/root/test/uwsgi.pid # uwsgi.pid该文件需在路径中先创建 用来重启和停止uwsgi服务
touch-reload=/root/test/ # 文件重载路径,即项目路径
#若使用了虚拟环境,则需配置环境路径(本项目暂时没用)
virtualenv = /Users/xiaoyuan/.virtualenvs/flask_test
- 启动运行uwsgi应用服务器
uwsgi --ini uwsgi.ini
- 查看是否启动成功
ps aux | grep uwsgi
- 启动nginx服务
nginx
- 查看nginx启动进程
ps aux | grep nginx | grep -v grep
或者ps aux | grep nginx
- 上述若均正常,则再次前端网页输入xxx.xxx.xxx.xxx:5050 查看结果,若显示hello world 则配置成功
- 关闭nginx服务
以下两种方法都可以:
nginx -s stop (快速关闭nginx服务)
nginx -s quit (优雅关闭nginx服务,即当一个请求被处理完成之后才被关闭)
注:nginx关闭,即web应用无法访问请求,需重新启动nginx服务即可。