基礎環境搭建
食用說明
本文盡力詳盡,但仍需具備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
更改為國内源
- 添加vim指令
sudo apt install vim
- 備份/etc/apt/sources.list檔案
sudo mv /etc/apt/sources.list /etc/apt/sources.list.backup
- 建立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
- 儲存後,執行:
sudo apt update
sudo apt upgrade
- 其他可能用到的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安裝
安裝步驟:
-
Ubuntu18.04中安裝MySQL8或5.7,先配置更新源,在頁面有安裝文檔:
https://dev.mysql.com/downloads/repo/apt/
- 使用wget下載下傳相應包,解包。
sudo dpkg -i */PATH/version-specific-package-name*.deb
- 按照提示選擇要安裝的版本。
- 安裝MySQL 8:
sudo apt install mysql-server mysql-client
- 按照提示輸入 root 密碼,選擇新的還是相容5.0的加密方式。
- 然後
檢視mysql是否安裝成功。mysql -V
- 檢視、啟動、停止、重新開機MySQL服務
service mysql status
service mysql start
service mysql stop
service mysql restart
- 使用root使用者登陸MySQL:
mysql -uroot -p
- 顯示所有資料庫:
show databases;
資料庫操作:
- 建立新資料庫:
CREATE DATABASE 資料庫名;
- 建立使用者:
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';
- 可以删除使用者:
drop user 'username'@'host';
- 使用者授權:
授予使用者通過外網IP對于該資料庫的全部權限:grant privileges on databasename.tablename to 'username'@'host' IDENTIFIED BY 'PASSWORD';
testgrant all privileges on
.* to 'test'@'%' ;
- 重新整理權限:
flush privileges;
- 檢視所有使用者:
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
- 檢視相應使用者權限:
檢視所有使用者權限:show grants for 'root'@'localhost';
show grants;
PyCharm安裝
官網下載下傳
https://www.jetbrains.com/pycharm/download/download-thanks.html?platform=linux
彈出的直鍊可以通過浏覽器,或wget下載下傳。
安裝步驟:
- 下載下傳後解壓縮成檔案夾pycharm-2019.1.3
tar -zvxf pycharm-professional-2019.1.3.tar.gz
- 打開終端,把這個檔案夾,用mv指令移動到 /opt 目錄下
sudo mv ~/pycharm-2019.1.3 /opt
- cd 到 /opt/pycharm-2019.1.3/bin 使用sh指令安裝:
cd /opt/pycharm-2019.1.3/bin
./pycharm.sh
-
在彈出的界面中按步驟安裝,
記得勾選Create Launcher Script,可以使用全局啟動指令。
- 安裝結束後,啟動程式:
charm
建立快捷方式
- 建立快捷方式檔案,注意修改路徑
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
- 修改權限
cd /usr/share/applications
sudo chmod +777 ./pycharm.desktop
-
打開Files,進入/usr/share/applications,
找到PyCharm的圖示,右鍵複制到你想要的任何地方。
輕按兩下運作,選擇Trust and Launch,圖示就變成正确的了。
-
添加到左側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安裝時可能發生各種錯誤,經多次測試此步驟可正确安裝。
- 安裝系統依賴環境:
-
# Debian / Ubuntusudo apt install python-dev default-libmysqlclient-dev
-
# Red Hat / CentOSsudo yum install python-devel mysql-devel
-
# macOS (Homebrew) (Currently, it has bug. See below)brew install mysql-connector-c
-
# debian / Ubuntusudo apt install python3-dev
-
# Red Hat / CentOSsudo yum install python3-devel
-
- 更新pip,setuptools,在項目的Terminal面闆中執行:
pip install -U pip
PyCharm的virtualenv虛拟環境生成的site-packages包中,setuptools從40.8.0更新到41.0.1,需要在Terminal面闆中執行兩遍,你會發現第二遍沒有錯誤提示。第一遍有錯誤提示是因為上個版本的檔案是setuptools.pth和setuptools-40.8.0-py3.6.egg的問題,更新後與這些無關,重新強制安裝後,正常。pip install -U --force-reinstall setuptools
-
安裝mysqlclient:
在PyCharm的Settings面闆中目前Project下的Project Interpreter中,安裝mysqlclient,成功。
PyCharm資料庫設定
- 修改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'
-
在Database面闆連接配接資料庫:
加号 + 圖示添加資料源選擇MySQL,填寫相關資訊。
按Test Connection,提示下載下傳資料驅動,報錯了?
在上面都填好的URL的後面加上,完整的如下,是一行:[08001] Could not create connection to database server. Attempted reconnect 3 times. Giving up.
看到資料庫,這步就成功了。jdbc:mysql://192.168.1.10:3306/Database?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
-
遷移資料庫:
到這步之前,資料庫還是空的,Django還沒有運作過。
在Terminal面闆中執行:
python manage.py makemigrations
看到一路OK,那就是成功了,在Database面闆中重新整理下,可以看到寫入了預設的表。python manage.py migrate
啟動Django的Web服務
- 打開Run菜單的Edit Configurations…,在Host:中填入目前電腦的IP位址,也可以更改Prot:的端口,OK儲存設定。
- 按 Shift+F10 運作伺服器,相當于在 Terminal 面闆中執行:
manage.py runserver 192.168.31.99:8000
- 打開浏覽器,會看到安裝成功!祝賀!
常見錯誤
-
TypeError: init() missing 1 required positional argument: ‘on_delete’
在編輯models.py使用ForeignKey時,需添加實參on_delete,
models.CASCADE表示級聯删除,也就是當删除主表的資料時候從表中的資料也随着一起删除。