MySQL 5.7 部署


一、基础准备(解决“装不上的问题”)


Step 1:配置 DNS

操作

cat >/etc/resolv.conf <<'EOF'

nameserver 223.5.5.5

nameserver 114.114.114.114

EOF

原理
  • yum / wget 访问的是 域名

  • 域名解析失败 → 所有下载失败

  • 虚拟机/内网常见默认 DNS 不可解析公网域名

👉 先保证能解析外网,是一切的前提


Step 2:更换 CentOS 7 国内 yum 源

操作

mv /etc/yum.repos.d/CentOS-Base.repo \ /etc/yum.repos.d/CentOS-Base.repo.bak 2>/dev/null || true

curl -o /etc/yum.repos.d/CentOS-Base.repo \ http://mirrors.aliyun.com/repo/Centos-7.repo

yum clean

all yum makecache

原理
  • CentOS 7 已 EOL

  • 官方 mirrorlist 经常:

    • DNS 失败

    • 返回空镜像

  • 国内镜像 = 固定 baseurl,更稳定

👉 不换源,yum 经常直接废掉


二、安装 MySQL(解决“装什么版本”的问题)


Step 3:安装 MySQL 5.7 官方仓库配置包

操作

wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

rpm -Uvh mysql57-community-release-el7-11.noarch.rpm

原理
  • 这个 rpm 不是 MySQL

  • 只是往 /etc/yum.repos.d/ 放 repo 文件

  • 本质:告诉 yum 去哪里下 MySQL

👉 类似“添加官方软件源”


Step 4:只启用 mysql57 仓库

操作

yum -y install yum-utils

yum-config-manager --disable mysql80-community mysql84-community

yum-config-manager --enable mysql57-community

原理
  • 一个 repo 对应一个主版本线

  • yum 默认安装 最高版本

  • 不禁用 = 装成 MySQL 8.x

👉 同一时间只能启用一个主版本仓库


Step 5:导入 MySQL GPG Key

操作

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

原理
  • RPM 包有数字签名

  • MySQL 2022 年更换签名 key

  • 不导入 → NOKEY / 安装失败

👉 这是安全校验,不是 bug


Step 6:安装 MySQL Server

操作

yum -y install mysql-community-server

原理
  • 安装二进制

  • 安装 systemd 服务

  • 不会自动初始化数据目录


三、初始化 MySQL(解决“root 密码 / 起不来”的问题)


Step 7:初始化数据目录

