ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)

文章目录

    • 基本命令行
      • 安装虚拟环境及配置路径
      • 虚拟环境基本命令
    • Xftp和FileZilla连接本地虚拟机
      • 查看虚拟机本地地址
      • 在使用sftp连接时,filezilla与虚拟机之间是通过ssh连接,所以需在虚拟机上安装ssh-server。
      • 连接成功,开始传输文件
    • 部署Django
      • 连接数据库
        • 有可能没有打开文件的权限
        • 到这里还没结束
        • 开启Mysql远程连接的权限
        • 一些可能发生的报错
          • 端口占用
          • 远程连接
      • 迁移本地数据库到虚拟机(workbench操作:点点点)
        • 本地连接虚拟机数据库(远程数据库)
        • ubuntu验证数据库是否导入
      • 运行Django
        • 补充一个库
        • Django读取迁移的数据库
          • 迁移本地数据到虚拟机ubuntu(sql文件导入方式)
            • 本地workbench导出sql操作
            • 在虚拟机中mysql导入sql
      • 使用uWSGI和Nginx部署Django
        • 安装uwsgi
          • 启动uwsgi出现!!! no internal routing support, rebuild with pcre support !!!
          • 报错 chdir() to /home/andy/Documents/photovoltaicsite 路径不存在
        • 安装nginx
          • xftp 连接ubuntu的root用户
          • 配置nginx.conf
          • 运行nginx
          • 解决nginx代理的django项目的admin站点没样式的问题。
        • Django部署完成
      • ubuntu建立新用户并赋予root权限
    • 清除Django的migrations

本文的安装部署完全在虚拟机中进行,是对后续在云端部署的演练。(windows10+ubuntu 20.04.4 )

基本命令行

Django创建超级用户命令

python manage.py createsuperuser

安装虚拟环境及配置路径

  1. 查看当前ubuntu版本
uname -a

Linux andy-virtual-machine 5.15.0-52-generic #58~20.04.1-Ubuntu SMP Thu Oct 13 13:09:46 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

  1. 查看当前ubuntu中自带的python版本
type python python2 python3

bash: type: python: not found
bash: type: python2: not found
python3 is /usr/bin/python3

  1. 安装python3的pip
sudo apt-get install python3-pip
  1. 安装虚拟环境
sudo pip install virtualenv
sudo pip install virtualenvwrapper
  1. mkvirtualenvcommand not fonud (需要配置环境变量)
mkdir $HOME/.virtualenvs        --->HOME目录下创建文件用来存放虚拟环境

或者在HOME目录下

mkdir .virtualenvs 
  1. 在管理员文件夹andy下用 vi .bashrc 打开文件(否则在其他路径下vi ~/.bashrc)。文件末尾添加如下三行。(:wq保存,a追加写入,G定位末行,Shift+Insert粘贴,dd删除当前行)
export VIRTUALENVWRAPPER_PYTHON='/usr/bin/python3'
source /usr/local/bin/virtualenvwrapper.sh

ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第1张图片

  1. 加载.bashrc文件
    source ~/.bashrc
    到这里虚拟环境配置完成。以下是虚拟环境基本命令

虚拟环境基本命令

  1. 创建虚拟环境
 mkvirtualenv -p python3 blog
  1. 查看已有的虚拟环境
workon
  1. 使用已有的虚拟环境
workon virtueName
  1. 退出已有的虚拟环境
deactivate
  1. 删除已有的虚拟环境
rmvirtualenv  virtueName

ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第2张图片

Xftp和FileZilla连接本地虚拟机

查看虚拟机本地地址

192.168.80.128

ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第3张图片

在使用sftp连接时,filezilla与虚拟机之间是通过ssh连接,所以需在虚拟机上安装ssh-server。

中间连不上怀疑是防火墙的问题
查看防火墙是否打开

sudo ufw status

inactive 表示没有打开

[sudo] password for andy:
Status: inactive

Ubuntu上安装ssh-server指令:

  sudo apt-get install openssh-server 

ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第4张图片

安装完成后进行连接,这里的用户名和密码是虚拟机的用户名和密码
ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第5张图片

连接成功,开始传输文件

这里使用最low的传输方式,直接将项目拖入项目的/home/andy/Documents目录中,(看别人都是拖进/var/www/),然后开始部署后端。
好像可以用git直接从gitee上拉取项目,这种方式也便于后面的维护
ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第6张图片

