前言:规范本人习惯,一般不再root账号下进行配置。
1、创建一个管理项目的用户
useradd -U uwsgi # 创建与用户同名的组
passwd uwsgi
# 切换到新用户下
su uwsgi
2、将项目放到/home/www/下(创建一个新的django项目参考官网)
提示:/home/www/ 只是推荐地址。可任意存放,只要在配置uwsgi.ini关联到即可。
# 创建虚拟环境
python3 -m venv env
# 安装django
pip install django==2.2.9
# 使用postgreSql需要psycopg2模块
pip install psycopg2-binary
# 更改目录所有者
sudo chown -R uwsgi:uwsgi /home/www/cdms
3、测试项目是否正常
# 利用ssh方式配置时推荐运行在0.0.0.0或者你的内网ip
python manage.py runserver 0.0.0.0:8000
# 192.168.1.188是我的内网ip
# 浏览器访问192.168.1.188:8000 看到正常运行的界面代表成功
4、安装和配置uwsgi
安装:
# 必须安装编译工具
yum install -y gcc* pcre-devel openssl-devel
# 安装python3.6的开发工具
yum install -y python36-devel
# 安装uwsgi(推荐安装到虚拟环境中)
pip install uwsgi
# 测试是否成功
uwsgi
[uwsgi]
chdir=/home/www/cdms # django项目根目录
module=cdms.wsgi:application # wsgi的相对路径
socket=/home/www/script/uwsgi.sock # nginx接受请求后,转发到内部的路径
# socket=127.0.0.1:8000 也是可以的,nginx的kms.conf记得相应更改uwsgi_pass 127.0.0.1:8000
http=192.168.1.188:8000 # 创建一个http的服务,可在浏览器中直接访问 | 一般可以不配此项
workers=4 # 子进程数
pidfile=/home/www/script/uwsgi.pid # 用于下面的脚本启动、停止该进程
uid=uwsgi # 执行uwsgi的用户
gid=uwsgi # 执行uwsgi的组
master=true # 启用主进程
vacuum=true # 服务停止时,自动移除unix、Socket和pid文件
harakiri=30 # 超时中断时间
post-buffering=4096 # 缓冲区大小
daemonize=/home/www/script/uwsgi.log # 日志文件
配置完成后,测试是否成功 | 下面的全路径可相应改为相对路径
uwsgi --ini /home/www/script/uwsgi.ini
# 端口被占用的话,可以先停掉之前uwsgi服务
sudo killall -9 uwsgi
访问 192.168.1.188:8000 正常则配置成功。(需要在uwsgi.ini中配置http服务)
5、安装和配置Nginx
安装:
# 安装
sudo yum -y install nginx
# 测试,提示"...test is successful"则成功
sudo nginx -t
配置:
# 在 /etc/nginx/conf.d 添加自己的配置文件即可,一般不建议直接修改 nginx.conf
# nginx.conf默认关联conf.d中的*.conf文件
sudo vim /etc/nginx/conf.d/kms.conf
# kms.conf 配置如下
server{
listen 80;
server_name 192.168.1.188;
access_log /var/log/nginx/access.log;
charset utf-8;
error_page 404 /404.html; # 错误页面
error_page 500 502 503 504 /50x.html; # 错误页面
location / {
include uwsgi_params; # 一个与uwsgi通讯的文件
uwsgi_connect_timeout 30;
uwsgi_pass unix:/home/www/script/uwsgi.sock;
# uwsgi_pass 127.0.0.1:8000 ## 和uwsgi对应即可
}
location /static/ {
alias /home/www/cdms/static/;
index index.html index.htm;
}
}
运行 nginx -t 查看配置是否成功。
sudo nginx -t
# 若配置成功,一定要重启服务
sudo systemctl restart nginx
6、centos7.2以上502 Bad Gateway问题
该问题是是selinux引起的,选择关闭它即可。
sudo vim /etc/sysconfig/selinux
# 打开 selinux 文件后,修改
SELINUX=enforcing ==> SELINUX=disabled
# 保存、退出。执行下列命令:
sudo setenforce 0
getenforce
# 显示 Permissive 即可
7、安装killall
sudo yum install -y psmisc