虚拟机初始化配置
```bash
1、安装系统,选择对应的linux版本,阿里云镜像站点、163镜像站点等等
2、装好系统后,先配置网络:ip地址,掩码,网关,dns域名解析服务器
[root@localhost ~]# nmtui
[root@localhost ~]# ping -c2 www.baidu.com
3、调整时区和时间
[root@localhost ~]# timedatectl set-timezone Asia/Shanghai
4、写yum仓库,查看当前的发行版本信息选择与之匹配的仓库
#1、如果操作系统发行版本为centos7.9,仓库如下
[root@localhost ~]# vim /etc/yum.repos.d/centos7.repo
[centos7-base]
name=centos7-base
baseurl=https://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/
gpgcheck=0
#2、如果操作系统发行版本为rhel9、rocky9,centos-stream,仓库如下:
[root@localhost yum.repos.d]# vim /etc/yum.repos.d/wangluo.repo
[wangluo-app]
name=wanluo-app
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/AppStream/x86_64/os/
gpgcheck=0
[wangluo-base]
name=wangluo-base
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/BaseOS/x86_64/os/
gpgcheck=0
5、安装基础软件包,bash-completion包的作用为提供命令的tab键补全
[root@localhost ~]# yum install vim bash-completion -y
```
单一执行的例行性工作 at
- /etc/at.allow,写在该文件的人可以使用at命令
- /etc/at.deny,黑名单
- 两个文件如果都不存在,只有root能使用
```bash
#at工作调度对应的系统服务
[root@localhost ~]# systemctl status atd
#at的工作文件存放目录
[root@localhost ~]# ll /var/spool/at
#at工作的日志文件
[root@localhost ~]# ll /var/log/cron
```
执行完就删除
at中CTRL+D执行完成并退出
循环执行的例行性工作 crontab
- /etc/cron.allow,写在该文件的人可以使用crontab命令
- /etc/cron.deny,黑名单
- 两个文件如果都不存在,只有root能使用
```bash
#crontab工作调度对应的系统服务
[root@localhost ~]# systemctl status crond
#crontab工作的日志文件
[root@localhost ~]# ll /var/log/cron
#用户定义计划任务的文件所在目录
[root@localhost ~]# ll /var/spool/cron/
```
分时日月周
百分号在crontab里有特殊含义,需要使用/转义
成功创建
配置系统的计划任务
不写run-parts,必须写文件名,写run-parts,自动执行root下所有脚本
NTP--网络时间协议
一个主机同步时间
每天九点执行同步时间crontab * 9 * * * chronyc sources > /dev/null
一个客户端同步到一个服务端(两台主机)
服务端配置(192.168.168.148)
客户端配置
远程连接服务器(SSH)
(1)什么是远程连接服务器
远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得可操作主机接口(shell),而登录后的操作感觉就像是坐在系统前面一样。
(2)远程连接服务器的功能
分享主机的运算能力
(3)远程连接服务器的类型(以登录的连接界面来分类)
- 文字接口
明文传输:Telnet、RSH等,目前非常少用
加密传输:SSH为主,已经取代明文传输
- 图形接口:XDMCP、VNC、XRDP等
(4)文字接口连接服务器
SSH(Secure Shell Protocol,安全的壳程序协议)它可以通过数据包加密技术将等待传输的数据包加密后再传输到网络上。ssh协议本身提供两个服务器功能:一个是类似telnet的远程连接使用shell的服务器;另一个就是类似ftp服务的sftp-server,提供更安全的ftp服务。
SSH提供两种认证方法:
基于口令的认证(password认证):客户端向服务器发出password认证请求,将用户名和密码加密后发送给服务器,服务器将该信息解密后得到用户名和密码的明文,与设备上保存的用户名和密码进行比较,并返回认证成功或失败消息。
基于密钥的认证(publickey认证):客户端产生一对公共密钥,将公钥保存到将要登录的服务器上的那个账号的家目录的.ssh/authorized_keys文件中。认证阶段:客户端首先将公钥传给服务器端。服务器端收到公钥后会与本地该账号家目录下的authorized_keys中的公钥进行对比,如果不相同,则认证失败;否则服务端生成一段随机字符串,并先后用客户端公钥和会话密钥对其加密,发送给客户端。客户端收到后将解密后的随机字符串用会话密钥发送给服务器。如果发回的字符串与服务器端之前生成的一样,则认证通过,否则,认证失败。
注:服务器端对客户端进行认证,如果认证失败,则向客户端发送认证失败消息,其中包含可以再次认证的方法列表。客户端从认证方法列表中选取一种认证方法再次进行认证,该过程反复进行。直到认证成功或者认证次数达到上限,服务器关闭连接为止。
实验1:修改ssh服务的端口号
```bash
#修改ssh服务的端口号
[root@server1 ~]# vim /etc/ssh/sshd_config
Port 2222
[root@server1 ~]# systemctl disable --now firewalld
[root@server1 ~]# setenforce 0
[root@server1 ~]# getenforce
Permissive
[root@server1 ~]# systemctl restart sshd
```
实验2:拒绝root用户远程登陆
```bash
#请保持服务器上至少有一个可以远程登陆的普通远程账号
#修改配置文件如下:
#打开该选项并修改参数为no
PermitRootLogin no
#重启服务后生效,使用时使用普通用户进行登陆,需要使用root用户时再切换
#说明:注意新版本rhel9中的/etc/ssh/sshd_config和/etc/ssh/sshd_config.d/*.conf中的配置
```
实验3:允许特定用户ssh登陆,其他用户都无法登陆
```bash
#编辑配置文件,在最后添加如下内容:
AllowUsers USERNAME
#USERNAME为你允许登陆的账号【需要在系统中useradd该账号】,如果是多个用户,中间用空格隔开
#重启ssh服务后生效
```
实验4:linux客户端通过秘钥登录linux服务端root用户
```bash
#创建密钥对
[root@web ~]# ssh-keygen -t rsa
ssh-keygen 生成、管理和转换认证密钥 -t制定类型 RSA
/root/.ssh/id_rsa私钥文件
/root/.ssh/id_rsa.pub公钥文件
#复制该公钥文件到服务端的该目录下
[root@web ~]# ssh-copy-id root@192.168.40.132
#在本地服务器上登陆对端服务器
[root@web ~]# ssh root@192.168.40.132
```
web服务器
(1)什么是www
www是world wide web的缩写,也就是全球信息广播的意思。通常说的上网就是使用www来查询用户所需要的信息。www可以结合文字、图形、影像以及声音等多媒体,并通过可以让鼠标单击超链接的方式将信息以Internet传递到世界各处去。
与其他服务器类似,当你连接上www网站,该网站肯定会提供一些数据,而你的客户端则必须要使用可以解析这些数据的软件来处理,那就是浏览器。www服务器与客户端浏览器之间的连接图。
```
1、 www所用的协议: 浏览器怎样向web服务器请求数据以及服务器怎样把文档传送给浏览器呢?这就是由http协议来定义的,(Hyper Text Transport Protocol,HTTP,超文本传输协议)。
2、www服务器需要提供可让客户端浏览的平台。目前最主流的Web服务器是Apache、Microsoft的Internet信息服务器(Internet Information Services,IIS)和unix nginx。
3、服务器所提供的最主要数据是超文本标记语言(Hyper Text Markup Language,HTML)、多媒体文件(图片、影像、声音、文字等,都属于多媒体或称为超媒体),HTML只是一些纯文本数据,通过所谓的标记来规范所要显示的数据格式。
4、客户端收到服务器的数据之后需要软件解析服务器所提供的数据,最后将效果呈现在用户的屏幕上。那么著名的浏览器就有内建在Windows操作系统内的IE浏览器了,还有Firefox浏览器和Google的chrome浏览器。
```
(2)网址及HTTP简介
web服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在某个特殊的目录下面,这个目录就是我们整个网站的首页,在redhat中,这个目录默认在 /var/www/html 。浏览器是通过你在地址栏中输入你所需要的网址来取得这个目录的数据的。
- URL:Uniform Resource Locator,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。
- 网址格式:<协议>://<主机或主机名>[:port]/<目录资源,路径>
- 浏览器常支持的协议有:http、https、ftp等。
- 主机地址或者主机名:主机地址就是服务器在因特网所在的IP地址。如果是主机名的话,那么就需要域名解析了。
- 端口号(port):http为80,https为443 (IANA:互联网数字分配机构)
- 0-1023:众所周知,永久地分配给固定的应用程序使用,特权端口(只有管理员有权限启用并让进程监听)
- 1024-41951:亦为注册端口,但要求不是特别严格,分配给程序注册为某应用使用:3306/TCP
- 41952-60000:客户端程序随机使用的端口,动态端口,或私有端口
- http请求方法:在http通信中,每个http请求报文都包含一个方法,用以告诉web服务器端需要执行哪些具体的动作,这些动作包括:获取指定web页面、提交内容到服务器、删除服务器上资源文件等。
![image-20230201160555922](https://zyj-1258460726.cos.ap-nanjing.myqcloud.com//typora-pic/image-20230201160555922.png)
- 状态代码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
- 1xx:指示信息 —— 表示请求已接收,继续处理
- 2xx:成功 —— 表示请求已被成功接收、理解、接受
- 3xx:重定向 —— 要完成请求必须进行更进一步的操作
- 4xx:客户端错误 —— 请求有语法错误或请求无法实现
- 5xx:服务器端错误 —— 服务器未能实现合法的请求
- 常见状态代码、状态描述的说明如下:
- 200 OK:客户端请求成功
- 400 Bad Request:客户端请求有语法错误,不能被服务器所理解
- 401 Unauthorized:请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用
- 403 Forbidden:服务器收到请求,但是拒绝提供服务
- 404 Not Found:请求资源不存在,举个例子:输入了错误的URL
MIME类型即文件类型
web服务器分为动态和静态
实验1:搭建一个web服务器,访问该服务器时显示“this is test”欢迎界面 。
桌面创建html文件内容为this is test
通过xftp拉到/var/www/html
测试成功
实验2:建立两个基于ip地址访问的网站,要求如下
- 该网站ip地址的主机位为100,设置DocumentRoot为/www/ip/100,网页内容为:this is 100。
- 该网站ip地址主机位为200,设置DocumentRoot为/www/ip/200,网页内容为:this is 200。
```bash
#添加ip地址
[root@localhost ~]#nmcli connection modify eno16777736 +ipv4.addresses 192.168.126.100/24 ipv4.gateway 192.168.126.1 ipv4.method manual connection.autoconnect yes
[root@localhost ~]# nmcli connection modify eno16777736 +ipv4.addresses 192.168.126.200/24
[root@localhost ~]# nmcli connection up eno16777736
查看网关地址
nmtui也可以
#创建两个网页文件根目录,并定义网页内容
[root@localhost ~]# mkdir -pv /www/ip/{100,200}
[root@localhost ~]# echo this is 100 > /www/ip/100/index.html
[root@localhost ~]# echo this is 200 > /www/ip/200/index.html
#设置selinux
[root@server html]# setenforce 0
[root@server html]# getenforce
Permissive
#定义基于不同ip地址来访问网站的配置文件
#示例文件:
[root@www conf.d]# cat ip.conf
<virtualhost 192.168.126.100:80>
servername 192.168.126.100
documentroot /www/ip/100
</virtualhost>
<virtualhost 192.168.126.200:80>
servername 192.168.126.200
documentroot /www/ip/200
</virtualhost>
<directory /www>
allowoverride none
require all granted
</directory>
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# curl 192.168.126.200
this is 200
[root@localhost ~]# curl 192.168.126.100
this is 100
#如果访问时显示的是apache默认的欢迎界面,则需要做如下操作:[root@localhost ~]# setenforce 0
实验3:建立两个基于不同端口访问的网站,要求如下:
- 建立一个使用web服务器默认端口的网站,设置DocumentRoo为/www/port/100,网页内容为:this is 100。
- 建立一个使用10000端口的网站,设置DocumentRoot为/www/port/10000,网页内容为:the port is 10000。
```bash
[root@localhost ~]# mkdir -pv /www/port/10000
[root@localhost ~]# echo the port is 10000 > /www/port/10000/index.html
[root@localhost ~]# systemctl restart httpd
实验4:建立两个基于域名访问的网站,要求如下:
- 新建一个网站,域名为www.test.com,网页内容为this is 100。
实验5:基于虚拟目录和用户控制的web网站
第一次加-c,第二次不加,否则会覆盖第一次