基础环境搭建
食用说明
本文尽力详尽,但仍需具备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表示级联删除,也就是当删除主表的数据时候从表中的数据也随着一起删除。