1、web服务介绍
1.1、Linux常见的web服务
httpd
nginx
tomcat
1.2、LAMP架构
L:CentOS
- CentOS7
- RHEL7等等
A:Apache
- apache:网页服务器
- httpd服务
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
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:删除指定的用户。