华子目录
www简介
- Web网络服务也叫www(world wide web全球信息广播)万维网服务,一般是指能够让用户通过浏览器访问到互联网中文档等资源的服务
- Web网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发送的请求后才会响应,最终用于提供服务程序的Web服务器会通过http(超文本传输协议)或https(完全超文本传输协议)把请求的内容传送给用户,如图:
常见Web服务程序介绍:
- IIS:Windows系统中默认Web服务程序是IIS(Internet Information Services),这是一款图形化的网站管理工具,IIS程序不光能提供Web网站服务,还能够提供FTP,NMTP,SMTP等服务功能,但只能在Windows系统中使用。
- Nginx:2004年10月4日,为俄罗斯知名门户站点而开发的Web服务程序Nginx横空出世。Nginx程序作为一款轻量级的网站服务软件,因其稳定性和丰富的功能而快速占领服务器市场,但是Nginx最终被认可的还是其低系统资源占用,内存少且并发能力强,因此得到了国内诸如新浪,网易,腾讯等门户站的青睐
- Apache:取自美国印第安人土著语Apache,寓意着拥有高超的作战策略和无穷的耐性,由于其跨平台和安全性广泛被认可且拥有快速,可靠,简单的API扩展。目前拥有很高的Web服务软件市场占用率,全球使用最多的Web服务软件,开源,跨平台(可运行于Unix,Linux,Windows中)
- Tomcat:属于轻量级的Web服务软件,一般用于开发的调试JSP代码,通常认为Tomcat是Apache的扩展程序
服务器主机
- 网站是由域名,网页源程序和主机空间组成的,其中主机空间则是用于存放网页源代码并能够将网页内容展示给用户,虽然本小节与Apache服务没有直接关系,但如果您想要在互联网中搭建网站并被顺利访问,主机空间一定不能选错
- 虚拟主机:在一台服务器中分出一定的磁盘空间供用户放置网站,存放数据等,仅提供基础的网站访问,数据存放与传输流量功能,能够极大的降低用户费用,也几乎不需要管理员维护除网站数据以外的服务,适合小型网站
- VPS(Virtual Private Server):在一台服务器中利用OpenVZ,Xen或KVM等虚拟技术模拟出多个主机,每个主机都有独立的ip地址,操作系统,实现不同VPS之间磁盘空间,内存,CPU资源,进程与系统配置间的完全隔离,管理员可自由使用分配到的主机中的所有资源,所以需要有一定的维护系统能力,适合小型网站。
- 云服务器(ECS):是一种整合了计算,存储,网络,能够做到弹性伸缩的计算服务,其使用起来与VPS几乎一样,但差别是云服务器建立在一组集群服务器中,每个服务器都会保存一个主机的镜像(备份),大大的提升了安全稳定性,另外还具备了灵活性与扩展性,用户只需按使用量付费的即可,适合大中小型网站。
- 独立服务器:这台服务器仅提供给您使用,详细来讲又可以区分为租用方式与托管方式。
- 租用方式:用户只需将硬件配置要求告知IDC服务商,服务器硬件设备由机房负责维护,运维管理员一般需要自行安装相应的软件并部署网站服务,租期可以为月、季、年,减轻了用户初期对硬件设备的投入,适合大中型网站。
- 托管方式:用户需要自行购置服务器后交给IDC服务供应商的机房进行管理(缴纳管理服务费用),用户对服务器硬件配置有完全的控制权,自主性强,但需要自行维护、修理服务器硬件设备,适合大中型网站。
- 另外有必要提醒,选择主机空间供应商时请一定要注意看口碑,综合分析再决定购买,某些供应商会有限制功能、强制添加广告、隐藏扣费或强制扣费等恶劣行为,一定一定不要上当!
主要数据
- 服务器所提供的最主要数据是超文本标记语言(Hyper Text Markup Language,HTML),多媒体文件(图片,影像,声音,文字等都属于多媒体或称为超媒体),HTML只是一些纯文本数据,通过所谓的标记来规范所要显示的数据格式
浏览器
- 客户端收到服务器的数据之后需要软件解析服务器所提供的数据,最后将效果呈现在用户的屏幕上。
- 那么著名的浏览器就有内建在Windows操作系统内的IE浏览器(淘汰)和Microsoft Edge,还有Firefox浏览器和Google的chrome浏览器
网址及http介绍
- Web服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在某个特殊的目录下面,这个目录就是我们整个网站的首页,通常这个目录默认在/var/www/html
- 浏览器是通过你在地址栏中输入你所需要的网址来取到这个目录的数据
url
- Uniform Resource Locator,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。
- 网址格式:
<协议>://<主机或主机名>[:port]/<目录资源,路径>
- 协议:http,https,ftp等
- 主机地址或者主机名:主机地址就是服务器在因特网所在的IP地址。如果是主机名的话,那么就需要域名解析了
- 端口号(port):http为80,https为443 (IANA:互联网数字分配机构)
- 0-1023:永久地分配给固定的应用程序使用
- 1024-41951:注册端口,但要求不是特别严格,分配给程序注册为某应用使用
- 41952-60000:客户端程序随机使用的端口,动态端口,或私有端口
http请求方法
-
在http通信中,每个http请求报文都包含一个方法,用以告诉web服务器端需要执行哪些具体的动作,这些动作包括:获取指定web页面、提交内容到服务器、删除服务器上资源文件等。
-
状态码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值
- 1xx:表示请求已接收,继续处理
- 2xx:表示请求已被成功接收,理解
- 3xx:表示要完成请求必须进行更进一步的操作
- 4xx:表示请求又语法错误或请求无法实现
- 5xx:表示服务器未能实现合法的请求
-
常见状态码:
- 200:客户端请求成功
- 400:客户端请求有语法错误
- 401:请求未经授权
- 403:服务器收到请求,但拒绝服务
- 404:请求资源不存在
- 500:服务器发生不可预期的错误
- 503:服务器当前不能处理客户端的请求,一段时间后可能恢复正常
http协议请求的工作流程
- 终端客户在web浏览器地址栏输入访问地址http://www.ceshi.com:80/index.html
- web浏览器请求DNS服务器把域名www.ceshi.com解析成web服务器的IP地址
- web浏览器将端口号(默认是80)从访问地址(URL)中解析出来
- web浏览器通过解析后的ip地址及端口号与web服务器之间建立一条TCP连接
- 建立TCP连接后,web浏览器向web服务器发送一条HTTP请求报文
- web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文
- web服务器关闭HTTP连接,关闭TCP连接,web浏览器显示访问的网站内容到屏幕上
www服务器类型
静态网站
- 仅提供用户浏览的单向静态网页,单纯是由服务器单向提供数据给客户端,Server不需要与client端有互动,可以浏览网站,但是无法数据上传。
动态网站
- 该站可以让服务器与用户互动,常见的例如留言板,博客。这种类型的网站需要通过“网页程序语言”来实现与用户互动的行为。常见的例如:PHP网页程序语言,配合数据库系统来进行数据的读、写。当你在向服务器请求数据时,其实是通过服务器端同一个网页程序在负责将数据读出或写入数据库,变动的是数据库的内容,网页程序并没有任何改变
- 另外一种交互式的动态网页主要是在客户端实现。服务端将可执行的程序代码(JavaScript)传送给客户端,客户端的浏览器如果提供JavaScript的功能,那么该程序就可以在客户端的计算机上面工作了;另外一种可在客户端执行的就是flash动画格式,在这种动画格式内还可以进行程序设计
- 搭建动态网站的需求:LAMP(Linux+Apache+MySQL+PHP)
- Apache主要提供www的服务器平台
- MySQL:传统的文件读取是很麻烦的,如果只要读取该文件当中的一小部分,系统还是会将整个文件读出来,若多个用户同时读取同一个文件时,那就会造成效率与系统上的问题,所以才会有数据库系统的推出。数据库其实是一种特殊格式的文件,这种文件要通过特殊接口(数据库软件)来进行读写。由于这个特殊接口已经针对数据的查询、写入做过优化设计,因此很适合多人同时写入与查询工作
- PHP:PHP可以被用来建立动态网页,PHP程序代码可以直接在HTML网页当中嵌入,就像编辑HTML网页一样简单。PHP是一种“程序语言”,这种程序语言可以直接在网页当中编写,不需要经过编译即可执行
快速安装Apache
安装
[root@server ~]# yum install httpd -y
准备工作
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
[root@server ~]# systemctl start httpd
[root@server ~]# systemctl enable httpd
[root@server ~]# systemctl status httpd
httpd所需目录
[root@server ~]# cd /etc/httpd # 主配置文件所在目录
[root@server ~]# vim /etc/httpd/conf/httpd.conf # 主配置文件
[root@server ~]# cd /var/www/html # 存储默认网页的目录
[root@server ~]# cd /var/log/httpd # 存储网站访问日志和错误日志的目录
主配置文件
[root@server ~]# vim /etc/httpd/conf/httpd.conf
ServerRoot "/etc/httpd" # 服务目录
#Listen 12.34.56.78:80 # 设置监听的ip地址及端口
Listen 80 # 默认开启监听端口为80
Include conf.modules.d/*.conf # 加载额外配置文件
User apache # 运行服务的用户
Group apache # 运行服务的工作组
ServerAdmin root@localhost # 管理者的邮箱
#ServerName www.example.com:80 # 设置域名及端口号,必须要有域名解析
<Directory /> # <>表示起始标志,</>表示结束标志
# 设置目录的权限,当浏览器中输入url地址后,若访问服务器某目录下的某个文件,必须要设置其权限,保证数据的安全性
# AllowOverride:是否允许权限覆盖,如果有额外的权限文件,是否允许额外文件来对当前Directory进行权限覆盖
AllowOverride none # 不允许覆盖
Require all denied # 禁止所有来源访问文件或目录
# Require all granted # 允许所有来源访问
</Directory>
DocumentRoot "/var/www/html" # 网页存放的默认目录
<Directory "/var/www"> # 设置网页的权限,与DocumentRoot搭配使用
AllowOverride None
# Allow open access:
Require all granted
</Directory>
实验操作
实验1
- 快速建站
[root@server ~]# yum install httpd -y
[root@server ~]# echo "welcome to huazi" > /var/www/html/index.html
[root@server ~]# ls /var/www/html
index.html
[root@server ~]# systemctl restart httpd
- 查看:在Linux的火狐浏览器中输入127.0.0.1,也可以在Windows端打开浏览器,输入Linux服务器的IP地址,也可以通过curl命令访问网页,来验证网站是否搭建成功。
[root@server ~]# curl 192.168.80.129 # 只下载首页文件
welcome to huazi
实验2
- 更换默认网页目录
- 第一步:准备工作
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
[root@server ~]# yum install httpd -y
[root@server ~]# systemctl start httpd
[root@server ~]# systemctl enable httpd
- 第二步:新建网页存储目录/web2,使用xftp将网页数据上传到/web2内
[root@server ~]# mkdir /web2
[root@server ~]# cd /web2
[root@server web1]# ls
compat css img index.html js
- 第三步:修改主配置文件
[root@server web1]# vim /etc/httpd/conf/httpd.conf
DocumentRoot "/web2" # 第124行修改为真实的网页存储目录
<Directory "/web2"> # 第129行修改网页存储目录的访问权限
AllowOverride None
# Allow open access:
Require all granted
</Directory>
- 第四步:重启服务器并测试
[root@server ~]# systemctl restart httpd
#windows端打开浏览器输入服务器的地址进行测试
实验3
- 搭建网站,使用花生壳进行内网穿透,实现公网访问
- 第一步:准备工作
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
[root@server ~]# yum install httpd -y
[root@server ~]# systemctl start httpd
[root@server ~]# systemctl enable httpd
- 第二步:搭建网站,将网页数据/index上传后,编辑主配置文件
[root@server ~]# vim /etc/httpd/conf/httpd.conf # 修改124及129行数据
DocumentRoot "/index"
<Directory "/index">
AllowOverride None
# Allow open access:
Require all granted
</Directory>
- 第三步:重启服务后测试,在浏览器中输入ip地址
[root@server ~]# systemctl restart httpd
- 第四步:使用贝锐花生壳进行内网穿透
- 4.1注册,登录,完成身份证的实名认证
- 4.2注册个人账号
- 4.3使用微信扫码快速注册
- 4.4进行个人认证(需要使用个人身份证进行认证)
- 4.5点击管理平台
- 4.6创建内网映射
- 4.6下载Linux客户端
- 4.7下载客户端,选择应用平台为RedHat ,“点击复制”
- 4.8Linux客户端下载并安装
[root@server ~]# wget "https://dl.oray.com/hsk/linux/phddns_5.3.0_amd64.rpm" -O phddns_5.3.0_amd64.rpm
[root@server ~]# ls
公共 模板 视频 图片 文档 下载 音乐 桌面 anaconda-ks.cfg phddns_5.3.0_amd64.rpm
[root@server ~]# rpm -ivh phddns_5.3.0_amd64.rpm
- 安装完之后出现的信息
- 启动
[root@server ~]# phddns start
phtunnel service start success !
- 复制下图“右下角的网址”,重新打开浏览器,输入
http://b.oray.com
,完成账号登录,激活
- 第五步:重新登录,使用SN登录
# 查看SN号
[root@server ~]# phddns status
+--------------------------------------------------+
| Oray PeanutHull Linux 5.3.0 |
+--------------------------------------------------+
| Runstatus: ONLINE |
+--------------------------------------------------+
| SN: oray02ccc6f10d39 |
+--------------------------------------------------+
| Remote Management Address http://b.oray.com |
+--------------------------------------------------+
-
激活
-
登录激活后花生壳的管理平台效果
-
第六步:访问网站
https://5s90e27415.yicp.fun/
进行测试
-
查看详细日志信息
[root@server ~]# journalctl -xeu httpd.service
实验4
- 搭建一个个人用户主页功能网站,实现通过身份验证功能来访问数据
- 如果想在系统中为每一位用户建立一个独立的网站,通常使用基于虚拟主机的功能来创建部署多个网站,但这个工作会让管理者苦不堪言,尤其是用户数据量很大的情况时,而且用户自行管理网站时,还会碰到权限限制,需要为此做很多额外的工作,其实,httpd服务程序提供的个人主页功能可以完全胜任此工作,该功能可以让系统内所有用户在自己的家目录中管理个人网站,且访问也非常容易
- 第一步:准备工作
# 恢复快照
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
[root@server ~]# yum install httpd -y
[root@server ~]# systemctl start httpd
[root@server ~]# systemctl enable httpd
- 第二步:编辑httpd目录中的用户主页配置文件(不是httpd.conf)
[root@server ~]# vim /etc/httpd/conf.d/userdir.conf
#UserDir disabled # 插入#,注释掉,表示开启用户主页功能
UserDir public_html # 去掉#,启动网站存储数据的默认目录,路径:/home/账户名/public_html
- 第三步:新建账户,设置权限
[root@server ~]# useradd andy
[root@server ~]# passwd andy
更改用户 andy 的密码 。
新的密码: # 密码:123456
无效的密码: 密码少于 8 个字符
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。
[root@server ~]# useradd jenny
[root@server ~]# passwd jenny
更改用户 jenny 的密码 。
新的密码: # 密码:654321
无效的密码: 密码少于 8 个字符
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。
[root@server ~]# id andy
用户id=1001(andy) 组id=1001(andy) 组=1001(andy)
[root@server ~]# id jenny
用户id=1002(jenny) 组id=1002(jenny) 组=1002(jenny)
#切换到andy账户,设置存储网页目录及权限
[root@server ~]# su -l andy
[andy@server ~]$ pwd
/home/andy
[andy@server ~]$ mkdir -v public_html
mkdir: 已创建目录 'public_html'
[andy@server ~]$ cd public_html
[andy@server public_html]$
# 使用文件上传工具将网页数据上传到/home/andy/public_html目录下
[andy@server public_html]$ cd ~
[andy@server ~]$ chmod -Rf 755 /home/andy
[andy@server ~]$ ll
总用量 0
drwxr-xr-x 7 andy andy 100 8月 22 11:25 public_html
# 切换到jenny账户,设置存储网页目录及权限
[root@server ~]# su -l jenny
[jenny@server ~]$ pwd
/home/jenny
[jenny@server ~]$ mkdir -v public_html
mkdir: 已创建目录 'public_html'
[jenny@server ~]$ cd public_html/
# 使用文件上传工具将网页数据上传到/home/jenny/public_html目录下
[jenny@server public_html]$ cd ~
[jenny@server ~]$ chmod -Rf 755 /home/jenny
[jenny@server ~]$ ll
总用量 0
drwxr-xr-x 6 jenny jenny 70 8月 22 11:29 public_html
# 切换到root账户
[jenny@server ~]$ su -l root
- 第四步:重启服务并测试
[root@server ~]# systemctl restart httpd
# 在Windows端浏览器地址栏中,输入:
# 192.168.48.130/~andy
# 192.168.48.130/~jenny
- 第五步:增加密码访问控制
[root@server ~]# htpasswd -c /etc/httpd/passwd andy
New password: # 密码:123456
Re-type new password:
Adding password for user andy
# 分析:
# htpasswd:生成密码数据的命令
# -c:表示第一次生成会创建存储密码加密密文的存储文本,第二次创建时就不能增加-c选项,否则存储密码密文文件内容会被覆盖
# andy:需要验证密码登录的账户
[root@server ~]# htpasswd /etc/httpd/passwd jenny
New password: #v密码:654321
Re-type new password:
Adding password for user andy
[root@server ~]# cat /etc/httpd/passwd
andy:$apr1$L2hDL4ZR$mqWFgmc5bXSE8UdpsFUy40
jenny:$apr1$Fhz/95IO$XMfVqIKCiunSxE3ake5AH.
- 第六步:编辑个人主页配置文件,设置访问控制策略
[root@server ~]# vim /etc/httpd/conf.d/userdir.conf
# 定位最后一行输入以下内容:
<directory "/home/andy/public_html"> # 设置andy账户目录的区域配置
authuserfile "/etc/httpd/passwd" # 设置验证密码的存储文件位置
authname "My privately" # 登录时的提示信息,可能不显示
authtype basic # 加密模式
require user andy # 需要验证密码的账户名
</directory>
<directory "/home/jenny/public_html">
authuserfile "/etc/httpd/passwd"
authname "My privately"
authtype basic
require user jenny
</directory>
- 第七步:重启服务并测试
[root@server ~]# systemctl restart httpd
# 在Windows端浏览器地址栏中,输入以下url时会验证密码
# 192.168.48.130/~andy
# 192.168.48.130/~jenny
实验5
- 通过主配置文件实现密码验证访问网站
- 第一步:准备工作
# 恢复快照
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
[root@server ~]# yum install httpd -y
[root@server ~]# systemctl start httpd
[root@server ~]# systemctl enable httpd
- 第二步:新建账户设置密码
[root@server ~]# useradd t1
[root@server ~]# passwd t1
更改用户 t1 的密码 。
新的密码:
无效的密码: 密码少于 8 个字符
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。
[root@server ~]# useradd t2
[root@server ~]# passwd t2
更改用户 t2 的密码 。
新的密码:
无效的密码: 密码少于 8 个字符
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。
- 第三步:搭建网站,设置密码访问控制
[root@server ~]# mkdir -p /www/zy # 创建存储网站数据的目录(-p多级创建)
# 使用xftp将网页数据上传到/www/zy
[root@server ~]# htpasswd -c /etc/httpd/passwdzy t1 # 创建存储登录网站密码
New password: # 密码:123456
Re-type new password:
Adding password for user t1
[root@server ~]# htpasswd /etc/httpd/passwdzy t2 # 注意:不能加-c
New password: # 密码654321
Re-type new password:
Adding password for user t2
[root@server ~]# vim /etc/httpd/conf/httpd.conf
DocumentRoot "/www/zy" # 定位124行进行修改
<Directory "/www/zy"> # 定位129行修改
<directory "/www/zy"> # 定位135行添加
authuserfile "/etc/httpd/passwdzy"
authname "My privately"
authtype "basic"
require user t1 t2 # 有多个账户需要验证密码,则通过空格隔开
</directory>
- 第四步:重启服务,测试
[root@server ~]# systemctl restart httpd
# 浏览器中输入ip地址后输入账户及密码即可登录