如何设定 Apache 2026 年 Linux 服务器部署指南

建立 Apache 在 Linux 服务器上安装 apache2/httpd 软件包,启用并启动该服务,在防火墙中允许 80/443 端口,为您的域名创建虚拟主机,检查配置是否存在语法错误,并使用 Let's Encrypt 启用 HTTPS。不同发行版的步骤略有不同。

本指南适合初学者,介绍如何进行设置 Apache 在 Linux 服务器上,您将学习安装、配置、保护和优化的具体步骤。 Apache 在 Ubuntu/Debian 和 CentOS/RHEL/AlmaLinux/Rocky Linux 等主流发行版上,我都会提供 (httpd) 服务。作为一名资深主机托管专家,我还会分享一些实用技巧、安全加固方法以及性能调优技巧,帮助您运行生产级网站。

所需物品(先决条件)开始之前,请确认以下事项:

一台运行基于 Ubuntu/Debian 或 CentOS/RHEL 发行版的 Linux 服务器(VPS、云服务器或独立服务器)root 或 sudo 访问注册域名(可选,但推荐)防火墙访问权限,开放端口 80 (HTTP) 和 443 (HTTPS)小包装 manage已准备就绪:Ubuntu/Debian 使用 apt,基于 RHEL 的系统使用 dnf/yumApache Linux 系统中:重要的命名差异跨分布, Apache 使用不同的软件包和服务名称:

Ubuntu/Debian:软件包 apache2, 服务 apache2,配置 /etc/apache2/RHEL/CentOS/AlmaLinux/Rocky:软件包 httpd, 服务 httpd,配置 /etc/httpd/运行命令时请记住这些要点。 编辑配置文件.

分步安装指南 ApacheUbuntu的/ Debian的sudo apt update

sudo apt install -y apache2

sudo systemctl enable --now apache2

sudo ufw allow "Apache Full" # enables 80 and 443

sudo systemctl status apache2

curl -I http://RHEL/CentOS/AlmaLinux/Rockysudo dnf install -y httpd

sudo systemctl enable --now httpd

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

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

sudo firewall-cmd --reload

sudo systemctl status httpd

curl -I http://如果您使用的是较旧的 CentOS 系统, yum,替换 dnf - yum在最简化的 RHEL 配置中,请确保您的网络和 DNS 先正确解决后再继续。

了解你的钥匙 Apache 文件和目录Ubuntu / Debian: /etc/apache2/apache2.conf, /etc/apache2/ports.conf, /etc/apache2/sites-available/, /etc/apache2/sites-enabled/登录 /var/log/apache2/基于RHEL的: /etc/httpd/conf/httpd.conf, /etc/httpd/conf.d/登录 /var/log/httpd/业务 management(适用于两个家庭):

sudo systemctl status apache2|httpd

sudo systemctl reload apache2|httpd

sudo systemctl restart apache2|httpd创建您的第一个虚拟主机(网站)1)准备文档根目录和权限sudo mkdir -p /var/www/example.com/public_html

echo "

Hello from Apache

" | sudo tee /var/www/example.com/public_html/index.html

# Ownership differs by distro:

# Ubuntu/Debian user is "www-data", RHEL-based user is "apache"

# Ubuntu/Debian:

sudo chown -R www-data:www-data /var/www/example.com

# RHEL-based:

# sudo chown -R apache:apache /var/www/example.com2)添加虚拟主机配置Ubuntu/Debian(sites-available + a2ensite):

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

ServerName example.com

ServerAlias www.example.com

DocumentRoot /var/www/example.com/public_html

AllowOverride All

Require all granted

Options -Indexes

ErrorLog ${APACHE_LOG_DIR}/example_error.log

CustomLog ${APACHE_LOG_DIR}/example_access.log combined

sudo a2ensite example.com.conf

sudo a2enmod rewrite

sudo apache2ctl configtest

sudo systemctl reload apache2RHEL/CentOS/AlmaLinux/Rocky(conf.d):

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

ServerName example.com

ServerAlias www.example.com

DocumentRoot /var/www/example.com/public_html

AllowOverride All

Require all granted

Options -Indexes

ErrorLog /var/log/httpd/example_error.log

CustomLog /var/log/httpd/example_access.log combined

