如何在 CentOS 7.6 上配置 Apache 并发布静态网站?

下面以 CentOS 7.6 为例,分步骤说明如何安装 Apache、配置并发布一个静态网站。


一、安装 Apache(httpd)

  1. 更新系统包(可选但推荐):

    sudo yum update -y
  2. 安装 Apache:

    sudo yum install -y httpd
  3. 启动并设置开机自启:

    sudo systemctl start httpd
    sudo systemctl enable httpd
  4. 检查状态:

    sudo systemctl status httpd

二、开放防火墙端口(如果启用了 firewalld)

CentOS 7 默认使用 firewalld,需要放行 HTTP 和 HTTPS:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

如需临时测试可先关闭防火墙(不推荐生产环境):

sudo systemctl stop firewalld

三、准备静态网站文件

Apache 默认的网站根目录是:
/var/www/html

你可以直接在这个目录下创建网站文件,例如:

cd /var/www/html
sudo vim index.html

写入一个简单的 HTML 示例:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>我的静态网站</title>
</head>
<body>
    <h1>Hello, CentOS 7.6 + Apache!</h1>
    <p>这是一个静态网站示例。</p>
</body>
</html>

保存后,用浏览器访问服务器 IP 即可看到页面:

http://<服务器IP>/

四、自定义网站根目录(可选)

如果你希望把网站放在其他目录,例如 /var/www/mysite

  1. 创建目录并设置权限:

    sudo mkdir -p /var/www/mysite
    sudo chown -R apache:apache /var/www/mysite
    sudo chmod -R 755 /var/www/mysite
  2. 将你的静态文件放入该目录,并在其中放置 index.html

  3. 编辑 Apache 配置文件:

    sudo vi /etc/httpd/conf/httpd.conf

找到如下行(通常在第 160 行左右):

DocumentRoot "/var/www/html"

改为:

DocumentRoot "/var/www/mysite"

同时修改对应的 <Directory> 块(通常在附近):

<Directory "/var/www/mysite">
    AllowOverride None
    Require all granted
</Directory>

确保 Require all granted 存在,否则无法访问。

  1. 重启 Apache:
    sudo systemctl restart httpd

五、配置虚拟主机(多站点,可选)

如果需要为多个域名或不同目录配置网站点,可以创建虚拟主机配置。

  1. /etc/httpd/conf.d/ 下新建配置文件,例如 mysite.conf
    sudo vi /etc/httpd/conf.d/mysite.conf

内容示例(单站点):

<VirtualHost *:80>
    ServerName www.example.com
    DocumentRoot /var/www/mysite

    <Directory /var/www/mysite>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog logs/example-error.log
    CustomLog logs/example-access.log combined
</VirtualHost>
  1. 测试配置语法:

    sudo apachectl configtest
  2. 如有错误,按提示修复;无错则重启:

    sudo systemctl restart httpd

六、常见问题排查

  1. 访问不到页面

    • 检查 Apache 是否运行:systemctl status httpd
    • 检查防火墙是否放行 80/443
    • 检查 SELinux(CentOS 默认开启):
      getenforce

      若为 Enforcing,且网站目录不在默认路径,可能需要调整策略:

      sudo setsebool -P httpd_can_network_connect 1
      # 或者给自定义目录打标签:
      sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/mysite(/.*)?"
      sudo restorecon -Rv /var/www/mysite
  2. 403 Forbidden

    • 检查 <Directory> 中是否有 Require all granted
    • 检查目录权限:ls -ld /var/www/mysite
    • 检查 SELinux 标签是否正确
  3. 404 Not Found

    • 确认 DocumentRoot 指向正确
    • 确认存在 index.html 或配置了默认首页

如果你提供具体需求(例如:使用 Nginx+Apache 混合、启用 HTTPS、配置 PHP 等),我可以给出更针对性的配置示例。

云服务器