凌峰创科服务平台

Linux配置Apache服务器步骤有哪些?

目录

  1. 第一步:安装 Apache 服务器
  2. 第二步:启动、停止与重启 Apache
  3. 第三步:验证安装与测试页面
  4. 第四步:理解核心配置文件结构
  5. 第五步:配置你的第一个网站(虚拟主机)
    • 示例:配置一个域名 example.com
  6. 第六步:启用 HTTPS (SSL/TLS)

    使用 Let's Encrypt 免费证书

    Linux配置Apache服务器步骤有哪些?-图1
    (图片来源网络,侵删)
  7. 第七步:安全配置优化
  8. 第八步:常见问题排查

第一步:安装 Apache 服务器

根据你的 Linux 发行版选择对应的命令。

对于 Ubuntu/Debian 系统

# 更新软件包列表
sudo apt update
# 安装 Apache2
sudo apt install apache2

对于 CentOS/RHEL 系统 (使用 yumdnf)

# (对于 CentOS 7/RHEL 7 及更新版本)
sudo yum install httpd
# (对于 CentOS 8/RHEL 8 及更新版本,使用 dnf)
sudo dnf install httpd

安装完成后,Apache 不会自动启动,我们将在下一步处理。


第二步:启动、停止与重启 Apache

Apache 服务在不同的发行版中名称略有不同。

Ubuntu/Debian (systemd)

# 启动 Apache 服务
sudo systemctl start apache2
# 停止 Apache 服务
sudo systemctl stop apache2
# 重启 Apache 服务 (推荐用于应用配置更改)
sudo systemctl restart apache2
# 重新加载 Apache 服务 (优雅地重新加载配置,不中断连接)
sudo systemctl reload apache2
# 设置 Apache 开机自启
sudo systemctl enable apache2

CentOS/RHEL (systemd)

# 启动 Apache 服务
sudo systemctl start httpd
# 停止 Apache 服务
sudo systemctl stop httpd
# 重启 Apache 服务
sudo systemctl restart httpd
# 重新加载 Apache 服务
sudo systemctl reload httpd
# 设置 Apache 开机自启
sudo systemctl enable httpd

第三步:验证安装与测试页面

安装并启动后,你可以通过浏览器访问你的服务器 IP 地址来测试 Apache 是否正常运行。

Linux配置Apache服务器步骤有哪些?-图2
(图片来源网络,侵删)
  1. 获取你的服务器 IP 地址:

    # 在 Ubuntu/Debian 上
    hostname -I
    # 在 CentOS/RHEL 上
    ip addr show
  2. 在浏览器中访问: 打开浏览器,输入 http://<你的服务器IP地址>

如果一切正常,你应该会看到 Apache 的默认欢迎页面,内容类似于 "It works!",这表明 Apache 已成功安装并运行。


第四步:理解核心配置文件结构

了解配置文件的位置和作用至关重要。

Linux配置Apache服务器步骤有哪些?-图3
(图片来源网络,侵删)

Ubuntu/Debian

  • 主配置文件: /etc/apache2/apache2.conf

    这是 Apache 的主配置文件,包含全局设置。

  • 端口配置: /etc/apache2/ports.conf

    定义 Apache 监听的端口,默认是 80 (HTTP) 和 443 (HTTPS)。

  • 虚拟主机配置目录: /etc/apache2/sites-available/

    存放所有可用的网站虚拟主机配置文件。

  • 启用的虚拟主机链接目录: /etc/apache2/sites-enabled/
    • 这个目录包含指向 sites-available 中已启用配置文件的软链接。
  • 模块配置目录: /etc/apache2/mods-available//etc/apache2/mods-enabled/

    分别存放可用和已启用的模块。

  • 其他配置: /etc/apache2/conf-available//etc/apache2/conf-enabled/

CentOS/RHEL

  • 主配置文件: /etc/httpd/conf/httpd.conf

    所有配置都集中在这个文件或其包含的文件中。

  • 虚拟主机配置目录: /etc/httpd/conf.d/
    • 每个虚拟主机都会有一个独立的 .conf 文件放在这个目录下,Apache 会自动加载此目录下的所有配置文件。
  • 模块: 模块通常在主配置文件中通过 LoadModule 指令加载。

第五步:配置你的第一个网站(虚拟主机)

虚拟主机允许你在同一台服务器上托管多个网站,我们将配置一个名为 example.com 的网站。

创建网站目录

# 创建网站根目录
sudo mkdir -p /var/www/example.com/html
# 设置目录所有者
sudo chown -R $USER:$USER /var/www/example.com/html
# (可选) 设置适当的权限
sudo chmod -R 755 /var/www/example.com/html

注意: $USER 是当前用户变量,确保你有权限写入该目录。

创建首页文件

# 创建一个简单的 index.html 文件
sudo nano /var/www/example.com/html/index.html

在文件中输入以下内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">Welcome to example.com</title>
</head>
<body>
    <h1>Success! Your example.com server is working!</h1>
    <p>This is a placeholder page for the example.com virtual host.</p>
</body>
</html>

保存并退出 (Ctrl+X, Y, Enter)。

创建虚拟主机配置文件

对于 Ubuntu/Debian:

# 创建一个新的配置文件
sudo nano /etc/apache2/sites-available/example.com.conf
```并替换 `ServerName` 和 `ServerAlias`:
```apache
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/html
    <Directory /var/www/example.com/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

保存并退出。

对于 CentOS/RHEL:

