一.web基础
本节将介绍web基础知识,包括域名的概念、DNS原理、静态网页和动态网页的相关知识。
域名和DNS
域名的概念
域名是由一串用点分隔的字符组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。以下是关于域名概念的详细解释:
- 作为网站的标识:域名是网站在互联网上的“门牌号码”,是用户访问网站的重要入口。例如,当你在浏览器地址栏输入“https://www.taobao.com/”,其中“www.taobao.com”就是淘宝网站的域名。用户通过输入域名,就能准确地找到他们想要访问的网站,而无需记住复杂的IP地址。
- 具有唯一性:在整个互联网中,每个域名都是独一无二的。这就确保了网络上的每台计算机或网站都能通过其特定的域名被准确识别和访问,避免了地址混淆的问题。
- 由不同部分组成:域名通常由顶级域名、二级域名等多个部分组成,各部分之间用点号分隔。以“www.example.com”为例,“com”是顶级域名,代表商业机构;“example”是二级域名,是用户注册域名时自行定义的部分,用于区分不同的网站所有者;“www”是子域名,通常用于表示网站的不同服务或功能模块,但并非所有域名都有子域名。
- 便于记忆和使用:与IP地址相比,域名更符合人类的记忆习惯。IP地址是由数字组成的,例如“192.168.1.1”,很难被人们记住。而域名可以使用有意义的单词、词组或缩写等,如“baidu”“qq”等,方便用户记忆和输入,极大地提高了人们访问互联网资源的效率。
- 需要注册和管理:要使用一个域名,必须向相关的域名注册机构进行注册,并按照规定缴纳费用。注册后,域名所有者拥有该域名的使用权,并需要遵守相关的域名管理规定,负责对域名进行管理和维护,包括域名的续费、信息变更、解析设置等。
hosts文件
- 定义:hosts文件是一个操作系统本地的文本文件,用于将主机名映射到IP地址。它的作用类似于一个本地的DNS缓存。
- 工作原理:当用户在浏览器中输入一个域名时,操作系统会首先检查hosts文件中是否有该域名对应的IP地址记录。如果有,就会直接使用该IP地址进行访问,而不会去请求DNS服务器;如果没有,才会向DNS服务器发起查询请求。
- 文件位置:不同的操作系统,hosts文件的位置有所不同。在Windows系统中,它通常位于
C:\Windows\System32\drivers\etc\hosts
;在Linux和macOS系统中,它位于/etc/hosts
。 - 示例:在hosts文件中添加如下内容:
127.0.0.1 localhost
这表示将 localhost
这个域名映射到本地的IP地址 127.0.0.1
。
DNS
DNS,即域名系统(Domain Name System),是互联网的一项核心服务。以下是关于它的详细介绍:
定义与作用
- DNS是一种将域名和IP地址相互映射的分布式数据库系统。它的主要作用是让用户能够通过方便记忆的域名来访问互联网上的各种资源,而无需记住复杂的IP地址。例如,当用户在浏览器中输入“www.baidu.com”时,DNS系统会将这个域名转换为对应的IP地址,如“14.215.177.38”,这样计算机才能在网络中准确找到目标服务器并获取相应的信息。
工作原理
- 当用户在浏览器中输入一个域名时,计算机首先会检查本地的DNS缓存,如果缓存中存在该域名对应的IP地址,就直接使用该地址进行访问。如果缓存中没有,就会向本地DNS服务器发送查询请求。
- 本地DNS服务器如果不知道该域名的IP地址,它会向上级DNS服务器(如根域名服务器、顶级域名服务器等)发送查询请求,按照域名的层级结构逐步查找,直到找到能够解析该域名的服务器,并获取到对应的IP地址。
- 最后,本地DNS服务器将获取到的IP地址返回给用户的计算机,同时也会在本地缓存中保存一份,以便下次查询时可以更快地响应。
域名结构
- DNS采用层次化的域名结构,由多个部分组成,各部分之间用“.”分隔。例如,“www.example.com”中,“com”是顶级域名,表示商业机构;“example”是二级域名,通常代表具体的组织或网站;“www”是主机名,用于标识特定的服务器或服务。
重要性
- DNS是互联网运行的基础架构之一,它使得互联网的访问更加便捷和人性化。如果DNS系统出现故障,将会导致用户无法通过域名访问网站,严重影响互联网的正常使用。同时,DNS的安全性也至关重要,一旦遭受,如DNS劫持、缓存污染等,可能会导致用户被重定向到恶意网站,造成信息泄露、财产损失等安全问题。
域名注册
- 定义:域名注册是指用户向域名注册商申请并获得一个特定域名的使用权的过程。
- 流程:
- 查询域名可用性:用户首先需要在域名注册商的网站上查询自己想要的域名是否已经被注册。如果该域名未被注册,就可以进行下一步操作。
- 选择注册商:市面上有许多域名注册商可供选择,如阿里云、腾讯云、GoDaddy等。用户需要根据自己的需求和喜好选择合适的注册商。
- 填写注册信息:在选定注册商后,用户需要填写自己的个人或企业信息,包括姓名、联系方式、邮箱地址等。
- 支付费用:根据域名的类型和注册年限,支付相应的费用。不同的域名后缀和注册年限,费用也会有所不同。
- 完成注册:支付成功后,注册商会为用户完成域名注册手续,用户就正式获得了该域名的使用权。
域名注册后,还需要进行域名解析,即将域名指向对应的服务器IP地址,这样用户才能通过域名访问到网站。
网页与HTML
网页概述
网页是互联网上信息展示和交互的基本单元,以下是对网页的概述:
定义与作用
- 网页是一种用HTML等标记语言编写,并通过浏览器在互联网上展示的文档。它是网站的组成部分,用于向用户呈现各种信息,如文字、图片、视频等,同时也支持用户与网站进行交互,如提交表单、点击链接等。
组成元素
- 文本:是网页中最基本的元素,用于传递信息,用户可以通过阅读文本了解网页的内容。
- 图像:能直观地展示信息或美化网页,使网页更具吸引力和视觉效果,常见的图像格式有JPEG、PNG、GIF等。
- 链接:是网页的重要元素,它可以将不同的网页或网站连接起来,使用户能够在互联网上方便地浏览和跳转,实现信息的快速传递和共享。
- 表单:用于收集用户输入的信息,如注册登录信息、调查问卷答案等,实现用户与网站之间的交互。
- 多媒体:包括音频、视频等元素,能丰富网页的内容,提供更生动的用户体验。
分类
- 静态网页:由HTML代码编写而成,内容固定,在不同设备上访问时展示效果基本一致。其优点是加载速度快、制作简单,适用于展示不需要经常更新的信息,如公司简介、产品介绍等页面。
- 动态网页:页面内容可以根据用户的操作或其他条件动态变化。它通常与服务器端技术(如PHP、Python Flask等)结合使用,能够根据用户的请求从数据库中获取数据并动态生成网页内容,常见于电商网站、论坛、博客等需要频繁更新和交互的网站。
工作原理
- 当用户在浏览器中输入网址并按下回车键后,浏览器会向服务器发送请求,请求获取该网址对应的网页资源。服务器接收到请求后,根据请求的内容找到相应的网页文件,并将其发送回浏览器。浏览器接收到网页文件后,会解析其中的HTML、CSS和JavaScript代码,将网页渲染成用户可见的页面。
与网站的关系
- 网页是网站的组成部分,多个相关的网页通过链接等方式组织在一起,就构成了一个完整的网站。网站有统一的主题和风格,而每个网页则承担着不同的功能和展示不同的内容,共同为用户提供服务和信息。
HTML
HTML(超文本标记语言,HyperText Markup Language)是用于创建网页的标准标记语言,以下为你详细介绍它的相关信息:
定义和作用
- HTML 作为网页开发的基础,借助标签来描述网页的结构与内容。它就像建筑物的框架,为网页搭建起基本的结构,使得浏览器能够解析并呈现出网页内容。通过 HTML,用户可以在互联网上浏览各种信息,如新闻、图片、视频等。
发展历程
- HTML 于 1991 年由蒂姆·伯纳斯 - 李发明,随后经历了多个版本的发展。从最初的 HTML 1.0 到如今广泛使用的 HTML5,功能不断丰富和完善。HTML5 增加了许多新特性,如多媒体支持、画布绘图、地理定位等,极大地提升了网页的表现力和交互性。
基本语法
- 标签:HTML 以标签为核心,标签通常由尖括号包围,分为单标签和双标签。双标签有开始标签和结束标签,例如
<p>
是段落开始标签,</p>
是段落结束标签,它们之间的内容就是一个段落。单标签则不需要结束标签,如<img>
用于插入图片。 - 元素:元素由标签和标签内的内容组成。例如
<p>这是一个段落。</p>
就是一个完整的 HTML 元素。 - 属性:标签可以包含属性,用于提供关于元素的额外信息。属性通常以键值对的形式出现,写在开始标签内。例如
<img src="example.jpg" alt="示例图片">
,其中src
和alt
就是属性,分别指定了图片的源文件和替代文本。
文档结构
一个标准的 HTML 文档具有以下基本结构:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>网页标题</title>
</head>
<body>
<!-- 网页内容 -->
<h1>这是一级标题</h1>
<p>这是一个段落。</p>
</body>
</html>
<!DOCTYPE html>
:声明文档类型为 HTML5。<html>
:根标签,包含整个 HTML 文档的内容。<head>
:包含文档的元数据,如字符编码、页面标题、引入的外部文件等,这些信息不会直接显示在网页上,但对网页的正常运行和搜索引擎优化等方面有重要作用。<body>
:包含网页的可见内容,如文本、图片、链接等。
在 HTML 里,<head>
标签用于存放网页的元数据,这些数据不会在页面上直接显示,但会对网页的显示和搜索引擎优化等方面产生影响。以下是常用<head>
标签的相关信息:
标签 | 描述 | 示例 |
| 设定网页的标题,该标题会显示在浏览器的标题栏或者标签页上。 |
|
| 提供关于 HTML 文档的元数据,例如字符编码、页面描述、关键词等,有助于搜索引擎优化。 |
|
| 用于引入外部资源,像 CSS 文件、图标等。 |
|
| 可在 HTML 文件中嵌入 CSS 样式。 |
|
| 用来引入外部 JavaScript 文件或者在 HTML 文件中嵌入 JavaScript 代码。 |
|
| 为页面上的所有相对 URL 设定基础 URL。 |
|
在 HTML 里,<body>
标签内的内容标签用于构建网页的可见部分。以下是一些常用内容标签的介绍:
标签 | 描述 | 示例 |
| 超链接标签,用于创建指向其他网页、文件、位置等的链接。 |
|
| 图像标签,用于在网页中插入图片。 |
|
| 换行标签,用于在文本中强制换行。 |
|
| 表格标签,与 |
|
| 表格行标签,用于定义表格中的一行。 |
|
| 表格数据单元格标签,用于定义表格中的数据单元格。 |
|
| 表单标签,用于创建 HTML 表单,用于用户输入数据。 |
|
网站和网页
网站和网页是互联网中相关但又有区别的两个概念,以下为你详细介绍:
定义
- 网站:是指在因特网上根据一定的规则,使用HTML等工具制作的用于展示特定内容的相关网页的集合。它就像是一个大型的信息仓库,包含了多个网页以及其他资源,如图片、视频、文档等,通常有一个独立的域名,例如百度(www.baidu.com)、淘宝(www.taobao.com)等,用户通过访问域名来访问整个网站。
- 网页:是构成网站的基本元素,是一个HTML文件,它可以包含文字、图片、音频、视频、超链接等各种元素,通过浏览器进行展示。一个网站可以包含多个网页,例如网站的首页、产品介绍页、新闻资讯页、联系我们页等,每个网页都有其特定的内容和功能,以满足用户不同的需求。
关系
- 网站是由多个网页组成的有机整体,这些网页通过超链接相互连接,形成一个具有层次结构和逻辑关系的信息系统。用户在浏览网站时,通过点击网页上的超链接,可以在不同的网页之间进行跳转,从而获取到网站提供的各种信息和服务。
作用
- 网站:作为一个综合性的平台,其作用是为用户提供丰富多样的信息和服务。不同类型的网站具有不同的功能,如商业网站用于宣传产品和服务、进行在线销售;新闻网站用于发布新闻资讯;社交网站用于用户之间的交流和互动;教育网站用于提供在线学习资源等。
- 网页:主要作用是展示具体的信息内容。每个网页都有其特定的主题和内容,例如产品详情页用于详细介绍产品的特点、规格、价格等信息,帮助用户了解产品;文章内容页用于展示文章的具体内容,供用户阅读;注册登录页用于用户进行注册或登录操作,以获取网站的个性化服务等。
nginx网站环境部署
systemctl stop firewalld
使用systemctl
命令停止firewalld
服务,firewalld
是一个动态防火墙管理工具,关闭它可以暂时允许外部访问服务器的网络端口,方便后续 Nginx 的测试与配置。
vim /etc/selinux/config
使用vim
文本编辑器打开/etc/selinux/config
文件,SELinux
(Security-Enhanced Linux)是一种安全模块,它会对系统的访问控制进行严格管理,可能影响 Nginx 的正常运行。
SELINUX=disabled
这是在/etc/selinux/config文件中进行的设置,将SELINUX的值修改为disabled,表示禁用SELinux,修改完成后保存并退出vim编辑器,以使设置生效。
tar zxf nginx-1.24.0
使用tar命令解压nginx - 1.24.0这个压缩包,zxf参数中,z表示解压 gzip 压缩的文件,x表示解压操作,f指定要解压的文件。
yum -y install gcc* pcre-devel openssl-devel zlib-devel
使用yum包管理器安装一系列依赖软件包。gcc*表示安装 GNU 编译器集合相关的包,pcre-devel是 PCRE(Perl Compatible Regular Expressions)库的开发文件,openssl-devel用于提供 OpenSSL 库的开发支持,zlib-devel是 zlib 库的开发文件,这些都是编译 Nginx 所需要的依赖环境。-y参数表示在安装过程中自动确认所有的提示,无需手动输入y确认。
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
运行 Nginx 源码目录下的configure
脚本进行配置。--prefix=/usr/local/nginx
指定 Nginx 的安装目录为/usr/local/nginx
;--user=nginx
和--group=nginx
指定 Nginx 运行的用户和用户组为nginx
(需提前创建);--with-http_ssl_module
启用 HTTP SSL 模块,使 Nginx 支持 HTTPS 协议;--with-http_stub_status_module
启用 HTTP Stub Status 模块,用于获取 Nginx 的基本状态信息。
make && make install
执行make
命令进行编译,将 Nginx 的源代码编译成可执行文件,然后执行make install
将编译好的文件安装到指定的目录(即前面configure
脚本中--prefix
指定的/usr/local/nginx
)。
useradd -M -s /sbin/nologin nginx
使用useradd
命令创建一个名为nginx
的用户。-M
参数表示不创建用户的主目录,-s /sbin/nologin
指定该用户的默认 Shell 为/sbin/nologin
,即不允许该用户登录系统,这样可以提高系统安全性。
cd /usr/local/nginx/sbin
使用cd
命令切换到 Nginx 安装目录下的sbin
子目录,该目录存放着 Nginx 的可执行文件。
./nginx
在当前目录下运行nginx
可执行文件,启动 Nginx 服务。
curl http://127.0.0.1:80
使用curl
命令向本地地址(127.0.0.1
)的 80 端口发送 HTTP 请求,用于测试 Nginx 是否正常启动并监听在 80 端口上。如果 Nginx 正常运行,会返回 Nginx 的默认页面内容。
lsof -i :80
使用lsof
(list open files)命令查看哪些进程在监听 80 端口,-i
参数用于显示网络相关的文件,:80
指定要查看的端口号。通过该命令可以确认 Nginx 是否成功监听在 80 端口上,以及获取监听该端口的进程 ID(PID)。
kill -9 PID
使用kill
命令强制终止指定进程 ID(PID)的进程,-9
参数是一个强制终止信号,用于确保进程被彻底杀死。这里的PID
需要替换为前面lsof -i :80
命令查看到的实际进程 ID,此操作是为了停止之前手动启动的 Nginx 进程,以便后续通过systemd
进行管理。
cd /etc/systemd/system/
切换到systemd
服务单元配置文件所在的目录,systemd
是一个系统和服务管理器,用于管理系统进程和服务的启动、停止、重启等操作。
vim nginx.service
使用vim
编辑器创建或编辑一个名为nginx.service
的服务单元配置文件,用于定义 Nginx 服务在systemd
中的运行参数和行为。
[Unit] Description=Nginx HTTP Server After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecrReload= /usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s stop PrivateTmp=true [Install] WantedBy=multi-user.target
在[Unit]
部分:
Description=Nginx HTTP Server
:对服务的描述,用于在systemd
的管理界面中显示,方便管理员识别。After=network.target
:表示 Nginx 服务在网络服务启动之后启动,确保 Nginx 启动时网络已经可用。
在[Service]
部分:
Type=forking
:指定服务的启动类型为forking
,表示 Nginx 启动时会创建子进程,父进程启动完成后退出,子进程继续运行服务。ExecStart=/usr/local/nginx/sbin/nginx
:指定启动 Nginx 服务时执行的命令,即运行 Nginx 安装目录下sbin
子目录中的nginx
可执行文件。ExecReload= /usr/local/nginx/sbin/nginx -s reload
:指定重新加载 Nginx 配置文件时执行的命令,-s reload
参数用于向 Nginx 主进程发送重新加载配置的信号,使新的配置生效。ExecStop=/usr/local/nginx/sbin/nginx -s stop
:指定停止 Nginx 服务时执行的命令,-s stop
参数用于向 Nginx 主进程发送停止服务的信号。PrivateTmp=true
:表示为 Nginx 服务创建一个独立的临时文件系统,提高服务的安全性和隔离性。
在[Install]
部分:
WantedBy=multi-user.target
:表示该服务在多用户模式下被启用,当系统进入多用户运行级别时,systemd
会自动启动 Nginx 服务。
systemctl daemon-reload
使用systemctl
命令重新加载systemd
的配置文件,使新创建或修改的服务单元配置文件生效。
systemctl start nginx
使用systemctl
命令启动 Nginx 服务,此时 Nginx 会按照/etc/systemd/system/nginx.service
配置文件中的设置进行启动和管理。