下面以 CentOS 7.6 为例,分步骤说明如何安装 Apache、配置并发布一个静态网站。
一、安装 Apache(httpd)
-
更新系统包(可选但推荐):
sudo yum update -y -
安装 Apache:
sudo yum install -y httpd -
启动并设置开机自启:
sudo systemctl start httpd sudo systemctl enable httpd -
检查状态:
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:
-
创建目录并设置权限:
sudo mkdir -p /var/www/mysite sudo chown -R apache:apache /var/www/mysite sudo chmod -R 755 /var/www/mysite -
将你的静态文件放入该目录,并在其中放置
index.html。 -
编辑 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 存在,否则无法访问。
- 重启 Apache:
sudo systemctl restart httpd
五、配置虚拟主机(多站点,可选)
如果需要为多个域名或不同目录配置网站点,可以创建虚拟主机配置。
- 在
/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>
-
测试配置语法:
sudo apachectl configtest -
如有错误,按提示修复;无错则重启:
sudo systemctl restart httpd
六、常见问题排查
-
访问不到页面
- 检查 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
- 检查 Apache 是否运行:
-
403 Forbidden
- 检查
<Directory>中是否有Require all granted - 检查目录权限:
ls -ld /var/www/mysite - 检查 SELinux 标签是否正确
- 检查
-
404 Not Found
- 确认
DocumentRoot指向正确 - 确认存在
index.html或配置了默认首页
- 确认
如果你提供具体需求(例如:使用 Nginx+Apache 混合、启用 HTTPS、配置 PHP 等),我可以给出更针对性的配置示例。
CLOUD技术笔记