Linux 搭建 Web 服务器指南:Nginx 与 Apache 实战
在 Ubuntu 22.04 和 CentOS Stream 9 上搭建 Web 服务器的方法。内容包括通过 SSH 连接服务器、更新系统、安装配置 Nginx 和 Apache、设置防火墙及部署静态页面。教程提供详细命令和操作步骤,适合初学者快速上手 Linux 服务器管理。

在 Ubuntu 22.04 和 CentOS Stream 9 上搭建 Web 服务器的方法。内容包括通过 SSH 连接服务器、更新系统、安装配置 Nginx 和 Apache、设置防火墙及部署静态页面。教程提供详细命令和操作步骤,适合初学者快速上手 Linux 服务器管理。

对于许多开发者和技术爱好者而言,拥有一个属于自己的 Web 服务器是迈向更广阔技术世界的第一步。它不仅是学习网络知识、托管个人博客、展示作品集的平台,更是理解互联网工作原理的绝佳实践。然而,面对 Linux 的命令行,许多新手可能会望而却步。本文旨在打破这一壁垒,提供一份超详细、步骤清晰、真正零门槛的 Linux Web 服务器搭建指南。我们将以当前最主流的两种 Web 服务器软件 Nginx 和 Apache 为例,分别在两大主流 Linux 发行版家族(基于 Debian/Ubuntu 和基于 RHEL/CentOS)上进行实战演示。从系统更新、软件安装、防火墙配置,到部署第一个网页,每一步都配有详尽的命令和解释,确保即便您是第一次接触 Linux,也能轻松跟上,成功点亮您的第一个网站。
在当今这个时代,云服务器已经触手可及,价格也日益亲民。拥有一台 Linux 云服务器,就如同拥有了一块数字世界的'自留地',您可以在上面自由地构建和实验。而搭建 Web 服务器,就是在这块土地上盖起第一座房子的过程。
为什么选择 Linux?
本文将聚焦于两款最受欢迎的 Web 服务器软件:
我们将分别介绍如何在以下两种主流 Linux 发行版上安装它们,您可以根据自己的服务器系统选择对应的教程:
准备好了吗?让我们开始这段激动人心的旅程吧!
在开始安装任何软件之前,我们需要先通过 SSH (Secure Shell) 登录到您的 Linux 服务器,并执行一次全面的系统更新。这是一个至关重要的好习惯,可以确保系统中的所有软件包都处于最新状态,修复已知的安全漏洞。
username:通常是 root 或您在创建服务器时设置的用户名。your_server_ip:您服务器的公网 IP 地址。在 CentOS / RHEL / Fedora 上:
# 更新所有已安装的软件包到最新版本
sudo dnf update -y
在较旧的 CentOS 7 等版本中,使用的命令是 yum 而不是 dnf。
在 Ubuntu / Debian 上:
# 更新可用软件包列表
sudo apt update
# 升级所有已安装的软件包到最新版本
sudo apt upgrade -y
sudo 命令用于以管理员(root)权限执行命令。-y 标志会自动对所有提示回答'是'。
您需要一个 SSH 客户端。在 Windows 10/11 上,您可以使用 PowerShell 或命令提示符;在 macOS 和 Linux 上,可以直接使用终端。命令格式如下:
ssh username@your_server_ip
首次连接时,系统会提示您确认主机的真实性,输入 yes 并回车即可。然后输入您的密码,登录成功后,您将看到服务器的命令行欢迎信息。
完成以上步骤后,您的服务器就已经处在一个干净且最新的状态,可以开始安装 Web 服务器软件了。
Nginx 是现代 Web 架构的宠儿,我们将先介绍如何安装和配置它。
Ubuntu 的官方软件仓库中包含了 Nginx,安装过程非常直接。
安装 Nginx
sudo apt install nginx -y
管理 Nginx 服务
安装完成后,Nginx 服务通常会自动启动。您可以使用 systemctl 命令来管理它。
# 检查 Nginx 服务状态
sudo systemctl status nginx
# 如果服务未运行,手动启动
# sudo systemctl start nginx
# 设置 Nginx 开机自启
sudo systemctl enable nginx
配置防火墙
Ubuntu 默认使用 ufw (Uncomplicated Firewall) 作为防火墙管理工具。我们需要允许外部流量访问 Web 服务器的端口。
# 查看 ufw 为 Nginx 预设的配置方案
sudo ufw app list
您会看到类似 Nginx HTTP, Nginx HTTPS, Nginx Full 的选项。
# 仅允许 HTTP 流量 (端口 80)
sudo ufw allow 'Nginx HTTP'
# 启用防火墙 (如果尚未启用)
sudo ufw enable
# 查看防火墙状态,确认规则已生效
sudo ufw status
输出应该会显示 Nginx HTTP 规则处于 ALLOW 状态。
验证安装
现在,打开您的本地浏览器,在地址栏输入您服务器的公网 IP 地址:http://your_server_ip。如果一切顺利,您将看到 Nginx 的默认欢迎页面!
在 CentOS Stream 9 上安装 Nginx 同样简单。
安装 Nginx
sudo dnf install nginx -y
管理 Nginx 服务
# 启动 Nginx 服务
sudo systemctl start nginx
# 设置 Nginx 开机自启
sudo systemctl enable nginx
# 检查服务状态
sudo systemctl status nginx
配置防火墙
CentOS 默认使用 firewalld 作为防火墙。
# 永久允许 HTTP (端口 80) 和 HTTPS (端口 443) 流量
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# 重新加载防火墙配置以使规则生效
sudo firewall-cmd --reload
验证安装
同样地,在浏览器中访问 http://your_server_ip。您应该能看到 CentOS 上的 Nginx 欢迎页面。
Apache 历史悠久,社区庞大,资料丰富,是新手入门的另一个绝佳选择。
安装 Apache
在 Ubuntu 上,Apache 的软件包名为 apache2。
sudo apt install apache2 -y
管理 Apache 服务
# 检查 Apache 服务状态
sudo systemctl status apache2
# 设置开机自启
sudo systemctl enable apache2
配置防火墙
ufw 同样为 Apache 提供了预设配置。
# 查看预设方案
sudo ufw app list
# 允许 Apache 的 HTTP 流量
sudo ufw allow 'Apache'
# 查看防火墙状态
sudo ufw status
验证安装
打开浏览器,访问 http://your_server_ip。您将看到 Apache 在 Ubuntu 上的默认页面,它会告诉您配置文件的位置等信息。
安装 Apache
在 CentOS/RHEL 家族中,Apache 的软件包名为 httpd。
sudo dnf install httpd -y
管理 Apache 服务
# 启动 httpd 服务
sudo systemctl start httpd
# 设置开机自启
sudo systemctl enable httpd
# 检查服务状态
sudo systemctl status httpd
配置防火墙
这与 Nginx 在 CentOS 上的防火墙配置完全相同。如果您之前已经为 Nginx 配置过,则无需重复操作。
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
验证安装
浏览器访问 http://your_server_ip,您会看到由 CentOS 提供的 Apache 测试页面。
现在服务器已经运行起来了,但它只显示默认页面。让我们用一个自定义的 'Hello, World!' 页面来替换它。
Web 服务器从一个特定的目录中读取文件并将其提供给访问者,这个目录被称为 Web 根目录 (Web Root)。
/usr/share/nginx/html//var/www/html//var/www/html/创建 HTML 文件
我们将使用 nano 这个简单易用的命令行文本编辑器来创建一个 index.html 文件。当然,您也可以使用 vim。首先,为了避免权限问题,我们直接切换到 root 用户操作(实际生产环境不推荐,但对于初学者练习来说最简单)。
sudo -i
现在,根据您安装的服务器和系统,进入对应的目录并创建文件。示例:以 Nginx on Ubuntu 为例
# 进入 Web 根目录
cd /usr/share/nginx/html/
# (可选) 备份默认文件
mv index.nginx-debian.html index.nginx-debian.html.bak
# 创建并编辑新的 index.html 文件
nano index.html
编写 HTML 内容
在打开的 nano 编辑器中,粘贴以下简单的 HTML 代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Welcome to My Server!</title>
<style>
body {
font-family: sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #2c3e50;
color: #ecf0f1;
margin: 0;
}
h1 {
font-size: 3em;
text-shadow: 2px 2px 4px #000;
}
</style>
</head>
<body>
<h1>Hello, World! My Web Server is Running!</h1>
</body>
</html>
保存并退出
nano 中,按下 Ctrl + X。Y。Enter 确认文件名。刷新浏览器
现在,回到您的浏览器,刷新 http://your_server_ip 页面。您应该能看到您刚刚创建的 'Hello, World!' 页面了!
恭喜你!通过遵循本指南,您已经成功地在 Linux 服务器上搭建起了自己的 Web 服务器,并部署了第一个自定义网页。我们回顾一下核心步骤:
apt 或 dnf 更新系统,这是保证系统安全和稳定的基础。ufw 和 firewalld 为 Web 服务打开必要的 HTTP/HTTPS 端口,这是让外界能够访问您网站的关键一步。systemctl 来启动、停止、重启、设置开机自启和检查服务状态,这是服务器日常运维的基本技能。这仅仅是一个开始。从这里出发,您可以继续探索更多高级主题,例如:
希望这篇指南能为您打开一扇通往 Linux 和 Web 开发世界的大门。记住,动手实践是最好的学习方式。不断尝试,不断探索,您将收获更多。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online