【Linux】教你在 Linux 上搭建 Web 服务器,步骤清晰无门槛 - 详解

news/2025/11/21 21:44:56/文章来源:https://www.cnblogs.com/yangykaifa/p/19254591

在这里插入图片描述


【Linux】教你在 Linux 上搭建 Web 服务器,步骤清晰无门槛

  • 摘要
    • 一、引言:为何要在 Linux 上搭建 Web 服务器?
    • 二、准备工作:连接并更新你的服务器
    • 三、方案一:搭建 Nginx Web 服务器
      • 3.1 在 Ubuntu 22.04 上安装 Nginx
      • 3.2 在 CentOS Stream 9 上安装 Nginx
    • 四、方案二:搭建 Apache Web 服务器
      • 4.1 在 Ubuntu 22.04 上安装 Apache
      • 4.2 在 CentOS Stream 9 上安装 Apache
    • 五、部署你的第一个网页
    • 总结
    • 拓展阅读与参考链接


摘要

对于许多开发者和技术爱好者而言,拥有一个属于自己的 Web 服务器是迈向更广阔技术世界的第一步。它不仅是学习网络知识、托管个人博客、展示作品集的平台,更是理解互联网工作原理的绝佳实践。然而,面对 Linux 的命令行,许多新手可能会望而却步。本文旨在打破这一壁垒,提供一份超详细、步骤清晰、真正零门槛的 Linux Web 服务器搭建指南。我们将以当前最主流的两种 Web 服务器软件 Nginx 和 Apache 为例,分别在两大主流 Linux 发行版家族(基于 Debian/Ubuntu 和基于 RHEL/CentOS)上进行实战演示。从系统更新、软件安装、防火墙配置,到部署第一个网页,每一步都配有详尽的命令和解释,确保即便您是第一次接触 Linux,也能轻松跟上,成功点亮您的第一个网站。


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

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

为什么选择 Linux?

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

  1. Nginx:发音为 “Engine-X”,以其高性能、高并发和低资源消耗而闻名,特别擅长处理静态文件和作为反向代理。
  2. Apache HTTP Server:一款老牌、稳定且功能极其丰富的 Web 服务器,拥有庞大的模块生态系统,配置灵活,兼容性好。

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

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

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

在开始安装任何软件之前,我们需要先通过 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 并回车即可。然后输入您的密码,登录成功后,您将看到服务器的命令行欢迎信息。

  2. 更新系统软件包

    • 在 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,安装过程非常直接。

  1. 安装 Nginx

    sudo apt install nginx -y
  2. 配置防火墙

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

  3. 管理 Nginx 服务

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

    # 检查 Nginx 服务状态
    sudo systemctl status nginx
    # 如果服务未运行,手动启动
    # sudo systemctl start nginx
    # 设置 Nginx 开机自启
    sudo systemctl enable nginx
  4. 验证安装

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

3.2 在 CentOS Stream 9 上安装 Nginx

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

  1. 安装 Nginx

    sudo dnf install nginx -y
  2. 配置防火墙

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

    # 永久允许 HTTP (端口 80) 和 HTTPS (端口 443) 流量
    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    # 重新加载防火墙配置以使规则生效
    sudo firewall-cmd --reload
  3. 管理 Nginx 服务

    # 启动 Nginx 服务
    sudo systemctl start nginx
    # 设置 Nginx 开机自启
    sudo systemctl enable nginx
    # 检查服务状态
    sudo systemctl status nginx
  4. 验证安装

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

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

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

4.1 在 Ubuntu 22.04 上安装 Apache

  1. 安装 Apache

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

    sudo apt install apache2 -y
  2. 配置防火墙

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

    # 查看预设方案
    sudo ufw app list
    # 允许 Apache 的 HTTP 流量
    sudo ufw allow 'Apache'
    # 查看防火墙状态
    sudo ufw status
  3. 管理 Apache 服务

    # 检查 Apache 服务状态
    sudo systemctl status apache2
    # 设置开机自启
    sudo systemctl enable apache2
  4. 验证安装

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

