Linux 上搭建 Web 服务器

摘要

对于开发者与技术爱好者来说,拥有一台专属的 Web 服务器,是通往全栈之路的成人礼。它不仅是承载博客与作品集的基石,更是深度理解互联网架构的实验室。然而,Linux 陡峭的学习曲线常让初学者止步于命令行前。

本文旨在破除门槛,为你提供一份全流程、零死角的 Linux Web 服务器 实战指南。我们将深度解析 NginxApache 两大主流引擎,并覆盖 Debian/UbuntuRHEL/CentOS 全系发行版。从内核更新、安全加固到首个站点的上线,每一步都辅以详尽的命令解读,助你完成从 Linux 新手到站长的跨越。

一、引言:为何要在 Linux 上搭建 Web 服务器?

在当今这个时代,海外 VPS已经触手可及,价格也日益亲民。拥有一台 Linux 云服务器,就如同拥有了一块数字世界的"自留地",您可以在上面自由地构建和实验。而搭建 Web 服务器,就是在这块土地上盖起第一座房子的过程。

为什么选择 Linux?

开源与免费:Linux 内核及其上绝大多数的软件都是开源的,这意味着您可以免费使用,并且可以深入研究其源代码。

稳定与安全:Linux 以其卓越的稳定性和强大的安全模型著称,是全球绝大多数服务器的首选操作系统。

高性能:Linux 对系统资源的有效管理使其能够提供优异的性能,非常适合运行需要7x24小时不间断服务的 Web 应用。

强大的社区支持:遇到任何问题,您都可以在庞大的全球社区中找到答案和帮助。

本文将聚焦于两款最受欢迎的 Web 服务器软件:

  1. Nginx:发音为 "Engine-X",以其高性能、高并发和低资源消耗而闻名,特别擅长处理静态文件和作为反向代理。

  2. Apache HTTP Server:一款老牌、稳定且功能极其丰富的 Web 服务器,拥有庞大的模块生态系统,配置灵活,兼容性好。

我们将分别介绍如何在以下两种主流 Linux 发行版上安装它们,您可以根据自己的服务器系统选择对应的教程:

  • Ubuntu 22.04 (代表 Debian 家族)

  • CentOS Stream 9 (代表 RHEL/Fedora 家族)

准备好了吗?让我们开始这段激动人心的旅程吧!

二、准备工作:连接并更新你的服务器

在开始安装任何软件之前,我们需要先通过 SSH(Secure Shell) 登录到您的 Linux 服务器,并执行一次全面的系统更新。这是一个至关重要的好习惯,可以确保系统中的所有软件包都处于最新状态,修复已知的安全漏洞。

  1. 通过 SSH 连接服务器

您需要一个 SSH 客户端。在 Windows 10/11 上,您可以使用 PowerShell 或命令提示符;在 macOS 和 Linux 上,可以直接使用终端。命令格式如下:

复制代码
ssh username@your_server_ip
  • username:通常是 root 或您在创建服务器时设置的用户名。

  • your_server_ip:您服务器的公网 IP地址。

首次连接时,系统会提示您确认主机的真实性,输入 yes 并回车即可。然后输入您的密码,登录成功后,您将看到服务器的命令行欢迎信息。

  1. 更新系统软件包
  • 在 Ubuntu / Debian 上:

    更新可用软件包列表

    sudo apt update

    升级所有已安装的软件包到最新版本

    sudo apt upgrade -y

sudo 命令用于以管理员(root)权限执行命令。-y 标志会自动对所有提示回答"是"。

  • 在 CentOS / RHEL / Fedora 上:

    更新所有已安装的软件包到最新版本

    sudo dnf update -y

  • 在较旧的 CentOS 7 等版本中,使用的命令是 yum 而不是 dnf。

完成以上步骤后,您的服务器就已经处在一个干净且最新的状态,可以开始安装 Web 服务器软件了。

