[WordPress系列之009] 部署 LNMP 之 CentOS 7 安装MySQL 5.7 以及 PHP 7.4

By 程序知路 | 2022-03-27
0
(0)

本文讲述在 CentOS 7 下如何安装 MySQL 5.7 和 PHP 7.4 。

LNMP 中的 PHP 用于解析 PHP 程序。架构中,主要是使用 PHP-FPM 进行 PHP 程序与服务器软件之间的通信;而 MySQL 提供数据的高效存储和读取。 PHP 在栈里面是 WordPress 必须唯一的选择,而 MySQL 有个替代方案,那就是 MariaDB,这里只演示 MySQL 的安装。

无论是带 ngx_pagespeed 和 Brotli 的 Nginx 编译安装,还是通过软件包的方式安装 PHP 和 MySQL,都是 LNMP 架构的最核心部分。

前面的几篇文章,也就是 “WordPress系列” 的前六章,完成了 Nginx 及其依赖的编译安装:

[WordPress系列之006] CentOS 7 部署 LNMP 之 OpenResty (Nginx) 带 ngx_pagespeed 和支持 Brotli 的安装

那么完成了本文所有的步骤,LNMP 架构的基本要素也就都已经准备好,接下来是对操作系统和 LNMP 软件层面中对每个要素的优化。

建议先安装 MySQL,再安装 PHP 。

安装 MySQL

CentOS 7 自带的是 MariaDB,在这里就不使用 MariaDB。而是安装 MySQL。

因为可用的系统资源少,所以就选了 5.7 社区版本的 MySQL。

CentOS 7 安装 MySQL 5.7

CentSO 7 默认自带 MariaDB,其版本也算老旧,并且 “WordPress系列” 后面的 MySQL 优化配置针对的是 MySQL,因此通过添加额外的软件源来安装 MySQL 5.7 。

那么,在当前的 “WordPress系列” 部署的 LNMP 架构中,它的系统环境是低配置的环境, MySQL 8 不适用于这里。

查看当前系统软件库里面的 MySQL 版本

# CentOS 7
yum list|grep -i "mysql"

执行结果没有找到 MySQL Server,说明当前系统软件库中没有 MySQL。

配置 MySQL 5.7 的软件源

在 CentOS 7 的命令行下执行以下命令:

在 Vim 编辑器中打开以下的文件(没安装 Vim,那么用 vi 命令):

vi /etc/yum.repos.d/mysql-community.repo
# 按键盘的 ESC 键
# 然后输入法英文状态输入 :set paste
# 按回车,进入粘贴模式,防止格式混乱
# 按 i 进入编辑模式
# 再粘贴以下文本到 Vi
# 至于怎样保存退出文件,请自行百度

应用此软件源需要注意的东西:

  1. 下面文本中 gpgkey 的值可能随时间消逝而变化,

    具体的请参考: https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

  2. enabled 表示是否允许安装,这里只允许 5.7 版本。

就复制以下的文本:

