美文网首页我爱编程
项目部署(Nginx+django+uwsgi+MySQL+ub

项目部署(Nginx+django+uwsgi+MySQL+ub

作者: 不吃鱼的猫_8e95 | 来源:发表于2018-06-21 01:28 被阅读0次

    目标:部署在ubunto上,部署为虚拟主机,端口号8000

    准备阶段

    • 准备完整的项目,git push 到GitHub上。确保项目可以独立运行。
    • 准备好Ubuntu环境 Python3 pip3 django1.11.6 uwsgi MySQL 确保每个部分都正确

    部署原理

    • nginx提供接受Web请求,也就是说Nginx是浏览器请求最先到达的地方。Nginx根据浏览器请求,讲静态资源的请求交给自己处理。非静态资源的请求交给uwsgi。uwsgi负责与django进行交互。

    详细配置

    • nginx配置
      在/etc/nginx/conf.d/目录下创建Nginx配置文件 bank.conf
      conf.d目录下可以同时创建多个Nginx配置文件,他们之间是相互独立的,没有向后影响
    upstream django {
        #server    127.0.0.1:8001;
         server      unix://home/sunmingming/sites/bank-manage/Bank-manage1/bank/my_sock.sock;
     #Nginx和uwsgi之间通过Sock通信。这里设置uwsgi的Sock路径
    }
    
    
    server {
        listen      8000;  # 设置访问的端口号,同一个web服务器之间不可以重复
        server_name www.sunmingming.top;  # 服务器 ip 或是域名
        server_name sunmingming.top;
        charset     utf-8;  # 字符集
           root /;      
    
        location /static {
            alias /home/sunmingming/sites/bank-manage/Bank-manage1/bank/static/;  # 静态文件所在文件夹
        }
        # 将所有非媒体请求转到Django服务器上
        location / {
            uwsgi_pass      django;  # 最上方已定义 
            # 将所有参数都转到uwsgi下
            include  uwsgi_params; # uwsgi_params的路径,nginx和uwsgi相连接所使用到的模块
        }
    }
    
    • uwsgi的配置
      在django的根目录(和manage.py同级)创建uwsgi配置文件 my_uwsgi.ini
    [uwsgi]
    # 使用nginx连接时使用和nginx之间使用socket
     socket = 0:8001
    
    # 直接做web服务器使用
    #http = 0:8080
    
    # 项目目录
    chdir = /home/sunmingming/sites/bank-manage/Bank-manage1/bank
    
    # 项目中wsgi.py文件的目录
    wsgi-file = /home/sunmingming/sites/bank-manage/Bank-manage1/bank/bank/wsgi.py
    
    # 主进程
    master = true
    
    # 多进程&多线程
    processes = 6
    threads = 2
    
    # .sock文件目录需与Nginx文件内的配置相同
     socket = /home/sunmingming/sites/bank-manage/Bank-manage1/bank/my_sock.sock
     chmod-socket = 666
    
    # 以守护进程的方式启动
    vacuum = true
    
    # 存储pid进程
    pidfile=uwsgi.pid
    
    # 存储log日志
    daemonize=uwsgi.log
    
    • django配置
      django要想使用MySQL。需要做一些更改
    1. 在项目的init.py中添加
    import pymysql
    pymysql.install_as_MySQLdb()
    
    1. django使用MySQL需要安装 pymysql
    sudo apt-get install python3-pymysql 
    

    3.更改settings.py

    DEBUG = False
    ALLOWED_HOSTS = ["*"]   #设置指定ip访问,* 指所有的都可以
    将MIDDLEWARE中的第四行注释掉
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'bank_db',
            'USER':'root',
            'PASSWORD':'         ',
            'HOST':'localhost',
            'PORT':'3306',
        }
    }
    
    STATIC_URL = '/static/'
    STATICFILES_DIRS=(
        os.path.join(BASE_DIR, "static"),
    )
    

    部署过程中的一些常用命令

    python manage.py migrate    #在数据库中创建表
    python manage.py makemigrations  #数据库结构发生变化的时候同步
    python manage.py createsuperuser  #创建超级管理员
    mysql -u root -p    #登录mysql
    create database bank_db character set utf8;  #在MySQL中创建数据库,指定数据编码为utf-8
    show databases; #查看数据库
    sudo nginx -t #检查Nginx的语法是否正确
    sudo /etc/init.d/nginx restart   #重启nginx
    uwsgi --stop uwsgi.pid   #需要在uwsgi配置文件目录下执行,停止uwsgi
    uwsgi --ini my_uwsgi.ini  #启动uwsgi
    

    相关文章

      网友评论

        本文标题:项目部署(Nginx+django+uwsgi+MySQL+ub

        本文链接:https://www.haomeiwen.com/subject/tsfrkftx.html