在CentOS 7.8上如何配置基础的Web服务器环境?

在 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)及轻量级动态应用部署。


一、前置准备

  1. 系统更新

    sudo yum update -y
  2. 安装必要工具

    sudo yum install -y vim net-tools wget curl
  3. 防火墙配置(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
  4. 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,需相应调整所有权。


六、虚拟主机配置(可选但推荐)

为实现多站点部署,建议配置虚拟主机而非将所有文件放在默认目录。

  1. 创建站点目录:

    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
  2. 创建虚拟主机配置文件:

    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>
  3. 重启 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。


八、监控与维护建议

  1. 日志查看:

    • Apache 访问日志:/var/log/httpd/access_log
    • Apache 错误日志:/var/log/httpd/error_log
    • MariaDB 日志:/var/log/mariadb/mariadb.log
  2. 定期更新:

    sudo yum update -y
  3. 备份策略:

    • 定期备份 /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云枢 » 在CentOS 7.8上如何配置基础的Web服务器环境?