1.www简介
Web网络服务也叫WWW(World Wide Web 全球信息广播)万维网服务,一般是指能够让用户通过浏览器访问到互联网中文档等资源的服务
Web 网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发出的请求后才会响应,最终用于提供服务程序的 Web 服务器会通过 HTTP (超文本传输协议)或HTTPS(安全超文本传输协议)把请求的内容传送给用户,如图:
1.1.常见Web服务程序介绍
Windows系统中默认Web服务程序是IIS (Internet Information Services),这是一款图形化的网站管理工具,IIS程序不光能提供Web网站服务,还能够提供FTP、NMTP、SMTP等服务功能,但只能在Windows系统中使用
2004 年10 月4 日,为俄罗斯知名门户站点而开发的 Web 服务程序 Nginx 横空出世。Nginx程序作为一款轻量级的网站服务软件,因其稳定性和丰富的功能而快速占领服务器市场,但Nginx最被认可的还当是低系统资源占用、内存少且并发能力强,因此得到了国内诸如新浪、网易、腾讯等门户站的青睐
Apache--取自美国印第安人土著语Apache,寓意着拥有高超的作战策略和无穷的耐性,由于Apache--其跨平台和安全性广泛被认可且拥有快速、可靠、简单的API扩展。目前拥有很高的Web服务软件市场占用率,全球使用最多的Web服务软件,开源、跨平台 (可运行于Unix,linux,windows
Tomcat一一属于轻量级的Web服务软件,一般用于开发和调试JSP代码,通常认为Tomcat是Apache的扩展程序
1.2.服务器主机
网站是由域名、网页源程序和主机空间组成的,其中主机空间则是用于存放网页源代码并能够将网页内容展示给用户,虽然本小节与Apache服务没有直接关系,但如果您想要在互联网中搭建网站并被顺利访问,主机空间一定不能选错虚拟主机:在一台服务器中分出一定的磁盘空间供用户放置网站、存放数据等,仅提供基础的网站访问、数据存放与传输流量功能,能够极大的降低用户费用,也几乎不需要管理员维护除网站数据以外的服务,适合小型网站
VPS(Virtual Private Server):在一台服务器中利用OpenVZ、Xen或KVM等虚拟化技术模拟出多个“主机”,每个主机都有独立的IP地址、操作系统,实现不同VPS之间磁盘空间、内存、CPU资源、进程与系统配置间的完全隔离,管理员可自由使用分配到的主机中的所有资源,所以需要有一定的维护系统的能力,适合小型网站云服务器(ECS):是一种整合了计算、存储、网络,能够做到弹性伸缩的计算服务,其使用起来与VPS几乎一样,但差别是云服务器建立在一组集群服务器中,每个服务器都会保存一个主机的镜像(备份),大大的提升了安全稳定性,另外还具备了灵活性与扩展性,用户只需按使用量付费的即可,适合大中小型网站。
独立服务器:这台服务器仅提供给您使用,详细来讲又可以区分为租用方式与托管方式租用方式:用户只需将硬件配置要求告知IDC服务商,服务器硬件设备由机房负责维护,运维管理员一般需要自行安装相应的软件并部署网站服务,租期可以为月、季、年,减轻了用户初期对硬件设备的投入,适合大中型网站。
托管方式:用户需要自行购置服务器后交给IDC服务供应商的机房进行管理(缴纳管理服务费用),用户对服务器硬件配置有完全的控制权,自主性强,但需要自行维护、修理服务器硬件设备,适合大中型网站
另外有必要提醒,选择主机空间供应商时请一定要注意看口碑,综合分析再决定购买,某些供应商会有限制功能、强制添加广告、隐藏扣费或强制扣费等恶劣行为,一定一定不要上当!
1.3.主要数据
服务器所提供的最主要数据是超文本标记语言 (Hyper Text Markup Language,HTML)、多媒体文件(图片、影像、声音、文字等,都属于多媒体或称为超媒体),HTML只是一些纯文本数据,通过所谓的标记来规范所要显示的数据格式
1.4.浏览器
客户端收到服务器的数据之后需要软件解析服务器所提供的数据,最后将效果呈现在用户的屏幕上
那么著名的浏览器就有内建在Windows操作系统内的IE浏览器 (淘汰)和Microsoft Edge,还有Firefox浏览器和Google的chrome浏览器
1.5网址及HTTP简介
web服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在某个特殊的目录下面,这个目录就是我们整个网站的首页,在redhat中,这个目录默认在var/www/htm
浏览器是通过你在地址栏中输入你所需要的网址来取得这个目录的数据的
1.5.1.URL
Uniform Resource Locator,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址
网址格式:<协议>://<主机或主机名>[:port]/<目录资源,路径>**
协议: : http、https、ftp等
主机地址或者主机名: 主机地址就是服务器在因特网所在的IP地址。如果是主机名的话,那么就需要域名解析了
端口号 (port): http为80,https为443 (IANA: 互联网数字分配机构)。0-1023:永久地分配给固定的应用程序使用
1024-41951:注册端口,但要求不是特别严格,分配给程序注册为某应用使用 41952-60000:客户端程序随机使用的端口,动态端口,或私有端口
1.5.2.http请求方法:
在http通信中,每个http请求报文都包含一个方法,用以告诉web服务器端需要执行哪些具体的动作,这些动作包括: 获取指定web页面、提交内容到服务器、删除服务器上资源文件等。
序号 方法 描还 1 GET 请求指定的页面信息,并返回实体主体, 2 HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 3 POST 向指定资源提交数据进行处理请求( 例提交表单或者上传文件 ),数据被包全在请求体中,POST请求可能会导致新的资源的建立和/或已有资源的修改。 4 PUT 从客户端向服务器传送的数据取代指定的文档的内容, 5 DELETE 请求服务器删除指定的页面。 6 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器 7 OPTIONS 允许客户精查者服务器的性能 8 TRACE 回显服务器收到的请求,主要用于测试或诊断 状态代码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
1xx: 指示信息一一 表示请求已接收,继续处理
2xx:成功一一表示请求已被成功接收、理解、接
3xx:重定向一一要完成请求必须进行更进一步的操作4xx:客户端错误一一请求有语法错误或请求无法实现
5xx:服务器端错误一一服务器未能实现合法的请求常见状态代码、状态描述的说明如下:
200 0K:客户端请求成功
400 Bad Request:客户端请求有语法错误,不能被服务器所理解401Unauthorized: 请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用
403 Forbidden: 服务器收到请求,但是拒绝提供服务
404 Not Found: 请求资源不存在,举个例子: 输入了错误的URL500Internal Server Error: 服务器发生不可预期的错误
503 Server Unavailable: 服务器当前不能处理客户端的请求,一段时间后可能恢复正常
1.5.3.HTTP协议请求的工作流程
终端客户在web浏览器地址栏输入访问地址http://www.ceshi.com:80/index.htmlweb浏览器请求DNS服务器把域名www.ceshi.com解析成web服务器的IP地址
web浏览器将端口号 (默认是80) 从访问地址 (URL) 中解析出来
web浏览器通过解析后的ip地址及端口号与web服务器之间建立一条TCP连接
建立TCP连接后,web浏览器向web服务器发送一条HTTP请求报文
web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文
web服务器关闭HTTP连接,关闭TCP连接,web浏览器显示访问的网站内容到屏幕上
1.6.www服务器的类型
1.6.1.静态网站
仅提供用户浏览的单向静态网页单纯是由服务器单向提供数据给客户端,Server不需要与client端有互动,可以浏览网站,但是无法数据上传
1.6.2.动态网站
该站可以让服务器与用户互动,'常见的例如留言板,博客。这种类型的网站需要通过“网页程序语言”来实现与用户互动的行为。常见的例如: PHP网页程序语言,配合数据库系统来进行数据的读、写。当你在向服务器请求数据时,其实是通过服务器端同一个网页程序在负责将数据读出或写入数据库,变动的是数据库的内容,网页程序并没有任何改变
另外一种交互式的动态网页主要是在客户端实现。服务端将可执行的程序代码 (avaScript)传送给客户端,客户端的浏览器如果提供JavaScript的功能,那么该程序就可以在客户端的计算机上面工作了;另外一种可在客户端执行的就是flash动画格式,在这种动画格式内还可以进行程序设计
搭建动态网站的需求: LAMP (Linux+Apache+MySQL+PHP)Apache主要提供www的服务器平台
MySQL: 传统的文件读取是很麻烦的,如果只要读取该文件当中的一小部分,系统还是会将整个文件读出来,若多个用户同时读取同一个文件时,那就会造成效率与系统上的问题,所以才会有数据库系统的推出。数据库其实是一种特殊格式的文件,这种文件要通过特殊接口(数据库软件)来进行读写。由于这个特殊接口已经针对数据的查询、写入做过优化设计,因此很适合多人同时写入与查询工作。
PHP:PHP可以被用来建立动态网页,PHP程序代码可以直接在HTML网页当中嵌入,就像编辑HTML网页一样简单。PHP是一种“程序语言”,这种程序语言可以直接在网页当中编写,不需要经过编译即可执行
2.快速安装Apache
2.1 安装Apaxhe:
安装Apaxhe:
[root@node2 ~]# yum install httpd -y
利用getenforce查看SELinux状态:
若正在执行则用命令:
[root@node2 ~]# setenforce 0 将其关闭
关闭防火墙:
[fox@bogon ~]$ systemctl stop firewalld # 临时关闭防火墙(重启设备后将再次自行启动) [fox@bogon ~]$ systemctl disable firewalld # 取消开机启动(重启设备后将不会自行启动) Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service". Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service".
启动Apache:
[root@node2 ~]# systemctl start httpd # 启动 [root@node2 ~]# systemctl enable httpd # 开机启动 Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service. [root@node2 ~]# systemctl status httpd # 查看状态 ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: d> Active: active (running) since Mon 2023-11-06 13:23:00 CST; 1min 59s ago Docs: man:httpd.service(8) Main PID: 2428 (httpd) Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes serve> Tasks: 213 (limit: 11984) Memory: 41.1M CPU: 460ms CGroup: /system.slice/httpd.service ├─2428 /usr/sbin/httpd -DFOREGROUND ├─2429 /usr/sbin/httpd -DFOREGROUND ├─2430 /usr/sbin/httpd -DFOREGROUND ├─2431 /usr/sbin/httpd -DFOREGROUND └─2432 /usr/sbin/httpd -DFOREGROUND 11月 06 13:22:57 node2 systemd[1]: Starting The Apache HTTP Server... 11月 06 13:22:59 node2 httpd[2428]: AH00558: httpd: Could not reliably determine the > 11月 06 13:23:00 node2 httpd[2428]: Server configured, listening on: port 80 11月 06 13:23:00 node2 systemd[1]: Started The Apache HTTP Server.
2.2 httpd所需目录
主配置文件所在目录:[root@node2 ~]# cd /etc/httpd/
主配置文件:[root@node2 httpd]# vim /etc/httpd/conf/httpd.conf
存储默认网页的目录:[root@node2 httpd]# cd /var/www/html/
网站流量的日志以及错误日志文件: [root@node2 ~]# cd /var/log/httpd/
[root@node2 httpd]# vim access_log 流量的日志
[root@node2 httpd]# vim error_log 错误日志
2.3主配置文件:
打开方式:[root@node2 httpd]# vim /etc/httpd/conf/httpd.conf
全局参数:
ServerRoot "/etc/httpd":服务目录
Listen 80:监听端口号
Include conf.modules.d/*.conf: 加载模块储存位置
User apache
Group apache:Apache所用的工作组及账户
ServerAdmin root@localhost:管理员的邮箱
DocumentRoot "/var/www/html": 网页的启动目录
局部参数:<> </>
目录访问权限:
<Directory />
AllowOverride none # 权限是否可以被覆盖改写
Require all denied # 是否允许访问该目录
</Directory>此处含义为不允许远程连接访问及改写本地更目录
用户访问网页的权限:
该局部参数一般与网页的启动目录一同出现
<Directory "/var/www">
AllowOverride None 不允许权限被修改
# Allow open access:
Require all granted 允许访问该网页
</Directory>
2.4网站的搭建
2.4.1 快速搭建一个网站
[root@node2 httpd]# echo "welcome ti www.openlab.com"1 > /var/www/html/index.html\
# 将字符串写入网页/index.html\ 中
[root@node2 httpd]# ls /var/www/html/
index.html
[root@node2 httpd]# systemctl restart httpd 重启服务此时我们可以在VMwork中调用浏览器然后访问
[root@node2 ~]# firefox
输入网址:127.0.0.1或者192.168.17.132
注意:我们还可以在自己的win10浏览器上调用输入:192.168.17.132
也可以通过curl命令来验证网站是否搭建成功。
格式: curl IP地址
作用:将网址下载到本机
2.4.2更换网页目录
第一步:准备工作
[root@node2 ~]# systemctl stop firewalld 关闭防火墙
[root@node2 ~]# systemctl disable firewalld
[root@node2 ~]# setenforce 0 关闭SELinux
[root@node2 ~]# yum install httpd -y 安装软件
[root@node2 ~]# systemctl status httpd 启动软件
[root@node2 ~]# systemctl enable httpd 开机启动第二步: 新建网页存储目录/web1,使用xftp将网页数据上传到/web1
[root@server ~]# mkdir /web1
[root@server ~]# cd /web1
[root@server web1]# Is
css dingban.mp4 img index.htm js temp第三步:修改主配置文件
DocumentRoot "/webl" # 第124行修改为真实的网页存储目录
<Directory "/webl"> # 第129行修改网页存储目录的访问权限Allowoverride None
# A11ow open access:
Require al] granted
</Directory>第四步:重启服务器并测试
[root@server ~]# systemctl restart httpdwindows端打开浏览器输入服务器地址
2.4.3 内网穿透
搭建网站使用花生壳进行内网穿透实现公网访问
第一步:准备工作
[root@node2 ~]# systemctl stop firewalld 关闭防火墙
[root@node2 ~]# systemctl disable firewalld
[root@node2 ~]# setenforce 0 关闭SELinux
[root@node2 ~]# yum install httpd -y 安装软件
[root@node2 ~]# systemctl status httpd 启动软件
[root@node2 ~]# systemctl enable httpd 开机启动第二步:搭建网站
# 将网页数据上传
root@server ~]# vim /etc/httpd/conf/httpd.conf # 修改124及129行数据DocumentRoot"/zy"
<Directory"/zy">
root@server ~]# systemct] restart httpd # 重启服务第三步:测试
浏览器中输入IP进行测试
第四步:使用花生壳进行内网穿透
# 注册,登录,完成身份证的实名认证进入贝瑞花生壳官网>注册(个人注册,使用手机号)
内网穿透第一步福创建内网映射,
立即创建:
添加映射:
具体信息如下:
如下:
#应用名称: 自定
# 映射类型: https
# 外网域名: 系统指定,不能更改
# 外网端口: 443,默认
# 内网主机:本机linux服务的IP地址
#内网端口: 本地linux端的http端口,默认80创建成功后显示如下:
在官网复制Linux版的花生壳,复制链接并安装:
利用链接下载安装包:
安装:
接下来按照提示栏经行操作:
启动:[root@server ~]# phddns start
phtunnel service start success ! # 表示已启动
激活:利用提示的链接进入网站激活
激活成功时:
此时就可以使用使用图片中的链接访问所搭建的网站。
注:此时手机端也可以访问。
2.4.4 设置用户密码访问
搭建一个个人用户主页功能网站,实现通过身份验证功能来访问数据如果想在系统中为每一位用户建立一个独立的网站,通常使用基于虚拟主机的功能来创建部署多个网站,但这个工作会让管理者苦不堪言,尤其是用户数据量很大的情况时,而且用户自行管理网站时,还会碰到权限限制,需要为此做很多额外的工作,其实,httpd服务程序提供的个人主页功能可以完全胜任此工作,该功能可以让系统内所有用户在自己的家目录中管理个人网站,且访问也非常容易
第一步:准备工作
[root@node2 ~]# systemctl stop firewalld 关闭防火墙
[root@node2 ~]# systemctl disable firewalld
[root@node2 ~]# setenforce 0 关闭SELinux
[root@node2 ~]# yum install httpd -y 安装软件
[root@node2 ~]# systemctl status httpd 启动软件
[root@node2 ~]# systemctl enable httpd 开机启动第二步:编辑httpd目录中的用户主页配置文件(不是httpd.conf文件)
进入文件:[root@node2 ~]# vim /etc/httpd/conf.d/userdir.conf
将 UserDir disabled注释:
将UserDir public_html释放:
代表:启动网站存储数据的默认目录,路径: /home/账户名/public_htm]
第三步:新建账户设置权限问题。
[root@server ~]# useradd andy
[root@server ~]# passwd andy
更改用户 andy 的密码
新的密码 # 密码: 123456
无效的密码:
密码少于 8 个字符
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。[root@server ~]# useradd jenny
[root@server ~]# passwd jenny
更改用户 jenny 的密码
新的密码:
无效的密码:
密码少于 8 个字符
重新输入新的密码:
密码: 654321
passwd:所有的身份验证令牌已经成功更新切换到andv账户,设置存储网页目录即权限
[root@node2 ~]# su andy
[andy@node2 root]$ cd /home/andy/
[andy@node2 ~]$ ls
[andy@node2 ~]$ mkdir public_html
[andy@node2 ~]$ cd public_html/
[andy@node2 public_html]$
使用xftp将sxhkt网页数据上传到/home/andy/public_htm1目录中[andy@server public_htmI]$ cd ~
[andy@server ~]$ chmod-Rf 755/home/andy
[andy@server ~]$ 11
总用量 0
drwxr-xr-x 7 andy andy 100 8月 22 11:25 public_html# 切换到jenny账户,设置存储网页目录及权限
[andy@server ~]$ su jenny
密码:
[jenny@server andy]$ cd ~
[jenny@server ~]$ pwd
/home/jenny
[jenny@server ~]$ mkdir public_html
[jenny@server ~]$ cd public_html/
[jenny@server public_html]$ cd
[jenny@server ~]$ chmod -Rf 755 /home/jenny
[jenny@server ~]$ 11
总用量 0
drwxr-xr-x 6 jenny jenny 70 8月22 11:29 public_html# 切换到root账户
[jenny@server ~]$ su root
密码:
[root@server jenny]# cd ~[root@server ~]# pwd
/root
第四步:重启服务并操作
[root@server ~]# systemctl restart httpd
测试:
在windows端浏览器地址栏中,输入:
192.168.48.130/~andy
192.168.48.130/~jennyy
第五步:增加密码访问控制:
[root@server ~]# htpasswd -c /etc/httpd/passwd andy
创建存储密码的文件 存储密码的文件(密文) 用户名
New password:
Re-type new password:
Adding password for user andy
# 分析:
# htpasswd: 生成密码数据的命令# -C: 表示第一次生成,会创建存储密码加密密文的存储文件,之后创建时不能增减-C参数,否则会将存储密码密文的文件会覆盖
# andy需要验证密码登录的账户
[root@server ~]# htpasswd /etc/httpd/passwa jenny
New password: #v密码: 654321
Re-type new password:Adding password for user andy
第六步: 编辑个人主页配置文件,设置访问控制策略
[root@server ~]# vim /etc/httpd/conf.d/userdir.conf
# 定位最后一行输入以下内容:
<directory "/home/andy/public_htm1"> # 设置andy账户目录的区域配置authuserfile "/etc/httpd/passwd" # 设置验证密码的存储文件位置
authname "My privately #登录时的提示信息,可能不显示
authtype basic # 加密模式
require user andy</directory> # 需要验证密码的账户名
<directory "/home/jenny/public_htm1">
authuserfile "/etc/httpd/passwd"
authname "My privately
authtype basic
require user jenny</directory>
第七步:从其服务并测试
[root@server ~]# systemct] restart httpd
# 在windows端浏览器地址栏中,输入以下
# 192.168.48.130/~andy
# 192.168.48.130/~jenny