1、web服务介绍

1.1、Linux常见的web服务

httpd

nginx

tomcat

1.2、LAMP架构

L:CentOS

  • CentOS7
  • RHEL7等等

A:Apache

  • apache:网页服务器
    • httpd服务

LiangGaRy-学习笔记-Day24-LMLPHP

M:MySQL

  • MySQL:关系型数据库
    • AB公司–>08年被SUN公司收购
    • 09年4月:Oracle收购sun
    • MySQL版本:5.5/5.6/5.7
    • 16年开始:MySQL8时代–>Oracle
    • 官方网站:http://www.mysql.com

P:PHP

  • 开发语言:有27年的历史
  • 94年问世–>用于机器学习、3D、数据分析
    • shell编程、php语言
  • 语言工具:理解运维当中需要什么样的编程思想与语言
    • 学语言就是为了运维,运维为重;
    • 学习仅仅只是辅助;

2、Apache WEB网站

2.1、Apache介绍

工作模式:

  • B/S模式:企业对接客户的模式
  • 端口:默认是80
    • 加密是https:445–>做CA认证

三种工作模式:

  • prefork:
    • profork模式实现了一种非线程、预派生的Web服务器,
    • 用的是进程去处理请求,所以比较容易消耗内存,
    • 但是稳定性好,某个进程出现问题不会影响到其他请求。
  • work:
    • worker模式使用多个子进程,每个子进程有多个线程、
    • 由于使用的是线程去处理请求,消耗内存小,适合高流量的请求,
    • 但是如果某个进程出现问题,那么这个进程下的线程都会出现问题,即稳定性不是很好。
  • event:
    • event模式为了解决keep-alive保持长连接出现的一种工作模式,
    • 使用keep-alive长连接的时候,某个线程会一直被占用,
    • 即使中间没有请求,需要等到超时才会被释放,所以这个时候就出现了event的工作模式。

UV:独立访客数量

  • UV值表示通过互联网访问、流量网站的自然人的个数。
  • 1天内相同访客多次访问网站,只计算为1个独立访客。
  • 该概念的引入,是从用户个体的角度对访问数据进行划分

一个IP:并发访问UV–>打开多个网页(pv)

PV:页面浏览量

  • 用户每打开1个网站页面,记录1个PV。
  • 用户多次打开同一页面,PV值累计多次。
  • 主要用来衡量网站用户访问的网页数量。
  • 是评价网站流量最常用的指标之一

拥有一个个人网站:

  • LAMP+Wordpress+前段模板
  • 域名+ip
  • 阿里云购买
    • 1核心、1G内存
  • 或者是:虚拟机做一台
    • 就在上面写文章
    • 后面做迁移–>直接迁移到线上部署;
    • 域名:备案20天左右;
      • www.liangjiawei.net:8080 -->这里就是apache的配置默认页面
      • /var/www/html/bbs/index.php

2.2、apache的安装部署

部署yum源–>使用本地yum源即可;

#编写repo文件
[root@LJW ~]# vim /etc/yum.repos.d/local.repo 
[local-repo]
name=local-repo
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0

#挂载使用
[root@LJW ~]# mount /dev/cdrom /mnt/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only

直接yum安装

#查看相关联的软件包
[root@LJW ~]# ls /mnt/cdrom/Packages/httpd-*
/mnt/cdrom/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm
/mnt/cdrom/Packages/httpd-devel-2.4.6-88.el7.centos.x86_64.rpm
/mnt/cdrom/Packages/httpd-manual-2.4.6-88.el7.centos.noarch.rpm
/mnt/cdrom/Packages/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm

#然后直接yum安装即可-->
[root@LJW ~]# yum -y install httpd

#然后直接启动
[root@LJW ~]# systemctl start httpd
	#查看端口
[root@LJW ~]# netstat -antlup | grep :80
tcp6       0      0 :::80                   :::*                    LISTEN      6731/httpd    

#查看httpd的版本
[root@LJW ~]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Nov  5 2018 01:47:09

#查看网站的状态
[root@LJW ~]# curl -I 192.168.75.131
HTTP/1.1 403 Forbidden
Date: Sun, 16 Jul 2023 07:34:26 GMT
Server: Apache/2.4.6 (CentOS)
Last-Modified: Thu, 16 Oct 2014 13:20:58 GMT
ETag: "1321-5058a1e728280"
Accept-Ranges: bytes
Content-Length: 4897
Content-Type: text/html; charset=UTF-8

2.3、apache的配置文件说明

配置文件的位置:

  • /etc/httpd/conf/httpd.conf
