天天看點

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表示級聯删除,也就是當删除主表的資料時候從表中的資料也随着一起删除。