阿里云Linux云服务器搭建Apache:从零开始的完整部署与优化指南

apphuang2026年07月12日 11:30:153

一、为什么选择阿里云ECS搭建Apache

Apache HTTP Server是全世界使用最广泛的开源Web服务器软件,凭借其稳定性、丰富的模块生态和灵活的配置能力,在互联网领域经久不衰。阿里云弹性计算服务ECS提供了高性能、可弹性伸缩的云服务器资源,将Apache部署在阿里云ECS上,可以快速搭建从个人博客到企业级电商平台的各种Web应用。LAMP(Linux + Apache + MySQL + PHP)架构在阿里云ECS平台上运行效率尤为突出,是无数开发者和运维人员的首选方案。

需要先登录阿里云控制台,点击:阿里云控制台

二、ECS实例准备与初始化

2.1 选购ECS实例

登录阿里云控制台后,进入ECS管理页面,点击创建实例。对于新手,推荐先选择按量付费进行测试,熟悉流程后再根据业务需求转为包年包月。操作系统方面,建议选用Alibaba Cloud Linux 3/2或CentOS 7.x系列,这两个系统在阿里云生态中有良好的兼容性和长期支持。内存方面,如果运行的是ThinkPHP、Laravel等现代PHP框架,建议至少选择2 GiB以上;小型静态网站或简单项目1 GiB也可勉强运行。

2.2 安全组规则配置——最关键的一步

安全组是阿里云ECS的虚拟防火墙,控制着实例的入方向和出方向流量。配置安全组时,应遵循最小授权原则——只开放业务必需的端口。对于Web服务器,必须放行的端口有三个:

  • 22端口(SSH):用于远程登录服务器。强烈建议只授权运维人员的固定公网IP访问,绝不要开放给0.0.0.0/0,否则每天会被数万次暴力破解攻击轮番轰炸。
  • 80端口(HTTP):Web服务的对外访问端口,可以开放给0.0.0.0/0。
  • 443端口(HTTPS):加密Web服务端口,同样开放给0.0.0.0/0。

配置路径为:ECS控制台 → 网络与安全 → 安全组 → 管理规则 → 添加安全组规则。选择自定义TCP,端口范围按需填写,授权对象根据端口安全性选择具体IP或0.0.0.0/0。安全组应作为白名单使用,开放应用出入规则时应遵循最小授权原则。

2.3 SSH连接服务器

获取ECS实例的公网IP地址和root密码(或密钥对),通过SSH工具连接到服务器:

ssh root@你的服务器公网IP

连接成功后,建议先执行系统更新:

# Alibaba Cloud Linux / CentOS
yum update -y

# Ubuntu
apt update && apt upgrade -y

三、Apache安装与基础配置

3.1 使用包管理器安装Apache

在不同Linux发行版上,Apache的安装命令和软件包名称略有不同。

CentOS / Alibaba Cloud Linux:

sudo yum install -y httpd httpd-manual mod_ssl mod_rewrite mod_perl

Ubuntu / Debian:

sudo apt update
sudo apt install -y apache2

安装完成后,启动Apache服务并设置开机自启:

# CentOS / Alibaba Cloud Linux
sudo systemctl start httpd
sudo systemctl enable httpd

# Ubuntu / Debian
sudo systemctl start apache2
sudo systemctl enable apache2

验证Apache服务状态:

sudo systemctl status httpd

在浏览器中输入ECS实例的公网IP地址,如果看到Apache的默认测试页,说明安装成功。Apache的默认网站根目录为/var/www/html(CentOS)或/var/www/html(Ubuntu)。

3.2 Apache核心配置文件详解

Apache的主配置文件位于:

  • CentOS / Alibaba Cloud Linux:/etc/httpd/conf/httpd.conf
  • Ubuntu / Debian:/etc/apache2/apache2.conf

以下是几个必须关注的核心配置参数:

ServerName:设置服务器的域名或IP地址。如果未设置,Apache启动时可能会提示无法确定服务器域名的警告。

ServerName www.example.com:80

DocumentRoot:指定网站文件的根目录。

DocumentRoot "/var/www/html"

DirectoryIndex:指定默认访问的文件,按顺序查找。

DirectoryIndex index.html index.php index.htm

Listen:指定Apache监听的端口。

Listen 80

修改配置文件后,务必先测试配置语法是否正确:

sudo apachectl configtest

如果输出“Syntax OK”,再重启Apache使配置生效:

sudo systemctl restart httpd

四、基于域名的虚拟主机配置

虚拟主机(Virtual Host)允许在同一台服务器上托管多个网站,每个网站使用不同的域名。Apache支持基于IP、基于端口和基于域名三种虚拟主机方式,其中最常用的是基于域名的虚拟主机。

