Django 项目 Linux 远程部署记录
Django项目部署。该项目名称为shop-search,配置端口号为9000,以下为配置过程记录。
远程拷贝项目文件
1 | scp -r ~/Source/Project/Python/shop-search root@122.51.xx.xx:/source/python/deployment/ |
远程账号登录
1 | ssh akashi@122.51.xx.xx |
注意:项目最终部署时最好不要使用 root 用户部署。root 权限过高,直接部署项目存在安全隐患。
注意:IP 地址已隐去部分:xx.xx,参考时填写自己对应地址,以下相应隐去内容不再做提示。
远程虚拟环境启动
在对应项目下启动虚拟环境:
1 | pipenv shell |
同步、迁移数据表
项目数据库之前已经在远程创建完成,这里不再介绍,可使用 mysqldump 对数据进行快速导入导出操作。
基本数据库操作命令:
1 | 登录 |
一些参考:
使用 Django 命令同步和迁移数据库。
在迁移过程中如果出现报错 django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3. 是因为 2.x以后 Django 版本兼容性导致。
原因参考文档.
目前比较好的解决方案就是做一个版本欺骗,简单高效。在 apps 下对应作用目录中的 __init__.py 中添加:
1 | import pymysql |
同时安装对应依赖:
1 | pipenv install pymysql |
进行同步迁移数据表:
1 | python manage.py makemigrations |
uwsgi 项目启动
使用 uwsgi 对项目进行启动:
1 | uwsgi --http-socket :9000 --plugin python --module shop-search.wsgi |
若无报错,结束启动状态。配置后台启动文件。
ini 文件配置
在项目根目录下新建配置文件 shop-search-uwsgi.ini 进行配置:
1 | touch shop-search-uwsgi.ini |
配置如下:
1 | 配置域 |
配置 log 和 pid
新建日志文件和 pid 存储位置:
1 | mkdir log && mkdir pid |
在 shop-search-uwsgi.ini 中添加对应配置,用于后台启动和停止。
1 | backend run uwsgi |
启动
1 | sudo uwsgi --ini shop-search.ini |
启动后可对后台运行进程进行查看:
1 | ps -aux | grep shop-search |
注意:本项目依赖虚拟环境,需在虚拟环境中启动才能启动成功,注意查看虚拟环境是否开启,如果是使用远程主机本地环境,则可以忽略。
启动完成后退出虚拟环境:
1 | exit |
配置 Nginx
启动 nginx
1 | sudo nginx |
在对应 nginx 安装目录下修改配置文件 nginx.conf
以下是我的路径参考:
1 | cd /etc/nginx |
在 http 下添加配置:
注意:在 60 多行左右,可以在 vim 下输入 :set nu 显示行数。
1 | Shop-Search Site Config |
配置完成,重启 nginx:
1 | sudo nginx -s reload |
更多 nginx 配置,如加密部署、部署高可用服务等可参考我的另一篇文章:Python 应用 uWSGI + Nginx 部署.
至此,项目远程部署完成。