2025年3月26日 星期三 甲辰(龙)年 月廿五 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 服务器 > Nginx

Nginx Python(Django)项目部署

时间:02-11来源:作者:点击数:150

CentOS 7 系统默认安装 Python 2.7 版本,本节搭建的是基于 Python3 的 Django 网站,所以需要升级到 Python3 版本。

1、安装 Python 及 Django

配置样例如下:

  • 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

2、创建测试 Django 项目 demonginx 及项目应用 Nginx

配置样例如下:

  • 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

3、创建默认 admin 管理后台账号

配置样例如下:

  • 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

4、配置 uWSGI 服务器

配置样例如下:

  • 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

5、配置 uWSGI 服务器守护进程 supervisord

配置样例如下:

  • ## 启用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

6、Nginx 配置

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服务端口
  • }
  • }

7、启动 Nginx 服务

配置样例如下:

  • # 测试Nginx配置
  • nginx -t
  • # 重启Nginx服务
  • systemctl restart nginx

 

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门