部署Django

  1. 运行在指定虚拟环境下(避免日后项目之间相互影响)
workon pvCal
  1. 进入到项目运行文件夹。

(查看当前所在目录的绝对路径)

pwd 
cd ../          //返回上一级目录
cd Document     //进行Document目录
  1. 先试试能不能运行项目
Python manage.py runserver

在这里插入图片描述
没有Django包,那就下载
以下直接列出项目其他需要的库(这里通过Python manage.py runserver来尝试缺失哪些包,但应该可以更快的方法,将需要的包写入个req.txt文件,然后pip install -r req.txt应该也行)

pip install django
pip install pymysql
pip install djangorestframework
pip install django-cors-headers

连接数据库

最后是连接数据库失败,解决它
ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第7张图片
下载数据库(这边我没有进入虚拟环境下载,直接下载了)

sudo apt-get install mysql-server

在安装完数据库之后,我们需要用系统生成的用户名和密码登录mysql,这样在后面对数据库操作时,不容易产生错误。
在下面的文件中找到用户名和密码

cat /etc/mysql/debian.cnf
有可能没有打开文件的权限

切换成root用户,设置密码

sudo passwd root

su命令进入到root用户就可以访问了。后续如果登录不了,就用这里的用户和密码登录
比如:

mysql -uxxxxxxx(用户) -pXXXXXXXXXX(密码)

ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第8张图片
查看数据库状态

systemctl status mysql.service

是死的
在这里插入图片描述
mysql服务启动和停止

#停止
sudo service mysql stop
#启动
sudo service mysql start

进入数据库

mysql -u root -p  

这里刚开始输入任意密码都可以进入
ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第9张图片
进入后创建一个root新用户:

CREATE USER '用户名'@'localhost' IDENTIFIED BY '密码';    
create user 'root'@'%' identified by '123';   //示例

如果出现下面报错,改成反引号。

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘E USER failed for ‘root’@’%’
create user ‘andy’@‘%’ identified by ‘admin123’’ at line 1

