ubuntu/debian系统需用apt安装apache2包(非httpd),装完执行systemctl start apache2并enable,再用ufw allow 'apache full'放行防火墙,最后curl http://localhost验证默认页。

直接装就能跑,但装错包名或漏开防火墙,浏览器打不开首页是大概率事件。
确认系统类型再敲命令,别把 httpd 和 apache2 混用
CentOS/RHEL/Rocky/AlmaLinux 用 httpd 包;Ubuntu/Debian 用 apache2 包。这是命名体系差异,不是版本问题。
- 查系统:运行
cat /etc/os-release,看ID或ID_LIKE字段 - RHEL系(含 Rocky):执行
sudo yum install httpd -y(RHEL 8+ 可能需dnf) - Debian系:先
sudo apt update,再sudo apt install apache2 -y - 装完验证:
httpd -v(RHEL系)或apache2 -v(Debian系),有输出即成功
启动服务前必须检查 systemctl status 和防火墙
服务“看似启动了”,但状态显示 failed 或端口没监听,90% 是防火墙或 SELinux 挡的。
- 启动并设开机自启:
sudo systemctl start httpd(RHEL系)或sudo systemctl start apache2(Debian系),然后sudo systemctl enable httpd/apache2 - 立刻查状态:
sudo systemctl status httpd—— 必须看到active (running),否则看日志:sudo journalctl -u httpd -n 20 --no-pager - 放行端口:
sudo firewall-cmd --permanent --add-service=http(firewalld)或sudo ufw allow 'Apache Full'(ufw) - 验证端口监听:
sudo ss -tlnp | grep :80,应有httpd或apache2进程在 LISTEN
/var/www/html 是默认根目录,改它比改 httpd.conf 更安全
新手直接改主配置文件容易语法出错导致服务起不来,优先用默认路径部署页面。
- 默认网站根目录统一为
/var/www/html(RHEL/Debian 都一样) - 写个测试页:
echo "<h1>OK</h1>" | sudo tee /var/www/html/index.html - 重启服务:
sudo systemctl restart httpd(或apache2) - 本地访问:
curl http://localhost应返回<h1>OK</h1>;远程访问需确保服务器 IP + 端口 80 可达 - 权限注意:文件属主不重要,但目录需对
apache(RHEL)或www-data(Debian)用户可读
虚拟主机配置别硬改 httpd.conf,用 conf.d/ 目录隔离
主配置文件一动就可能影响全局,新增站点应该走模块化方式,避免误伤默认站点。
- RHEL系:在
/etc/httpd/conf.d/下新建myapp.conf,内容包含<virtualhost></virtualhost>块 - Debian系:在
/etc/apache2/sites-available/下建配置,再用a2ensite myapp启用 - 关键字段必须有:
ServerName(域名)、DocumentRoot(绝对路径)、<directory> Require all granted </directory> - 改完务必语法检查:
sudo httpd -t(RHEL)或sudo apache2ctl configtest(Debian)—— 返回Syntax OK才能restart
最容易被忽略的是:改完配置不检查语法就重启,结果服务直接挂掉;还有就是以为开了服务就等于外网能访问,其实防火墙和云厂商安全组才是第一道关卡。











