LOADING

加载过慢请开启缓存 浏览器默认开启

Django项目快速部署

2023/1/13 Django

Abstract: 项目快速部署(Nginx+Mysql+uwsgi)


目录:


安装 Nginx

yum install nginxapt-get install nginx

安装 Mysql

  1. 检查是否安装过Mysql

    rpm -qa | grep mysql 如果安装过,使用rpm -e [filename] 删除

  2. 创建文件夹放安装包

  3. 下载安装包

    wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

  4. 安装Mysql

    yum -y install mysql57-community-release-el7-10.noarch.rpm

    yum -y install mysql-community-server

  5. 给权限

    chown mysql:mysql -R /var/lib/mysql

或者 bash <(curl -s -S -L https://lhdream.github.io/LinuxBash/installMySQL.sh)

安装 uwsgi

  1. 查看 Python 版本

    python --version

  2. 安装uwsgi

    pip3 install uwsgipip install uwsgi

安装第三方库

  • pip install -r requirements.txtpip3 install -r requirements.txt

配置 Nginx

  1. 进入配置文件夹

    cd /etc/nginx/conf.d

  2. 编写配置文件

    模板如下

    server {
            listen 80;
    
            server_name [服务器ip];
    
            location /static/  {
                    root [静态文件目录];
            } #设置静态文件根目录
    
            location /media/  {
                    root [媒体文件目录];
            }  #设置媒体文件根目录
    
            location / {
                    include uwsgi_params;
                    uwsgi_read_timeout 600;
                    uwsgi_connect_timeout 600;
                    uwsgi_send_timeout 600;
                    uwsgi_pass    unix:[uwsgi.sock路径];
            }  #如果非静态或媒体文件,交由uwsgi处理
    }
    

配置 uwsgi

  1. 进入项目目录,在和 manage.py 同级的目录下创建 uwsgi.ini

  2. 编写配置文件

    模板如下

    [uwsgi]
    chdir = [项目目录]
    #项目根目录
    wsgi-file = [wsgi.py路径]
    module = [项目名].wsgi:application
    #指定wsgi模块下的application对象
    socket = [存放uwsgi.sock的路径]
    #socket = 0.0.0.0:8000
    #对本机8000端口提供服务
    master = true
    #主进程
    
    # 以上4个是核心配置项
    
    #vhost = true          //多站模式
    #no-site = true        //多站模式时不设置入口模块和文件
    #workers = 2           //子进程数
    #reload-mercy = 10
    #vacuum = true         //退出、重启时清理文件
    max-requests = 1000
    #limit-as = 512
    #buffer-size = 30000
    pidfile = /var/run/uwsgi.pid
    #pid文件,用于下脚本启动、停止该进程
    daemonize = [日志文件的路径]
    #日志文件
    disable-logging = true
    #不记录正常信息,只记录错误信息
    

配置 Mysql

  1. 启动 Mysql服务

    systemctl start mysqld.service

    查看服务状态 service mysqld status

  2. 查看初始密码

    grep password /var/log/mysqld.log

  3. 进入 Mysql

    mysql -u root -p

  4. 按提示修改 root 用户密码

  5. 创建项目使用数据库和用户

    create database [数据库名];

    grant all on [数据库名].* to '[用户名]'@'localhost' identified by '[密码]';

  6. 导入 sql 文件

    use [数据库名];

    source [sql文件路径];

创建 uwsgi 服务进入目录

  1. 进入 init.d 目录

    cd /etc/init.d/

  2. 创建三个文件

    uwsgi-start.sh

    #!/bin/bash -e
    
    export LD_LIBRARY_PATH="/usr/local/lib"
    
    uwsgi --ini [uwsgi.ini路径]
    

    uwsgi-stop.sh

    #!/bin/bash -e
    
    uwsgi --stop [uwsgi.pid路径]
    

    uwsgi-restart.sh

    #!/bin/bash -e
    
    uwsgi --reload [uwsgi.pid路径]
    

Django一些操作

  • python manage.py collectstatic
  • python manage.py makemigrations
  • python manage.py migrate

运行服务

  • service nginx start
  • service uwsgi start
  • service mysql.service start

其他

  1. 需要在服务器控制台设置安全组
  2. 访问服务器ip无反应,检查nginx服务和日志
  3. 访问服务器nginx显示错误,检查nginx日志和uwsgi日志
  4. uwsgi日志出现conn 和 str没有default属性时,检查setting.py中的登录信息
  5. DEBUG改为False