4.1 CentOS / Alibaba Cloud Linux 虚拟主机配置

在CentOS系统中,虚拟主机配置文件通常放在/etc/httpd/conf.d/目录下。创建一个新的配置文件:

sudo nano /etc/httpd/conf.d/example.com.conf

添加以下虚拟主机配置:

<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com
    <Directory /var/www/example.com>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog logs/example.com-error_log
    CustomLog logs/example.com-access_log common
</VirtualHost>

参数说明:

  • ServerAdmin:网站管理员的邮箱地址。
  • ServerName:主域名,必须唯一。
  • ServerAlias:域名的别名,可以附加多个。
  • DocumentRoot:该网站的根目录。
  • Directory:目录访问控制配置,Options控制目录功能,AllowOverride控制.htaccess的覆盖权限。
  • ErrorLog / CustomLog:独立的错误日志和访问日志。

创建网站根目录并设置权限:

sudo mkdir -p /var/www/example.com
sudo chown -R apache:apache /var/www/example.com

启用虚拟主机配置并重启Apache:

sudo systemctl restart httpd

4.2 Ubuntu / Debian 虚拟主机配置

在Ubuntu系统中,虚拟主机配置文件放在/etc/apache2/sites-available/目录下。创建配置文件:

sudo nano /etc/apache2/sites-available/example.com.conf

配置内容与CentOS类似,但目录路径有所不同:

<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com
    <Directory /var/www/example.com>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

启用虚拟主机并禁用默认站点:

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

五、Apache性能优化

Apache的性能优化主要围绕三个方向:启用KeepAlive减少连接开销、选择合适的MPM多处理模块提升并发能力、启用压缩与缓存减少传输量和服务器负载。

5.1 启用KeepAlive长连接

KeepAlive允许客户端通过单个TCP连接发送多个HTTP请求,避免了频繁建立和关闭TCP连接带来的三次握手和四次挥手开销。在Apache配置文件(/etc/httpd/conf/httpd.conf)中添加以下指令:

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

参数说明:

  • KeepAlive On:启用持久连接功能。
  • MaxKeepAliveRequests 100:每个连接允许处理的最大请求数,避免单个连接占用过多资源。
  • KeepAliveTimeout 5:等待下一个请求的超时时间(秒)。繁忙站点建议取2-5秒的低值,减少长连接占用;页面较大的站点可适当提高。

5.2 MPM多处理模块调优

MPM(Multi-Processing Module)是Apache的核心并发处理模块。CentOS 7及以上版本的Apache默认使用prefork MPM(多进程模型),适合兼容性场景但并发性能有限。对于高并发场景,建议切换至event MPM(事件驱动模型,支持多线程)。

编辑MPM配置文件(/etc/httpd/conf.modules.d/00-mpm.conf):

Prefork MPM配置(兼容性好,适合传统PHP应用):

<IfModule mpm_prefork_module>
    StartServers        5
    MinSpareServers     5
    MaxSpareServers     10
    MaxRequestWorkers   150
    MaxConnectionsPerChild 0
</IfModule>

Event MPM配置(高并发,推荐):

<IfModule mpm_event_module>
    StartServers        2
    MinSpareThreads     25
    MaxSpareThreads     75
    ThreadLimit         64
    ThreadsPerChild     25
    MaxRequestWorkers   150
    MaxConnectionsPerChild 0
</IfModule>

参数说明:

  • StartServers:启动时创建的进程数。
  • MinSpareThreads / MaxSpareThreads:最小/最大空闲线程数。
  • ThreadsPerChild:每个子进程创建的线程数。
  • MaxRequestWorkers:最大并发请求数,需根据服务器内存调整。1GB内存约支持100-150个并发。

5.3 启用Gzip压缩

使用mod_deflate模块对文本类内容(HTML、CSS、JS、JSON等)进行Gzip压缩,可减少50%-70%的网络传输量。在配置文件中添加:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    AddOutputFilterByType DEFLATE text/css application/javascript
    AddOutputFilterByType DEFLATE application/json application/xml
    AddOutputFilterByType DEFLATE image/svg+xml
    DeflateCompressionLevel 9
    SetOutputFilter DEFLATE
</IfModule>

注意:避免压缩图片(如JPEG、PNG),此类文件本身已压缩,再次压缩会增加CPU负担。

5.4 配置静态资源缓存

通过mod_expires模块为静态资源设置浏览器缓存,减少重复请求。在配置文件中添加:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css "access plus 30 days"
    ExpiresByType application/javascript "access plus 30 days"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType image/gif "access plus 1 year"
    ExpiresByType image/svg+xml "access plus 1 year"
