django + supervisor + celery + nginx + redis + uwsgi centos7部署

本文是针对毕业设计展示,小公司项目部署展示的一个小型系统,仅供参考。
该项目演示是一个小型工时系统,前端采用了vue-template模板,后端使用django rest framework框架,包含了cache redis的缓存使用,celery的异步定时任务,supervisor的进程统一管理 venv + nginx + uwsgi+supervisor的一整套服务搭建。简单easy。

项目地址----------------

步骤

安装必要软件包

  • 更新yum源安装软件管理包

    yum update -y
    yum -y groupinstall "Development tools"
    yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel
    
  • 下载python3.8.5 并安装

    cd /usr/local
    wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz
    tar -zxvf Python-3.8.5.tgz
    cd Python-3.8.5
    # prefix 收集到指定的文件所有配置文件都将在python3下
    ./configure --prefix=/usr/local/python3
    # 编译安装 
    make
    make install
    # 软连接
    ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3
    ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip3
    
    
  • django 项目上传到服务器
    这里直接使用xftp上传到指定目录下 项目文件目录名为django-admin-work

    mkdir /root/django_admin_work
    mv django-admin-work /root/django_admin_work/django-admin-work
    
  • 安装并创建虚拟环境

    pip3 install virtualenv -i https://pypi.douban.com/simple/
    ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
    # 创建 djvenv 指定python 
    cd /root/django_admin_work/django-admin-work/
    mkdir venv_admin
    cd venv_admin
    virtualenv --python=/usr/bin/python3 djvenv	
    # 开启虚拟环境
    source djvenv/bin/activate
    # 关闭虚拟环境
    deactivate
    

vue 打包 dist目录

将本地生成的打包后的dist文件拷贝到服务器上
/root/django_admin_work/dist

部署django

第一 测试django单一启动

django文件目录放置在/root/django_admin_work/django-admin-work 进入文件夹下安装在本地生成的requirements.txt文件
# 启动刚才建立的虚拟环境
source venv_admin/djvenv/bin/activate
# 安装项目所需要的的python第三方包
pip install -i https://pypi.douban.com/simple -r requirements.txt
# 安装完成后测试
python3 manage.py runserver
# 允许外网访问
python3 manage.py runserver 0.0.0.0:8000

如果访问失败,看端口是否允许,阿里云配置开启端口组。

第二 使用uwsgi + nginx 启动django

安装配置uwsgi

# 安装
pip install -i https://pypi.douban.com/simple uwsgi
uwsgi 配置 使用 xml ini yaml 都可以 本次使用 xml
uwsgi 文档 https://uwsgi-docs.readthedocs.io/en/latest/WSGIquickstart.html 
# 在项目的根目录下创建 djuwsgi.xml
touch djuwsgi.xml
# 具体文件内容如下
<uwsgi>
   <socket>127.0.0.1:8899</socket>
   <chdir>/root/django_admin_work/django-admin-work/</chdir>
   <module>WTS.wsgi</module>
   <processes>4</processes>
   <daemonize>djuwsgi.log</daemonize>
</uwsgi>
# 启动uwsgi
uwsgi -x djuwsgi.xml
# 显示 [uWSGI] getting INI configuration from uwsgi.ini 表明uwsgi运行成功
# 通过ps -ef|grep uwsgi   查看确认是否uwsgi启动. ps aux |grep uwsgi
# 停止运行uwsgi,通过包含主进程编号的文件设置停止项目
uwsgi --stop uwsgi.pid
# 重启uwsgi
uwsgi --reload uwsgi.pid
# 找不到pid文件的话 直接杀死进程 kill -9 uwsgi 

安装配置nginx

# root 权限
sudo yum install nginx
# 编辑 etc/nginx.conf 文件
vim /etc/nginx.conf
user root;
events {
    worker_connections 1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    include /etc/nginx/conf.d/*.conf;#主要是这个地方,把新建的两配置文件包含进来
    #server {
    #    listen 80 default_server;
    #    server_name _;
    #    return 404;
    #    }
    }

# 在相应的conf.d 文件夹下编写相应的配置文件 本项目使用django 以及vue 相关nginx配置
# djadmin.conf  vue-admin.conf
vim djadmin.conf

server {
    listen       8001;
    server_name  localhost;
    charset utf-8;
    root /root/django_admin_work/dist/;
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8899;  #端口要和uwsgi里配置的一样           
        uwsgi_param UWSGI_SCRIPT WTS.wsgi;  #wsgi.py所在的目录名+.wsgi           
        uwsgi_param UWSGI_CHDIR /root/django_admin_work/django-admin-work/; #项目路径           
        }
    location /static/ {
        alias /root/django_admin_work/django-admin-work/static/; #静态资源路径       
        }
    }

vi vue-admin.conf

server {
    listen       9001;
    server_name  127.0.0.1;
    charset utf-8;
    location / {
        root /root/django_admin_work/dist/;
        try_files $uri $uri/ /index.html;
        }
    }

配置完成,下面开始启动

nginx
# 重启
nginx -s reload

外网访问 9001端口即可访问vue页面 访问8001则是api接口

进程管理配置

暂时先这些

上一篇:Linux进程管理工具 Supervisor详解


下一篇:jenkins + supervisor + ansible 实现netcore程序的多机一键部署