在 CentOS 7.8 上搭建基础 Web 服务器环境,通常指的是构建经典的 LAMP(Linux + Apache + MySQL/MariaDB + PHP)或 LNMP(Linux + Nginx + MySQL/MariaDB + PHP)架构。考虑到 CentOS 7 的默认软件源特性,使用 Apache 配合 MariaDB 是官方推荐且最稳定的组合;若追求高并发性能,则可选择 Nginx。
以下以 Apache + MariaDB + PHP 为例,提供一套标准、可复现的配置流程。该方案适用于大多数静态网站、CMS(如 WordPress)及轻量级动态应用部署。
一、前置准备
-
系统更新
sudo yum update -y -
安装必要工具
sudo yum install -y vim net-tools wget curl -
防火墙配置(firewalld)
CentOS 7 默认使用firewalld,需开放 HTTP(80)和 HTTPS(443)端口:sudo systemctl start firewalld sudo systemctl enable firewalld sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload -
SELinux 处理建议
生产环境中建议保持 SELinux 开启并正确配置策略。若为测试环境或初期调试,可临时设为宽容模式以避免权限问题:sudo setenforce 0 # 永久修改需编辑 /etc/selinux/config,将 SELINUX=enforcing 改为 SELINUX=permissive
二、安装 Apache Web 服务器
Apache 是 CentOS 默认的软件包管理器中的稳定版本。
sudo yum install -y httpd
启动服务并设置开机自启:
sudo systemctl start httpd
sudo systemctl enable httpd
验证安装:访问 http://<你的服务器IP>,应看到 Apache 测试页面 "Testing 123…"。
三、安装 MariaDB 数据库
CentOS 7 已弃用 MySQL 社区版作为默认源,推荐使用 MariaDB(MySQL 的兼容替代品)。
sudo yum install -y mariadb-server mariadb
启动服务并设置开机自启:
sudo systemctl start mariadb
sudo systemctl enable mariadb
运行安全脚本初始化数据库:
sudo mysql_secure_installation
按提示操作:
- 设置 root 密码
- 移除匿名用户
- 禁止 root 远程登录(推荐)
- 删除 test 数据库
- 重新加载权限表
四、安装 PHP 及其扩展
为支持动态内容,安装 PHP 及常用扩展(如 MySQL 连接、GD 图像处理等):
sudo yum install -y php php-mysqlnd php-gd php-ldap php-xml php-mbstring php-json
重启 Apache 使 PHP 模块生效:
sudo systemctl restart httpd
创建测试文件验证 PHP 是否正常工作:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
浏览器访问 http://<你的服务器IP>/info.php,若显示 PHP 信息页,则说明配置成功。
⚠️ 安全提醒:生产环境中请删除
info.php文件,避免泄露服务器配置细节。
五、目录权限与所有者设置
Apache 默认工作目录为 /var/www/html。确保 Web 内容可由 Apache 用户写入(如需上传功能):
sudo chown -R apache:apache /var/www/html
sudo chmod -R 755 /var/www/html
若使用自定义项目路径,例如 /var/www/myapp,需相应调整所有权。
六、虚拟主机配置(可选但推荐)
为实现多站点部署,建议配置虚拟主机而非将所有文件放在默认目录。
-
创建站点目录:
sudo mkdir -p /var/www/example.com/public_html echo "<h1>Welcome to example.com</h1>" | sudo tee /var/www/example.com/public_html/index.html -
创建虚拟主机配置文件:
sudo vim /etc/httpd/conf.d/example.com.conf填入以下内容:
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined <Directory /var/www/example.com/public_html> AllowOverride All Require all granted </Directory> </VirtualHost> -
重启 Apache 生效:
sudo systemctl restart httpd
七、HTTPS 配置(Let’s Encrypt)
生产环境强烈建议使用 HTTPS。可通过 Certbot 免费获取 Let’s Encrypt 证书:
sudo yum install -y epel-release
sudo yum install -y certbot python2-certbot-apache
自动配置 SSL:
sudo certbot --apache -d www.example.com -d example.com
Certbot 会自动修改 Apache 配置并重定向 HTTP 到 HTTPS。
八、监控与维护建议
-
日志查看:
- Apache 访问日志:
/var/log/httpd/access_log - Apache 错误日志:
/var/log/httpd/error_log - MariaDB 日志:
/var/log/mariadb/mariadb.log
- Apache 访问日志:
-
定期更新:
sudo yum update -y -
备份策略:
- 定期备份
/var/www/html或项目目录 - 使用
mysqldump导出数据库:mysqldump -u root -p your_database > backup.sql
- 定期备份
替代方案:Nginx + PHP-FPM(高性能场景)
若需更高并发处理能力,可替换 Apache 为 Nginx:
sudo yum install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx
PHP 改用 FPM 模式:
sudo yum install -y php-fpm
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
配置 Nginx X_X请求至 PHP-FPM,并通过 fastcgi_pass unix:/run/php-fpm/www.sock; 实现通信。此架构更适合高流量网站。
注意事项
- CentOS 7 已于 2024 年 6 月结束生命周期(EOL),不再接收安全更新。强烈建议迁移至 AlmaLinux、Rocky Linux 或 CentOS Stream 8/9。
- 所有操作建议通过 SSH 密钥认证,禁用密码登录。
- 不要直接暴露数据库端口(3306)到公网,仅允许本地或内网访问。
- 使用强密码策略,并限制 root 远程登录。
以上步骤覆盖了从系统准备到基础服务部署的核心环节,可根据实际需求进一步定制。
CLOUD云枢