</IfModule>

六、Apache安全加固

6.1 禁用目录浏览

目录浏览功能会暴露网站的文件结构,存在安全隐患。在Directory配置中移除Indexes选项:

Options -Indexes

6.2 隐藏Apache版本信息

隐藏服务器版本信息可以减少攻击者收集系统信息的可能性:

ServerTokens Prod
ServerSignature Off

6.3 配置访问控制

对敏感目录(如配置文件目录、日志目录)设置访问限制:

<Directory /var/www/html/admin>
    Require ip 192.168.1.0/24
</Directory>

6.4 启用系统防火墙

除了阿里云安全组,ECS实例内部的系统防火墙也应正确配置。CentOS/RHEL使用firewalld:

sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

Ubuntu使用UFW:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

6.5 部署HTTPS证书

为Apache配置SSL证书,实现HTTPS加密访问。首先确保已在安全组中开放443端口。安装mod_ssl模块:

sudo yum install -y mod_ssl

检查模块是否安装成功:

httpd -M | grep 'ssl'

通过阿里云数字证书管理服务申请免费SSL证书。每个阿里云账号在一个自然年内可免费领取20张个人测试证书,有效期90天。下载Apache格式的证书文件(包含证书文件、证书链文件和私钥文件)。在/etc/httpd/conf.d/ssl.conf中配置证书路径:

<VirtualHost *:443>
    ServerName www.example.com
    DocumentRoot /var/www/html
    SSLEngine on
    SSLCertificateFile /etc/httpd/ssl/your_domain_public.crt
    SSLCertificateKeyFile /etc/httpd/ssl/your_domain.key
    SSLCertificateChainFile /etc/httpd/ssl/your_domain_chain.crt
</VirtualHost>

重启Apache使SSL配置生效。

七、Apache日志管理与日志轮转

Apache的访问日志和错误日志是运维排查问题的重要依据。默认情况下,访问日志位于/var/log/httpd/access_log,错误日志位于/var/log/httpd/error_log(CentOS)。

7.1 自定义日志格式

通过LogFormat和CustomLog指令自定义日志格式,可以记录更多有价值的信息:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D" combined_with_time

格式说明:

  • %h:客户端IP地址
  • %t:请求时间戳
  • %r:请求的首行(方法、URI、协议)
  • %>s:响应状态码
  • %D:处理请求所花费的时间(微秒)
  • %{Referer}i:来源页面
  • %{User-Agent}i:客户端浏览器信息

7.2 使用logrotate实现日志自动轮转

Apache自身不直接处理日志轮转,需要借助系统自带的logrotate工具。logrotate可以自动完成日志分割、压缩、删除及通知服务重新加载。

确认logrotate已安装:

logrotate --version

Apache的logrotate配置文件位于/etc/logrotate.d/httpd(CentOS)或/etc/logrotate.d/apache2(Ubuntu)。编辑配置文件:

/var/log/httpd/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
        if [ -f /var/run/httpd/httpd.pid ]; then
            systemctl restart httpd
        fi
    endscript
}

参数说明:

  • daily:每天轮转一次(可选weekly/monthly)
  • rotate 14:保留最近14个轮转日志文件
  • compress:使用gzip压缩旧日志
  • delaycompress:延迟压缩,避免压缩正在写入的日志
  • notifempty:若日志为空,不进行轮转
  • create 640 root adm:轮转后创建新日志文件,权限640
  • postrotate:轮转后重启Apache,使其重新打开日志文件

测试logrotate配置:

sudo logrotate -vf /etc/logrotate.d/httpd

logrotate通常由系统的cron定时任务自动执行(每日一次)。

八、常见问题排查

8.1 浏览器无法访问Apache测试页

排查步骤:

  1. 检查阿里云安全组是否放行了80端口。
  2. 检查Apache服务是否正常运行:systemctl status httpd。
  3. 检查系统防火墙是否拦截了80端口。
  4. 检查Apache是否监听了正确的IP和端口:netstat -tlnp | grep httpd。

8.2 403 Forbidden错误

通常是目录权限或访问控制配置问题:

  1. 检查网站目录的权限是否正确:chown -R apache:apache /var/www/html。
  2. 检查Directory配置中的Require指令是否正确。
  3. 检查是否存在Indexes被禁用但目录中没有默认首页文件的情况。

8.3 Apache启动失败

  1. 检查配置文件语法:apachectl configtest。
  2. 检查端口是否被占用:netstat -tlnp | grep :80。
  3. 查看错误日志:tail -f /var/log/httpd/error_log。

九、总结

