【实战教程】Nginx静态Web服务器部署,轻松掌握!

Nginx 是一个高性能、开源的 Web 服务器软件,它可以作为反向代理服务器、负载均衡器和 HTTP 缓存等。在这里,我们将介绍如何在 Nginx 上部署静态 Web 服务器。

部署静态 Web 服务器的流程包括以下步骤:

  • 安装 Nginx;
  • 配置网站;
  • 创建静态网页;
  • 重新加载 Nginx 配置;
  • 测试网站;

在执行每个步骤之前,请确保你具有适当的权限。这些步骤的详细说明可以在下一个问题中找到。

如果你需要更复杂的服务器配置,例如使用 SSL/TLS 加密或部署动态 Web 应用程序,则需要进行更多的配置和设置。但是,部署静态 Web 服务器是一个很好的开始。

部署服务-Nginx静态Web服务器部署实验

下面实验是在**云端源想云实验室上进行, 点击进行实验**

实验流程和具体步骤截图如下:

拖建环境

从左侧设备列表左键按住拖建一台服务器和一台客户端

环境系统为 Ubuntu Linux 系统

服务器上搭建Nginx服务器

1.启动服务器并进入终端操作

右键点击服务器-选择启动服务

启动后,右键点击服务器-选择打开终端,进入服务器的控制终端

终端界面,可点击全屏展示

2.安装Nginx

终端内(可全屏操作)

更新本地软件包列表

sql 复制代码
apt update

使用命令安装Nginx

apt install nginx

出现需确认才可继续执行时 输入 Y 继续执行

kotlin 复制代码
Need to get 4032 kB of archives.
After this operation, 12.7 MB of additional disk space will be used.
Do you want to continue? [Y/n]  Y

使用查看命令查看Nginx是否安装成功

nginx -v

出现Nginx的版本 说明安装成功

yaml 复制代码
nginx version: nginx/1.18.0 (Ubuntu)

点击尝试实验

3.配置Nginx

默认情况下,Nginx 的主配置文件位于 /etc/nginx/nginx.conf。我们需要查看并配置服务器

找到 nginx.conf 文件位置,进入目录 /etc/nginx/,并使用 ll 命令查看目录下文件

bash 复制代码
cd /etc/nginx/

ll

找到配置文件 下面来查看配置文件

  • 查看并编辑配置文件

    vim nginx.conf

  • 我们需要做的配置内容为下面代码块内容,需要确保在 http 部分包含以下内容(如果不存在,可以手动添加)

    server { listen 80; server_name 172.17.0.33; root /usr/local/share/myweb

    css 复制代码
    location / {
        allow all;
    }

    }

*拓展知识:上述代码为Nginx 配置文件中 server 块的示例。让我们逐行解释每个子项的含义:

  1. listen 80;: 指定服务器监听的端口号为80,表示该服务器将使用HTTP协议进行通信。

  2. server\\_name 172.17.0.33;: 指定服务器的域名或IP地址。在这个示例中,服务器的名称是IP地址 172.17.0.33。

  3. root /usr/local/share/myweb;: 指定服务器上的根目录,用于存放网站文件。文件和目录的相对路径将从此根目录开始解析。

  4. location / {...}: 定义请求的处理方式。在这个示例中,/ 表示根URL路径,即所有请求都会被该 location 块处理。

  5. allow all;: 允许所有客户端访问该服务器上的资源。这意味着没有访问限制,任何人都可以访问服务器提供的网站。

  • 查看整个主配置文件我们并没有在 http 部分找到 server 块,但是我们在http部分内可以看到一行有用的信息,配置文件的其他目录

*拓展知识:现在我们已经了解到Nginx配置文件在不同目录下有三个常见位置,它们的作用和区别如下:

  1. /etc/nginx/nginx.conf: 这是 Nginx 的主配置文件,包含全局配置指令和 http 块。在这个文件中,你可以配置全局设置,如工作进程数、日志路径、默认的服务器块等。这个文件通常只有一个,用于指定整个 Nginx 服务的行为。

  2. /etc/nginx/conf.d/\\*.conf: 在这个目录下,可以放置一些额外配置文件,以 .conf 结尾。这些文件中可以包含其他 httpserver 块的配置。这个目录的配置文件通常用于组织和管理 Nginx 的不同模块配置,方便维护和扩展。

  3. /etc/nginx/sites-enabled/\\*: 这个目录通常包含多个针对不同网站或应用程序的配置文件,以 .conf 结尾。这些配置文件通过在 /etc/nginx/sites-available/ 目录中创建符号链接进行启用。每个配置文件代表一个独立的虚拟主机或应用的 Nginx 配置。通过将文件符号链接到 sites-enabled 目录,可以启用或禁用特定的站点配置,从而选择性地加载配置。通常情况下,这个目录的配置文件用于定义具体的网站配置,包括监听的端口、域名、SSL 证书等。

简而言之

r 复制代码
`nginx.conf` 是 Nginx 的主配置文件,用于全局设置;

`conf.d/\*.conf` 目录是用于存放额外的配置文件,可以包含其他 `http` 或 `server` 块的配置;

`sites-enabled/\*` 目录是用于存放针对不同网站或应用程序的配置文件,通过启用或禁用符号链接来选择性地加载配置。

这种文件的分组和分割可以提高配置管理的可维护性和灵活性。

  • 根据上述介绍,我们选择将自己的配置文件放在 /etc/nginx/conf.d/ 路径下

