CentOS 7 部署 LAMP 与 LNMP 实战指南
一、概述
本指南详细记录了在 CentOS 7 系统上,于同一服务器部署两套独立应用环境的全过程:
- LAMP 架构:部署 WordPress 中文博客系统
- LNMP 架构:部署 ECShop UTF8 电商系统
注意:两套环境部署在同一台服务器(IP: 10.1.8.88),通过不同域名/路径进行访问,实际生产环境建议分开部署。
二、环境与规划
1. 系统与节点信息
| 项目 | 配置 |
|---|---|
| 操作系统 | CentOS 7.x(Minimal 安装) |
| 服务器IP | 10.1.8.88/24 |
| 博客环境 | LAMP(Apache + MariaDB + PHP) |
| 电商环境 | LNMP(Nginx + MariaDB + PHP) |
| 统一密码 | 123456(用于所有数据库账户) |
2. 软件版本
| 组件 | 版本 | 备注 |
|---|---|---|
| Web服务器 | Apache 2.4 + Nginx 1.20 | 两套独立服务 |
| 数据库 | MariaDB 5.5+ | MySQL开源替代 |
| PHP | PHP 5.4+ | 两环境共用 |
| 博客系统 | WordPress 4.8 中文版 | |
| 电商系统 | ECShop V4.1.20 UTF8 | 20250416发布版 |
3. 访问地址规划
| 应用 | 类型 | 访问地址 |
|---|---|---|
| WordPress | 前端 | http://10.1.8.88/wordpress |
| ECShop | 前端 | http://shop.harvy.cloud |
| ECShop | 后台 | http://shop.harvy.cloud/admin |
三、LAMP 环境部署 WordPress
1. 环境准备
bash
# 1.1 配置EPEL源(阿里云镜像)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# 1.2 关闭防火墙和SELinux(实验环境)
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
2. 安装LAMP组件
bash
# 安装Apache、MariaDB、PHP及相关扩展
yum install -y httpd mariadb-server mariadb \
php php-fpm php-mysqlnd php-gd php-mbstring php-xml
3. 启动服务并设置开机自启
bash
systemctl enable mariadb --now
systemctl enable php-fpm --now
systemctl enable httpd --now
4. 数据库安全初始化
bash
mysql_secure_installation
交互步骤:
- 当前root密码:直接回车(初始无密码)
- 设置root密码:
y→ 输入123456→ 确认123456 - 移除匿名用户:
y - 禁止root远程登录:
n(允许本地管理) - 删除test数据库:
y - 重新加载权限:
y
5. 创建WordPress专属数据库
bash
mysql -u root -p123456 <<EOF
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';
FLUSH PRIVILEGES;
EOF
6. 部署WordPress程序
bash
# 假设wordpress-4.8-zh_CN.zip已上传至/root目录
cd /root
unzip -q wordpress-4.8-zh_CN.zip
# 复制到Web目录并设置权限
cp -a wordpress /var/www/html/
chown -R apache:apache /var/www/html/wordpress
chmod -R 755 /var/www/html/wordpress
# 重启Apache使配置生效
systemctl restart httpd
7. 手动配置数据库连接
bash
cd /var/www/html/wordpress
cp wp-config-sample.php wp-config.php
# 编辑配置文件(也可使用sed命令批量替换)
cat > wp-config.php <<'EOF'
<?php
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', '123456');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', '');
// ... 后续保持默认
EOF
# 设置配置文件权限
chown apache:apache wp-config.php
chmod 644 wp-config.php
8. 完成安装
- 浏览器访问:
http://10.1.8.88/wordpress - 按照页面提示设置:
- 站点标题
- 管理员用户名(建议不用admin)
- 密码(建议强密码)
- 邮箱
- 点击"安装WordPress"完成
9.图形化配置
客户端登录 http://www.harvy.cloud/wordpress/

配置数据库


