建立 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://
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://
了解你的钥匙 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
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
# 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 和
如何在同一台服务器上托管多个网站? 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.