4.2 在 CentOS Stream 9 上安装 Apache

  1. 安装 Apache

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

    sudo dnf install httpd -y
  2. 配置防火墙

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

    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    sudo firewall-cmd --reload
  3. 管理 Apache 服务

    # 启动 httpd 服务
    sudo systemctl start httpd
    # 设置开机自启
    sudo systemctl enable httpd
    # 检查服务状态
    sudo systemctl status httpd
  4. 验证安装

    浏览器访问 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 服务器,并部署了第一个自定义网页。我们回顾一下核心步骤:

  1. 连接与准备:通过 SSH 登录服务器,并使用 aptdnf 更新系统,这是保证系统安全和稳定的基础。
  2. 选择与安装:我们演示了如何在 Ubuntu 和 CentOS 上安装 Nginx 和 Apache 这两款主流的 Web 服务器软件。
  3. 防火墙配置:学习了如何使用 ufwfirewalld 为 Web 服务打开必要的 HTTP/HTTPS 端口,这是让外界能够访问您网站的关键一步。
  4. 服务管理:掌握了使用 systemctl 来启动、停止、重启、设置开机自启和检查服务状态,这是服务器日常运维的基本技能。
  5. 内容部署:了解了 Web 根目录的概念,并成功创建并部署了一个简单的 HTML 页面。

这仅仅是一个开始。从这里出发,您可以继续探索更多高级主题,例如:

  • 配置虚拟主机,在同一台服务器上托管多个不同的网站。
  • 安装 PHP、MySQL/MariaDB,搭建经典的 LAMP 或 LEMP 环境以支持动态网站(如 WordPress)。
  • 申请并配置 SSL 证书,启用 HTTPS,保障网站数据传输安全。
  • 学习 Nginx/Apache 的高级配置,实现负载均衡、反向代理等功能。

希望这篇指南能为您打开一扇通往 Linux 和 Web 开发世界的大门。记住,动手实践是最好的学习方式。不断尝试,不断探索,您将收获更多。


拓展阅读与参考链接

  1. Nginx 官方文档 (Beginner’s Guide)

  2. Apache HTTP Server 官方文档

  3. DigitalOcean Community Tutorials

  4. Let’s Encrypt 官网

  5. MDN Web Docs: HTML Introduction


✨ 坚持用 清晰易懂的图解 + 代码语言, 让每个知识点都 简单直观
个人主页 :不呆头 · CSDN
代码仓库 :不呆头 · Gitee
专栏系列

座右铭“不患无位,患所以立。”在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/972568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【第7章 I/O编程与异常】\r\n 和 \n\r是一回事吗?

\r\n 和 \n\r 不是一回事,它们是两种完全不同的字节序列,在语义和实际效果上也完全不同。 一、含义对比 序列 字节(十六进制) 含义\r\n 0x0D 0x0A 回车(Carriage Return) + 换行(Line Feed)✅ Windows 标准换行…

2025-11-21

CF Problem - 1234C - Codeforces(贪心) #include <bits/stdc++.h> using namespace std; #define LL long long const LL mod = 998244353; const int N=2e5+10; string s[2];void solve() {int n;cin >&g…

深入解析:windows显示驱动开发-CCD api的摘要及方案(一)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

nju实验七 状态机及键盘输入

本实验的目的是学习状态机的工作原理,了解状态机的编码方式,并利用PS/2键盘输入实现简单状态机的设计。实验七 状态机及键盘输入 简单状态机 . ├── build ├── constr │ └── top.nxdc ├── csrc │ └…

2025-11-21 XQQ NOIP Round 1 hetao1733837的record