[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-connectors-community-el7-$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

[mysql-tools-community]
name=MySQL Tools Community
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-tools-community-el7-$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

[mysql-5.6-community]
name=MySQL 5.6 Community Server
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.6-community-el7-$basearch/
enabled=0
gpgcheck=1
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

[mysql-5.7-community]
name=MySQL 5.7 Community Server
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

[mysql-8.0-community]
name=MySQL 8.0 Community Server
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-8.0-community-el7-$basearch/
enabled=0
gpgcheck=1
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

保存并退出文件。

使软件源的更新生效:

# 如果遇到 “Is this ok [y/N]: ”,直接输入 y 然后按回车就行了

# CentOS 7
yum clean all
yum makecache
yum repolist

启用 MySQL 5.7 软件源

# CentOS 7
# 这一步一般情况下不用做
## yum install -y yum-utils
## yum config-manager --disable mysql-8.0-community
## yum-config-manager --enable mysql-5.7-community

再次查看当前系统里面的 MySQL 软件版本

# CentOS 7
yum list|grep -i "mysql"
[root@host directory]# yum list|grep -i "mysql"
mysql-community-server.x86_64    5.7.37-1.el7    mysql-5.7-community

执行 MySQL 5.7 的安装

# CentOS 7
yum install -y mysql-community-server

解决安装 MySQL 时遇到的错误

如果出现以下的错误:

Error: Transaction test error:
file /etc/my.cnf from install of mysql-community-server-5.7.37-1.el7.x86_64 conflicts with file from package mariadb-connector-c-config-3.1.11-2.el8_3.noarch

可以通过执行以下命令来解决:

yum remove -y mariadb*

然后重新执行安装 MySQL 命令。

安装完成,查看当前 MySQL 版本

mysql --version

执行结果:

mysql  Ver 14.14 Distrib 5.7.37, for Linux (x86_64) using  EditLine wrapper

配置 MySQL

  1. 启动 MySQL:
    systemctl start mysqld
    # 查看启动状态
    systemctl status -l mysqld
    
  2. 开机启动 MySQL:
    systemctl enable mysqld
    
  3. 查看 MySQL 5.7 的初始密码(5.6 初始状态下并没有密码):
    grep 'A temporary password' /var/log/mysqld.log |tail -1
    
    2022-03-25T10:19:46.170033Z 1 [Note] A temporary password is generated for root@localhost: h:l%NTV4i:La
    

    以上执行结果中最后的部分便是 MySQL 初始密码,即 “h:l%NTV4i:La”。

  4. MySQL 设置向导:

    如果安装的是 MySQL 5.6,那么刚刚安装完的 MySQL 是没有密码的,首次登录 MySQL 服务端之前需要设置根用户(也就是 root,拥有最高管理权限的 MySQL 用户)密码。

    mysql_secure_installation
    

    执行结果:

    # 如果是 5.6 版本:
    enter current password for root (enter for none): [由于是首次设置,直接按回车]
    # 如果是 5.7 版本:
    enter current password for root (enter for none): [输入前面的初始密码]
    ok, successfully used password, moving on...
    
    set root password? [y/n] [选 y 设置新的 root 用户密码]
    new password:
    re-enter new password:
    password updated successfully!
    
    # 如果是 5.7 版本:
    # 还会询问:
    Change the password for root ? ((Press y|Y for Yes, any other key for No) : [直接按回车即可,因为已经完成修改密码]
    
    reloading privilege tables..
     ... success!
    
    remove anonymous users? [y/n] [选 y]
     ... success!
    ...
    都按自己意愿选择就是了,建议全部选 y。
    
  5. 然后使用上一步设置的 root 密码 尝试登录 MySQL:
    mysql -uroot -p
    
    enter password: 输入先前设定的密码登录
    
  6. 登录成功之后在 MySQL Shell 执行 show variables like '%char%'; 获取数据库相关的编码信息:
    +--------------------------+----------------------------+
    | variable_name            | value                      |
    +--------------------------+----------------------------+
    | character_set_client     | utf8                       |
    | character_set_connection | utf8                       |
    | character_set_database   | latin1                     |
    | character_set_filesystem | binary                     |
    | character_set_results    | utf8                       |
    | character_set_server     | latin1                     |
    | character_set_system     | utf8                       |
    | character_sets_dir       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+
    8 rows in set (0.00 sec)
    

    由上面的执行结果可以看到有两项编码为 latin1,这显然不支持我们的中文,所以要配置一下 MySQL 使之变成 UTF-8 编码。

  7. 修改 MySQL 的配置文件以支持中文

    追加以下内容到 /etc/my.cnf 文件

    [mysqld]
    character-set-server=utf8mb4
    [client]
    default-character-set=utf8mb4
    

    重启 MySQL:

    systemctl restart mysqld
    # 重新登录 MySQL
    
    show variables like '%char%';
    

    这时的结果为:

    +--------------------------+----------------------------+
    | variable_name            | value                      |
    +--------------------------+----------------------------+
    | character_set_client     | utf8mb4                    |
    | character_set_connection | utf8mb4                    |
    | character_set_database   | utf8mb4                    |
    | character_set_filesystem | binary                     |
    | character_set_results    | utf8mb4                    |
    | character_set_server     | utf8mb4                    |
    | character_set_system     | utf8                       |
    | character_sets_dir       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+
    8 rows in set (0.00 sec)
    

至此,MySQL 的安装已经完成。


安装 PHP-FPM

PHP-FPM 简介

PHP-FPM,全称 “PHP FastCGI 进程管理器”,它是 PHP 作为 Web 后台编程语言的核心,它代替了 PHP FastCGI 成为 PHP 脚本与 Web 服务器软件进行数据交流的媒介。

安装 PHP(PHP-FPM 包含在内)

选择对应合适的操作系统来安装:

EPEL 国内源版本列表

https://mirrors.tuna.tsinghua.edu.cn/epel/

REMI 国内源版本列表

https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/

  1. 配置Yum仓库

    配置完成,甚至可以安装 PHP 8.0 和 8.1 哦。

    # CentOS 7
    # 国内源:
    yum install -y https://mirrors.tuna.tsinghua.edu.cn/epel/epel-release-latest-7.noarch.rpm
    yum install -y https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm
    find /etc/yum.repos.d/ -name "remi*.repo" | xargs sed -i "s/#baseurl/baseurl/g"
    find /etc/yum.repos.d/ -name "remi*.repo" | xargs sed -i "s/mirrorlist/#mirrorlist/g"
    find /etc/yum.repos.d/ -name "remi*.repo" | xargs sed -i "s@http://rpms.remirepo.net@https://mirrors.tuna.tsinghua.edu.cn/remi@g"
    find /etc/yum.repos.d/ -name "remi*.repo" | xargs sed -i "s@http://cdn.remirepo.net@https://mirrors.tuna.tsinghua.edu.cn/remi@g"
    find /etc/yum.repos.d/ -name "remi*.repo" | xargs sed -i "s@https://rpms.remirepo.net@https://mirrors.tuna.tsinghua.edu.cn/remi@g"
    find /etc/yum.repos.d/ -name "remi*.repo" | xargs sed -i "s@https://cdn.remirepo.net@https://mirrors.tuna.tsinghua.edu.cn/remi@g"
    
    # 境外源:
    ## yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    ## yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
    
  2. 使软件源的更新生效:
    # CentOS 7
    # 如果遇到 “Is this ok [y/N]: ”,直接输入 y 然后按回车就行了
    # 如果此过程中打印有 404 的 URL,
    # 莫慌,这正常
    yum clean all
    yum makecache
    yum repolist
    
  3. 安装 PHP 7.4
    # CentOS 7
    yum install -y --enablerepo=remi-php74 php php-fpm php-bcmath php-cli php-common php-dba php-devel php-embedded php-enchant php-gd php-imap php-pecl-interbase php-intl php-ldap php-mbstring php-pecl-mcrypt php-mysqlnd php-odbc php-pdo php-pdo_dblib php-pear.noarch php-pecl-igbinary php-pecl-xdebug php-pgsql php-process php-pspell php-pecl-recode php-snmp php-soap php-tidy php-xml php-xmlrpc php-devel php-pecl-memcached php-pecl-memcache php-pecl-redis5 php-imagick php-gmp php-brotli
    
  4. 查看 PHP 的版本:
    php --version
    

    执行结果:

    PHP 7.4.28 (cli) (built: Feb 15 2022 13:23:10) ( NTS )
    
  5. 启动 PHP-FPM:
    systemctl start php-fpm
    
  6. 查看状态:
    systemctl status -l php-fpm
    
  7. 设置随系统启动:
    systemctl enable php-fpm
    

后话

本文手把手地完成了 CentOS 7 安装 MySQL 5.7 和 PHP 7.4 。


欢迎访问本人的博客和关注微信公众号!

相关文章:

喜欢就请您给我评一下分吧!(从左到右为低分到高分)

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.


鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,欢迎互相探讨,一起学习,共同进步。

本文章可以转载,但是需要说明来源出处!

本文使用的部分图片来源于网上,若是侵权,请与本文作者联系删除: admin@chengxuzhilu.com