Skip to content

wu-wenxiang/ZZLARGE-Project-DjangoTest

Repository files navigation

Python Django Demo

1. 本地运行代码

  • Python3.5+
  • .\test.sh
  • .\start.sh
  • Fabric 一键部署:Ubuntu 1604,GitbubGitee

2. 制作 Docker 镜像

  1. 确认本地 Docker Daemon 正常运行

    $ docker run hello-world
    
    Hello from Docker!
    ...
  2. 切换回本项目的根目录,确认目录中包含 Dockerfile 文件

    $ ls
    Dockerfile    README.md     ansible-u1804  mysite    docker-config  requirements.txt
    
    $ docker build -t maodouzi/django-test-1.11.29 .
  3. 在本地测试和运行 Docker 镜像,然后在浏览器上访问: http://localhost

    $ mv mysite/data/db.sqlite3 ~/Desktop/ && docker pull registry.cn-shanghai.aliyuncs.com/99cloud-sh/django:1.11.29 && docker build -t maodouzi/django-test-1.11.29 . && mv ~/Desktop/db.sqlite3 mysite/data/db.sqlite3 && docker run -d --rm --name="djangotest-1.11.29" -p 80:80 --mount type=bind,source=$(pwd)/mysite/data,target=/home/www/mysite/src/mysite/data maodouzi/django-test-1.11.29:latest && docker ps
    
    $ docker run -d --rm --name="djangotest-1.11.29" -p 80:80 --mount type=bind,source=$(pwd)/mysite/data,target=/home/www/mysite/src/mysite/data registry.cn-shanghai.aliyuncs.com/99cloud-sh/djangotest-1.11.29
    221fc877103e55b6a452e8d69838232e122a357972aa08ac4421212395b892bf
  4. 停止 Docker 镜像

    docker stop 221fc877103e55b6a452e8d69838232e122a357972aa08ac4421212395b892bf
  5. 镜像上传到 registry hub

    docker login
    docker push registry.cn-shanghai.aliyuncs.com/99cloud-sh/djangotest-1.11.29:latest

3. 部署到远端站点

  1. 配置 ~/.ssh/config 文件,HostName 可以直接写 IP 地址,IdentityFile 是密钥文件,可以用 ssh-keygen 生成,然后通过 ssh-copy-id 拷贝到远端机器上取。

    Host djangotest
        HostName        djangotest.demo.com
        User            root
        IdentityFile    ~/.ssh/id_rsa_test
    
  2. 确认能不用用户名密码,直接访问远端机器

    $ ssh djangotest
    Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-52-generic x86_64)
    ...
    Last login: Wed Nov  6 18:47:17 2019 from 116.238.98.242
  3. 切换到 ansible-u1804目录,复制 inventory/inventory.ini.example,并修改 webserver 的名字

    $ ls
    README.md inventory playbooks
    
    $ cp inventory/inventory.ini.example inventory/inventory.ini
    
    $ cat inventory/inventory.ini
    ...
    
    [webserver]
    djangotest
  4. 执行部署

    $ ansible-playbook -i inventory/inventory.ini playbooks/deploy.yml
    
    PLAY [webserver] *****************************************************************************************************************
    
    TASK [Gathering Facts] ***********************************************************************************************************
    ok: [djangotest]
    
    TASK [init01_pre_install : apt-get update] ***************************************************************************************
    
    ...
  5. 执行完毕后,可以通过浏览器访问远程机器

4. 如何一个 VM 托管多个站点?

前面加一个 Nginx 做统一的反向代理,用 Ansible 推送配置。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published