三、方案一:搭建 Nginx Web 服务器

Nginx 是现代 Web 架构的宠儿,我们将先介绍如何安装和配置它。

3.1 在 Ubuntu 22.04 上安装 Nginx

Ubuntu 的官方软件仓库中包含了 Nginx,安装过程非常直接。

  • 安装 Nginx

    sudo apt install nginx -y

  • 配置防火墙

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 状态。

  • 管理 Nginx 服务

安装完成后,Nginx 服务通常会自动启动。您可以使用 systemctl 命令来管理它。

复制代码
# 检查 Nginx 服务状态

sudo systemctl status nginx

# 如果服务未运行,手动启动

# sudo systemctl start nginx

# 设置 Nginx 开机自启

sudo systemctl enable nginx
  • 验证安装

现在,打开您的本地浏览器,在地址栏输入您服务器的公网 IP 地址:http://your_server_ip。如果一切顺利,您将看到 Nginx 的默认欢迎页面!

3.2 在 CentOS Stream 9 上安装 Nginx

在 CentOS Stream 9 上安装 Nginx 同样简单。

  • 安装 Nginx

    sudo dnf install nginx -y

  • 配置防火墙

CentOS 默认使用 firewalld 作为防火墙。

复制代码
# 永久允许 HTTP (端口 80) 和 HTTPS (端口 443) 流量

sudo firewall-cmd --permanent --add-service=http

sudo firewall-cmd --permanent --add-service=https

# 重新加载防火墙配置以使规则生效

sudo firewall-cmd --reload
  • 管理 Nginx 服务

    启动 Nginx 服务

    sudo systemctl start nginx

    设置 Nginx 开机自启

    sudo systemctl enable nginx

    检查服务状态

    sudo systemctl status nginx

  • 验证安装

同样地,在浏览器中访问 http://your_server_ip。您应该能看到 CentOS 上的 Nginx 欢迎页面。

四、方案二:搭建 Apache Web 服务器

Apache 历史悠久,社区庞大,资料丰富,是新手入门的另一个绝佳选择。

4.1 在 Ubuntu 22.04 上安装 Apache

  • 安装 Apache

在 Ubuntu 上,Apache 的软件包名为 apache2。

复制代码
sudo apt install apache2 -y
  • 配置防火墙

ufw 同样为 Apache 提供了预设配置。

复制代码
# 查看预设方案

sudo ufw app list

# 允许 Apache 的 HTTP 流量

sudo ufw allow 'Apache'

# 查看防火墙状态

sudo ufw status
  • 管理 Apache 服务

    检查 Apache 服务状态

    sudo systemctl status apache2

    设置开机自启

    sudo systemctl enable apache2

  • 验证安装

打开浏览器,访问 http://your_server_ip。您将看到 Apache 在 Ubuntu 上的默认页面,它会告诉您配置文件的位置等信息。

4.2 在 CentOS Stream 9 上安装 Apache

  • 安装 Apache

在 CentOS/RHEL 家族中,Apache 的软件包名为 httpd。

复制代码
sudo dnf install httpd -y
  • 配置防火墙

这与 Nginx 在 CentOS 上的防火墙配置完全相同。如果您之前已经为 Nginx 配置过,则无需重复操作。

复制代码
sudo firewall-cmd --permanent --add-service=http

sudo firewall-cmd --permanent --add-service=https

sudo firewall-cmd --reload
  • 管理 Apache 服务

    启动 httpd 服务

    sudo systemctl start httpd

    设置开机自启

    sudo systemctl enable httpd

    检查服务状态

    sudo systemctl status httpd

  • 验证安装

浏览器访问 http://your_server_ip,您会看到由 CentOS 提供的 Apache 测试页面。

五、部署你的第一个网页

现在服务器已经运行起来了,但它只显示默认页面。让我们用一个自定义的 "Hello, World!" 页面来替换它。

