- 安装 Apache
- 配置虚拟主机 (这是建立多个网站的关键)
- 创建网站目录和文件
- 设置正确的文件权限
- 测试网站
- 可选:配置域名解析和 SSL (HTTPS)
环境准备
本教程将以 Ubuntu 22.04 为例,但命令也适用于其他 Debian/Ubuntu 系列发行版,对于 CentOS/RHEL/Fedora 系统,包管理器命令会不同(使用 yum 或 dnf),但核心概念和配置文件路径是相似的。

第一步:安装 Apache
你需要更新你的软件包列表,然后安装 Apache 服务器。
# 1. 更新软件包列表 sudo apt update # 2. 安装 Apache sudo apt install apache2
安装过程中,Apache 服务通常会自动启动,你可以通过以下命令检查其状态:
# 检查 Apache 服务状态 sudo systemctl status apache2
如果看到绿色的 active (running) 字样,说明 Apache 已经成功运行。
你还可以通过你的服务器的 IP 地址在浏览器中访问,应该能看到 Apache 的默认欢迎页面,这证明了 Apache 已经正常工作。

# 查看服务器的 IP 地址 ip addr show
在浏览器中输入 http://<你的服务器IP地址>,你应该能看到 "Apache2 Ubuntu Default Page"。
第二步:配置虚拟主机
“虚拟主机”是 Apache 的一个强大功能,它允许你在一台服务器上托管多个独立的网站,每个网站都有自己的域名和内容目录。
我们将创建一个名为 example.com 的虚拟主机作为示例。请将 example.com 替换为你自己的域名。
创建网站目录
为你的网站创建一个目录,网站文件存放在 /var/www/ 目录下。

