【网络运维】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
注意事项:本指南适用于实验环境,生产部署需根据实际情况调整安全配置。

相关推荐
汽车仪器仪表相关领域2 小时前
Kvaser U100:工业级单通道CAN/CAN FD转USB接口,恶劣环境下的可靠通信桥梁
linux·运维·服务器·人工智能·功能测试·单元测试·可用性测试
源远流长jerry2 小时前
深入理解网络协议优化:从 TCP 到 QUIC 的演进之路
网络·网络协议·tcp/ip
Eloudy2 小时前
macOS 上开启 SSH 服务
运维·macos·ssh
Drache_long2 小时前
Docker(三)
运维·docker·容器
lularible2 小时前
PTP协议精讲(2.17):追踪光速的脚步——White Rabbit与亚纳秒同步
网络·网络协议·开源·嵌入式·ptp
淼淼爱喝水2 小时前
Ansible Playbook 入门实战:自动化创建 Linux 用户
linux·运维·服务器·网络·ansible
15&30游山_玩水69☆156♀252 小时前
高性能自动化核心配件选型:西门子 S7-1500 CPU 与博世力士乐 IndraDrive M 伺服驱动器详解
运维·自动化
瀚高PG实验室2 小时前
管理工具无法连接数据库,但是navicat可以正常连接
运维·数据库·瀚高数据库
@insist1232 小时前
网络工程师-高级隧道与运营商网络技术全解析(GRE 虚拟专用网, MPLS, MPLS 虚拟专用网)
网络·网络工程师·软考·软件水平考试