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

【Linux】教你在 Linux 上搭建 Web 服务器,步骤清晰无门槛
在这里插入图片描述

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


摘要

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


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

在当今这个时代,云服务器已经触手可及,价格也日益亲民。拥有一台 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 服务器,并执行一次全面的系统更新。这是一个至关重要的好习惯,可以确保系统中的所有软件包都处于最新状态,修复已知的安全漏洞。

    • username:通常是 root 或您在创建服务器时设置的用户名。
    • your_server_ip:您服务器的公网 IP 地址。
  1. 更新系统软件包

在 CentOS / RHEL / Fedora 上:

# 更新所有已安装的软件包到最新版本sudo dnf update -y 

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

在 Ubuntu / Debian 上:

# 更新可用软件包列表sudoapt update # 升级所有已安装的软件包到最新版本sudoapt upgrade -y 

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

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

ssh username@your_server_ip 

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

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

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

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

3.1 在 Ubuntu 22.04 上安装 Nginx

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

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

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

安装 Nginx

sudoaptinstall nginx -y 

3.2 在 CentOS Stream 9 上安装 Nginx

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

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

管理 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 

安装 Nginx

sudo dnf install nginx -y 

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

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

4.1 在 Ubuntu 22.04 上安装 Apache

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

管理 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 

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

sudoaptinstall apache2 -y 

4.2 在 CentOS Stream 9 上安装 Apache

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

管理 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 

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

sudo dnf install httpd -y 

五、部署你的第一个网页

现在服务器已经运行起来了,但它只显示默认页面。让我们用一个自定义的 “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. 保存并退出
    • nano 中,按下 Ctrl + X
    • 它会询问您是否保存,按下 Y
    • 最后按下 Enter 确认文件名。
  2. 刷新浏览器现在,回到您的浏览器,刷新 http://your_server_ip 页面。您应该能看到您刚刚创建的 “Hello, World!” 页面了!

编写 HTML 内容在打开的 nano 编辑器中,粘贴以下简单的 HTML 代码:

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="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>

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

总结

恭喜你!通过遵循本指南,您已经成功地在 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)
    • 简介: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,应有尽有。

✨ 坚持用清晰易懂的图解+代码语言, 让每个知识点都简单直观!
🚀 个人主页不呆头 · ZEEKLOG
🌱 代码仓库不呆头 · Gitee
📌 专栏系列 :📖 《C语言》🧩 《数据结构》💡 《C++》🐧 《Linux》💬 座右铭 :“不患无位,患所以立。”

Read more

已解决centos7 yum报错:cannot find a valid baseurl for repo:base/7/x86_64的解决方案

已解决centos7 yum报错:cannot find a valid baseurl for repo:base/7/x86_64的解决方案

出现cannot find a valid baseurl for repo:base/7/x86_64错误通常是由于YUM仓库源无法找到或无法访问,导致YUM无法正常工作。这种情况常见于CentOS 7系统。解决这个问题需要检查几个方面,如网络连接、DNS设置和YUM仓库源配置。 🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。ZEEKLOG优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:gylzbk) 💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,

By Ne0inhk
从云原生部署到智能时序分析:基于 Kubernetes 的 Apache IoTDB 集群实战与 TimechoDB 国产化增强特性深度解析

从云原生部署到智能时序分析:基于 Kubernetes 的 Apache IoTDB 集群实战与 TimechoDB 国产化增强特性深度解析

从云原生部署到智能时序分析:基于 Kubernetes 的 Apache IoTDB 集群实战与 TimechoDB 国产化增强特性深度解析 前言 随着物联网设备规模的指数级增长,传感器产生的海量时序数据对传统数据库的性能、可扩展性与成本控制提出了更高要求。Apache IoTDB 作为专为物联网场景设计的时序数据库,凭借高压缩比、百万级写入能力及毫秒级查询性能,成为物联网数据存储与分析的核心基础。本文将从 IoTDB 的核心特性 出发,深入讲解其在 Kubernetes 环境中的部署实践、CRUD 操作示例,并延伸至 TimechoDB 的国产化增强能力,帮助读者全面掌握从单节点到云原生集群的 IoTDB 实战部署与应用方法,为构建高效、可扩展的时序数据平台提供系统参考。 Apache IoTDB 核心特性与价值 Apache IoTDB 专为物联网场景打造的高性能轻量级时序数据库,以 “设备 - 测点” 原生数据模型贴合物理设备与传感器关系,通过高压缩算法、百万级并发写入能力和毫秒级查询响应优化海量时序数据存储成本与处理效率,同时支持边缘轻量部署、

By Ne0inhk

Docker 零基础入门:一篇搞懂 Docker 是什么、为什么要用它

适合人群:纯新手、没接触过容器、只想先搞懂 Docker 核心概念的同学文章定位:不讲底层原理、不写复杂命令,只说清楚「Docker 是干啥的」「为什么项目离不开它」 一、前言:先说说你一定会遇到的痛点 做开发 / 运维的朋友,大概率都听过这句话:「在我电脑上跑的好好的,怎么到服务器上就报错了?」 * 开发用 Windows,测试用 Mac,生产用 Linux,环境不一样 * 项目依赖的 JDK、Python、MySQL、Nginx 版本不统一 * 装一个软件要配一堆环境,换台机器就得重来一遍 * 多个项目依赖冲突,改一个崩另一个 这些问题,Docker 就是专门来解决的。 二、Docker 到底是什么?(大白话版) 1. 最通俗的比喻:Docker = 「软件集装箱」 你可以把服务器看成一艘大货轮,应用

By Ne0inhk
【Linux指南】进程控制系列(五)实战 —— 微型 Shell 命令行解释器实现

【Linux指南】进程控制系列(五)实战 —— 微型 Shell 命令行解释器实现

前面四篇文章,我们已经掌握了进程控制的 “全链路技能”:用fork创建子进程、exec替换程序、waitpid回收资源、exit终止进程。今天,我们将这些知识 “组装” 成一个能实际运行的工具 ——微型 Shell 命令行解释器(简称 “迷你 Shell”)。 这个迷你 Shell 将支持:命令行提示符(如[user@host dir]#)、内建命令(cd/export/env/echo)、外部命令(ls/ps等)、环境变量管理(继承与导出),完全遵循 Linux Shell 的核心工作逻辑。通过亲手实现,你会彻底明白 “输入一条命令后,Shell 到底在做什么”。 一、先搞懂:Shell 的本质是 “命令管家” 在写代码前,

By Ne0inhk