天天看点

Django2.2.3项目开发部署流程细节

基础环境搭建

食用说明

本文尽力详尽,但仍需具备Linux、Python相关基础知识。

所有细节都经过反复测试,且有先后顺序,此流程已排除大量错误及多余操作。

本文将不断更新,感谢小伙伴们多多支持!

软件版本

  • ubuntu-18.04.2-desktop-amd64
    • Python 3.6.8 [GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
  • mysql-apt-config_0.8.13-1_all.deb
  • MySQL Ver 8.0.16 for Linux on x86_64 (MySQL Community Server - GPL)
  • PyCharm 2019.1.3 (Professional Edition) Build #PY-191.7479.30

    JRE: 11.0.2+9-b159.60 amd64

    JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o

    Linux 4.18.0-25-generic

    • Django 2.2.3
    • pip 19.1.1
    • pytz 2019.1
    • setuptools 41.0.1
    • sqlparse 0.3.0
  • mysqlclient 1.4.2.post1

更改为国内源

  1. 添加vim命令

    sudo apt install vim

  2. 备份/etc/apt/sources.list文件

    sudo mv /etc/apt/sources.list /etc/apt/sources.list.backup

  3. 新建sources.list,粘入成下列国内源之一(deb开头的是一行,共10行):

    sudo vim /etc/apt/sources.list

    # 阿里云源
    deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
    
    # 163源
    deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
    deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
    deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
    deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
    deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
    deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
    deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
    deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
    deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
    deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
    
    # 中科大源
    deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
    deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
    deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
    deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
    deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
    deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
    deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
    deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
    deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
    deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
    
    # 清华源
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
    deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
    deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
    deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
    deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
    deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
               
  4. 保存后,执行:

    sudo apt update

    sudo apt upgrade

  5. 其他可能用到的apt命令:
    sudo apt update  //更新源
    sudo apt install package //安装包
    sudo apt remove package //删除包
    sudo apt-cache search package //搜索软件包
    sudo apt-cache show package  //获取包的相关信息,如说明、大小、版本等
    sudo apt install package --reinstall  //重新安装包
    sudo apt -f install  //修复安装
    sudo apt remove package --purge //删除包,包括配置文件等
    sudo apt build-dep package //安装相关的编译环境
    sudo apt upgrade //更新已安装的包
    sudo apt dist-upgrade //升级系统
    sudo apt-cache depends package //了解使用该包依赖那些包
    sudo apt-cache rdepends package //查看该包被哪些包依赖
    sudo apt source package  //下载该包的源代码
    sudo apt clean && sudo apt-get autoclean //清理无用的包
    sudo apt check //检查是否有损坏的依赖
               

MySQL安装

安装步骤:

  1. Ubuntu18.04中安装MySQL8或5.7,先配置更新源,在页面有安装文档:

    https://dev.mysql.com/downloads/repo/apt/

  2. 使用wget下载相应包,解包。

    sudo dpkg -i */PATH/version-specific-package-name*.deb

  3. 按照提示选择要安装的版本。
  4. 安装MySQL 8:

    sudo apt install mysql-server mysql-client

  5. 按照提示输入 root 密码,选择新的还是兼容5.0的加密方式。
  6. 然后

    mysql -V

    查看mysql是否安装成功。
  7. 查看、启动、停止、重启MySQL服务

    service mysql status

    service mysql start

    service mysql stop

    service mysql restart

  8. 使用root用户登陆MySQL:

    mysql -uroot -p

  9. 显示所有数据库:

    show databases;

数据库操作:

  1. 创建新数据库:

    CREATE DATABASE 数据库名;

  2. 新建用户:

    create user 'username'@'host' identified by 'password';

    1.mysql->create user 'test'@'localhost' identified by '123';

    2.mysql->create user 'test'@'192.168.7.22' identified by '123';

    3.mysql->create user 'test'@'%' identified by '123';

  3. 可以删除用户:

    drop user 'username'@'host';

  4. 用户授权:

    grant privileges on databasename.tablename to 'username'@'host' IDENTIFIED BY 'PASSWORD';

    授予用户通过外网IP对于该数据库的全部权限:

    grant all privileges on

    test

    .* to 'test'@'%' ;

  5. 刷新权限:

    flush privileges;

  6. 查看所有用户:

    SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

  7. 查看相应用户权限:

    show grants for 'root'@'localhost';

    查看所有用户权限:

    show grants;

PyCharm安装

官网下载

https://www.jetbrains.com/pycharm/download/download-thanks.html?platform=linux

弹出的直链可以通过浏览器,或wget下载。

安装步骤:

  1. 下载后解压缩成文件夹pycharm-2019.1.3

    tar -zvxf pycharm-professional-2019.1.3.tar.gz

  2. 打开终端,把这个文件夹,用mv命令移动到 /opt 目录下

    sudo mv ~/pycharm-2019.1.3 /opt

  3. cd 到 /opt/pycharm-2019.1.3/bin 使用sh命令安装:

    cd /opt/pycharm-2019.1.3/bin

    ./pycharm.sh

  4. 在弹出的界面中按步骤安装,

    记得勾选Create Launcher Script,可以使用全局启动命令。

  5. 安装结束后,启动程序:

    charm

创建快捷方式

  1. 建立快捷方式文件,注意修改路径

    sudo vim /usr/share/applications/pycharm.desktop

    [Desktop Entry]
    Type=Application
    Name=PyCharm
    GenericName=Pycharm3
    Comment=Pycharm3:The Python IDE
    Exec=sh /opt/pycharm-2019.1.3/bin/pycharm.sh
    Icon=/opt/pycharm-2019.1.3/bin/pycharm.png
    Terminal=pycharm
    Categories=Pycharm
               
  2. 修改权限

    cd /usr/share/applications

    sudo chmod +777 ./pycharm.desktop

  3. 打开Files,进入/usr/share/applications,

    找到PyCharm的图标,右键复制到你想要的任何地方。

    双击运行,选择Trust and Launch,图标就变成正确的了。

  4. 添加到左侧Dock:

    打开Dock的[九个点]图标,找到Pycharm的图标,右键Add to Favorites,成功。

新建虚拟化PyCharm项目

必须安装pip 或 pip3

这会安装很多pip相关的依赖,对项目来说如果只用3,那么可以不装2.7这个:

sudo apt install python-pip

而直接安装系统默认的Python3的pip3,

sudo apt install python3-pip

虽然在系统环境里不支持pip等不带3的命令,但在Terminal面板的虚拟环境中只有一个解释器就可以了。

Virtualenv的virtualenvwrapper

可以不装,建议在PyCharm中直接使用Terminal面板的虚拟环境:

pip3 install virtualenvwrapper

PyCharm 连接 MySQL

安装mysqlclient

Django中mysqlclient安装时可能发生各种错误,经多次测试此步骤可正确安装。

  1. 安装系统依赖环境:
    • sudo apt install python-dev default-libmysqlclient-dev

      # Debian / Ubuntu
    • sudo yum install python-devel mysql-devel

      # Red Hat / CentOS
    • brew install mysql-connector-c

      # macOS (Homebrew) (Currently, it has bug. See below)
    Python 3 你需要把python-dev改成这个:
    • sudo apt install python3-dev

      # debian / Ubuntu
    • sudo yum install python3-devel

      # Red Hat / CentOS
  2. 升级pip,setuptools,在项目的Terminal面板中执行:

    pip install -U pip

    pip install -U --force-reinstall setuptools

    PyCharm的virtualenv虚拟环境生成的site-packages包中,setuptools从40.8.0升级到41.0.1,需要在Terminal面板中执行两遍,你会发现第二遍没有错误提示。第一遍有错误提示是因为上个版本的文件是setuptools.pth和setuptools-40.8.0-py3.6.egg的问题,更新后与这些无关,重新强制安装后,正常。
  3. 安装mysqlclient:

    在PyCharm的Settings面板中当前Project下的Project Interpreter中,安装mysqlclient,成功。

PyCharm数据库设置

  1. 修改settings.py中相关变量的值:
    ALLOWED_HOSTS = ['*']
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'test168',
            'USER': 'root',
            'PASSWORD': 'root',
            'HOST': 'localhost',
            'PORT': '3306',
        }
    }
    LANGUAGE_CODE = 'zh-hans'
    
    TIME_ZONE = 'Asia/Shanghai'
               
  2. 在Database面板连接数据库:

    加号 + 图标添加数据源选择MySQL,填写相关信息。

    按Test Connection,提示下载数据驱动,报错了?

    [08001] Could not create connection to database server. Attempted reconnect 3 times. Giving up.

    在上面都填好的URL的后面加上,完整的如下,是一行:

    jdbc:mysql://192.168.1.10:3306/Database?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

    看到数据库,这步就成功了。
  3. 迁移数据库:

    到这步之前,数据库还是空的,Django还没有运行过。

    在Terminal面板中执行:

    python manage.py makemigrations

    python manage.py migrate

    看到一路OK,那就是成功了,在Database面板中刷新下,可以看到写入了默认的表。

启动Django的Web服务

  1. 打开Run菜单的Edit Configurations…,在Host:中填入当前电脑的IP地址,也可以更改Prot:的端口,OK保存设置。
  2. 按 Shift+F10 运行服务器,相当于在 Terminal 面板中执行:

    manage.py runserver 192.168.31.99:8000

  3. 打开浏览器,会看到安装成功!祝贺!

常见错误

  • TypeError: init() missing 1 required positional argument: ‘on_delete’

    在编辑models.py使用ForeignKey时,需添加实参on_delete,

    models.CASCADE表示级联删除,也就是当删除主表的数据时候从表中的数据也随着一起删除。