如题,这里记录一会用到的一些知识
环境: Ubuntu 18.04
一、首先理解三者之间的关系:
这里不再赘述,因为这位大哥讲的很清楚,链接如下:
二、关系理清之后就开始部署:
注: 此次部署的文件结构大致为下,方便后面参考配置文件
srv
└── text-board
├── app
├── flask
├── log
├── config.ini
└── tmp
text-board为项目主目录,flask为创建的虚拟环境,config.ini文件为之后配置的uwsgi文件。
Ubuntu下安装nginx:
sudo apt-get install nginx
在服务器添加安全组之后,浏览器输入ip访问能看到nginx的欢迎界面,说明启动成功。如果出现不能访问或不能连接之类,可进控制台看看是否设置安全组。
配置nginx:
nginx的默认配置目录为/etc/nginx/conf.d
在该目录下创建文件file_name.conf
,这里即执行sudo vim text-board.conf
然后接下来就是配置nginx了,参考配置文件如下:
# 配置服务器
server {
# 设置监听端口
listen 80;
# 有域名写域名 没有就先把ip整上去
server_name 139.155.21.209;
# 指定编码
charset utf-8;
# 可设定日志路径, 默认路径为 var/log/nginx
# access_log [路径] [格式]
# 指定项目路径uwsgi
location / {
# 导入一个Nginx模块用来和uWSGI进行通讯,导入uwsgi配置
include uwsgi_params;
# 设置连接uWSGI超时时间
uwsgi_connect_timeout 30;
#转发端口,需要和uwsgi配置当中的监听端口一致
uwsgi_pass 127.0.0.1:9000;
#虚拟环境的目录,没有的可以写上编译器的位置
uwsgi_param UWSGI_PYTHON /srv/text-board/flask
#run为之前run.py的run,app为flask对象
uwsgi_param UWSGI_SCRIPT run:app;
#项目根目录
uwsgi_param UWSGI_CHDIR /srv/text-board;
}
}
然后就是uwsgi的配置了:
(配置文件的位置见上方的文件结构树)
#下面这个不能少,不然不能识别这是uwsgi的配置文件,会报错
[uwsgi]
#uwsgi 启动时所使用的地址与端口
socket = 127.0.0.1:9000
#指向项目根目录
chdir = /srv/text-board
#python 启动程序脚本文件,这里用的是绝对路径
wsgi-file = /srv/text-board/run.py
#python 程序内用以启动的 application 变量名(即flask对象)
callable = app
#启用主进程
master = true
#当服务器退出的时候自动删除unix socket文件和pid文件。
vacuum = true
#处理器数
processes = 1
#线程数
threads = 2
#状态检测地址
stats = 127.0.0.1:9191
#安装uwsgi-plugin-python后需要添加的一个参数
plugins = python
然后启动uwsgi,如果不写绝对路径的话记得cd到相应目录
sudo uwsgi --ini /srv/text-board/config.ini
注:运行uwsgi时会出现一大堆。。。
接着浏览器输入ip能看到自己写的项目了。。
ps:第一次弄这个,中途各种报错,快被玩坏了。。
参考(好人一生平安。。。):
组长的Django+Nginx+uwsgi部署
Flask Web Ubuntu服务器部署
Python3 基于 Nginx 部署 Flask 项目
flask+uwsgi+nginx环境部署
用uWSGI和Nginx部署Flask项目
Flask+uwsgi+Nginx部署应用
uwsgi常用参数详解