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