sudo apachectl -t

sudo systemctl reload httpd如果 SELinux 正在强制执行,并且您的文档根目录位于默认路径之外,请设置正确的上下文:

# RHEL-based SELinux example for a custom docroot:

sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/example.com(/.*)?"

sudo restorecon -Rv /var/www/example.com使用 Let's Encrypt 启用 HTTPS(免费) SSL)Ubuntu的/ Debian的sudo apt install -y certbot python3-certbot-apache

sudo certbot --apache -d example.com -d www.example.com

# Test auto-renewal

sudo certbot renew --dry-runRHEL/CentOS/AlmaLinux/Rocky# Enable EPEL if needed (RHEL/CentOS):

sudo dnf install -y epel-release

sudo dnf install -y certbot python3-certbot-apache

sudo certbot --apache -d example.com -d www.example.com

sudo certbot renew --dry-runCertbot 添加 SSL 虚拟主机,安装证书,并配置 HTTP 到 HTTPS 重定向。证书通过 systemd 定时器自动续期。

基本安全加固隐藏服务器详情并禁用列表# Ubuntu/Debian: edit /etc/apache2/conf-available/security.conf (or apache2.conf)

# RHEL-based: edit /etc/httpd/conf.d/security.conf (create if missing)

ServerTokens Prod

ServerSignature Off

# In each or global:

Options -Indexes防火墙、权限和 SELinux只保持端口 80/443 开放;除非必要,否则阻止其他端口。对网站根目录使用最小权限原则。文件权限:644,目录权限:755。在 RHEL 系统中,对于出站连接(例如,到应用服务器的连接),允许: sudo setsebool -P httpd_can_network_connect 1.安全模块和 HTTPS 最佳实践考虑使用 ModSecurity WAF:Ubuntu sudo apt install libapache2-mod-security2RHEL sudo dnf install mod_security.完全使用 HTTPS 时,请使用强 TLS 加密算法并启用 HSTS。定期打补丁: sudo apt upgrade or sudo dnf upgrade.针对真实流量的性能调优选择合适的MPM对于大多数现代网站而言, 活动 MPM 的可扩展性优于 prefork的. 如果你跑 PHP将事件 MPM 与 PHP-FPM(不是 mod_php)。

# Ubuntu/Debian:

sudo a2dismod mpm_prefork

sudo a2enmod mpm_event proxy_fcgi setenvif

sudo a2enconf php*-fpm # choose your installed PHP-FPM version

sudo systemctl reload apache2

# RHEL-based:

sudo dnf install -y php-fpm

sudo systemctl enable --now php-fpm

# Example (in your vhost) to pass PHP via FPM socket:

#

# SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost/"

# 压缩和缓存# Enable modules (Ubuntu/Debian):

sudo a2enmod deflate headers expires brotli

sudo systemctl reload apache2

# Example rules (add inside vhost or a conf file):

AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript application/json

# If Brotli installed:

# AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/css application/javascript application/json

# Caching static assets:

ExpiresActive On

ExpiresByType image/webp "access plus 1 month"

ExpiresByType image/png "access plus 1 month"

ExpiresByType text/css "access plus 7 days"

ExpiresByType application/javascript "access plus 7 days"连接限制和 KeepAlive调音 RAM/CPU作为 2-4 GB VPS 的初始配置:

# event MPM example (Ubuntu: /etc/apache2/mods-available/mpm_event.conf)

# RHEL: in /etc/httpd/conf.modules.d/ prefixed file or main httpd.conf

StartServers 2

MinSpareThreads 25

MaxSpareThreads 75

ThreadLimit 64

ThreadsPerChild 25

MaxRequestWorkers 150

MaxConnectionsPerChild 0

KeepAlive On

MaxKeepAliveRequests 100

KeepAliveTimeout 5使用真实流量进行测试并进行调整。每次更改后务必重新加载并监控。 内存使用情况 防止交换。

日志、监控和维护访问日志: /var/log/apache2/access.log or /var/log/httpd/access_log错误日志: /var/log/apache2/error.log or /var/log/httpd/error_log服务日志: journalctl -u apache2 or journalctl -u httpd尾部实时日志: sudo tail -f /var/log/apache2/error.log日志轮换:由 logrotate 处理;请验证配置。 /etc/logrotate.d/为了获取流量洞察,像 GoAccess 这样的工具可以提供来自访问日志的实时报告,而不会增加额外的开销。 Apache.

