继续之前pycharm上写好的的flask项目
首先能保证flask能正常在服务器上启动
方法的选取
可以查看到flask的官方文档http://docs.jinkan.org/docs/flask/
试了一下独立容器,最后到要配置守护进程的时候发现Supervisor守护神不支持python3,centos7不支持Upstart。
选择uWSGI
找到的几篇可行的资料
https://www.linuxidc.com/Linux/2014-05/101529p2.htm
https://www.linuxidc.com/Linux/2016-09/134907.htm
http://www.nowamagic.net/academy/detail/1330334
首先在进入到flask之前配置好的python虚拟环境下
先安装uwsgi
pip install uwsgi
在flask的项目下新建一个配置文件uwsgiconfig.ini,用来设置uwsgi相关的参数,一会uwsgi在启动时需要指明这个配置文件,内容如下:
<uwsgi>
<pythonpath>.</pythonpath>
<module>app</module>
<callable>app</callable>
<socket>127.0.0.1:8000</socket>
<master/>
<processes>4</processes>
<memory-report/>
</uwsgi>
其中个参数表示:
- pythonpath表示项目目录,由于已经在虚拟环境下了,所以指向当前目录
- module表示项目启动模块,如上例为app.py,这里就为app
- callable表示flask项目的实例名称,上例代码中app = Flask(name),所以这里为app
- socket表示和nginx通信的地址和端口,和nginx配置里的uwsgi_pass一致。
- processes表示开启多少个子进程处理请求。
使用-x使用配置文件启动uwsgi:
uwsgi -x uwsgiconfig.ini
如果需要让uwsgi以守护进程的方式运行,使用-d参数并指明日志路径就可以了
uwsgi -x uwsgiconfig.ini -d uwsgi.log
使用这个命令可以终止守护进程
killall -9 uwsgi
可能的报错
(venv) [root@Foehn flask]# uwsgi -x uwsgiconfig.ini
uwsgi: invalid option -- 'x'
getopt_long() error
安装libxml2*重新编译安装uwsgi即可
yum install libxml*
nginx
官网下载
直接下载.tar.gz安装包,地址:https://nginx.org/en/download.html
使用wget命令下载
wget -c https://nginx.org/download/nginx-1.10.1.tar.gz
tar -zxvf nginx-1.10.1.tar.gz
cd nginx-1.10.1
配置
其实在 nginx-1.10.1 版本中你就不需要去配置相关东西,默认就可以了。当然,如果你要自己配置目录也是可以的。
1.使用默认配置
./configure
编译安装
make
make install
查找安装路径:
whereis nginx
将安装路径添加到环境变量
vim ~/.bashrc
加上一句
路径即为whereis找到的路径
export PATH=$PATH:/usr/local/nginx/sbin/
保存退出
source ~/.bashrc
然后就可以直接使用命令
启动、停止nginx
nginx
nginx -s stop
nginx -s quit
nginx -s reload
nginx -s quit:此方式停止步骤是待nginx进程处理任务完毕进行停止。
nginx -s stop:此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。
里程碑
nginx默认在服务器上是80端口
寻找一下nginx的配置文件并按照路径将其打开
find / -name nginx.conf
vim /usr/local/nginx/conf/nginx.conf
uwsgi在nginx 1.2.7是标准模块,所以不需要安装。编辑nginx的配置文件,使其加载uwsgi。
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
root html;
index index.html index.htm;
}
这里就完成了反向代理
最后
最后启动nginx和uwsgi的守护进程就好了
可以看到经过nginx的反向代理,跳转到了flask项目