2025-11-21 XQQ NOIP Round 1 hetao1733837的record2025-11-21 XQQ NOIP Round 1 hetao1733837的record A.tree 提交链接:树 题面 题目描述 给定一棵 $n$ 个点的树和一个长度为 $n$ 的数组 $score[0], ..., score[n-1…

Gephi如何支持MySQL数据的复杂查询

Gephi是一个用于网络可视化的开源软件,它主要处理的是图数据结构。虽然Gephi本身并不直接支持MySQL数据库的复杂查询,但你可以通过以下步骤将MySQL中的数据导入到Gephi中,并在Gephi中进行进一步的处理和分析:数据提…

Mozilla CI日志中暴露微软x-apikey的安全事件分析

微软遥测API密钥在Mozilla持续集成公共日志中意外暴露。该密钥出现在自动化Firefox测试期间发送到微软遥测端点的HTTP POST请求中,通过mitmproxy日志捕获。尽管安全影响有限,但Mozilla已采取措施防止未来凭证泄露。报…

Gephi中MySQL数据的节点和边如何设置

在Gephi中,使用MySQL数据源时,首先需要导入数据到Gephi的工作空间。以下是设置节点(Node)和边(Edge)的一般步骤:导入MySQL数据:使用Gephi的MySQL插件或其他适当的方法连接到您的MySQL数据库。 执行SQL查询以提…

Gephi怎样优化MySQL数据的展示效果

Gephi是一个用于网络可视化的开源软件,它可以帮助用户创建网络图和数据可视化。然而,Gephi本身并不直接与MySQL数据库交互,它通常用于处理和分析已经存在于内存或文件中的数据集。如果你想要优化MySQL数据的展示效果…

Gephi对MySQL数据的导入导出有何支持

Gephi是一个用于网络可视化的开源软件,它主要处理的是图数据结构。关于Gephi对MySQL数据的导入导出支持,这通常取决于Gephi的版本以及用户是否进行了特定的配置或开发。在标准的Gephi版本中,可能并没有直接针对MySQ…

Fisrt Blog

音视频简介 这是单个代码,find() 这是一段代码 #include<stdio.h> int main() {code } 213213"213231" 这是斜体 这是加粗 ffmpeg find函数她有以下几个用法:第一个用法是 第二个用法我是十个机器人…

揭秘Java对象的内存占用量:从面试题到底层原理

你是否在面试中被问到过:“一个new Object()在JVM中占多少内存?” 这个问题看似简单,却考察了你对Java内存模型(JVM)、数据结构和性能优化的理解深度。今天,我们就来彻底搞懂它。 一、核心结论:一个Java对象的三…

nju实验六 移位寄存器及桶形移位器

本实验将学习常用的移位寄存器的设计,并实现在移位指令中需要用到的桶形移位器。实验六 移位寄存器及桶形移位器 算术移位和逻辑移位寄存器 module shift_register_8bit (input clk, // 时钟信号input r…

P6727 [COCI 2015/2016 #5] OOP

题目给出字符串按 * 断开得到前后两段 \(P,S\),即要求满足一下条件的模式串个数:具有前缀 \(P\),后缀 \(S\)。\(|P|+|S|\le siz\)。

c语言和python如何解决文本文件中“不同平台换行符不兼容”问题

在 C 语言和 Python 中解决不同平台换行符不兼容的核心思路一致:统一换行符标准(推荐使用 \n),或在读写时适配目标平台。以下是具体实现方案: 一、核心背景:不同平台的换行符差异平台 换行符 说明Unix/Linux \n …

智能制造(MOM)-详细设计 - 智慧园区

数字化智能制造成熟度框架 数字化智能工厂应用架构 数字化智能工厂技术架构 数字化智能工厂制造体系 未来数字化智能工厂愿景 价值驱动的数字化智能工厂指标 关键环节解决方案 端到端闭环的运营协同 产品BOPIMBOM数据流…

完整教程:政务系统信创改造中,金仓日志如何满足等保2.0三级审计要求

完整教程:政务系统信创改造中,金仓日志如何满足等保2.0三级审计要求2025-11-21 21:12 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto…

基于 Erlang 的英文数字验证码识别系统设计与实现

一、引言 验证码(CAPTCHA)作为互联网中抵御自动化攻击的重要安全机制,被广泛用于登录验证、注册防刷、评论防机器人等场景。 传统验证码识别常用 Python 或 C++ 实现,而本文将介绍如何用 Erlang 来构建一个基础的英…

如何使用IDM嗅探视频并下载?

用 IDM 嗅探下载网页视频,优先用浏览器浮窗一键下载;浮窗不出现则补全插件/格式、手动抓直链或用站点抓取;加密/分离流需先合并,全程遵守版权与站点规则。🎬前置准备(必做)安装官方最新 IDM,激活并重启;安装…

洛谷 B4409:[GESP202509 一级] 商店折扣 ← 模拟算法

​【题目来源】https://www.luogu.com.cn/problem/B4409【题目描述】商店正在开展促销活动,给出了两种方案的折扣优惠。第一种方案是购物满 x 元减 y 元;第二种方案是直接打 n 折,也就是说价格变为原先的 n/10。这里…