nginx+uwsgi+flask部署
上一篇文章讲了入门,这篇文章主要讲如何部署。
-ubuntu+nginx+uwsgi环境
我的环境是在ubuntu下,其余环境可参考其余教程。
- ubuntu下nginx安装
- 安装nginx
// ubuntu
sudo apt-get install nginx
- 查看是否安装成功
// ubuntu
nginx -v
- 启动nginx
// ubuntu
service nginx start
浏览器输入本机IP可以看到nginx默认页面。
-
nginx文件安装完成之后的文件位置:
/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志
- ubuntu下uwsgi安装
- uwsgi命令行安装
安装如果报gcc错误,可能原因是没有安装gcc,gcc已安装但版本不对,以及gcc已安装,但当前用户下没有(可能是gcc在安装时只针对root用户)。// ubuntu pip install uwsgi
错误一和二,安装跟python对应的gcc版本,
python2版本:
sudo apt-get install python-dev
sudo apt-get install python-pip
sudo pip install uwsgi
Python3.x 版本:
sudo apt-get install python3-dev
sudo apt-get install python3-pip
sudo pip3 install uwsgi
错误三:查看当前用户是否有gcc,输入gcc -v 如果没有显示则说说明当前用户没有gcc。这个时候需要为当前用户配置gcc环境变量。
gcc环境变量配置
gcc -v
// 在home目录下创建bin目录
cd /home
mkdir bin
ln -s /usr/bin/gcc-4.9 ./bin/gcc //创建链接,gcc-4.9是已安装好的gcc版本,改成你自己的版本就好了,可以使用 sudo find -name gcc 查找
ls ./bin -l //查看链接是否成功
修改自己home目录下的.bash_profile,在这里修改可以保证重启终端后仍然有效。
// ubuntu
vim ~/.bash_profile //打开bashrc文件,添加下面一行代码
export PATH=~/bin:$PATH //这是注释,在bashrc文件下添加这行代码,加入刚刚设置好的gcc变量路径,退出保存。
执行命令让修改生效以及查看是否生效:
// ubuntu
source ~/.bash_profile //环境配置文件执行命令
gcc -v //查看gcc配置是否生效。
到这里nginx以及uwsgi就安装完成了,接下来是部署flask。
- flask部署
这里我们主要把上一篇入门的代码部署在服务器上。- 修改nginx配置,/etc/nginx/sites-enabled/default
sudo vim /etc/nginx/sites-enabled/default
添加如下代码,server_name配置成本机IP,端口设置为80,uwsgi_pass设置成本机IP+端口,这里的端口可以设置为4000以上的不常用的端口。
server{
listen 80;
server_name 111.111.111.111;
location /{
include uwsgi_params;
uwsgi_pass 127.0.0.1:8111;
proxy_pass http://127.0.0.1:8111/;
}
}
- uwsgi文件配置
在上一篇入门代码目录下,新建uwsgi.ini的配置文件。
[uwsgi]
master = true
http=:8111
chdir = /home/ubuntu/python_pro/wechat_flask/wechat_simple_demo/
wsgi-file=/home/ubuntu/python_pro/wechat_flask/wechat_simple_demo/wechat.py
callable=app
processes=4
threads=2
buffer-size = 65536
vacuum=true
pidfile = /home/ubuntu/python_pro/wechat_flask/wechat_simple_demo/uwsgi.pid
运行测试一下uwsgi配置文件是否ok.
-- 启动 uwsgi
uwsgi uwsgi.ini
-- 停止 uwsgi
pkill -f -9 uwsgi
启动时,在浏览器输入本机IP:5000,是可以正常访问的。
接下来配置nginx一起使用;
重启nginx服务,然后输入uwsgi uwsgi.ini 配置uwsgi,验证一下是否正常访问80端口,测试微信端也正常。如果想要后台一直运行,uwsgi -d --ini uwsgi.ini
service nginx restart
uwsgi uwsgi.ini