解决常见问题端口已被占用: sudo ss -tulpn | grep :80 查找冲突。停止其他服务或更改 Apache“ Listen 输入端口 ports.conf (Ubuntu)或 httpd.conf (RHEL)。403 禁止访问:检查文件权限/所有权和 Apache 规则。在 SELinux 中,确保上下文正确并使用 restorecon.500 内部服务器错误:检查错误日志中是否存在 .htaccess 语法错误或 PHP 错误。测试 apachectl -t.更改未应用:使用 systemctl reload (优雅地)在配置编辑后;验证 apachectl -t.网站速度慢:启用压缩、缓存,切换到事件 MPM,并使用 PHP-FPM。分析应用程序和数据库,而不仅仅是 Apache.可选:构建完整的 LAMP 架构。添加 PHP 数据库可以将你的服务器变成适用于 WordPress 和动态应用程序的 LAMP 堆栈:

# Ubuntu/Debian:

sudo apt install -y php php-fpm php-mysql mariadb-server

# RHEL-based:

sudo dnf install -y php php-fpm php-mysqlnd mariadb-server

sudo systemctl enable --now mariadb比较喜欢 PHP-FPM 与 Apache's event MPM 比 mod_php 具有更好的并发性。

何时使用 YouStable HPMC胶囊 Apache 托管如果你运行的是生产工作负载,那么一个可靠的平台至关重要。 YouStable的 SSD 驱动型 VPS 和专用服务器可提供稳定的 I/O 和 DDoS 防护, IPv6 支持和免费的 Let's Encrypt SSL我们的工程师可以进行预硬化处理。 Apache, 配置 PHP-FPM,并设置自动备份——这样您就可以专注于您的网站,而不是服务器救火。

按照以上步骤操作,您现在就知道如何设置了。 Apache 在 Linux 服务器上从安装到 SSL安全性和调优。有了坚实的基础和合适的托管服务, Apache 能够为快速、安全且可扩展的网站提供支持。

常见问题解答:如何设置 Apache 在 Linux 服务器上Is Apache or Nginx 更适合在 Linux 系统上使用 WordPress 吗?两者都运行良好。 Apache 提供灵活的 .htaccess 和深度模块支持。 Nginx 擅长处理静态资源和高并发性。常见的生产模式是 Nginx 作为反向代理位于前面 Apache+PHP-FPM,或 Apache 仅支持事件管理模式 (MPM) 和缓存。请根据您的技术栈和团队专业知识进行选择。

我该如何改变 Apache默认端口是 80 吗?Ubuntu/Debian:编辑 /etc/apache2/ports.conf 以及与之匹配的 VirtualHost,例如: Listen 8080 和 基于 RHEL 的更新 /etc/httpd/conf/httpd.conf 以及虚拟主机。重新加载服务并在防火墙中打开新端口。

如何在同一台服务器上托管多个网站? Apache 服务器?使用虚拟主机。为每个域名创建单独的文档根目录和虚拟主机配置文件。在 Ubuntu/Debian 系统上,将配置文件放置在…… sites-available 并启用 a2ensite在基于 RHEL 的系统中,添加一个 .conf 每个站点 /etc/httpd/conf.d/。 观点 DNS A/AAAA 记录指向您服务器的 IP 地址。

如何在网站上自动续订 Let's Encrypt 证书? Apache?Certbot 默认会设置一个 systemd 定时器。请使用以下命令验证: systemctl list-timers | grep certbot 并进行一次预演: sudo certbot renew --dry-run请确保您的防火墙允许 TCP 80/443 端口,并且您的域名指向该服务器,以便 HTTP-01/ALPN 可以进行验证。

在哪 Apache Linux 系统上的配置文件?Ubuntu/Debian 将配置存储在 /etc/apache2/ (网站在 sites-available/sites-enabled) 带有日志 /var/log/apache2/RHEL/CentOS/AlmaLinux/Rocky 使用 /etc/httpd/ (虚拟主机) conf.d) 带有日志 /var/log/httpd/主要文件有: apache2.conf or httpd.conf.