CentOS 7 系统默认安装 Python 2.7 版本,本节搭建的是基于 Python3 的 Django 网站,所以需要升级到 Python3 版本。
配置样例如下:
yum install -y epel-release # 安装EPEL扩展源
yum install -y python36 python36-pip python36-devel \
sqlite-devel supervisor # 安装Python3.6及其工具组件
ln -s /usr/bin/pip3 /usr/bin/pip # 设置pip3为默认pip
pip install --upgrade pip # 升级pip版本
echo "alias python='/usr/bin/python3.6'" >/etc/profile.d/python.sh
# 添加Python 3.6为系统执行的默认Python
echo "alias pip='/usr/local/bin/pip'" >>/etc/profile.d/python.sh
# 添加pip为系统执行的默认pip
source /etc/profile # 使系统配置生效
pip install django==2.0 uwsgi -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装Django和uWSGI
配置样例如下:
cd /opt/nginx-web/pythonweb
django-admin.py startproject demonginx
cd demonginx
sed -i "s/ALLOWED_HOSTS = \[.*/ALLOWED_HOSTS = \['\*', \]/g" demonginx/settings.py
# 创建项目应用Nginx及测试页面
django-admin.py startapp nginx
cat >>nginx/views.py<<EOF
from django.http import HttpResponse
def index(request):
return HttpResponse("<h1>Hello Nginx for Django!</h1>")
EOF
sed -i "/\]/i\ path('',nginx_views.index,name=\"index\")," demonginx/urls.py
配置样例如下:
python manage.py migrate
python manage.py createsuperuser --username admin --email admin@example.com
启动测试Django项目测试Python网站的有效性,测试成功后关闭该进程。
python manage.py runserver 0.0.0.0:9080
配置样例如下:
cat>/opt/nginx-web/pythonweb/demonginx/nginx_uwsgi.ini<<EOF
[uwsgi]
socket = :9080
chdir = /opt/nginx-web/pythonweb/demonginx # 设置Python文件目录
module = demonginx.wsgi # demonginx项目的wsgi.py位置
master = true # 主进程模式
processes = 2 # 开启两个工作进程
vacuum = true # 退出时自动删除UNIX socket和PID文件
max-requests = 1000 # 每个工作进程设置请求数为1000
limit-as = 512 # 每个uWSGI工作进程的虚拟内存为512MB
buffer-size = 32768 # uWSGI接收数据包的缓存区大小为32KB
pidfile = /var/run/uwsgi9080.pid # 进程pid文件
daemonize = /opt/nginx-web/pythonweb/demonginx/uwsgi9080.log
# 使进程在后台运行,并输出日志到uwsgi9080.log
EOF
配置样例如下:
## 启用supervisord Web管理
sed -i "s/^;\[inet_http/\[inet_http/g" /etc/supervisord.conf
sed -i "s/^;port/port/g" /etc/supervisord.conf
## 设置supervisord
cat>/etc/supervisord.d/demonginx.ini<<EOF
# 配置进程运行命令
[program:demonginx]
command=/usr/local/bin/uwsgi --ini /opt/nginx-web/pythonweb/demonginx/nginx_uwsgi.ini
directory=/opt/nginx-web/pythonweb/demonginx # 进程运行目录
startsecs=5 # 启动5秒后没有异常则退出表示进程正常启动,默认为1秒
autostart=true # 在supervisord启动的时候也自动启动
autorestart=true # 程序退出后自动重启
EOF
# 启动demonginx的uWSGI服务
systemctl restart supervisord
Nginx 配置样例如下:
## Python网站配置
server {
listen 8083;
server_name localhost
charset UTF-8;
client_max_body_size 75M;
location / {
include uwsgi_params; # 引入uWSGI默认参数配置
uwsgi_pass 127.0.0.1:9080; # uWSGI服务端口
uwsgi_read_timeout 2;
}
}
## supervisord Web管理配置
server {
listen 9083;
server_name localhost
charset UTF-8;
location / {
allow 192.168.2.0/24;
deny all;
proxy_pass 127.0.0.1:9001; # supervisord服务端口
}
}
配置样例如下:
# 测试Nginx配置
nginx -t
# 重启Nginx服务
systemctl restart nginx