# 使用 -p 选项确保父目录存在 sudo mkdir -p /var/www/example.com
创建网站首页文件
在这个新目录中创建一个简单的 index.html 文件。
# 使用 tee 命令并配合 sudo 来创建和写入文件
sudo tee /var/www/example.com/index.html > /dev/null <<EOL
<!DOCTYPE html>
<html>
<head>欢迎来到我的网站!</title>
</head>
<body>
<h1>你好,世界!</h1>
<p>这是我的新网站,托管在 Apache 上。</p>
</body>
</html>
EOL
设置目录权限
为了让 Apache 能够读取网站文件,你需要将网站目录的所有权授予 www-data 用户(这是 Apache 运行时所使用的用户)。
# 将目录所有者改为 www-data sudo chown -R www-data:www-data /var/www/example.com # 设置适当的权限 sudo chmod -R 755 /var/www/example.com
创建虚拟主机配置文件
Apache 使用配置文件来定义每个虚拟主机,这些文件通常存放在 /etc/apache2/sites-available/ 目录下。
我们将创建一个新的配置文件:
# 创建一个新的配置文件 sudo nano /etc/apache2/sites-available/example.com.conf
粘贴到文件中,请务必将 ServerName 和 ServerAlias 修改为你的域名。
<VirtualHost *:80>
# 网站服务器的名称和别名
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>
配置说明:
VirtualHost *:80: 指定这个虚拟主机监听所有网络接口的 80 端口(HTTP 默认端口)。ServerName: 你网站的主域名。ServerAlias: 网站的别名,www开头的域名。DocumentRoot: 存放网站代码的根目录。<Directory>: 定义对DocumentRoot目录的访问权限。AllowOverride All允许使用.htaccess文件。
启用虚拟主机配置
我们创建了配置文件,但 Apache 还不知道它,我们需要使用 a2ensite 命令来“启用”它。
# 启用新的虚拟主机 sudo a2ensite example.com.conf
禁用默认站点 (可选)
如果你想让你新配置的网站成为默认首页,可以禁用 Apache 的默认站点。
sudo a2dissite 000-default.conf
检查配置并重启 Apache
在重启服务之前,最好先检查一下配置文件是否有语法错误。
# 检查 Apache 配置语法 sudo apache2ctl configtest
如果输出 Syntax OK,说明配置正确。
重启 Apache 服务以应用所有更改。
# 重启 Apache 服务 sudo systemctl restart apache2
第三步:测试网站
你的网站应该已经可以访问了。
通过 IP 地址访问
在浏览器中输入 http://<你的服务器IP地址>,如果一切正常,你应该能看到你刚才创建的 "你好,世界!" 页面,而不是 Apache 的默认欢迎页面。
通过域名访问
如果你已经将域名 example.com 的 DNS 解析指向了你的服务器 IP 地址,那么在浏览器中输入 http://example.com 或 http://www.example.com,也应该能看到你的网站。
注意: 如果域名还没有生效或没有配置 DNS,你可以在本地电脑的 hosts 文件中添加一条临时记录来测试。
- Windows:
C:\Windows\System32\drivers\etc\hosts - macOS / Linux:
/etc/hosts
在文件末尾添加一行:
<你的服务器IP地址> example.com www.example.com
保存文件后,再在浏览器中访问域名即可。
第四步 (可选但强烈推荐):配置 SSL (HTTPS)
为了网站安全,启用 HTTPS 是必不可少的,我们可以使用免费的 Let's Encrypt 证书来完成这个任务。
安装 Certbot
Certbot 是一个自动化获取和续签 Let's Encrypt 证书的工具。
# 安装 Certbot 和 Apache 插件 sudo apt install certbot python3-certbot-apache
获取并安装 SSL 证书
Certbot 可以自动检测到你之前配置的虚拟主机,并提示你进行配置。
# 运行 Certbot sudo certbot --apache
运行后,按照提示操作:
- 输入你的邮箱地址。
- 阅读并同意服务条款。
- 选择是否接收来自 Let's Encrypt 的邮件。
- 关键步骤: Certbot 会列出它找到的所有域名,选择你想启用 HTTPS 的域名,输入对应的数字,然后按回车。
- 它会询问你将 HTTP 流量重定向到 HTTPS。强烈建议选择
2: Redirect,这样所有访问http的用户都会自动跳转到安全的https。
Certbot 会自动完成以下工作:
- 从 Let's Encrypt 获取 SSL 证书。
- 自动修改你的 Apache 配置文件,启用 SSL 和重定向。
- 重启 Apache 服务。
验证自动续签
Let's Encrypt 证书的有效期为 90 天,但 Certbot 会自动设置一个定时任务来帮你续签证书,无需任何操作。
你可以用以下命令测试自动续签是否正常工作:
# 模拟续签过程,但不保存更改 sudo certbot renew --dry-run
如果看到 renewal configuration file ... is valid 并且没有错误,说明自动续签已经配置好了。
在浏览器中访问 https://example.com,你应该能看到一个带有安全锁标志的网站了!
总结与排错
恭喜!你已经成功在 Apache 上建立了一个完整的、支持 HTTPS 的网站。
常见问题排错:
-
问题: 访问域名看到 "403 Forbidden" 错误。
- 原因: 通常是文件或目录权限不正确。
- 解决: 确保执行了
sudo chown -R www-data:www-data /var/www/example.com和sudo chmod -R 755 /var/www/example.com。
-
问题: 访问域名看到 "It works!" 或 Apache 默认页面。
- 原因: 虚拟主机配置未生效,或者
ServerName与你访问的域名不匹配。 - 解决: 检查
/etc/apache2/sites-enabled/目录下是否有正确的软链接,并用apache2ctl configtest检查语法。
- 原因: 虚拟主机配置未生效,或者
-
问题: 访问域名看到 "404 Not Found"。
- 原因:
DocumentRoot路径指向错误,或者index.html文件不存在。 - 解决: 再次确认
/etc/apache2/sites-available/example.com.conf文件中的DocumentRoot路径是否正确。
- 原因:
-
问题: SSL 证书安装失败。
- 原因: 域名 DNS 未解析到正确 IP,或者 80/443 端口被防火墙或其他程序占用。
- 解决: 检查域名解析,并确保防火墙允许 HTTP(80) 和 HTTPS(443) 端口,在 Ubuntu 上可以使用
sudo ufw allow 'Apache Full'来放行。
