源码编译安装:软件功能可按需选择/定制
源码包进行包装就产生了RPM软件包
源码包--通过开发工具gcc与make---变成可执行程序---运行安装
安装开发工具gcc、make
tar解包,释放源代码到指定目录,把从真机上传递过来的tools包解压到/usr/local/目录下
解压inotify压缩包
查看该源码包的内容
./configure 配置,它能检测当前系统是否安装gcc, 指定安装位置与功能,生成Makefile文件(制作程序的大纲)。
查看帮助信息
必须相对路径运行该脚本, prefix选项:指定安装位置
进行make编译,变成可以执行的程序(放在内存中,二进制文件)
make install 安装,将编译好的文件复制到安装路径
查看安装
如果要卸载,只要卸载该目录
rsync基本使用
rsync:Remote Sync 远程同步
复制是完全拷贝源到目标,同步则是增量拷贝,只传输 变化过的数据
rsync [选项] 源目录 目标目录
-n:测试同步过程,不做实际修改
--delete:删除目标目录文件夹内多余的文档
-a:归档模式,相当于 -rlptgoD(保持大部分的属性不变)
-v:显示详细操作信息
-X:保持acl策略不变
创建两个目录
向mydir目录中添加内容
同步数据内容,需要加 ‘/’
查看目标目录,此时数据已经同步过去
原目录添加文件,再次同步会添加新增的文件
如果目标目录中比原目录多文件,使用---delete会删除多余的文件
查看目标目录
测试同步,表示将要同步的内容
远程同步 rsync + ssh
rsync [..] 本地目录 user@host:远程目录
rsync [..] user@host:远程目录 本地目录
在pc2主机查看内容
如何实现,只要原目录数据变化,就数据远程同步:虚拟机A上生成公钥与私钥,把公钥传递给虚拟机B,此时rsync远程数据同步就不在需要密码
生成密钥
传递公钥
此时数据远程同步就不需要密码验证
使用上面下载的源码包程序inotify,监控原目录的变化
inotifywait [选项] 目标文件夹
-m:持续监控(捕获一个事件后不退出)
-r:递归监控,包括子目录及文件
-q:减少屏幕输出信息
-e:指定监视的modify、move、create、delete等事件
监控文件的变化,要在开一个终端
在另一个终端中修改文件内容
此时监控就输出监视的结果
脚本:可以运行的一个文件,实现某种功能
例如:使用脚本输出 hello world
需要编写shell脚本,让两个命令相关联起来,只要inotifywait一检测到文件变化,就执行rsync命令让数据远程同步。
-rqq两个q表示不在屏幕上输出
执行脚本并放入到后台(&)
在虚拟机A是修改内容,
此时使用虚拟机B查看内容,已经同步数据
数据库:存放数据的仓库
在数据库系统中,有很多的数据库,每个数据库中有很多的表格
MariaDB数据库:
安装软件包 mariadb-server
启动服务
使用mysql命令登录默认以数据库管理员登录不需要密码
show datebases; : 显示数据库,以分号结尾
create database :创建数据库
查看创建的数据库
删除数据库drop
退出数据库 exit
use + 数据库名:进入该数据库
show tables :查看表格
数据库系统没有返回命令,如果需要进入其他数据库直接use + 数据库;就能切换到该数据库。
表格的操作:增、删、改、查;表的类型叫做表字段,表的内容叫表记录。
数据的恢复,把表导入到数据库中(之前导出的表或者下载的表)
进入数据库,查看表格
查看该数据库的表格,select *(所有字段) from 表名
当在其他数据库中查看另一个数据库的表时,需要加上该数据库的名称
查看特定的命令,where、and、or
insert插入数据,update修改数据,delete删除数据
数据库系统管理员:对于数据库系统有最高权限,名称为root,能够登录数据系统的用户信息,由mysql中user表进行存储。
为数据库系统管理员设置密码:
mysqladmin [-u 用户名] [-p 旧密码] passwd '新密码'
此时登录数据库就需要密码了
修改密码
邮件服务器:为用户提供电子邮件存储空间(用户名@邮件域名),处理用户发出的邮件--传递给收件服务器,处理用户收到的邮件--投递到邮箱。
安装软件包postfix
发送邮件 mial -s '标题名' -r 发送用户名 接收用户名
查看邮件
容器:
将软件打包成标准化单元,用于开发,交付和部署,容器技术已经成为应用程序封装和交付的核心
优点:相较于传统的虚拟化技术,容器更加简洁高效,容器使用的共享公共库和程序
缺点:容器的隔离性没有虚拟化强,共用Linux内核,缺乏安全性
podman是完整的一套容器管理系统,它提供的一组命令,让用户更加方便直接地使用容器技术,而不需要过多的关心底层内核技术,
需要关闭SELinux,设置禁用模式(重新开机才会生效)
卸载防火墙 yum remove firewalld
修改网卡命名规则(eth0):
编辑/etc/default/grub文件
链接到/boot/grub2/grub.cfg
重启系统reboot
此时SELinux和网卡名称都已经被修改
添加网卡
修改配置
激活并查看IP地址
配置虚拟网卡,让真机连接虚拟机
安装podman
查看安装
查看镜像podman images
导入镜像(镜像文件)
查看镜像:镜像的名称标识,每一个镜像都对应唯一的ID,镜像名称(姓氏)+标签(名字)=唯一标识。每一个镜像都有标签,如果没有写标签默认标签latest,在调用镜像的时候,如果没有指定标签也是默认latest
删除镜像 podman rmi 镜像ID(只需写ID不同的部分,系统会补全其余部分)
或者镜像标识rmi 镜像名称:镜像标签
运行容器:
podman run [选项] 镜像名称:镜像标签(每次运行都产生一个容器,run=创建+启动+进入) 启动命名
-i:交互式方式
-t:终端
-d:后台运行
--name 容器名字
当按回车后就已经在该容器内了(相当于新的虚拟机)
查看版本信息
exit退出
查看所有的容器 podman ps -a
删除容器并查看 -f(强制删除)
进入容器,先启动容器
podman exec -it 容器名 解释器
将容器放入后台(创建的时候),此时如果使用容器就不在需要来回启动它了(会一直保持up状态)
进入容器
使用容器创建web服务,当虚拟机B访问本机web访问时,本机把容器的web服务转发给虚拟机B(podman监听80端口,如果有人访问80 端口,podman就会把访问请求发给容器,让容器响应请求)
端口绑定(端口转发)-p 宿主机端口:容器端口
创建容器
进入容器,创建首页
使用虚拟机B服务本机的Web服务
容器共享卷:容器不适合保存任何数据,podman可以映射宿主机文件或目录到容器中,目标对象不存在就自动创建,目标对象存在就直接覆盖掉,多个容器可以映射同一个目标对象来达到数据共享的目的,启动容器时,使用 -v 映射参数
创建共享目录
创建容器
此时容器httpd服务默认启动,在宿主机上创建网页
查看容器的内容,发现和宿主机一样
如何使用systemctl命令来开启或者停用容器(/usr/lib/systemd/system:systemd服务管理器目录)
生成配置文件(此时容器必须保持开启状态)
查看配置文件
重新加载服务配置文件,使其生效
查看容器
停用容器,并查看
使用systemctl启动容器