zoukankan      html  css  js  c++  java
  • django部署(uwsgi版本)

    安装Nginx

    使用命令安装yum install nginx

    启动nginx

    systemctl start nginx.service
    systemctl enable nginx.service
    

    安装Python3.6

    yum install https://centos7.iuscommunity.org/ius-release.rpm -y 
    yum install python36u  -y
    yum install python36u-pip python36u-devel  -y
    

    配置pip 的清华镜像

    ~/.pip文件夹内新建pip.conf文件

    [global]
    index-url = https://pypi.tuna.tsinghua.edu.cn/simple
    

    安装mysql

    下载并安装MySQL官方的 Yum Repository
    wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
    使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的样子,然后就可以直接yum安装了。
    yum -y install mysql57-community-release-el7-10.noarch.rpm
    之后就开始安装MySQL服务器。
    yum -y install mysql-community-server
    启动 systemctl start mysqld.service
    看运行状态 systemctl status mysqld.service
    找密码的命令 grep "password" /var/log/mysqld.log
    修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
    修改密码的验证

    mysql> set global validate_password_policy=0;
    mysql> set global validate_password_length=1;
    

    移除yum仓库中的mysql yum -y remove mysql57-community-release-el7-10.noarch

    初始化虚拟环境

    为了不影响外界环境的清洁,所以我们使用虚拟环境来配置 Django 项目

    cd /home/
    mkdir django
    cd django
    python3.6 -m venv venv
    

    创建完成后,执行命令,进入虚拟环境
    source venv/bin/activate
    然后在虚拟环境中安装 django 并初始化项目

    pip install django
    django-admin startproject my
    cd my 
    python manage.py startapp mine
    

    pip install mysqlclient 的时候会报错

    要安装mysql依赖
    yum install mysql-devel gcc gcc-devel python-devel

    预览项目

    创建完成 App 后,我们需要修改 my/settings.py 使 Django 能处理来做所有域名中的请求

    DEBUG = False
    # 修改允许的域名
    ALLOWED_HOSTS = ['ip地址']
    

    收集静态文件:python manage.py collectstatic

    修改完成后,执行如下命令来启动 Django 的测试服务器。

    python /home/django/my/manage.py runserver 0.0.0.0:80

    这时,你可以访问 IP 地址 查看预览界面

    安装 Uwsgi

    uwsgi是一个应用服务器,非静态文件的网络请求就必须通过他完成,他也可以充当静态文件服务器,但不是他的强项。uwsgi是使用python编写的,因此通过pip install uwsgi就可以了。(uwsgi必须安装在系统级别的Python环境中,不要安装到虚拟环境中)。
    使用命令uwsgi --http :8000 --module zhiliaoketang.wsgi --vritualenv=/root/.virtualenvs/django-env-py2。用uwsgi启动项目,如果能够在浏览器中访问到这个页面,说明uwsgi可以加载项目了。

    配置 Uwsgi

    首先,我们来创建一个目录用于存放 Django 的配置文件

    mkdir -p /home/django_conf

    然后在这个目录下创建一个文件 uwsgi.ini.

    示例代码:/home/django_conf/uwsgi.ini

    [uwsgi]
    
    # Django相关的配置
    # 必须全部为绝对路径
    # 项目的路径
    chdir           = /srv/zhiliaoketang
    # Django的wsgi文件
    module          = zhiliaoketang.wsgi
    # Python虚拟环境的路径
    home            = /root/.virtualenvs/django-env-py2
    
    # 进程相关的设置
    # 主进程
    master          = true
    # 最大数量的工作进程
    processes       = 10
    # socket文件路径,绝对路径
    socket          = /srv/zhiliaoketang/zhiliaoketang.sock
    # 设置socket的权限
    chmod-socket    = 666
    # 退出的时候是否清理环境
    vacuum          = true
    

    然后使用命令uwsgi --ini zhiliaoketang.ini,看下是否还能启动这个项目。

    配置 Nginx

    配置完成 Uwsgi 后,我们来创建 Nginx 的配置文件(/etc/nginx/conf.d/my.conf)

    示例代码:/etc/nginx/conf.d/my.conf

    upstream name {
    	
    	server unix:///root/django/project_name/name.scok
    }
    
    
    server {
        listen      80;
        server_name ip地址 域名;
        charset     utf-8;
    
        client_max_body_size 75M;
    
        location /media  {
            alias /root/django/my/media; # media路径
        }
    
        location /static {
            alias /root/django/my/static; # static文件路径
        }
    
        location / {
            uwsgi_pass  unix:///root/django/my/my.sock; # 跟uwsgi配置的socket要保持一致
            uwsgi_pass  name
            include     /etc/nginx/uwsgi_params;
        }
    }
    

    然后,重启 Nginx

    systemctl restart nginx.service

    配置 Supervisord

    supervisor管理uwsgi,可以在uwsgi发生意外的情况下,会自动的重启。
    supervisor的安装:在系统级别的python环境下pip install supervisor
    在项目的根目录下创建一个文件叫做zlkt_supervisor.conf。内容如下:

    # supervisor的程序名字
    [program:mysite]
    # supervisor执行的命令
    command=uwsgi --ini zlkt_uwsgi.ini
    # 项目的目录
    directory = /srv/zhiliaoketang 
    # 开始的时候等待多少秒
    startsecs=0
    # 停止的时候等待多少秒
    stopwaitsecs=0  
    # 自动开始
    autostart=true
    # 程序挂了后自动重启
    autorestart=true
    # 输出的log文件
    stdout_logfile=/srv/zhiliaoketang/log/supervisord.log
    # 输出的错误文件
    stderr_logfile=/srv/zhiliaoketang/log/supervisord.err
    
    [supervisord]
    # log的级别
    loglevel=info
    
    # 使用supervisorctl的配置
    [supervisorctl]
    # 使用supervisorctl登录的地址和端口号
    serverurl = http://127.0.0.1:9001
    
    # 登录supervisorctl的用户名和密码
    username = admin
    password = 123
    
    [inet_http_server]
    # supervisor的服务器
    port = :9001
    # 用户名和密码
    username = admin
    password = 123
    
    [rpcinterface:supervisor]
    supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
    

    然后使用命令supervisord -c zlkt_supervisor.conf运行就可以了。
    以后如果想要启动uwsgi,就可以通过命令supervisorctl -c supervisor.conf进入到管理控制台,然后可以执行相关的命令进行管理:

    status                # 查看状态
    start program_name    #启动程序
    restart program_name  #重新启动程序
    stop program_name     # 关闭程序
    reload                # 重新加载配置文件
    quit                  # 退出控制台
    
  • 相关阅读:
    【前端积累】Awesome初识
    【Python系列】Python3获取控制台输入
    【linux系列】Centos下安装mysql数据库
    Intellij 部署项目java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
    【大数据系列】节点的退役和服役[datanode,yarn]
    【大数据系列】使用api修改hadoop的副本数和块大小
    【规范】alibaba编码规范阅读
    【大数据系列】hadoop上传文件报错_COPYING_ could only be replicated to 0 nodes
    【分布式系列之ActiveMq】ActiveMq入门示例
    类的生命周期
  • 原文地址:https://www.cnblogs.com/huameixiao/p/11599822.html
Copyright © 2011-2022 走看看