坑1:没有python3环境
从部门申请了一个centos系统的虚拟机,然而这个虚拟机的系统有点老,自带只有python2.7.4的系统,没有python3的系统,因为项目都是用python3写的,所以无奈开始安装python3,好在网上的教程比较多。
https://www.cnblogs.com/FZfangzheng/p/7588944.html
跟着教程,顺利的完成了python3的环境
坑2:安装uwsgi之后找不到了
说起来有点好笑,安装完uwsgi之后竟然找不到了
使用pip3安装uwsgi
pip3 install uwsgi
提示安装成功,但在终端输入uwsgi命令时却提示没有该命令。
原因:因为在安装python3的时候是安装在/usr/local/python3路径中,所以uwsgi的启动文件和python3一个路径中,在/usr/local/python3/bin/uwsgi.
所以这里做一个软链接就可以
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
再输入uwsgi就可以找到命令了,对了,要确认uwsgi的版本,是python2还是python3的版本
uwsgi --python-version
坑3:配置uwsgi和nginx
网上的好多教程都是用最简单flask程序,自己使用使用manager.py启动脚本,uwsgi的配置基本上用户到,所以只能各种摸索,贴上自己uwsgi的配置, app.ini
[uwsgi]
base_dir = /home/chat1.0
chdir = /home/chat1.0/chat
wsgi-file = manager.py
callable = app
socket = %(base_dir)/chat.sock
#http-socket = 172.26.1.193:8080
chmod-socket = 666
processes = 4
threads = 2
master = true
daemonize = %(base_dir)/chat.log
pidfile = %(base_dir)/chat.pid
创建自己的 app.ini uwsgi启动文件
base_dir: 用于存储app.ini, app.pid, app.log的目录
chdir: 项目所在根目录,也就是manager.py所在的位置
wsgi-file: flask项目的启动脚本
callable: Flask()实例的名称
socket: 用于与nginx通信的socket
http-socket: 未与nginx链接时的测试用地址
chmod-socket: 保证socket的权限
master: 保留uwsgi的主进程,便于写自启动服务
daemonize: 后台启动时的log文件位置
pidfile: 存放uwsgi主进程的pid地址
nginx的配置就相比比较简单了,通过yum安装完nginx, 进入到nginx的安装文件夹
cd /etc/nginx/conf.d/
sudo vim app.conf
新建一个自己的配置文件app.conf,贴上自己的代码
server {
listen 80;
server_name 172.26.1.193;
location / {
include uwsgi_params;
uwsgi_pass unix:/home/chat1.0/chat.sock;
}
}
listen: 监听的端口号
server_name: ip地址
uwsgi_pass: 上面定义app.ini中设定的.sock文件,绝对路径
坑4:都配置好了,还是不行
uwsgi与nginx都如上配置完毕,然后还是报502错误,查看nginx的日志
sudo vim /var/log/nginx/error.log
提示:failed (13: Permission denied) while connecting to upstream
原来selinux的配置问题,将selinux关闭,重启系统就可以了
sudo vim /etc/selinux/config
改为 SELINUX=disabled
然后保存重启系统就可以了