[root@LJW ~]# vim /etc/httpd/conf/httpd.conf 
.....
ServerRoot "/etc/httpd"			#用于指定Apache运行的根目录
Listen 80						#监听80端口,默认的就是80端口
MaxClients  256					#指定同时能访问服务器的客户机数量为256
DocumentRoot "/var/www/html"	#网页文件存放的目录
DirectoryIndex index.html index.html.var	#默认网站主页
Include conf.d/*.conf			#读取/etc/httpd/conf/conf.d/目录中所有以.conf结尾的文件
ServerName www.wg.com			#域名
ServerAdmin						#设置管理员的邮箱
Include conf.d/*.conf			#包含的子配置文件
User apache						#用户是apache
Group apache					#用户组是apache
Directory 						#认证授权和访问控制

Options FollowSymLinks 			#Options Indexes 目录浏览FollowSymLinks 用连接
AddDefaultCharset UTF-8 		#支持的语言,默认编码
LoadModule						#加载动态模块

##################################
<IfModule prefork.c>     #当httpd服务使用的profork模型的时候:
 StartServers      10    #默认启动10个作业进程
 MinSpareServers    10    #空闲进程数不低于10个
 MaxSpareServers    20    #空闲进程数最大20个
 ServerLimit      256    #最多可以启动256个进程
 MaxClients       256    #最大并发客户端数为256个
 MaxRequestsPerChild 4000 #每个进程可以处理4000个请求,超过此数目进程被杀死并重新创建
</IfModule>

3、apache实战

3.1、搭建测试WEB

要求如下:

  • 搭建一台web测试机
  • 部门内部搭建一个台web服务器,采用的IP地址和端口为80;访问格式:192.168.75.131:80
  • 首页采用index.html文件
  • 管理员E-mail地址为:liangjiawei@163.com
  • 网页的编码类型采用UTF-8,
  • 所有网站资源都存放在/var/www/html目录下
  • 并将Apache的配置文件根目录设置为/etc/httpd目录
#直接安装httpd
[root@LJW ~]# yum -y install httpd

#按照要求配置web服务器
	#备份一下配置文件
[root@LJW ~]# cp /etc/httpd/conf/httpd.conf{,.bak}
	#然后按要求配置
[root@LJW ~]# vim /etc/httpd/conf/httpd.conf
..........
 31 ServerRoot "/etc/httpd"			#设置默认的配置文件
.............
 42 Listen 80			#指定监听的端口
..........
 87 ServerAdmin liangjiawei@163.com		#设定默认的邮箱
..............
119 DocumentRoot "/var/www/html"	#修改根目录的位置,
...........
316 AddDefaultCharset UTF-8			#设置中文编码

#填写好了之后就重启httpd--->没有报错就可以了
[root@LJW ~]# systemctl restart httpd

3.2、Apache访问控制实验

要求:

  • 修改网络目录对应的权限–>/var/www/html–>默认的目录存放的路径
    • 创建一个一个bbs的目录
  • 然后允许所有的访问请求
#修改配置文件
[root@LJW ~]# vim /etc/httpd/conf/httpd.conf
..........#在末行添加
355 <Directory "/var/www/html/bbs">
356 <RequireALL>
357 Require all granted
358 </RequireALL>
359 </Directory>
#重启服务
[root@LJW ~]# systemctl restart httpd

#然后创建资源
[root@LJW ~]# mkdir /var/www/html/bbs/
[root@LJW ~]# echo "This is BBS" >> /var/www/html/bbs/index.html

#访问测试-->这里注意,一定要带上/
[root@Node2 ~]# curl 192.168.75.131/bbs/
This is BBS
  • 拒绝所有的访问
    • 创建一个/var/www/html/liangjiawei/
#修改配置文件-->多增加一个标签
[root@LJW ~]# vim /etc/httpd/conf/httpd.conf
.......#在末行添加
<Directory "/var/www/html/liangjiawei">
<RequireALL>
Require all denied
</RequireALL>
</Directory>
#重启
[root@LJW ~]# systemctl restart httpd

#创建资源
[root@LJW ~]# systemctl restart httpd
[root@LJW ~]# mkdir /var/www/html/liangjiawei/
[root@LJW ~]# echo "This is liangjiawei" >> /var/www/html/liangjiawei/index.html 

#测试:-->本机测试
[root@LJW ~]# curl 192.168.75.131/liangjiawei/index.html
<p>You don't have permission to access /liangjiawei/index.html
  • 只允许特定的域名主机访问
    • 允许192.168.75.132主机访问liangjiawei
#修改配置文件-->多增加一个标签
[root@LJW ~]# vim /etc/httpd/conf/httpd.conf
.......#在末行添加
<Directory "/var/www/html/liangjiawei">
<RequireALL>
Require host node1
Require ip 192.168.75.132
</RequireALL>
</Directory>

#重启
[root@LJW ~]# systemctl restart httpd

#测试
[root@Node2 ~]# curl 192.168.75.131/liangjiawei/index.html
This is liangjiawei
  • 允许所有访问请求,但是拒绝来自特定IP或者是IP段的访问请求
    • 阻止恶意IP或恶意爬虫网段的访问
[root@LJW ~]# vim /etc/httpd/conf/httpd.conf
.........
<Directory "/var/www/html/bbs">
<RequireALL>
Require all granted
Require not ip 192.168.75.132
</RequireALL>

#重启
[root@LJW ~]# systemctl restart httpd

#测试
[root@Node2 ~]# curl 192.168.75.131/bbs/
........
<p>You don't have permission to access /bbs/

总结:

  • Apache访问控制会有一个优先级的说法
    • 相同的IP陪在后面的,优先级高
    • Require all granted :允许所有的饿
    • Require all denied :拒绝所有
    • Require user userid [ userid ] … :允许,特定用户
    • Require ip 192.168.75.132 192.168.75.0/24 :允许特定IP和网段
    • Require not ip 1:不允许特定IP和网段

3.3、Apache的别名目录

别名目录:就是虚拟目录

  • 把/usr/local/data/目录通过虚拟目录的功能添加到万丈根目录的/data/下
#创建资源
[root@LJW ~]# mkdir /usr/local/data/
[root@LJW ~]# echo "This is data.txt" >> /usr/local/data/index.html

#修改apache的配置文件,
[root@LJW ~]# vim /etc/httpd/conf/httpd.conf
..#在最后添加如下信息.......
367 Alias /data/ "/usr/local/data/"
368 <Directory /usr/local/data/>
369   AllowOverride none
370   Options Indexes FollowSymLinks
371   Require all granted
372 </Directory>

#重新读取配置文件
[root@LJW ~]# systemctl restart httpd

#测试验证
[root@Node2 ~]# curl 192.168.75.131/data/
This is data.txt

3.4、Apache目录列表

要求:

  • 实现apache打开软链接功能-禁止显示目录列表-用户认证
#创建实验环境
[root@LJW ~]# cd /var/www/html/
[root@LJW html]# ls
bbs  liangjiawei
[root@LJW html]# cd bbs/
[root@LJW bbs]# mkdir list
[root@LJW bbs]# echo "hello the word " >> liangjiawei.txt
[root@LJW bbs]# cd /var/www/html/
[root@LJW html]# tree
.
├── bbs
│   ├── index.html
│   ├── liangjiawei.txt
│   └── list
└── liangjiawei
    └── index.html
    
#移除走apache的默认页面
[root@LJW html]# mv /etc/httpd/conf.d/welcome.conf  /tmp/

如果直接访问IP

LiangGaRy-学习笔记-Day24-LMLPHP

3.5、Apache的用户认证

  • 通过用户认证来保护网站页面
#修改配置文件
[root@LJW ~]# vim /etc/httpd/conf/httpd.conf
.........
367 Alias /data/ "/usr/local/data/"
368 <Directory /usr/local/data/>
369   AllowOverride none
370   #Options Indexes FollowSymLinks
371   #Require all granted
372   AuthType Basic				#authtype命令:指定认证类型为:basic。
373   AuthName "liangjiawei web "
374   AuthUserFile /etc/httpd/conf/passwd.secret
375   Require valid-user	#在AuthUserFile指定的文件中任何用户都可以访问)
376 </Directory>

#然后创建用户文件-->第一次创建需要+上-c选项
[root@LJW ~]# htpasswd -cm /etc/httpd/conf/passwd.secret liangjiawei
New password: 
Re-type new password: 
Adding password for user liangjiawei
	#第二次添加可以不用+选项-c
[root@LJW ~]# htpasswd -m /etc/httpd/conf/passwd.secret huangzhiming
New password: 
Re-type new password: 
Adding password for user huangzhiming

#查看一下里面的内容
[root@LJW ~]# cat /etc/httpd/conf/passwd.secret 
liangjiawei:$apr1$0azIyzN6$fVE1nCCG0.agYjLlfXCvI1
huangzhiming:$apr1$8nMPwad/$h1iv59wT6DOAbC/Q3o.y9.

#重启apache服务
[root@LJW ~]# systemctl restart httpd

浏览器登陆

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zpb8tEfY-1687246471633)(C:\Users\11146\AppData\Roaming\Typora\typora-user-images\1687246140027.png)]

3.6、htpasswd命令

作用:用于创建和更新储存用户名、域和用户基本认证的密码文件

语法:htpasswd + 选项 + 文件路径 + 用户名

选项:

  • -c:创建一个加密文件;
  • -n:不更新加密文件,只将加密后的用户名密码显示在屏幕上;
  • -m:默认采用MD5算法对密码进行加密;
  • -d:采用CRYPT算法对密码进行加密;
  • -p:不对密码进行进行加密,即明文密码;
  • -s:采用SHA算法对密码进行加密;
  • -b:在命令行中一并输入用户名和密码而不是根据提示输入密码;
  • -D:删除指定的用户。
06-21 09:20