服务公告

服务公告 > 综合新闻 > Apache-星耀云

Apache-星耀云

发布时间:2026-04-28 05:37
本文解决刚接手服务器不知如何快速搭建Web环境的问题,手把手演示Apache在CentOS/RHEL和Ubuntu两大主流Linux发行版上的安装、启动、配置防火墙及基础调优,帮你10分钟内让Web服务跑起来。

一、前言

干了10年运维,见过太多新人对着空荡荡的服务器发呆。Apache装不上、防火墙拦住、端口冲突、权限报错——这些问题我当年全踩过。今天不整那些花里胡哨的理论,直接给你演示生产环境里最常用的Apache安装配置流程。CentOS/RHEL和Ubuntu两条线我都走一遍,你照着敲准能跑起来。

二、操作步骤

这一步搞定了,我们继续
这是核心步骤,仔细看
别急,好戏还在后头
搞定这步之后,继续往下看
别急,好戏还在后头
别急,好戏还在后头
搞完这步,离成功就不远了

步骤1:检查系统环境

装Apache之前先看看你手里是啥系统,别瞎敲命令。执行以下命令查看发行版信息:

cat /etc/os-release

预期输出(Ubuntu):

NAME="Ubuntu" VERSION="22.04.1 LTS (Jammy Jellyfish)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 22.04.1 LTS" VERSION_ID="22.04"

预期输出(CentOS/RHEL):

NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)"

步骤2:CentOS/RHEL安装Apache(httpd)

Red Hat系用yum/dnf包管理器,安装httpd包。生产环境建议先同步软件源:

yum update -y yum install -y httpd

预期输出:

Loaded plugins: fastestmirror Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package httpd.x86_64 0:2.4.6-97.el7.centos will be installed Installing: httpd x86_64 2.4.6-97.el7.centos base 2.7 M Transaction Summary Install 1 Package(s) Complete!

如果提示没有httpd包,可能是最小化安装没加源,执行:yum install -y epel-release && yum install -y httpd

步骤3:Ubuntu安装Apache2

Debian系包名是apache2,更新源后直接装:

apt update && apt install -y apache2

预期输出:

Reading package lists... Done Building dependency tree... Done apache2 is already the newest version (2.4.52-1ubuntu4). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

如果是新装机器,会看到Setting up apache2 ...Processing triggers for systemd ...的提示。

步骤4:启动Apache服务并设置开机自启

装完不会自动跑,得你手动启动。CentOS/RHEL命令:

systemctl start httpd systemctl enable httpd systemctl status httpd

预期输出:

● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2024-01-15 10:30:00 CST; 5s ago Main PID: 1234 (httpd) Status: "Processing requests..." CGroup: /system.slice/httpd.service └─1234 /usr/sbin/httpd -DFOREGROUND

Ubuntu命令:

systemctl start apache2 systemctl enable apache2 systemctl status apache2

预期输出:

● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2024-01-15 10:30:00 CST; 5s ago Main PID: 1234 (apache2) Tasks: 55 (limit: 4915) Memory: 8.2M CPU: 123ms CGroup: /system.slice/apache2.service └─1234 /usr/sbin/apache2 -k start

步骤5:配置防火墙放行HTTP/HTTPS流量

服务起来了,但防火墙拦着你还是访问不了。CentOS/RHEL用firewalld:

firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload firewall-cmd --list-services

预期输出:

success success success dhcpv6-client http https ssh

看到http和https出现在列表里就对了。

Ubuntu默认没开防火墙,如果用ufw:

ufw allow 'Apache Full' ufw status

预期输出:

Rules updated Rules updated (v6) Status: active To Action From -- ------ ---- Apache Full ALLOW Anywhere Apache Full (v6) ALLOW Anywhere

步骤6:本地测试Web服务

防火墙放行了,现在本地先测一下能不能通。用curl访问localhost:

curl -I http://localhost

预期输出:

HTTP/1.1 200 OK Date: Mon, 15 Jan 2024 02:30:00 GMT Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips Last-Modified: Mon, 15 Jan 2024 02:00:00 GMT ETag: "1a2b-3c4d5e6f7g8h" Content-Type: text/html Content-Length: 45

