Centos + Django + Nginx + uwsgi 部署项目-rpm包安装 Mysql 5
笔者发觉下面这个方法可能有些缺陷,适合自己的就看下,如果是新开的虚拟机有可能不适用下面的方法,云服务器开的Linux Centos系统应该可以。虚拟机安装Mysql的具体方法,可以看我的参考链接Centos7下安装MySQL详细步骤
@
Django 项目生产环境配套教程链接
Linux - Django + Mysql + Nginx + uwsgi 部署项目 - 安装 nginx 服务器 - (1)
Linux - Django + Nginx + uWSGI 部署项目 - 安装 Python3.x -(2)
Linux - Django + Nginx + uwsgi 部署项目 - 安装 uWSGI 服务器 -(4)
操作系统: Centos 7
一、安装思路与具体实操
一般而言,安装可以使用 tar.gz 安装包安装,也可以启用 rpm 包进行安装,这里安装 Mysql ,是使用 Mysql 的 rpm 包进行安装。
更新一种方法是 使用
1. 查看本机是否安装过了 Mysql 数据库
查看命令如下:
rpm -qa|grep mysql
无输出说明没有安装,结果如下:
如果存在,即安装过 mysql ,完全卸载删除 mysql 数据库的方法如下所示:
1.2 rpm 卸载/删除 Mysql 数据库
和之前安装 Mysql 数据库一样,查看命令如下:
rpm -qa|grep mysql
删除 Mysql 数据库的命令如下:
rpm -e --nodeps xxx
该命令需要删除每一个 查看命令出现的 Mysql 文件,如下所示:(特别注意,看清楚再删,有可能是和我不一致的,别一直CV大法)
rpm -e --nodeps mysql-community-libs-5.7.40-1.el7.x86_64
rpm -e --nodeps mysql-community-client-5.7.40-1.el7.x86_64
rpm -e --nodeps mysql57-community-release-el7-11.noarch
rpm -e --nodeps mysql-community-server-5.7.40-1.el7.x86_64
rpm -e --nodeps mysql-community-common-5.7.40-1.el7.x86_64
当然要删除的 Mysql 数据库文件的具体情况,需要看自己电脑显示出来的 Mysql 文件情况!!!
最后再使用查看 Mysql 命令检查是否仍存在 Mysql 数据库,如下:
rpm -qa|grep mysql
1.2.1 删除所有与mysql关联的目录
查找与 mysql 关联的目录命令如下:
find / -name mysql
重点是如下的目录,出现权限不够问题,不用理会。
find: ‘/run/user/1000/gvfs’: 权限不够
/var/lib/mysql
/var/lib/mysql/mysql
/usr/lib64/mysql
/usr/share/mysql
删除关联的目录命令
rm -rf /var/lib/mysql
rm -rf /var/lib/mysql/mysql
rm -rf /usr/lib64/mysql
rm -rf /usr/share/mysql
1.3 删除 mariadb
检查是否存在 mariadb 数据库(内置的MySQL数据库),有则强制删除
rpm -qa|grep mariadb
无任何显示,即不存在 mariadb ,结果如下:
如果存在 mariadb ,那么则删除掉,命令如下:(可以用运算符 &&
连接在一起运行)
rpm -e --nodeps mariadb-server
rpm -e --nodeps mariadb
rpm -e --nodeps mariadb-libs
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
rpm -e --nodeps mariadb-5.5.68-1.el7.x86_64
2. 查找本机系统的版本,wget 命令下载该对应操作系统版本的 rpm 包
查看本机操作系统版本
cat /etc/redhat-release
3. 对 yum 存储库进行指定8.0版本禁用,安装5.7版本的mysql
使用MySQL Yum存储库时,默认情况下会选择最新的GA系列(当前为MySQL 8.0
)进行安装
如果您的平台支持 yum-config-manager
,则可以通过发出以下命令来实现,这些命令将禁用8.0系列的子存储库,并启用5.7系列的子存储库。
假如在操作系统中没有yum-config-manager
这个命令,则需要安装下,安装命令如下:
yum -y install yum-utils
3.1 查看当前的 yum 指定的Mysql 存储库版本
命令 1:(推荐相对准确些)如果这两条命令没有显示任何东西,那么请看下面的mysql源错误补充更新
,需要下载 mysql 源和安装 mysql 源
yum repolist enabled | grep "mysql.*-community.*"
命令 2 :
yum repolist all | grep mysql
如果在画面中显示的是红色的字体,笔者的字体是红色的,看个人配置,如下所示:
引用:
如下禁用 yum 存储库中8.0版本的Mysql数据库的下载 --disable
sudo yum-config-manager --disable mysql80-community
如下启用 yum 存储库中5.7版本的Mysql数据库的下载 --enable
sudo yum-config-manager --enable mysql57-community
(上面两个命令应该是安装插件)
mysql源错误补充更新:
如果输入上面的两条命令,出现下面错误,或是第1和第2条命令没有任何mysql的源的话:
那么需要用另外的方法下载Mysql,命令如下:
1. 下载MySQL源:
curl -O https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
2. 安装MySQL源
yum localinstall mysql57-community-release-el7-11.noarch.rpm
3. 检查MySQL源是否安装成功
yum repolist enabled | grep "mysql.*-community.*"
出现以下信息表示安装成功了
有了MySQL源后,就可以按下面的方法安装MySQL,下面的命令操作是可以放心正常使用
4. 使用 yum 存储库指定的 5.7 版本 Mysql 数据库源安装 Mysql
(因为上面安装插件了,所以这条命令,将会被禁用了原来默认最新的8.0版本的msyql,启用5.7版本的mysql进行安装)
sudo yum install mysql-community-server
该命令会安装MySQL服务器 (mysql-community-server
) 及其所需的依赖、相关组件,包括mysql-community-client
、mysql-community-common
、mysql-community-libs
等。
安装时间会比较长!!!
出现任何的如下选择,都选择 y 即yes
这个步骤出现错误请看如下安装报错补充
安装报错补充:
1. 安装报错,提示无公共秘钥
解决方法:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
然后再次安装 sudo yum install mysql-community-server
查看是否安装成功
yum list installed mysql-*
如下所示:安装成功
Mysql 编码报错问题解决方案
编辑/etc/my.cnf
,[mysqld]
节点增加如下代码:
[mysqld]
character_set_server=utf8
init-connect='SET NAMES utf8'
init-connect='SET NAMES utf8' 的理解:传送门
Mysql 配置文件 my.cnf 配置模板
(下面只是笔者找来的示例,应该是windows系统的 mysql 配置文件的模板)
[mysqld]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
# 设置mysql的安装目录
basedir=D:\Java\mysql-8.0.12-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\Java\mysql-8.0.12-winx64\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
init-connect='SET NAMES utf8'
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
初次登陆 mysql 容易出现问题的解决方法
方法链接:Centos 第一次登陆 Mysql 数据库 修改密码问题
5. 启动 Mysql 服务器
5.1 启动 Mysql 服务器命令
systemctl start mysqld.service
5.2 查看 Mysql 服务器状态命令
systemctl status mysqld.service
5.3 停止 Mysql 服务器命令
systemctl stop mysqld.service
5.4 重启 Mysql 服务器 命令
systemctl restart mysqld.service
6. 修改密码及登录
6.2 初次登录 Mysql 数据库修改密码
7. 设置开机自启动
配置开机自启动命令
systemctl enable mysqld
此条命令的实际原理,可以去查下,很有趣,有关于如下文件,这些文件存在于 /etc/目录下,命令 cd /etc/rc.
rc0.d/ rc2.d/ rc4.d/ rc6.d/ rc.local
rc1.d/ rc3.d/ rc5.d/ rc.d/
这些是服务优先级文件夹,rc 后的文字越小,优先级越高,Linux 系统也就会优先执行文件夹内各种服务。查看这些文件夹,会看到大写的 K开头的文件和 S 开头文件,K:kill 进程文件,S:start 进程文件,分别指的是关闭和启动服务文件。
言归正传,回归正题:
重载系统服务,输入如下命令才能使得 Mysql 服务器开机自启动命令生效,当然直接重启电脑,也可以,不过想必重启电脑,会是最无语的选择。
systemctl daemon-reload
二、特别事项 - 慎重关闭防火墙
注意这里的关闭防火墙,其实是不应该的,如果是为了远程登录,那也很不应该,生产环境下,绝对有安全问题,最多开发指定的端口。这里仅仅提供关闭防火墙的方法,版本是 Centos 系统,灵活运用。
具体命令如下:
启动防火墙服务 start
systemctl start firewalld.service
启动防火墙服务 stop
systemctl stop firewalld.service
重启防火墙服务 restart
systemctl restart firewalld.service
查看防火墙服务状态 status
systemctl status firewalld.service
三、Django 项目下解决创建新数据库的utf8编码问题
1. mysql 创建数据库 - utf-8 编码命令
CREATE DATABASE IF NOT EXISTS 数据库名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
复制命令,修改 test_db
为自己的数据库名:
CREATE DATABASE IF NOT EXISTS test_db DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
查看mysql内是否已经创建好了数据库,命令如下:
SHOW DATABASES;
查看某个数据库内的所有的表
SHOW TABLES FROM 指定的数据库;
然后就可以用 Django 进行数据库迁移了,先使用 cd 命令,到 Djnago 项目根目录下,然后在Shell 终端运行如下命令:
python manage.py makemigrations
python manage.py migrate
至此,Django 项目的数据库环境已完成配置 !!!
参考链接
Can't start server: Bind on TCP/IP port: Permission denied 问题的解决