操作
rm -rf /var/lib/mysql/*
 mysqld --initialize 
chown -R mysql:mysql /var/lib/mysql 
原理

mysqld --initialize 会:

  1. 创建系统表(mysql.user 等)

  2. 初始化 InnoDB

  3. 设置数据目录权限

  4. 生成 root 临时密码

👉 手动初始化 = 最干净、最可控


Step 8:启动并设置开机自启

操作

systemctl start mysqld

systemctl enable mysqld

原理
  • mysqld 由 systemd 管理

  • 服务启动后才会写日志、接受连接


Step 9:获取 root 临时密码

操作

grep 'temporary password' /var/log/mysqld.log

原理
  • MySQL 5.7 默认开启密码强度校验

  • 不允许空 root 密码

  • 所以初始化必须生成一个强密码


四、首次登录与基础安全


Step 10:首次登录

操作

mysql -uroot -p

原理
  • 临时密码只允许登录一次

  • 不改密码,后续操作会被拒绝


Step 11:修改 root@localhost 密码

操作

ALTER USER 'root'@'localhost' IDENTIFIED BY 'RootLocal!123';

EXIT;

原理
  • root@localhost 是 本机管理账号

  • 不用于远程

  • 是所有权限管理的“母账号”


五、字符集配置(解决乱码)


Step 12:配置 utf8mb4

操作

[client]

default-character-set=utf8mb4

[mysql]

default-character-set=utf8mb4

[mysqld]

character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci

systemctl restart mysqld

原理
  • MySQL 的 utf8 ≠ 真 UTF-8(最多 3 字节)

  • utf8mb4 支持 4 字节字符(emoji 等)

  • 服务端 + 客户端都要统一


六、权限模型(root@%)


Step 13:创建 root@%(练习环境)

操作

CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY '123456';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

原理
  • MySQL 账号 = user + host

  • root@localhost ≠ root@%

  • % 表示任意来源

👉 生产不推荐,练习环境方便


七、网络层放行(解决“连不上”)


Step 14:确保 MySQL 监听外网

操作

grep -nE 'bind-address|skip-networking' /etc/my.cnf /etc/my.cnf.d/*.cnf

  • bind-address=127.0.0.1 → 改 0.0.0.0

  • skip-networking → 删除

systemctl restart mysqld

原理
  • mysqld 默认只监听本机

  • 外部 TCP 包到不了应用层


Step 15:放通防火墙 3306

操作

firewall-cmd --permanent --add-port=3306/tcp

firewall-cmd --reload

原理
  • 防火墙在内核层

  • 不放行 → 连接请求直接被丢弃


八、连接验证


Step 16:外部连接

mysql -h 192.168.41.128 -P 3306 -uroot -p

原理

完整链路:

客户端 → IP → 防火墙 → mysqld 监听地址 → user@host 匹配 → 密码校验 → 权限校验


⭐ 终极总结(写在笔记最后)

MySQL 部署本质不是“装软件”,而是:
网络 → 仓库 → 校验 → 初始化 → 权限模型 → 监听 → 防火墙

Nginx 部署


一、Nginx 是什么(基础概念)

  • Nginx 是 Web 服务器

  • 主要作用:

    • 提供 HTTP 服务(80 端口)

    • 对外发布网站

  • 常见架构:LNMP(Linux + Nginx + MySQL + PHP)


二、Nginx 安装流程(标准步骤)

1️⃣ 添加 Nginx 官方 yum 源

rpm -Uvh https://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

原理说明:

  • 这是 仓库配置包

  • 作用:在 /etc/yum.repos.d/ 添加 nginx 的 repo

  • 不是 nginx 程序本体


2️⃣ 安装 Nginx

yum -y install nginx 

3️⃣ 启动 Nginx

systemctl start nginx


4️⃣ 设置 Nginx 开机自启

systemctl enable nginx 

5️⃣ 查看 Nginx 状态

systemctl status nginx 

三、Nginx 重要目录

路径 作用
/etc/nginx/nginx.conf 主配置文件
/etc/nginx/conf.d/ 虚拟主机配置目录
/usr/share/nginx/html/ 默认网站目录
/var/log/nginx/access.log 访问日志
/var/log/nginx/error.log 错误日志

四、端口与监听检查

查看 Nginx 是否监听 80

ss -lntp | grep nginx

示例:

LISTEN *:80 nginx

说明:

  • *:80 → 监听所有网卡

  • 表示外部可以访问


五、防火墙配置(HTTP 必做)

1️⃣ 放行 HTTP(80)

firewall-cmd --permanent --add-service=http firewall-cmd --reload

2️⃣ 查看防火墙规则

firewall-cmd --list-all

关键点:

  • nginx 监听 ≠ 外部能访问

  • 防火墙不放行,访问一定超时


六、访问测试

1️⃣ 查看服务器 IP

ip addr

示例:

inet 192.168.41.128


2️⃣ 浏览器访问

http://192.168.41.128

看到:

Welcome to nginx!

说明 nginx 工作正常。


七、常用 nginx 命令(速查)

systemctl start nginx # 启动

systemctl stop nginx # 停止

systemctl restart nginx # 重启

systemctl reload nginx # 平滑重载

systemctl status nginx # 查看状态

nginx -t # 检查配置文件语法


八、访问不了网页时的排错顺序(必背)

1️⃣ nginx 是否运行

systemctl status nginx

2️⃣ 是否监听 80

ss -lntp | grep :80

3️⃣ 防火墙是否放行

firewall-cmd --list-all

4️⃣ 查看错误日志

tail -n 50 /var/log/nginx/error.log


九、一句话总结(写在笔记最后)

Nginx 部署 = 安装 → 启动 → 监听 80 → 防火墙放行 → 浏览器访问

PHP 部署并与 Nginx 联动

目标

  • 安装 PHP(Remi 源)7.2以下的,要不会和tpshop报错

  • 启动 php-fpm(FastCGI)

  • 配置 Nginx 解析 PHP

  • 通过 phpinfo 页面验证联动成功


一、安装 PHP(Remi 源)

1)安装 EPEL + Remi 源 + 工具

yum -y install epel-release

yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

yum -y install yum-utils

2)启用 PHP 版本仓库(例:PHP 7.4)

yum-config-manager --disable 'remi-php*'
 yum-config-manager --enable remi-php74 

3)安装 PHP + 常用扩展 + php-fpm

yum -y install \

php php-cli php-common php-fpm \

php-mysqlnd php-pdo \

php-gd php-mbstring php-xml \

php-opcache

4)验证 PHP 版本

php -v


二、启动 php-fpm 并验证监听

1)启动并设置开机自启

systemctl start php-fpm

systemctl enable php-fpm

systemctl status php-fpm

2)确认 php-fpm 监听端口(默认本机 9000)

ss -lntp | grep php-fpm

示例输出(正常):

LISTEN 127.0.0.1:9000 ... php-fpm


三、配置 Nginx 解析 PHP(联动关键)

1)编辑 Nginx 默认站点配置

vi /etc/nginx/conf.d/default.conf

server { ... } 中确认/加入以下内容(注意:location / 只能有一个):

location / { root /usr/share/nginx/html; index index.php index.html index.htm; } location ~ \.php$ { root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }

2)检查配置并重载 Nginx

nginx -t systemctl reload nginx


四、创建 PHP 测试页并验证联动

1)创建测试文件

cat >/usr/share/nginx/html/phpinfo.php <<'EOF'

<?php phpinfo(); ?>

EOF

2)浏览器访问

http://服务器IP/phpinfo.php

示例:

http://192.168.41.128/phpinfo.php

看到 PHP 信息页面 = ✅ 联动成功

3)验证完成后删除测试页(建议)

rm -f /usr/share/nginx/html/phpinfo.php

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