Django本地项目部署到云服务器
开发环境
开发语言: Python
后台框架:Django
web服务器:nginx
wsgi服务器:uwsgi
云服务器系统:Ubuntu
查看本地项目Django和Python版本:
(可以直接安装Django最新版本就可以了,Python版本不能低于3.4)
1 | root@iZwz969jm0y04abuhgx4byZ:/home/projects/closet/closetUsers# python3 |
1. 预备安装
1.1 安装数据库
安装mysql
1.2 安装Django
Django初步使用移步Django系列教程:
1.3 安装uwsgi
1.3.1 uwsgi安装
1 | root@iZwz969jm0y04abuhgx4byZ:~# python3 -m pip install uwsgi |
Successfully installed uwsgi-2.0.17
1.3.2 uwsgi测试
测试 uwsgi 是否正常:
新建 test.py 文件,内容如下:
1 | def application(env, start_response): |
然后在终端运行:
1 | uwsgi --http :8001 --wsgi-file test.py |
在浏览器内输入:http://127.0.0.1:8001,查看是否有"cloestUsers World”输出,若没有输出,请检查你的安装过程。
1.3.3 uwsgi关闭
1 | killall -9 uwsgi # 强行关闭 |
1.4 安装nginx
1.4.1 安装 Nginx
安装命令如下:
1 | cd ~ |
你可以阅读 Nginx 安装配置 了解更多内容。
1.4.2 测试nginx
查看nginx是否安装成功,查看nginx的版本:
1 | root@iZwz969jm0y04abuhgx4byZ:/home/projects/closet/closetUsers# nginx -v |
在/home/projects目录下新建一个test目录,在里面添加一个简单的html文件。然后在nginx.conf中简单配置:
1 | events{} |
启动该nginx:(启动之前,要将/usr/local/nginx/mime.types文件复制到该nginx.conf所在目录,并且必须使用绝对路径)
1 | nginx -c /home/projects/test/nginx.conf |
如果端口被占用,则先释放该端口,则使用lsof -i :8082
查看占用端口进程的pid,并使用kill -9 [pid]
关闭相应的进程。
若想要关闭所有nginx打开的进程,可使用:
1 | killall -9 nginx |
在浏览器中访问自己的域名http://www.sukamay.xyz,访问成功。(域名要先做好dns解析)
1.4.3 关闭nginx
1 | nginx -s stop |
2. 在线项目部署
部署本地Django项目到服务器,结合uwsgi+Django+nginx。
2.1 项目代码上传到服务器
clone本地项目代码到服务器/通过ftp复制项目到服务器
我使用的是scp
1 | xxxdeMacBook-Pro:~ xxx$ scp -r /Users/xxx/Desktop/closet/closetUsers root@120.76.62.132:/home/projects/closetTest1.0 |
在我的项目目录/home/projects里创建一个closet目录,并在里面创建一个conf目录,用来存放配置文件,这样分离开来,方便更新维护项目代码。
1 | root@iZwz969jm0y04abuhgx4byZ:/home/projects# tree -L 3 |
2.2 修改项目代码
2.2.1 修改settings.py:
1 | DEBUG = False # Django是否加载静态资源 |
2.2.2 创建uwsgi.ini和uwsgi.log
uwsgi.ini不变,依旧为:
1 | root@iZwz969jm0y04abuhgx4byZ:/home/projects/closet/conf# vim uwsgi.ini |
2.2.3 创建nginx.conf
1 | root@iZwz969jm0y04abuhgx4byZ:/home/projects/closet/conf# vim nginx.conf |
将 /usr/local/nginx/conf/mime.types
文件copy到conf下
2.3 创建数据库、收集静态文件
1 | python manage.py migrate |
2.4 启动服务
启动nginx
1 | nginx -c /home/projects/closet/conf/nginx.conf |
后台启动uwsgi
1 | uwsgi /home/projects/closet/conf/uwsgi.ini -d /home/projects/closet/conf/uwsgi.log |
访问 http://120.76.62.132/ (我没写默认index.html,访问的是http://120.76.62.132/users/)可以看到接口写好的返回内容, 则创建成功