create user `andy'@`%` identified by `admin123`;   //示例 输入反引号

查看当前mysql所有用户:

select user,host from mysql.user;

ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第10张图片
对于host的解释如下

%允许来自任何ip的连接
localhost允许本机的连接

由于我们要通过本地的workbench将本地的数据导入到云服务器中,所以需要对这个root用户设置可以远程传输数据的权限。使用如下命令:

grant all on *.* to 'andy'@'%' with grant option;   //授权
//  mysql>GRANT ALL PRIVILEGES ON *.* TO 'andy'@'%' IDENTIFIED BY 'admin123' with grant option;
flush privileges;   //刷新权限
到这里还没结束

别急还差一个配置
ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第11张图片

开启Mysql远程连接的权限
  1. 修改mysql(ubuntu指令安装)配置文件/etc/mysql/mysql.conf.d/mysqld.cnf
    这里用的是root用户打开mysqld.cnf文件才是可更改的。 我是先进入该文件夹内然后打开的文件
    在这里插入图片描述
  2. 将其中bind-address = 127.0.0.1改为bind-address = 0.0.0.0
    默认情况下, bind - address 的值为 127.0.0.1 ,所以只能监听本地连接。我们需要将这个值改为远程连接 ip 可访问,可使用通配符 ip 地址 *::0.0.0.0 ,当然也可以是单独的固定 ip,这样就仅允许指定 ip 连接,更加安全。
  3. 修改完配置之后,执行命令sudo systemctl restart mysql马上进行重启
  4. 这里要再提一下vi操作。(不拓展了,就展示我在这里用到的操作)

命令模式:x删除光标所在当前字符
进入编辑模式:按i: 光标和内容 没有变化进入编辑模式
输入模式::wq,保存退出。完美

ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第12张图片

一些可能发生的报错
端口占用

这里通过下面命令测试端口是否在使用。
tcp端口测试 确保服务器开启了端口监听,否则开放了端口也连接不到。(所以端口监听和开放是两回事儿)

 netstat -tunlp | grep 3306		#查看端口是否被占用
 '''
  -t (tcp) 仅显示tcp相关选项
 -u (udp)仅显示udp相关选项
 -n 拒绝显示别名,能显示数字的全部转化为数字
 -l 仅列出在Listen(监听)的服务状态
 -p 显示建立相关链接的程序名
 '''
远程连接

我在修改完mysqld.cnf配置之后,仍然链接不到虚拟机的Mysql,然后启动虚拟机中的mysql服务也会出错而启动不了,也会出现如下错误。

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’

网上说需要给某个文件添加软链接啥的,但是我文件路径中的文件都是不存在的。

隔了一天之后,我才想:在mysql配置中我只改过这个bind-address地址,会不会是它出问题了。然后我就把它改回去了,重新启动mysql。运行成功!之后再改成0.0.0.0,重新启动。然后就成功在本地远程连接到了虚拟机的数据库!!!!
ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第13张图片
连接成功后,我们下一步将在workbench中对数据库进行复制迁移(从本地复制到虚拟机中)
ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第14张图片

迁移本地数据库到虚拟机(workbench操作:点点点)

目前知道两种
本地未连接虚拟机数据库(远程数据库):在本地workch导出sql文件,然后用Xftp发送到虚拟机中导入,在ubuntu中导入sql。

本地连接虚拟机数据库(远程数据库)
  1. 点击【database】菜单,然后选择【schema transfer wizard…】
    ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第15张图片

  2. 点击下方的【start wizard】
    ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第16张图片

  3. 选择源数据库服务器连接和目标数据库服务器连接
    ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第17张图片

  4. 点击下方的【test connectiton】,测试两个连接是否正常,然后点击【next】

  5. 勾选要复制的数据库实例,然后点击【start copy】
    ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第18张图片

  6. 系统显示复制进度,结束后点击【next】

  7. 点击【finished】,此时跨服务器的数据库实例复制就完成了

ubuntu验证数据库是否导入
  1. 进入mysql
  2. show databases
  3. select * from table
    ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第19张图片

运行Django

补充一个库
python manage.py runserver

然后报错,还得再下载一个库
ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第20张图片

 pip3 install cryptography -i https://pypi.douban.com/simple

然后成功运行

Django读取迁移的数据库

上面忘记数据库迁移了,不然Django后台读取不到数据

python manage.py makemigrations
python manage.py migrate
python manage.py makemigrations  --fake  //有已存在的数据表用这个
python manage.py migrate  --fake		//有已存在的数据表用这个

然后在Django后台访问数据出现报错

django.db.utils.ProgrammingError: (1146, “Table ‘photovoltaiccalculation.photovoltaicCalculation_factory’ doesn’t exist”)

以下是尝试的解决方案

  1. 先运行Django迁移命令。再把本机mysql数据导入到虚拟机mysql (仍然失败)
  2. 先找到报错数据表对应的 migrations 文件夹,保留 pycacheinit.py 文件,其他的都删掉。再去数据库里面,把报错对应的记录也删除。再进行迁移(仍然失败)
  3. 先不导入本地数据,直接创建使用一个新的没有任何数据的数据表。然后进行迁移。(可行但是只有一些Django基础数据)

下面尝试第三个方法来进行导入了

迁移本地数据到虚拟机ubuntu(sql文件导入方式)

创建数据库命令

 CREATE DATABASE IF NOT EXISTS photovoltaiccalculation;
本地workbench导出sql操作

点击data expoert
ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第21张图片
导出选项

dump stored procedure and functions: 导出存储过程和功能
dump even: 导出事件
dump trigger: 导出trigger
如果没有特殊需求,也可以都不选

选择你要用文件夹还是文件接收数据 (1) 文件夹就是数据库的每张表单独一个sql文件 (2) 文件就是整一个数据库就一个sql文件

ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第22张图片
开始导出,然后用xftp上传至虚拟机(或者直接拖进去,下了tools的话)

在虚拟机中mysql导入sql

先看一下导入到虚拟机的sql文件,其实就是一堆包含注释和sql语法的sql语句。

  1. 查看一下当前的sql路径
    ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第23张图片

  2. 然后进入mysql执行如下语句

source /home/andy/Documents/sql_data/photovoltaiccalculation_photovoltaiccalculation_factory.sql

报错1

root@andy-virtual-machine:/# source /home/andy/Documents/sql_data/photovoltaiccalculation_photovoltaiccalculation_factory.sql
bash: /home/andy/Documents/sql_data/photovoltaiccalculation_photovoltaiccalculation_factory.sql: line 1: syntax error near unexpected tokena (' 'ash: /home/andy/Documents/sql_data/photovoltaiccalculation_photovoltaiccalculation_factory.sql: line 1: – MySQL dump 10.13 Distrib 8.0.29, for Win64 (x86_64)

删掉sql语句头部注释,发生报错2

ERROR 1231 (42000): Variable ‘time_zone’ can’t be set to the value of ‘NULL’
ERROR 1231 (42000): Variable ‘sql_mode’ can’t be set to the value of ‘NULL’
ERROR 1231 (42000): Variable ‘foreign_key_checks’ can’t be set to the value of ‘NULL’
ERROR 1231 (42000): Variable ‘unique_checks’ can’t be set to the value of ‘NULL’
ERROR 1231 (42000): Variable ‘character_set_client’ can’t be set to the value of ‘NULL’
Query OK, 0 rows affected (0.00 sec)
ERROR 1231 (42000): Variable ‘collation_connection’ can’t be set to the value of ‘NULL’
ERROR 1231 (42000): Variable ‘sql_notes’ can’t be set to the value of ‘NULL’

继续删除尾部注释,成功执行。

  1. 验证数据是否导入
    ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第24张图片
  2. 导入成功,但是有大小写问题
    photovoltaicCalculation是Django项目app名称。factory是Django中models文件自定义的数据库表名。
    我发现在ubuntu中执行migrate迁移的时候,ubuntu是区分大小写写入的,但是我在windows本地的数据库是忽略大写的(直接全部变小写)
    ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第25张图片

ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第26张图片

后面才发现这才是Django读取后台数据库不存在的原因。如何解决?

  1. 方法一:在ubuntu中更改项目的app名称全部小写。(不单单只更改文件夹名称,否则报错)
    ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第27张图片

修改app中views.py内关于models的引用
修改app中urls.py内关于app的views.py的引用
修改项目settings.py app名称
其余只要涉及app名或app内py文件的调用都需要修改才行。(都在自己的项目内,不需要改大环境的配置)

  1. 方法二:在用sql文件导入之前,更改sql语句中的数据表名的大小写。(很简单,略)

问题解决,Django后台读取数据成功
ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第28张图片

使用uWSGI和Nginx部署Django

uwsgi官方文档
进入虚拟环境

workon pvCal
安装uwsgi
pip install uwsgi

ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第29张图片
新建pvsite_uwsgi.ini文件配置

[uwsgi]
#chdir=/home/andy/Documents/photovoltaic/photovoltaicsite   # 指定运行目录:项目根目录的绝对路径
# 指定sock的文件路径,可以用端口或sock文件(Nginx监听的端口)
socket = 127.0.0.1:9090
# stats子系统允许您将uWSGI的内部统计数据导出为JSON, 在指定的地址上,开启状态服务
#stats = 127.0.0.1:9999
#载入wsgi-file
wsgi-file = photovoltaicsite/wsgi.py

#允许主进程存在(enable master process)
master=true
#设置最大工作进程数:将会生成4个进程, 每个进程有2个线程
processes=4
threads = 2
#某个权限
chmod-socket = 666  
#退出时清除环境  
vacuum=true  

执行命令:

uwsgi pvsite_uwsgi.ini
启动uwsgi出现!!! no internal routing support, rebuild with pcre support !!!
pip uninstall uwsgi
sudo apt-get install libpcre3 libpcre3-dev
pip install uwsgi --no-cache-dir
报错 chdir() to /home/andy/Documents/photovoltaicsite 路径不存在

chdir() to /home/andy/Documents/photovoltaicsite # 项目根目录的绝对路径
chdir(): No such file or directory [core/uwsgi.c line 2625]
chdir(): No such file or directory [core/uwsgi.c line 1649]
ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第30张图片

运行成功
ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第31张图片

安装nginx
sudo apt-get install nginx

常见nginx命令

service nginx stop //停止运行
service nginx start  //启动nginx
service nginx reload  // 重新加载nginx。配置文件完,常执行此步骤。
service nginx restart   //重新开始
xftp 连接ubuntu的root用户

有一些文件夹(etc等)只能用root访问(读取修改复制)

选择root用户需要进行下面的配置:
编辑 vi /etc/ssh/sshd_config文件
PermitRootLogin Prohibit-password 这句话原本就是用#注释的
在其下新添加:PermitRootLogin yes
然后用 service sshd restart重启ssh服务

配置nginx.conf

将下面一段修改粘贴在/etc/nginx目录下的nginx.conf文件的http末尾。其他不更改。

	server {
	listen   9001;     #配置访问时的端口号
	server_name  192.168.80.128;
	charset     utf-8;
	client_max_body_size  75M;
	
	location /upload {        #配置媒体资源文件
		expires 30d;
		autoindex  on;
		add_header Cache-Control private;
		alias /home/andy/Documents/photovoltaic/photovoltaicsite/upload;
		}
	location /static {      #配置静态资源文件
		expires 30d;
		autoindex on;
		add_header Cache-Control private;
		alias /home/andy/Documents/photovoltaic/photovoltaiccalculation;
	}
	location / {          #配置uWSGI服务器
		include /etc/nginx/uwsgi_params;
		uwsgi_pass 127.0.0.1:9090;
		uwsgi_read_timeout 2;
	}
	}

注意 :文件用#注释而不是//,注意分号的书写。不然会报错

运行nginx

先运行uwsgi

uwsgi pvsite_uwsgi.ini

再运行nginx

service nginx start

查看nginx运行状态

systemctl status nginx.service

ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第32张图片
访问静态文件成功

访问接口成功

ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第33张图片

解决nginx代理的django项目的admin站点没样式的问题。

ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第34张图片

  1. 先虚拟环境下收集静态资源(manage.py目录下)
python manage.py collectstatic  //在项目根目录 运行此命令 生成static相关静态资源文件

ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第35张图片
可以看到样式文件被收集在static。165个文件被复制。
在这里插入图片描述
2. 更改nginx配置

server{
...
location /static {
		alias /home/andy/Documents/photovoltaic/photovoltaicsite/static;
}
...
}
  1. 更改setting配置

下面是配置静态资源文件到指定项目目录的,不然 默认static会在Django的安装目录下

STATIC_URL = '/static/'  # nginx 会通过static为开头访问指定静态资源文件
MEDIA_URL = '/upload/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'upload').replace('\\', '/')
STATIC_ROOT = os.path.join(BASE_DIR, 'static').replace('\\', '/')  # 指定样式收集目录
  1. 重启nginx+uWSGI,样式重现
    ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)_第36张图片
Django部署完成

下一步进行Vue项目的部署

——————————————————以下为补充内容————————————————

ubuntu建立新用户并赋予root权限

  1. 登录root用户
su root
  1. 创建新用户
sudo useradd -r -m -s /bin/bash andy(用户名)

其中参数的意义如下:
-r:建立系统账号
-m:自动建立用户的登入目录
-s:指定用户登入后所使用的shell

  1. 手动为用户设置密码
sudo passwd andy(用户名)
  1. 切换到root用户后 输入root用户密码
su
  1. 查看sudoers文件
ls -l /etc/sudoers 

在这里插入图片描述
文件只有r权限,在改动前需要增加w权限,改动后,再去掉w权限。

  1. 给root用户增加w权限
chmod u+w /etc/sudoers
  1. 查看sudoers文件
ls -l /etc/sudoers
  1. vim编辑器打开sudoers文件
vim /etc/sudoers
  1. root ALL=(ALL) ALL 后面加上:
    xxx ALL = (ALL) ALL,其中xxx表示你的用户名,保存之后退出
vim编辑: o (在当前行下面插入一个新行)
保存退出——Esc 后  :wq! (强制保存退出)
  1. 恢复sudoers文件原来的读写权限
chmod u-w /etc/sudoers 
  1. 查看sudoers文件
ls -l /etc/sudoers

此时新用户已经拥有root权限
ps:

sudo chmod -R 777 文件目录   eg:/data/XXX
 777解除所有锁定

清除Django的migrations

先将mysql中的数据表django_migrations中自建 表的历史记录删除。再把本地migraions生成的文件删除。执行如下命令即可。

 python manage.py makemigrations
 python manage.py migrate --fake-initial

你可能感兴趣的:(Django,web笔记,笔记,ubuntu,nginx,vue,django,mysql)