Django 我的项目 Linux 近程部署记录

Django 我的项目部署。该项目名称为 shop-search,配置端口号为 9000,以下为配置过程记录。

<!-- more -->

近程拷贝我的项目文件

scp -r ~/Source/Project/Python/shop-search  root@122.51.xx.xx:/source/python/deployment/

近程账号登录

ssh akashi@122.51.xx.xx

留神:我的项目最终部署时最好不要应用 root 用户部署。root 权限过高,间接部署我的项目存在安全隐患。

留神:IP 地址已隐去局部:xx.xx,参考时填写本人对应地址,以下相应隐去内容不再做提醒。

近程虚拟环境启动

在对应我的项目下启动虚拟环境:

pipenv shellpipenv install

同步、迁徙数据表

我的项目数据库之前曾经在近程创立实现,这里不再介绍,可应用 mysqldump 对数据进行疾速导入导出操作。

根本数据库操作命令:

# 登录mysql -uroot -pxxx# 显示数据库列表show databases;# 抉择并关上库use xxx;# 显示表show tables;# 建库create database 库名;# 建表:use 库名;create table 表名 (字段设定列表);# 删库和删表:drop database 库名;drop table 表名;

一些参考:

  • mysqldump
  • mongodb迁徙mysql
  • Django连贯mysql

应用 Django 命令同步和迁徙数据库。

在迁徙过程中如果呈现报错 django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3. 是因为 2.x当前 Django 版本兼容性导致。

起因参考文档.

目前比拟好的解决方案就是做一个版本坑骗,简略高效。在 apps 下对应作用目录中的 __init__.py 中增加:

import pymysqlpymysql.version_info = (1, 3, 13, "final", 0)pymysql.install_as_MySQLdb()

同时装置对应依赖:

pipenv install pymysql

进行同步迁徙数据表:

python manage.py makemigrationspython manage.py migrate

uwsgi 我的项目启动

应用 uwsgi 对我的项目进行启动:

uwsgi --http-socket :9000 --plugin python --module shop-search.wsgi

若无报错,完结启动状态。配置后盾启动文件。

ini 文件配置

在我的项目根目录下新建配置文件 shop-search-uwsgi.ini 进行配置:

touch shop-search-uwsgi.inisudo vim shop-search-uwsgi.ini

配置如下:

# 配置域[uwsgi]# 工作目录chdir = /source/python/deployment/shop-search# 模块module = shop-search.wsgi# 申请端口http-socket = :9000# mastermaster = True# 过程processes = 4# 线程threads = 1# 是否退出是清理相干内容vacuum = true

配置 log 和 pid

新建日志文件和 pid 存储地位:

mkdir log && mkdir pid

shop-search-uwsgi.ini 中增加对应配置,用于后盾启动和进行。

# backend run uwsgidaemonize = %(chdir)/log/uwsgi-9000.loglog-maxsize = 1024*1024*1024pidfile = %(chdir)/pid/uwsgi-9000.pid

启动

sudo uwsgi --ini shop-search.ini

启动后可对后盾运行过程进行查看:

ps -aux | grep shop-search

留神:本我的项目依赖虚拟环境,需在虚拟环境中启动能力启动胜利,留神查看虚拟环境是否开启,如果是应用近程主机本地环境,则能够疏忽。

启动实现后退出虚拟环境:

exit

配置 Nginx

启动 nginx

sudo nginx

在对应 nginx 装置目录下批改配置文件 nginx.conf

以下是我的门路参考:

cd /etc/nginxsudo vim nginx.conf

http 下增加配置:

留神:在 60 多行左右,能够在 vim 下输出 :set nu 显示行数。

# Shop-Search Site Configupstream shop-search {        server 122.51.xx.xx:9000;}server {        listen 80;        server_name search.akashi.xx;        charset utf-8;        access_log /var/log/nginx/nginx.log;        location / {            proxy_pass http://shop-search;        }        location /static {            alias /source/python/deployment/shop-search/static;        }}

配置实现,重启 nginx

sudo nginx -s reload

更多 nginx 配置,如加密部署、部署高可用服务等可参考我的另一篇文章:Python 利用 uWSGI + Nginx 部署.

至此,我的项目近程部署实现。