四、LNMP 环境部署 ECShop
1. 安装Nginx
bash
yum install -y nginx
systemctl enable nginx --now
# 测试页面
echo "Nginx is working!" > /usr/share/nginx/html/index.html
2. 安装PHP及调整配置
bash
# 安装PHP扩展(部分可能已安装)
yum install -y php-gd php-common php-pear \
php-mbstring php-mcrypt php-mysqlnd
# 修改php-fpm运行用户为nginx
sed -i 's/^user = apache/user = nginx/' /etc/php-fpm.d/www.conf
sed -i 's/^group = apache/group = nginx/' /etc/php-fpm.d/www.conf
systemctl enable php-fpm --now
systemctl restart php-fpm
3. 配置Nginx虚拟主机
bash
cat > /etc/nginx/conf.d/shop.harvy.cloud.conf <<'EOF'
server {
listen 80;
server_name shop.harvy.cloud;
root /usr/share/nginx/html;
index index.php index.html;
access_log /var/log/nginx/shop_access.log;
error_log /var/log/nginx/shop_error.log;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
# ECShop特定参数
fastcgi_param PHP_VALUE "
upload_max_filesize = 20M
post_max_size = 20M
max_execution_time = 300
";
}
# 禁止访问敏感文件
location ~ /(data|images|includes|templates|cache)/.*\.(php|php5)$ {
deny all;
}
location ~ /\.ht {
deny all;
}
}
EOF
# 测试配置并重启
nginx -t
systemctl restart nginx
4. 创建ECShop数据库
bash
mysql -u root -p123456 <<EOF
CREATE DATABASE ecshop DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'ecshop'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON ecshop.* TO 'ecshop'@'localhost';
FLUSH PRIVILEGES;
EOF
5. 部署ECShop程序
bash
# 假设ECShop_V4.1.20_UTF8.zip已上传至/root
cd /root
unzip -q ECShop_V4.1.20_UTF8.zip
# 备份原有目录并部署ECShop
mv /usr/share/nginx/html{,.backup}
cp -a ECShop_V4.1.20_UTF8_release20250416/source/ecshop /usr/share/nginx/html
# 设置权限
chown -R nginx:nginx /usr/share/nginx/html
chmod -R 755 /usr/share/nginx/html
# 创建可写目录(ECShop需要)
mkdir -p /usr/share/nginx/html/{data,auth,data/cache}
chmod -R 777 /usr/share/nginx/html/data/
chmod -R 777 /usr/share/nginx/html/auth/
6. 调整PHP配置
bash
# 修改PHP时区
echo 'date.timezone = Asia/Shanghai' >> /etc/php.ini
# 重启PHP-FPM
systemctl restart php-fpm
7. 完成ECShop安装
- 浏览器访问:
http://shop.harvy.cloud - 点击"立即安装ECShop"
- 填写数据库信息:
- 数据库主机:
localhost - 数据库用户名:
ecshop - 数据库密码:
123456 - 数据库名:
ecshop
- 数据库主机:
- 设置管理员信息
- 时区选择:亚洲/上海
- 完成安装后务必删除install目录:
bash
rm -rf /usr/share/nginx/html/install/
五、权限与安全配置总结
1. 目录权限规范
| 环境 | 根目录 | 所属用户 | 权限设置 |
|---|---|---|---|
| LAMP | /var/www/html/ |
apache:apache | chmod -R 755 |
| LNMP | /usr/share/nginx/html/ |
nginx:nginx | chmod -R 755 |
2. 服务运行用户
- Apache/PHP-FPM (LAMP):apache用户
- Nginx:nginx用户
- PHP-FPM (LNMP):nginx用户(必须修改!)
3. 数据库安全建议
- 为每个应用创建独立数据库用户
- 使用强密码(非示例中的123456)
- 限制用户权限(按需分配)
- 定期备份数据库
4. 生产环境加固
bash
# 1. 配置防火墙(仅开放必要端口)
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
# 2. SELinux针对性配置(非完全关闭)
setsebool -P httpd_can_network_connect 1
chcon -R -t httpd_sys_content_t /var/www/html/
# 3. 定期更新
yum update -y --security
六、故障排查指南
1. WordPress常见问题
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 无法创建wp-config.php | 目录权限不足 | chmod 755 /var/www/html/wordpress |
| 数据库连接错误 | 密码错误/用户无权限 | 核对wp-config.php中的配置 |
| 主题/插件无法安装 | Web用户无写入权限 | chown -R apache:apache /var/www/html/wordpress/wp-content |
| 页面样式丢失 | 固定链接未配置 | 后台设置→固定链接→选择一种格式 |
2. ECShop常见问题
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 页面显示空白 | PHP错误未显示 | 修改/etc/php.ini中display_errors = On |
| 图片无法上传 | 目录不可写 | chmod -R 777 /usr/share/nginx/html/data/ |
| 验证码不显示 | GD库未安装 | yum install -y php-gd |
| 后台无法登录 | 缓存问题 | 清除/data/cache/目录下缓存文件 |
3. 通用排查命令
bash
# 检查服务状态
systemctl status httpd nginx mariadb php-fpm
# 查看错误日志
tail -f /var/log/httpd/error_log
tail -f /var/log/nginx/error.log
tail -f /var/log/php-fpm/error.log
# 测试PHP解析
echo "<?php phpinfo(); ?>" > /var/www/html/test.php
# 访问 http://服务器IP/test.php
# 测试数据库连接
mysql -u wordpress -p123456 -e "SHOW DATABASES;"
mysql -u ecshop -p123456 -e "USE ecshop; SHOW TABLES;"
七、维护与备份
1. 定期备份脚本示例
bash
#!/bin/bash
# backup.sh - LAMP/LNMP环境备份脚本
BACKUP_DIR="/backup/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR
# 备份数据库
mysqldump -u root -p123456 --databases wordpress ecshop > $BACKUP_DIR/databases.sql
# 备份网站文件
tar -czf $BACKUP_DIR/wordpress.tar.gz /var/www/html/wordpress/
tar -czf $BACKUP_DIR/ecshop.tar.gz /usr/share/nginx/html/
# 备份配置文件
cp -a /etc/httpd/conf $BACKUP_DIR/httpd_conf/
cp -a /etc/nginx/conf.d $BACKUP_DIR/nginx_conf/
cp -a /etc/php.ini $BACKUP_DIR/
echo "备份完成:$BACKUP_DIR"
2. 监控建议
- 监控磁盘空间:
df -h - 监控服务状态:
systemctl list-units --type=service - 监控资源使用:
top或htop - 设置日志轮转防止日志过大
八、扩展建议
1. 性能优化
- WordPress:安装缓存插件(W3 Total Cache)
- ECShop:启用Gzip压缩,配置OPcache
- 数据库:添加索引,定期优化表
- Web服务器:启用KeepAlive,调整工作进程数
2. 安全加固
- 修改默认后台路径
- 限制登录尝试次数
- 安装安全插件(WordPress)
- 定期更新系统和应用
- 配置HTTPS(Let's Encrypt免费证书)
3. 域名绑定(生产环境)
- 准备域名并解析到服务器IP
- 配置Nginx/Apache虚拟主机
- 申请SSL证书启用HTTPS
- 配置301重定向(HTTP→HTTPS)
文档版本 :1.1
最后更新 :2024年
适用环境 :CentOS 7.x
注意事项:本指南适用于实验环境,生产部署需根据实际情况调整安全配置。