015 LNMP(Linux + Nginx + MySQL + PHP)环境部署
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 会:
-
创建系统表(mysql.user 等)
-
初始化 InnoDB
-
设置数据目录权限
-
生成 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
更多推荐

所有评论(0)