凌峰创科服务平台

Apache如何快速搭建网站?

  1. 安装 Apache
  2. 配置虚拟主机 (这是建立多个网站的关键)
  3. 创建网站目录和文件
  4. 设置正确的文件权限
  5. 测试网站
  6. 可选:配置域名解析和 SSL (HTTPS)

环境准备

本教程将以 Ubuntu 22.04 为例,但命令也适用于其他 Debian/Ubuntu 系列发行版,对于 CentOS/RHEL/Fedora 系统,包管理器命令会不同(使用 yumdnf),但核心概念和配置文件路径是相似的。

Apache如何快速搭建网站?-图1
(图片来源网络,侵删)

第一步:安装 Apache

你需要更新你的软件包列表,然后安装 Apache 服务器。

# 1. 更新软件包列表
sudo apt update
# 2. 安装 Apache
sudo apt install apache2

安装过程中,Apache 服务通常会自动启动,你可以通过以下命令检查其状态:

# 检查 Apache 服务状态
sudo systemctl status apache2

如果看到绿色的 active (running) 字样,说明 Apache 已经成功运行。

你还可以通过你的服务器的 IP 地址在浏览器中访问,应该能看到 Apache 的默认欢迎页面,这证明了 Apache 已经正常工作。

Apache如何快速搭建网站?-图2
(图片来源网络,侵删)
# 查看服务器的 IP 地址
ip addr show

在浏览器中输入 http://<你的服务器IP地址>,你应该能看到 "Apache2 Ubuntu Default Page"。


第二步:配置虚拟主机

“虚拟主机”是 Apache 的一个强大功能,它允许你在一台服务器上托管多个独立的网站,每个网站都有自己的域名和内容目录。

我们将创建一个名为 example.com 的虚拟主机作为示例。请将 example.com 替换为你自己的域名。

创建网站目录

为你的网站创建一个目录,网站文件存放在 /var/www/ 目录下。

Apache如何快速搭建网站?-图3
(图片来源网络,侵删)
# 使用 -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

粘贴到文件中,请务必将 ServerNameServerAlias 修改为你的域名。

<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.comhttp://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

运行后,按照提示操作:

  1. 输入你的邮箱地址。
  2. 阅读并同意服务条款。
  3. 选择是否接收来自 Let's Encrypt 的邮件。
  4. 关键步骤: Certbot 会列出它找到的所有域名,选择你想启用 HTTPS 的域名,输入对应的数字,然后按回车。
  5. 它会询问你将 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.comsudo 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' 来放行。
分享:
扫描分享到社交APP
上一篇
下一篇