取消 nginx.conf 文件的编辑,进入 /etc/nginx/conf.d/ 路径目录,并创建配置文件 myweb.conf

bash 复制代码
cd /etc/nginx/conf.d/

touch myweb.conf
  • 查看并编辑配置文件 myweb.conf

    vim myweb.conf

  • 正确输入上述 server 块内内容,保存并关闭

  • 可以使用 cat 命令查看内容是否已正确保存

到此,还需要获取服务器的IP地址 和 创建根目录

  • 获取服务器IP地址

    ip addr show eth0

该命令会输出容器内默认网卡 eth0 网卡的信息。 我们在inet后找到IP地址。

找到IP地址后,修改 myweb.conf 文件内的 server\_name 对应地址,可以使用 cat 命令查看是否正确修改

  • 创建根目录

进入 /usr/local/share/ 目录,并在其下用 mkdir 创建我们的根目录,可使用 ll 命令查看是否正确创建

bash 复制代码
cd /usr/local/share/

mkdir myweb
  • 在根目录下,创建一个静态web文件 hello.html

    cd /usr/local/share/myweb/

    touch hello.html

  • 编辑文件

    vim hello.html

  • 文件内容为:

    Hello, World!

保存并退出,可使用 cat hello.html 查看内容是否正确保存

  • 至此,我们的 server 块内容全部获取并做好了配置文件,下面我们来启动Nginx服务并校验配置是否正确生效

4.启动Nginx

  • 启动Nginx服务后再查看Nginx服务状态是否正常启动并正在运行

    service nginx start

    service nginx status

我们发现Nginx服务并没有正常启动,开始查找原因

  • 优先查看是否配置文件有错,可以使用 nginx -t 命令检查配置文件是否有语法错误。

可以看到是在配置文件/etc/nginx/conf.d/myweb.conf的root指令末尾没有以 ";" 结尾,找到原因后修改配置文件。

bash 复制代码
vim /etc/nginx/conf.d/myweb.conf

修改后保存退出,再次启动Nginx服务并查看其状态

看到,Nginx服务已经正常启动了

*拓展知识:Nginx无法正常启动报错排查:

  • 这里我们可以再了解下当Nginx服务无法正常启动时,几个常用的排错方法:
  1. 检查配置文件:请确保Nginx配置文件内容正确无误。可以使用 nginx -t 命令检查配置文件是否有语法错误。

  2. 查看日志文件:尝试查看 Nginx 的错误日志文件,通常位于 /var/log/nginx/error.log。其中可能包含有关为何无法启动 Nginx 的详细错误消息。

    cat /var/log/nginx/error.log

  1. 查看端口占用情况:如果另一个进程已经在使用 Nginx 默认的监听端口(例如80或443),那么启动 Nginx 将会失败。你可以使用 netstatss 命令来检查端口占用情况。

    netstat -tuln | grep -E '80|443' ss -tulpn | grep :80|443

  1. 以 root 用户权限启动:确认你以 root 用户身份运行了 service nginx start 命令。

  2. 解决文件权限问题:确保 Nginx 进程对配置文件和相关目录具有适当的访问权限。可以使用以下命令修复权限问题:

    chown -R www-data:www-data /etc/nginx

这将把配置文件和目录的所有权设置为 Nginx 进程所需的用户和组(通常是 www-data)。

至此 Nginx服务器及其配置已全部完成,下面我们来测试其访问是否正常

客户端上访问服务器上Nginx静态Web服务器内页面

1.启动客户端服务并构建客户端到服务器的访问权限

  • 右键点击客户端-启动服务,启动客户端服务器

  • 连线:连接一条客户端指向服务器的连线,以创建从客户端到服务器的访问权限

2.客户端通过IP访问服务器上静态文件

  • 客户端进入终端

右键点击客户端-打开操作终端

  • 使用命令 curl 命令访问服务器上的静态页面

先安装 curl 命令

sql 复制代码
apt update

apt install curl

访问静态页面

arduino 复制代码
curl http://172.17.0.65/hello.html

我们通过访问可以看到静态页面的内容

至此结束

有兴趣的小伙伴快去云端源想云实验实操吧

相关推荐
aidroid11 分钟前
git github仓库管理
linux·运维·docker
不染_是非12 分钟前
Django学习实战篇六(适合略有基础的新手小白学习)(从0开发项目)
后端·python·学习·django
三朝看客32 分钟前
k8s自动清理pod脚本分享
linux·docker
代码对我眨眼睛44 分钟前
springboot从分层到解耦
spring boot·后端
The Straggling Crow1 小时前
go 战略
开发语言·后端·golang
ai安歌1 小时前
【JavaWeb】利用IDEA2024+tomcat10配置web6.0版本搭建JavaWeb开发项目
java·开发语言·后端·tomcat·web·intellij idea
尘浮生1 小时前
Java项目实战II基于Java+Spring Boot+MySQL的作业管理系统设计与实现(源码+数据库+文档)
java·开发语言·数据库·spring boot·后端·mysql·spring
奇点 ♡1 小时前
【线程】线程的控制
linux·运维·c语言·开发语言·c++·visual studio code
学习3人组2 小时前
CentOS安装Hadoop系列
linux·hadoop·centos
程序员阿鹏2 小时前
ArrayList 与 LinkedList 的区别?
java·开发语言·后端·eclipse·intellij-idea