原文链接: How to Deploy a Django Application to Digital Ocean
默认你已经拥有自己的云主机, 本文系统为 Ubuntu 16.04, 其他类Unix系统操作类似
安装服务环境依赖
首先我们更新源
1 | sudo apt-get update |
NGINX
安装 NGINX, NGINX被用来托管静态资源(样式, 脚本, 图片)和运行我们的Django应用
1 | sudo apt-get -y install nginx |
Supervisor
Supervisor 将启动并管理我们的Django应用以防止其宕机和重启
1 | sudo apt-get -y install supervisor |
使启用并启动 Supervisor:
1 | sudo systemctl enable supervisor |
Python Virtualenv
为了更好的管理python环境依赖, 我们将 Django 应用部署在 Python 的虚拟环境里
1 | sudo apt-get -y install python-virtualenv |
配置应用用户(Application User)
用下面的命令创建一个新的用户
1 | adduser test |
你会看到类似下面的输出:
1 | Adding user `test' ... |
添加该用户到超级用户列表
1 | gpasswd -a test sudo |
切换到上步创建的用户
1 | su - test |
配置 Python 虚拟环境
这时我们登录到了 test 用户, 安装 Django 应用到该用户的家目录下 /home/test
:
1 | virtualenv . |
激活它并安装 Django:
1 | source bin/activate |
创建我们的 Django 项目
1 | django-admin startproject myTest |
此时我们的家目录结构应该是下面这样的:
1 | /home/test |
首先打开 myTest 目录:
1 | cd myTest |
迁移数据库文件:1
python manage.py migrate
测试一下是否一切正常:
1 | python manage.py runserver 0.0.0.0:8000 |
这只是一个测试, 我们将不会使用 runserver
来跑起我们的应用, 而是使用另外一个更加适合的工具
按下 CONTROL-C
退出进程
配置 Gunicorn
首先在虚拟环境中安装 Gunicorn
1 | pip install gunicorn |
创建一个名为 gunicon_start 的文件,并放在 bin/ 目录下
1 | vim bin/gunicorn_start |
添加下面的信息并保存:
1 | #!/bin/bash |
赋予 gunicorn_start 文件可执行权限:
1 | chmod u+x bin/gunicorn_start |
创建名为 run 的文件夹, 以供后续配置使用:
1 | mkdir run |
配置 Supervisor
现在我们需要配置 Supervisor 去管控 gunicorn服务
首先, 在虚拟环境中创建 logs 目录
1 | mkdir logs |
创建一个用来输出应用错误日志的文件:
1 | touch logs/gunicorn-error.log |
创建一个新的 Supervisor 配置文件:
1 | sudo vim /etc/supervisor/conf.d/myTest.conf |
1 | [program:myTest] |
刷新 Supervisor 配置文件, 并且使得上步配置生效
1 | sudo supervisorctl reread |
检查服务状态:
1 | sudo supervisorctl status myTest |
现在, 你可以使用 Supervisor 来控制你的应用. 如果你想要更新源代码, 只需将最新代码从仓库拉取下来后, 重启进程即可:
1 | sudo supervisorctl restart myTest |
配置 NGINX
在 /etc/nginx/sites-available/ 目录下创建一个新的名叫 myTest 的配置文件
1 | sudo vim /etc/nginx/sites-available/myTest |
1 | upstream app_server { |
创建一个软连接到 sites-enabled 目录下:
1 | sudo ln -s /etc/nginx/sites-available/myTest /etc/nginx/sites-enabled/myTest |
删除 NGINX 默认的网站:
1 | sudo rm /etc/nginx/site-enabled/default |
重启 NGINX:
1 | sudo service nginx restart |
最终测试
这时, 你的应用应该已经跑起, 打开浏览器并查看:
最终测试时, 我习惯重启机器, 并查看应用是否能够自动重启:
1 | sudo reboot |
等待一会, 通过浏览器进入网站. 如果一切加载正常, 说明一切 OK, 所有的进程都已经自动的启动
更新应用
当你更新 Django 应用时候, 通常要遵循下面的步骤:
1 | ssh test@192.168.1.175 |
忠心的希望该文章对你有用, 如果有任何问题, 欢迎留言讨论.