看到HTTP/1.1 200 OK说明服务跑通了。如果报403,检查下Selinux和文件权限。

步骤7:修改默认端口(可选)

生产环境有时不让用80端口,或者机器上跑了多个Web服务,需要改端口。以CentOS/RHEL为例,编辑主配置文件:

vi /etc/httpd/conf/httpd.conf

找到Listen 80这行,改成你想要的端口,比如8080:

Listen 8080

Ubuntu编辑/etc/apache2/ports.conf

vi /etc/apache2/ports.conf

修改内容:

Listen 8080

改完重启服务生效:

systemctl restart httpd # CentOS/RHEL systemctl restart apache2 # Ubuntu

然后访问http://你的IP:8080测试。

步骤8:自定义网站根目录

默认DocumentRoot在/var/www/html,实际项目往往有自己的目录路径。CentOS/RHEL修改:

vi /etc/httpd/conf/httpd.conf

找到并修改(注意改两处):

DocumentRoot "/var/www/html" <Directory "/var/www/html"> Require all granted </Directory>

如果想换成/data/www

DocumentRoot "/data/www" <Directory "/data/www"> Require all granted </Directory>

Ubuntu修改虚拟主机配置:

vi /etc/apache2/sites-available/000-default.conf

修改DocumentRoot:

DocumentRoot /data/www

⚠️ 警告:修改完目录后记得给目录授权,否则会报403错误:chown -R www-data:www-data /data/www(Ubuntu)或chown -R apache:apache /data/www(CentOS/RHEL)。

三、常见问题FAQ

Q1:服务启动报错"Address already in use",端口被占用了怎么办?

这种问题80%是你之前开过nginx或者apache没关干净。执行以下命令定位谁在占用端口:

ss -tlnp | grep :80

预期输出:

LISTEN 0 128 *:80 *:* users:(("nginx",pid=1234,fd=6))

看到是nginx占着,要么停掉它,要么给Apache换个端口。停掉nginx:systemctl stop nginx。如果确定不需要nginx,直接yum remove nginxapt remove nginx卸载。

Q2:本地能访问,外部浏览器打不开,什么情况?

别慌,十有八九是云服务器的安全组没开。阿里云、腾讯云、AWS都有安全组策略,80和443端口默认不放行。去控制台的安全组配置里加一条入站规则:协议TCP,端口80-443,来源0.0.0.0/0。防火墙和云安全组两层都要过,少一个都不行。

Q3:改了配置文件怎么知道语法对不对?

生产环境最怕改配置重启后起不来。先用测试模式检查语法:

# CentOS/RHEL apachectl configtest

预期输出:

Syntax OK

或者报错会提示哪一行有问题:

AH00526: Syntax error on line 42 of /etc/httpd/conf/httpd.conf: Invalid command 'Requiret', perhaps misspelled or defined by a module not included

Ubuntu用:apache2ctl configtest。看到Syntax OK再重启服务,别直接reload。

Q4:SELinux导致403,怎么回事?

CentOS/RHEL老手最烦这玩意儿。关闭SELinux永久解决方案:

vi /etc/selinux/config

改成:

SELINUX=disabled

临时关闭(重启失效):setenforce 0。生产环境建议保留SELinux但正确配置上下文,不会的先关掉跑起来再说。

四、总结

搞定Apache安装配置就这几板斧:看系统、装包、启服务、放防火墙、测访问。基本功练扎实了,后面的虚拟主机、SSL证书、Rewrite规则都是在这套流程上加东西。

核心要点:

  • CentOS/RHEL装httpd,Ubuntu装apache2,包名不一样
  • 装完不会自动启动,必须手动start和enable
  • 防火墙两层:系统iptables/firewalld + 云安全组,缺一不可
  • 改配置前先用configtest检查语法
  • 自定义目录记得授权,否则403

延伸阅读:

  • Apache虚拟主机配置:同一台服务器跑多个网站
  • Let's Encrypt免费SSL证书部署:给网站加HTTPS
  • Apache性能优化:MPM模块选择与连接数调优
  • 日志管理与轮转:避免磁盘被日志撑爆