【网络运维】CentOS 7 部署 LAMP 与 LNMP 实战指南

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

交互步骤:

  1. 当前root密码:直接回车(初始无密码)
  2. 设置root密码:y → 输入123456 → 确认123456
  3. 移除匿名用户:y
  4. 禁止root远程登录:n(允许本地管理)
  5. 删除test数据库:y
  6. 重新加载权限: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. 完成安装

  1. 浏览器访问:http://10.1.8.88/wordpress
  2. 按照页面提示设置:
    • 站点标题
    • 管理员用户名(建议不用admin)
    • 密码(建议强密码)
    • 邮箱
  3. 点击"安装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安装

  1. 浏览器访问:http://shop.harvy.cloud
  2. 点击"立即安装ECShop"
  3. 填写数据库信息:
    • 数据库主机:localhost
    • 数据库用户名:ecshop
    • 数据库密码:123456
    • 数据库名:ecshop
  4. 设置管理员信息
  5. 时区选择:亚洲/上海
  6. 完成安装后务必删除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. 数据库安全建议

  1. 为每个应用创建独立数据库用户
  2. 使用强密码(非示例中的123456)
  3. 限制用户权限(按需分配)
  4. 定期备份数据库

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.inidisplay_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. 监控建议

  1. 监控磁盘空间:df -h
  2. 监控服务状态:systemctl list-units --type=service
  3. 监控资源使用:tophtop
  4. 设置日志轮转防止日志过大

八、扩展建议

1. 性能优化

  • WordPress:安装缓存插件(W3 Total Cache)
  • ECShop:启用Gzip压缩,配置OPcache
  • 数据库:添加索引,定期优化表
  • Web服务器:启用KeepAlive,调整工作进程数

2. 安全加固

  1. 修改默认后台路径
  2. 限制登录尝试次数
  3. 安装安全插件(WordPress)
  4. 定期更新系统和应用
  5. 配置HTTPS(Let's Encrypt免费证书)

3. 域名绑定(生产环境)

  1. 准备域名并解析到服务器IP
  2. 配置Nginx/Apache虚拟主机
  3. 申请SSL证书启用HTTPS
  4. 配置301重定向(HTTP→HTTPS)

文档版本 :1.1
最后更新 :2024年
适用环境 :CentOS 7.x
注意事项:本指南适用于实验环境,生产部署需根据实际情况调整安全配置。

相关推荐
SelectDB18 小时前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode2 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220703 天前
如何搭建本地yum源(上)
运维
大树886 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠6 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质6 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工6 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
网络研究院6 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智6 天前
ARP代理--工作原理
运维·网络·arp·arp代理
treesforest6 天前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全