美文网首页Docker
docker实现多容器配置Django+MySQL+NGINX

docker实现多容器配置Django+MySQL+NGINX

作者: 蕤秋 | 来源:发表于2018-07-18 16:12 被阅读185次

    一、安装docker并pull合适的Ubuntu镜像

    需要修改docker的镜像源进行加速,修改之后建议pull Ubuntu的版本为14.04(trusty),这个版本的进行MySQL和NGINX安装时不容易出现错误,16.04会出现修改完容器镜像源无法update,update之后无法安装MySQL的问题
    sudo docker pull ubuntu:trusty
    

    二、创建三个容器分别命名为MySQL-node,NGINX-node,Django-node

    对于这三个容器,Django-node会调用MySQL-node的数据库服务,所以需要在创建django-node容器的时候添加link参数链接到MySQL-node上,同样的,对于NGINX-node,NGINX要代理Django的服务,所以需要在创建NGINX-node的时候添加link参数链接到Django-node上
    sudo docker run -itd --name mysql-node ubuntu:trusty
    sudo docker run -itd --name django-node --link mysql-node:mysql ubuntu:trusty
    sudo docker run -itd --name nginx-node --link django-node:django ubuntu:trusty
    

    三、修改容器的镜像源提升安装和更新速度(以MySQL-node为例

    从宿主机将sources.list文件复制到容器上
    sudo docker cp /etc/apt/sources.list mysql-node:/home
    
    进入容器备份好原本的sources.list文件,并使用新的sources.list进行替换
    mv /etc/apt/sources.list /etc/apt/sources.list.backup
    cp /home/sources.list  /etc/apt/sources.list
    
    清理无用包
    apt-get clean
    
    开始更新
    apt-get update
    

    四、配置MySQL-node容器的MySQL服务

    安装MySQL服务
    apt-get install mysql-server
    
    安装MySQL客户端
    apt-get install mysql-client
    
    安装MySQL依赖
    apt-get install libmysqlclient-dev
    
    到这里MySQL安装完毕,使用以下命名查看服务是否启动
    netstat -tap
    
    设置远程登录权限,youpassword为设置的密码
    grant all privileges on *.* to root@'%' identified by 'youpassword';
    flush privileges;
    
    创建一个测试用数据库
    create database `testdb`;
    

    五、配置Django-node容器的服务

    安装pip工具
    apt-get install pip3
    
    安装django
    pip3 install django -i https://pypi.douban.com/simple/
    
    下载pymysql包
    git clone https://github.com/PyMySQL/PyMySQL
    
    docker容器中自带的setuptools需要进行更新才可以使用,否则会出现版本过低的问题
    pip3 install --upgrade setuptools
    
    安装pymysql
    python3 setup.py install
    
    创建一个测试用Django项目
    django-admin.py startproject testfile
    
    编辑init.py文件,添加以下内容,使用pymysql替换mysqldb作为MySQL驱动
    import pymysql
    pymysql.install_as_MySQLdb()
    
    修改setting文件的db设置
    DATABASES = {
        'default':{
          'ENGINE':'django.db.backends.mysql',
          'NAME':'testdb',
          'HOST':'mysql',
          'USER':'root',
          'PASSWORD':'youpassword',
          'PORT':'3306'; 
        }
    }
    
    需要注意的是host部分使用的是mysql-node在本容器下的主机名,可以通过cat /etc/hosts文件查看运行Django项目
    cat /etc/hosts
    
    运行Djangoxiangmu
    python3 ./manage.py runserver
    
    在做反向代理的时候,NGINX代理的是Django的uwsgi,所以需要现在Django-node上安装uwsgi
    pip3 install uwsgi
    
    新建一个名为uwsgi.ini的文件
    vim uwsgi.ini
    
    在文件中写入uwsgi的配置信息,这样做可以更好的进行维护
    [uwsgi]
    chdir = /home/PyMySQL/testfile#chdir用来跳转到Django的目录下
    module = testfile.wsgi
    socket = :80
    processes = 4
    threads = 10
    enable-threads
    master-as-root
    
    使用uwsgi启动Django项目
    uwsgi --ini /home/PyMySQL/testfile/uwsgi.ini 
    

    六、NGINX-node服务配置

    使用宿主机下载NGINX包
    wget http://nginx.org/download/nginx-1.15.1.tar.gz
    
    拷贝到容器中
    sudo docker cp ./nginx-1.15.1.tar.gz nginx-node:/home/
    
    解压
    tar -zvxf nginx-1.15.1.tar.gz
    
    安装编译器
    apt-get install gcc
    
    安装支持正则的pcre库
    apt-get install libpcre3 libpcre3-dev
    
    安装处理http的zlib库
    apt-get install zlib1h-dev
    
    安装支持openssl的库
    apt-get install openssl libssl-dev
    
    安装make工具
    apt-get install make
    
    开始编译
    ./configure
    
    生成安装文件
    make
    
    开始安装
    make install
    
    启动并查看是否启动成功
    netstat -tap
    
    进入安装目录下的conf文件夹,首先对nginx.conf进行备份修改conf文件的location,使其指向uwsgi这里暴露的端口要和uwsgi.ini的配置的一致
    location / {
             include uwsgi_params;
             uwsgi_pass django:80;
    }
    
    启动NGINX的服务
    ./usr/local/nginx/sbin/nginx
    
    登录网站查看是否开启服务器
    网站首页
    右键或者点击F12,切换到network选项,F5刷新页面,查看当前页面服务器类型
    查看response header的server属性
    配置完毕

    相关文章

      网友评论

      本文标题:docker实现多容器配置Django+MySQL+NGINX

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