系统服务&服务管理进阶
源码编译安装
编译安装介绍
编译安装是一种软件安装方式,通常用于开源软件或需要特定环境配置的应用程序。这种方式需要用户自己下载源代码,然后通过编译器将源代码转换为可执行文件。
环境准备:
#所有虚拟机设置SELinux运行模式
[root@server ~]# getenforce
Enforcing
[root@server ~]# setenforce 0 #当前设置
[root@server ~]# getenforce
Permissive
[root@server ~]# vim /etc/selinux/config
SELINUX=permissive
# 所有虚拟机设置防火墙(停止防火墙服务)
[root@server ~]# yum -y remove firewalld
[root@server ~]# rpm -q firewalld
源码编译安装的优势
RPM软件包:rpm -ivh 或者 yum -y install
源码包----开发工具gcc与make----》可以执行的程序-----》运行安装
- 主要优点:
- 获得软件的最新版,及时修复bug
- 软件功能可按需选择/定制,有更多软件可供选择
- 源码包适用各种平台
- …
准备编译环境
基本实现过程
步骤1:安装开发工具gcc与make,释放源代码至指定目录
步骤2:tar解包,释放源代码至指定目录
步骤3:./configure 配置,指定安装目录/功能模块等选项
步骤4:make 编译,生成可执行的二进制程序文件
步骤5:make install 安装,将编译好的文件复制到安装目录
真机tools.tar.gz 传递数据到虚拟机
真机为Linux:
]# ls /linux-soft/s1
]# scp /linux-soft/s1/tools.tar.gz root@192.168.88.240:/root
真机为windows:windterm进行上传tools.tar.gz
虚拟机A(以inotify-tools安装为例)
#1.安装开发工具
[root@server ~]# yum -y install gcc make
[root@server ~]# rpm -q gcc
[root@server ~]# rpm -q make
[root@server ~]#
#2.进行解压缩
[root@server ~]# tar -xf /root/tools.tar.gz -C /usr/local
[root@server ~]# ls /usr/local/tools
inotify-tools-3.13.tar.gz
#3.进行tar解包
[root@server ~]# tar -xf /usr/local/tools/inotify-tools-3.13.tar.gz -C /usr/local/
[root@server ~]# ls /usr/local/
[root@server ~]# cd /usr/local/inotify-tools-3.13/
[root@server ~]# ls
#4.运行configure脚本
#作用1:检测当前系统是否安装gcc
#作用2:指定安装位置与功能
#作用3:生成Makefile文件(制作程序的大纲,做菜的菜谱)
[root@server ~]# cd /usr/local/inotify-tools-3.13/
[root@server ~]# ./configure --help #查看帮助信息,大概浏览一下
[root@server ~]# ./configure --prefix=/opt/myrpm #指定安装位置,此步骤不产生相应的目录
#5.进行make编译,变成可以执行的程序(放在内存中)
[root@server ~]# cd /usr/local/inotify-tools-3.13/
[root@server inotify-tools-3.13]# make
#6.进行make install安装
[root@server ~]# cd /usr/local/inotify-tools-3.13/
[root@server inotify-tools-3.13]# make install
[root@server inotify-tools-3.13]# ls /opt/
[root@server inotify-tools-3.13]# ls /opt/myrpm/
[root@server inotify-tools-3.13]# ls /opt/myrpm/bin/
常见的报错信息:gcc开发工具没有安装
checking for gcc… no
checking for cc… no
checking for cl.exe… no
configure: error: no acceptable C compiler found in $PATH
See `config.log’ for more details.
rsync本地同步
rsync基本使用
rsync概述
rsync同步操作
同步控制
• 命令用法
rsync [选项…] 源目录 目标目录
• rsync操作选项
-n:测试同步过程,不做实际修改、
–delete:删除目标文件夹内多余的文档
-a:归档模式,相当于-rlptgoD
-v:显示详细操作信息
-X:保持acl策略不变
rsync远程同步
rsync+SSH同步
用法及服务端要求
• 与远程的 SSH目录保持同步:rsync user@host: 远程目录/
下行:rsync […] user@host:远程目录 本地目录
上行:rsync […] 本地目录 user@host:远程目录
服务端要求: 开启sshd服务,并提供授权的用户、密码
下行同步示例
上行同步示例
inotify实时同步
• 基本用法
inotifywait [选项] 目标文件夹
• 常用命令选项
-m,持续监控(捕获一个事件后不退出)
-r,递归监控、包括子目录及文件
-q,减少屏幕输出信息
-e,指定监视的 modify、move、create、delete、attrib 等事件类别
inotifywait 监控目录内容变化
rsync -avX --delete /mydir/ root@192.168.88.2:/mnt
inotifywait监控示例:
#1)开启监控任务,置入后台
[root@svr7 ~]# inotifywait -mrq -e create,modify,move,attrib,delete /opt &
[1] 55564
#2)测试/opt/目录下的新建、修改、改名、更改权限、删除文件等事件的响应消息
[root@svr7 ~]# touch /opt/a.txt
/opt/ CREATE a.txt
/opt/ ATTRIB a.txt
#观察修改文件内容时的监控信息:
[root@svr7 ~]# echo Hello > /opt/a.txt
[root@svr7 ~]# /opt/ MODIFY a.txt
/opt/ MODIFY a.txt
#观察将文件改名时的监控信息:
[root@svr7 ~]# mv /opt/a.txt /opt/b.txt
/opt/ MOVED_FROM a.txt
/opt/ MOVED_TO b.txt
#观察修改文件权限时的监控信息:
[root@svr7 ~]# chmod 600 /opt/b.txt
/opt/ ATTRIB b.txt
#观察删除文件时的监控信息:
[root@svr7 ~]# rm -rf /opt/b.txt
/opt/ DELETE b.txt
#3)停止监控任务
[root@svr7 ~]# kill -9 %1
[1]+ 已杀死 inotifywait -mr -e create,modify,move,attrib,delete /opt
虚拟机A的/mydir/目录的内容与虚拟机B的/mnt进行同步
实现ssh无密码验证(公钥与私钥)
#1.虚拟机A生成公钥与私钥
[root@server ~]# ssh-keygen #一路回车
[root@server ~]# ls /root/.ssh/
id_rsa(私钥) id_rsa.pub(公钥) known_hosts(记录曾经远程管理过的机器)
#2.虚拟机A将公钥传递给虚拟机B
[root@server ~]# ssh-copy-id root@192.168.88.2
[root@server ~]# rsync -avX --delete /mydir/ root@192.168.88.2:/mnt
数据库服务基础
构建数据库系统
什么是数据库
数据库:存放数据的仓库
在数据库系统中,有很多的数据库,在每一个库中有很多的表格
• 常见的关系型 数据库管理系统
微软的 SQL Server
IBM的 DB2
甲骨文的 Oracle、MySQL
社区开源版 MariaDB
…
部署mariadb数据库服务器
[root@server /]# yum -y install mariadb-server [root@server /]# systemctl restart mariadb
MariaDB基本使用
- Linux系统的管理指令不能使用
- 所有的数据库系统指令都必须以 ; 结尾
- 数据库系统的指令大部分不支持tab补全
[root@server /]# mysql #进入数据库系统
> create database nsd01; #创建nsd01数据库
> show databases; #查看所有数据库
> drop database nsd01; #删除数据库nsd01
> show databases; #查看所有数据库
> exit;
Bye
[root@server ~]#
[root@server /]# mysql #进入数据库系统
> use mysql; #切换到mysql数据库
> show tables; #查看当前库中所有表格
> show databases; #查看所有数据库
> use test; #切换到test数据库
> exit;
恢复数据到数据库中
#真机传递数据到虚拟机
#真机为Linux:
]# ls /linux-soft/s1
]# scp /linux-soft/s1/users.sql root@192.168.88.240:/root
恢复数据到数据库
[root@server /]# mysql #进入数据库系统
> create database test; #创建test数据库
> show databases; #查看所有数据库
> exit;
Bye
[root@server ~]#
[root@server ~]# mysql test < /root/users.sql
[root@server ~]# mysql #进入数据库系统
MariaDB [(none)]> use test; #切换到数据库test
MariaDB [test]> show tables; #查看当前库有哪些表格
+-------------------+
| Tables_in_test |
+-------------------+
| base |
| location |
+-------------------+
表格操作
查(select)
格式: select 表字段,表字段,…… from 库名.表名;
[root@server /]# mysql
> use test;
> select * from base; #查看base所有表字段内容
> select * from location; #查看location所有表字段内容
> select name,password from base;
> use mysql;
> select * from test.base;
> use test;
> select id,name from base;
[root@server /]# mysql
> use test; #切换到test库
查询密码为456的记录
> select * from base where password='456';
查看id编号为4的记录
> select * from base where id='4';
查询id编号为4并且密码为123的记录
> select * from base where id='4' and password='123';
查询id编号为4或者密码为123的记录
> select * from base where id='4' or password='123';
增(insert)
格式:insert 表名 values (‘值’,‘值’,‘值’);
MariaDB [test]> insert base values('10','dc','789');
MariaDB [test]> insert base values('11','tcc','369');
MariaDB [test]> select * from base ;
改(update)
格式:update 表名 set 表字段=‘新值’ where 表字段=’值’;
> select * from base ;
> update base set password='8888' where id='1';
> select * from base ;
> update base set password='9999' where id='2';
> select * from base ;
删(delete)
> use test;
> delete from base where id='4' ;
> select * from base ;
> delete from base where id='3' ;
> select * from base ;
为数据库系统管理员设置密码
mysqladmin [-u用户名] [-p[旧密码]] password ‘新密码’
数据库系统管理员:对于数据库系统有最高权限,名字为root,能够登陆数据系统的用户信息,由mysql库中user表进行储存
Linux系统管理员: 对于Linux系统有最高权限,名字为root,能够登陆Linux系统的用户信息,/etc/passwd进行储存
[root@server /]# mysqladmin -u root password '456'
[root@server /]# mysql -u root -p #交互式进行登录
Enter password:
[root@server /]# mysql -u root -p456 #非交互式进行登录
已知旧密码修改新密码
[root@server ~]# mysqladmin -u root -p456 password '123'
[root@server ~]# mysql -u root -p123