# 创建一个新的配置文件
sudo nano /etc/httpd/conf.d/example.com.conf
```与 Ubuntu/Debian 版本完全相同。
#### 4. 启用虚拟主机
##### 对于 Ubuntu/Debian:
你需要使用 `a2ensite` 工具来创建从 `sites-available` 到 `sites-enabled` 的链接。
```bash
# 启用新站点
sudo a2ensite example.com.conf
# 禁用默认站点 (可选)
sudo a2dissite 000-default.conf

对于 CentOS/RHEL:

不需要额外操作,只要文件存在于 /etc/httpd/conf.d/ 目录下,Apache 就会自动加载它。

测试并重启 Apache

在重启之前,最好先测试配置文件是否有语法错误。

# Ubuntu/Debian
sudo apache2ctl configtest
# CentOS/RHEL
sudo apachectl configtest

如果输出 Syntax OK,则可以安全重启。

# 重启 Apache 使配置生效
# Ubuntu/Debian
sudo systemctl restart apache2
# CentOS/RHEL
sudo systemctl restart httpd

配置本地 hosts 文件进行测试 (可选)

如果你还没有为 example.com 配置 DNS,你可以在你的本地电脑上编辑 hosts 文件来指向你的服务器 IP,以便进行测试。

  • Windows: C:\Windows\System32\drivers\etc\hosts
  • macOS/Linux: /etc/hosts

添加一行:

<你的服务器IP地址>    example.com    www.example.com

在你的本地浏览器访问 http://example.com,你应该能看到你创建的 "Success!" 页面。


第六步:启用 HTTPS (SSL/TLS)

现代网站必须使用 HTTPS,我们将使用免费的 Let's Encrypt 证书。

安装 Certbot

Certbot 是一个自动化获取和 renew Let's Encrypt 证书的工具。

Ubuntu/Debian:

sudo apt install certbot python3-certbot-apache

CentOS/RHEL:

# 首先安装 EPEL 仓库
sudo yum install epel-release
# 然后安装 Certbot
sudo yum install certbot python3-certbot-apache

获取并安装证书

Certbot 可以自动检测你配置的虚拟主机,并完成所有步骤。

# 运行 Certbot
sudo certbot --apache

它会:

  1. 提示你输入邮箱。
  2. 询问你是否同意服务条款。
  3. 询问你是否要将 HTTP 流量自动重定向到 HTTPS (强烈建议选择 2)。
  4. 自动获取证书,修改你的 Apache 配置以启用 HTTPS,并重启服务。

完成后,你的网站将通过 https://example.com 安全访问。

自动续订证书

Let's Encrypt 的证书有效期为 90 天,Certbot 会设置一个定时任务来自动续订证书,你可以用以下命令测试续订过程:

sudo certbot renew --dry-run

如果输出 Congratulations, all renewals succeeded.,说明自动续订配置正确。


第七步:安全配置优化

  1. 禁止目录列表: 在虚拟主机配置的 <Directory> 指令中,确保 Indexes 被移除或注释掉,或者设置为 Options -Indexes,这可以防止访问者列出目录下的文件。

    <Directory /var/www/example.com/html>
        Options -Indexes FollowSymLinks
        ...
    </Directory>
  2. 隐藏 Apache 版本信息: 在主配置文件 (apache2.confhttpd.conf) 中添加:

    ServerTokens Prod
    ServerSignature Off

    这会使服务器在响应头中不显示版本信息,并在错误页面上不显示服务器信息。

  3. 限制访问: 可以使用 .htaccess 文件或 <Directory> 指令来限制特定目录的访问。

    <Directory /var/www/example.com/admin>
        AuthType Basic
        AuthName "Restricted Area"
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
    </Directory>

    然后使用 htpasswd 命令创建密码文件。

  4. 配置防火墙: 确保防火墙允许 HTTP (80) 和 HTTPS (443) 端口。

    # Ubuntu/Debian (使用 ufw)
    sudo ufw allow 'Apache Full'
    # CentOS/RHEL (使用 firewalld)
    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    sudo firewall-cmd --reload

第八步:常见问题排查

  • 问题: Permission denied 错误。

    • 原因: Web 服务器用户 (www-data on Ubuntu, apache on CentOS) 没有权限访问文件或目录。
    • 解决: 检查文件和目录的所有者和权限,使用 chownchmod 修正它们。
      # 示例:将目录所有权赋予 Apache 用户
      # Ubuntu
      sudo chown -R www-data:www-data /var/www/example.com
      # CentOS
      sudo chown -R apache:apache /var/www/example.com
  • 问题: 403 Forbidden 错误。

    • 原因: 通常是 DocumentRoot 指向错误、目录权限问题,或 AllowOverride 指令设置不当。
    • 解决:
      1. 检查 DocumentRoot 路径是否正确。
      2. 检查目录权限是否为 755
      3. <Directory> 指令中设置 AllowOverride All 以启用 .htaccess
  • 问题: Service not found 或无法启动。

    • 原因: 服务名拼写错误 (apache2 vs httpd)。
    • 解决: 确保使用你发行版正确的服务名。
  • 问题: 配置测试失败 (Syntax OK 没有出现)。

    • 原因: 配置文件中有语法错误,如缺少分号、括号不匹配等。
    • 解决: 仔细检查你最近修改的配置文件,可以使用 nano 等编辑器的语法高亮来帮助检查。

你已经成功地:

  1. 安装并运行了 Apache 服务器。
  2. 配置了第一个虚拟主机,并能够通过域名访问。
  3. 为你的网站启用了免费的 HTTPS 证书。
  4. 进行了一些基本的安全优化。

这是一个坚实的基础,你可以在此基础上继续学习,例如配置反向代理、负载均衡、优化性能等,Apache 文档是极其宝贵的资源,遇到问题时务必查阅官方文档。

分享:
扫描分享到社交APP
上一篇
下一篇