本文系统讲解了在阿里云Linux云服务器上搭建Apache Web服务器的完整流程,从ECS实例选购、安全组配置、Apache安装、虚拟主机设置,到性能优化、安全加固和日志管理,涵盖了生产环境部署的各个关键环节。Apache作为久经考验的Web服务器,配合阿里云ECS的弹性计算能力,能够为各类Web应用提供稳定、高性能的服务支撑。在实际运维中,建议定期更新系统补丁、监控访问日志、关注安全漏洞公告,持续保障服务器的安全与稳定。

常见问题解答

问1:在阿里云ECS上搭建Apache后,为什么公网IP无法访问?
答:最常见的原因是安全组未开放80端口。请登录阿里云控制台,进入ECS的安全组配置页面,添加入方向规则,端口范围填写80/80,授权对象设置为0.0.0.0/0。另外也请检查ECS实例内部的系统防火墙是否放行了80端口。

问2:Apache的默认网站根目录在哪里?如何修改?
答:CentOS系统中默认根目录为/var/www/html,Ubuntu系统中为/var/www/html。如需修改,编辑httpd.conf或apache2.conf中的DocumentRoot指令,同时需要同步修改对应的Directory配置。

问3:如何在阿里云ECS上实现一台服务器托管多个网站?
答:通过Apache的虚拟主机功能可以实现。在/etc/httpd/conf.d/目录下为每个域名创建独立的.conf配置文件,配置不同的ServerName和DocumentRoot,然后重启Apache即可。

问4:Apache的prefork和event MPM有什么区别?应该如何选择?
答:prefork使用多进程模型,每个请求由一个进程处理,兼容性好但内存占用高、并发能力有限。event使用事件驱动模型,支持多线程,在高并发场景下性能更优、内存占用更低。对于流量较大的网站,建议切换至event MPM。

问5:Apache日志文件越来越大,如何处理?
答:使用logrotate工具实现日志自动轮转。配置/etc/logrotate.d/httpd文件,设置daily轮转、保留指定数量的历史日志、启用压缩,即可自动管理日志文件大小。

问6:如何为Apache配置HTTPS证书?
答:首先在阿里云数字证书管理服务中申请SSL证书(个人测试证书免费)。下载Apache格式的证书文件后,安装mod_ssl模块,在ssl.conf中配置证书路径,确保安全组已开放443端口,最后重启Apache使配置生效。

相关文章

买阿里云服务器能便宜吗?十年代理揭秘 3 大省钱攻略!

买阿里云服务器能便宜吗?十年代理揭秘 3 大省钱攻略!

作为深耕阿里云代理领域 10 年的 “老司机”,经常被问到:“买阿里云服务器能便宜吗?有没有优惠价格?” 今天就用实打实的行业经验告诉你:不仅能便宜,选对渠道还能省一大笔! 这篇文章带你解锁阿里云服务…

做了 10 年腾讯云代理,我想跟你聊聊返佣那些事儿​

做了 10 年腾讯云代理,我想跟你聊聊返佣那些事儿​

最近总有朋友问我:“腾讯云有返点吗?腾讯云服务器能拿佣金不?返佣比例到底有多少?” 作为一个在腾讯云代理行业摸爬滚打了 10 年的 “老人”,今天就来跟大家好好…

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商的核心价值定位1. 代理商的角色与职责阿里云代理商作为阿里云生态的核心合作伙伴,承担着双重核心职能:• 产品销售:负责推广销售阿里云全系列云产品,包括云服务器ECS、云数据库RDS、对象存…

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

01一、阿里云代理商的核心价值定位1. 代理商的角色与职责阿里云代理商作为阿里云生态的核心合作伙伴,承担着双重核心职能:• 产品销售:负责推广销售阿里云全系列云产品,包括云服务器ECS、云数据库RDS…

阿里云代理商有哪些?阿里云代理返点是真的么?

阿里云代理商有哪些?阿里云代理返点是真的么?

一,阿里云代理商基本介绍阿里云代理商通俗一点,就是指从事阿里云云服务器,云数据库等阿里云公有云产品销售的代理商,每销售一件阿里云公有云产品出去,阿里云给予该代理商一定比例的提成。在阿里云官方定义中,这…

2026阿里云代理商生态全解析:五级代理体系、返佣政策与企业上云指南

2026阿里云代理商生态全解析:五级代理体系、返佣政策与企业上云指南

一、阿里云五级代理体系:权益阶梯与合作价值1. 五级代理的核心权益差异阿里云构建了多层次的代理生态体系,涵盖全国总代理、区域核心代理、行业ISV(独立软件开发商)、金牌/银牌认证代理及标准代理五大核心…