Web 服务器从一个特定的目录中读取文件并将其提供给访问者,这个目录被称为 Web 根目录 (Web Root)。

  • Nginx 的默认 Web 根目录: /usr/share/nginx/html/

  • Apache (Ubuntu) 的默认 Web 根目录: /var/www/html/

  • Apache (CentOS) 的默认 Web 根目录: /var/www/html/

1、创建 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

2、编写 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>

3、保存并退出

  • 在 nano 中,按下 Ctrl + X。

  • 它会询问您是否保存,按下 Y。

  • 最后按下 Enter 确认文件名。

4、刷新浏览器

现在,回到您的浏览器,刷新 http://your_server_ip 页面。您应该能看到您刚刚创建的 "Hello, World!" 页面了!

总结

紧随本指南的脚步,您已在 Linux 荒原上亲手筑起了一座 Web 站点的基石。这不仅是一个页面的上线,更是您掌控服务器世界的开端。让我们共同检阅这段征程中的重要里程碑:

  • 筑基: 跨越 SSH之门,完成系统更新,为服务器植入安全与稳定的基因。

  • 选型: 亲历 Nginx 与 Apache 的抉择,让主流 Web 引擎在您的指引下奔涌。

  • 破壁: 精准配置防火墙,打通 HTTP/HTTPS 航道,让您的创意跨越虚空,触达全球。

  • 掌控: 熟稔 systemctl 之术,让服务在您的指令下起止有序。

  • 入世: 深入根目录,部署首份 HTML 源码,见证数字世界从 0 到 1 的飞跃。

长风万里,未来可期。 今天的成功只是前奏,前方还有虚拟主机、LAMP/LEMP 动态环境、SSL安全加密以及高并发负载均衡等高峰等您攀登。

纸上得来终觉浅,绝知此事要躬行。 请保持这份好奇与热忱,继续在 Linux 的宇宙中谱写您的代码篇章。

拓展阅读与参考链接

1、Nginx 官方文档 (Beginner's Guide)

  • 简介:Nginx 官方提供的入门指南,内容权威、准确,是深入学习 Nginx 配置和原理的最佳起点。

2、Apache HTTP Server 官方文档

  • 简介:Apache 的官方文档库,非常全面,涵盖了从基础配置到高级模块开发的所有内容。

3、DigitalOcean Community Tutorials

  • 简介:一个高质量的技术教程社区,拥有大量关于 Linux 系统管理、Web 服务器配置(包括 LAMP/LEMP 栈)的优秀文章,步骤清晰,解释详尽。

4、Let's Encrypt 官网

  • 简介:一个免费、自动化、开放的证书颁发机构。当您准备为您的网站启用 HTTPS 时,这里是您获取免费 SSL 证书的首选之地,其提供的 Certbot 工具可以极大地简化配置过程。

5、MDN Web Docs: HTML Introduction

  • 简介:如果您对创建网页本身感兴趣,Mozilla 开发者网络 (MDN) 提供了最权威、最全面的前端技术学习资料,从 HTML、CSS 到 JavaScript,应有尽有。

本文原发于我的博客:landonVPS

相关推荐
css趣多多2 小时前
路由全局守卫
前端
云游云记2 小时前
nesbot/carbon 常用功能总结
linux·运维·服务器
慵懒的猫mi2 小时前
从XDG正式支持如意玲珑(Linyaps)看如意玲珑的发展与架构演进
linux·开源软件·deepin
landonVM2 小时前
Linux 下的高效压缩工具 Zstandard
linux·运维·服务器
AI视觉网奇2 小时前
huggingface-cli 安装笔记2026
前端·笔记
遇见火星2 小时前
服务器运维操作命令速查手册
运维·服务器
比特森林探险记2 小时前
组件通信 与 ⏳ 生命周期
前端·javascript·vue.js
EmbedLinX2 小时前
Linux之内存管理
linux·服务器·c语言·c++
2301_792580002 小时前
xuepso
java·服务器·前端