Apache安装配置教程:从零完成部署与虚拟主机设置

本文要解决的问题很直接:在一台干净的 Linux 服务器上把 Apache 装好、启动、放行端口,再让它能正确响应一个域名或 IP 的访问。
下面以常见的 CentOS 7/8 和 Ubuntu 20.04/22.04 为例,命令按发行版区分,照着执行即可。

先确认系统和软件包管理器

操作前先明确两件事:当前用户是否有 sudo 权限,以及系统用的是 yum/dnf 还是 apt。
用下面命令查看:

cat /etc/os-release
which yum dnf apt 2>/dev/null

如果输出里出现 ID=centos 或 ID=rhel,走 yum/dnf 流程;
出现 ID=ubuntu 或 ID=debian,走 apt 流程。
Apache 在 CentOS 系里包名是 httpd,在 Ubuntu/Debian 里是 apache2,这是新手最容易混的一点。

安装并启动 Apache

CentOS / RHEL 系:

sudo yum install -y httpd
sudo systemctl enable --now httpd

Ubuntu / Debian 系:

sudo apt update
sudo apt install -y apache2
sudo systemctl enable --now apache2

装完先看服务状态,确认没有报错再继续:

sudo systemctl status httpd    # CentOS
sudo systemctl status apache2  # Ubuntu

状态里出现 active (running) 表示进程已经起来。
如果显示 failed,先执行 sudo journalctl -u httpd -n 50(Ubuntu 换成 apache2)看最近日志,常见原因是 80 端口被 Nginx 或其他程序占用。

放行防火墙端口

服务起来了但外部打不开,多半是防火墙没放行。
CentOS 用 firewalld:

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

Ubuntu 用 ufw:

sudo ufw allow 'Apache Full'
sudo ufw status

如果服务器在云厂商控制台里,还要检查安全组是否放行了 80 和 443 端口。
这两处都放行后,用浏览器访问服务器公网 IP,能看到 Apache 默认页面就说明基础安装成功了。

配置一个虚拟主机

默认站点能访问后,实际使用通常要绑定自己的域名。
以 Ubuntu 为例,先创建目录和测试页:

sudo mkdir -p /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/example.com/public_html

新建配置文件 /etc/apache2/sites-available/example.com.conf:


    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined

启用站点并重载配置:

sudo a2ensite example.com.conf
sudo a2dissite 000-default.conf
sudo apache2ctl configtest
sudo systemctl reload apache2

CentOS 下的对应文件一般放在 /etc/httpd/conf.d/example.com.conf,
内容结构类似,
改完用 sudo apachectl configtest 检查语法,
再 sudo systemctl reload httpd。每次改配置都先跑 configtest,
通过后再 reload,
能避免把服务改挂。

验证是否真正生效

不要只看浏览器,用命令行确认更可靠:

curl -I http://你的服务器IP
curl -I http://example.com

返回 HTTP/1.1 200 OK 或 301/302 说明请求已经被 Apache 处理。
如果返回连接被拒绝,回到防火墙和安全组检查;
如果返回 403,检查 DocumentRoot 目录权限和 SELinux;
如果返回默认页面而不是你的站点,说明虚拟主机没生效或 ServerName 与访问域名不一致。

容易踩的几个坑

不要同时跑 Nginx 和 Apache 占用 80 端口。 用 sudo ss -lntp | grep :80 查看谁在监听,需要的话先停掉冲突服务。

SELinux 在 CentOS 上可能拦截自定义目录。 如果确认权限没问题仍报 403,
可以临时用 sudo setenforce 0 测试,
确认是 SELinux 后再用 semanage fcontext 正式放行,
不要长期关闭。

改完配置忘记 reload。 systemctl restart 会中断现有连接,日常调整优先用 reload。

域名解析没生效就急着排查 Apache。 先用 ping example.com 或 dig example.com 确认解析到的是当前服务器 IP。

常见疑问

Apache 和 httpd 是同一个东西吗?
在 CentOS/RHEL 系里服务名和包名是 httpd,在 Ubuntu/Debian 里是 apache2,本质都是 Apache HTTP Server,配置文件路径和命令前缀不同。

装完后本机 curl 正常、外网打不开怎么办?
优先查云安全组和系统防火墙两层,再看 Apache 是否只监听了 127.0.0.1。
用 ss -lntp 确认监听地址是 0.0.0.0:80 还是 127.0.0.1:80。

虚拟主机改了不生效怎么定位?
执行 apache2ctl -S(CentOS 用 httpd -S)可以看到当前生效的虚拟主机列表和配置文件路径,比盲猜快得多。

到这里,Apache 的安装、启动、端口放行和虚拟主机配置就完成了。
建议先在测试环境跑通整套流程,确认 curl 返回正常后再迁移到正式服务器,后续再按需加 HTTPS 和日志切割。

分享到:
上一篇
Nginx安全加固教程:从默认配置到可验证的防护清单
下一篇
Apache .htaccess配置:入门掌握伪静态与访问控制
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意