- 默认使用VMnet1,提供DHCP服务
- 虚拟机可以和物理主机互相访问,但虚拟机无法访问外部网络
(3)NAT模式
- 默认使用VMnet8,提供DHCP服务
- 虚拟机可以和物理主机互相访问,可访问外部网络
- 局域网内其它机器访问不了
4、Linux Centos7的网络设置
(1)全局网络配置
点击编辑->虚拟网络编辑器,可以看到三种模式,桥接模式可以选择具体网卡(自动、无线网卡、有线网卡),我这里选择自动
(2)单台虚拟机配置
选择要配置的单台虚拟机,右键点击设置进入虚拟机设置界面,再点击网络适配器选择网络连接
# Bridged桥接模式
在虚拟机设置中网络连接若选择桥接模式,直接勾选即可,如下图:
更改了网络设置,若想要让它生效,有两个方法:
- 法1:重启主机
- 法2:重启网卡
重启主机花费时间较多,因此重启网卡即可,桥接模式中的主机和外部物理主机基本处于同一个局域网,网络之间可以互相通信
# Host-Only仅主机模式
在虚拟机设置中网络连接勾选仅主机模式,点击确定,且重启网卡使网络生效
【ping ip地址】可查看到该虚拟机可以和物理主机互相访问,但虚拟机无法访问外部网络
# NAT模式
在虚拟机设置中网络连接勾选仅主机模式,点击确定,且重启网卡使网络生效
【ping ip地址】可查看到该虚拟机可以和物理主机互相访问,可访问外部网络
操作命令
操作 | 命令 |
重启主机 | reboot |
重启网卡 | systemctl restart network.service |
查看ip地址 | ip addr |
检测网络是否畅通 | ping ip地址 |
结束ping命令 | 摁住 ctrl + c 键盘即可退出ping命令 |
清屏 | 摁住 ctrl + l |
(3)三种模式对比
网络模式 | 访问条件 | IP冲突 |
Bridged桥接模式 | 可以访问外网 | 容易与局域网的其他机器ip地址冲突 |
Host-Only仅主机模式 | 一般不能访问外网 | 不会与局域网的其他机器ip地址冲突 |
NAT模式 | 可以访问外网 | 不会与局域网的其他机器ip地址冲突 |
注意:为了提供不同的测试环境,有的需要虚拟机与局域网内的其他机器环境隔离,有的不需要,因此出现了这么多模式
5、Linux远程连接工具的使用
(1)检查网络畅通
使用前要确保虚拟机与物理主机网络畅通,我们分别在虚拟机以及物理主机进行ping
(2)打开SecureCRT 64
我这里使用的是SecureCRT 64,双击打开应用程序
获取到目标虚拟机的ip地址,填入这里的主机名称,用户名我这里只有一个root,其他暂时为默认值,点击连接
如图:已经连接成功了
(3)设置字体
选项->会话选项->外观,设置背景颜色,字体大小以及字符编码为UTF-8,设置好后保存
(4)设置复制粘贴操作
选项->全局选项->终端,选中这里的鼠标设置即可
(5)上传文件功能
传输->Zmodem上传列表,点击文件进行上传服务器
第一次上传时会弹出rz命令没找到的提示,则需要安装下rz命令(确认服务器可以联外网)
安装上传下载功能lrzsz服务:yum -y install lrzsz
安装完成后再次点击开始上传按钮,如下图可以看到文件上传成功,使用 ll 命令可以看到文件具体上传地方
(6)下载文件功能
在窗口输入命令直接下载文件,命令如下:
sz 文件名
备注:文件的上传下载路径可以设置,选项->会话选项->终端->X/Y/Zmodem
6、虚拟机的快速克隆与快照恢复
(1)虚拟机克隆
右键虚拟机->管理->克隆,需要注意的是,开启或挂起的虚拟机无法被克隆
如上图,这样就克隆好了一台新的虚拟机,克隆机与原来的虚拟机网络设置、密码等都一致
注意事项:
克隆后的虚拟机重启网卡会失败,如下图:
查询机器网卡:cat /etc/sysconfig/network-scripts/ifcfg-eno16777728(摁住键盘的tab键可以对命令进行补全 )
原因是因为克隆过来的虚拟机把原虚拟机的MAC地址也一起复制过来了,正常情况下虚拟机MAC地址都是唯一的,因此需要修改MAC地址
查看一个虚拟机的MAC地址(两种方法):
- ip addr
- 设置->虚拟机设置->网络适配器->高级->MAC地址
拿到克隆机原本的MAC地址后,修改网卡信息-MAC地址
使用
vi
工具进行编辑网卡信息:
vi /etc/sysconfig/network-scripts/ifcfg-eno16777728(摁住键盘的【i】
进入编辑模式,按住键盘左上角【esc】键退出编辑模式,再输入【:wq
】进行保存)
(2)快照恢复
快照相当于备份,我们进行操作的时候,有时候会导致一些不可逆的错误发生,比如删除了某些文件造成数据丢失,这时候就可以通过快照恢复
创建快照的方法:
虚拟机右键->快照->拍摄快照,填写快照名称以及描述,点击确定后,就新建好了一个快照
如果要恢复快照的话,必须关闭虚拟机进行恢复(一般除非做出了不可逆的操作,否则不太会进行快照恢复)
恢复快照步骤:
虚拟机右键->快照->快照管理器,选择快照节点,右键选择转到快照
注意:我们恢复快照相当于做逆反操作,恢复之前某个时刻的状态,但恢复后就无法再次回到当前状态了(恢复快照前要仔细考虑)
三、Linux常用操作
1、工作中常用的基础命令
命令 | 功能说明 | 举例 |
cd | 切换目录 | cd /usr/local/ (切换至当前目录) cd … (返回上一级目录) cd - (回退到上一次目录) |
ls | 列出目录内容 | ls -lrt 缩写为 ll -----时间升序显示 ls -alrt —显示隐藏文件 ls -lrt /home/ —显示home目录下的内容 |
pwd | 查询所在目录 | pwd |
cat | 查看小文件内容 | cat 123.txt ----查看目标文件内容 cat -n 123.txt —查看文件内容且给每行排序 |
more | 查看大文件内容 | more System.map-3.10.0-123.el7.x86_64 (可以嗯【Q】键退出查看) |
head | 查看文件的前面N行 | head System.map-3.10.0-123.el7.x86_64 (默认查看文件前10行) head -20 System.map-3.10.0-123.el7.x86_64 (查看文件前20行-自定义) |
tail | 查看文件的后面N行 | tail System.map-3.10.0-123.el7.x86_64 (默认查看文件后10行) tail -20 System.map-3.10.0-123.el7.x86_64 (查看文件后20行-自定义) tail -f access.log (动态查看日志文件) tail -20 access.log (动态查看文件后20行) |
touch | 创建一个空文件 | touch 123.txt |
mkdir | 创建目录 | mkdir -p /tmp/YYL/YYL/class (以绝对值方式创建套层目录) |
rmdir | 删除目录 | rmdir /tmp/YYL/YYL/class (删除目录) |
cp | 拷贝文件 | cp 123.txt class/ (拷贝文件到class目录) cp 123.txt class/456.txt (拷贝文件到class目录并改名为456,但文件某些属性没复制过来) cp -a 123.txt class/789.txt (拷贝文件到class目录并改名为789,文件属性也一起复制过来) |
mv | 移动或更名现有的文件或目录 | mv 123.txt 345.php (将文件更名) mv 456.txt /home/ (将文件移动至home文件夹下) mv 789.txt /home/987.php (将文件移动至home文件夹下且更名为987) |
rm | 删除文件或目录 | rm 987.php (删除文件,会弹出是否删除的提示,且目录不能删除) rm -rf 456.txt (直接删除文件,且什么都可以删除) |
diff | 对比文件差异 | diff 123.txt 456.txt |
ssh | 远程安全登录方式 | ssh 192.168.213.129 (根据ip地址切换主机) |
exit | 退出命令 | exit (切换主机后再退回来,原主机所在目录不做改变) |
id | 查看用户 | id root |
uname | 查询主机信息 | uname -a (详细主机信息) |
ping | 查看网络是否畅通 | ping 192.168.213.129 |
echo | 标准输出命令 | echo “this is echo 命令” |
man | 查看帮助文档 | man ls (ls命令的具体使用) ls --help (同man命令类似,只不过是全部打印出来) |
help | 查看内部命令帮助 | help if (if命令的具体使用) |
clear | 清屏 | clear 等同于 ctrl + l |
who | 当前在本地系统上的所有用户的信息 | who whoami (查看当前是哪个用户) |
uptime | 查询系统信息 | 其中显示信息:load average:0.00,0.01,0.05 (1分钟的负载,5分钟的负载,15分钟的负载) |
w | 查询系统信息 | w (who与uptime的结合查询) |
free | 查看系统内存 | free -h (会同时显示出单位) free -m (以m为单位显示) |
wc | 统计行 | wc -l 123.txt (文件中有多少行) |
grep | 查找文件里符合条件的字符串 | grep ‘119.4.253.206’ 123.txt (找到文件里有多少该字符串,都展示出来) grep ‘119.4.253.206’ 123.txt |
find | 查询文件 | find / -name 123.txt (查询文件的所有路径-可能会查出来目录,但不建议,因为很耗性能) find / -type f -name 123.txt (查找路径,限定文件) |
uniq | 对排序好的内容进行统计 | uniq -c 123.txt |
sort | 对内容进行排序 | uniq -c 123.txt |
df | 文件系统的磁盘使用情况统计 | df -h |
netstat | 查看网络端口的使用情况 | netstat -tunlp |
hostname | 查看主机名 | hostname |
ps | 显示所有进程信息(ps与grep组合使用,查找特定进程) | ps -ef (显示所有进程信息) ps -ef |
kill | 杀进程 | kill -l (查看kill的使用信号) kill -9 top (杀掉top命令进程 ) 摁住【ctrl+c】相当于传递了kill中2的信号 |
top | 监控Linux系统状况,比如cpu、内存的使用 | 摁住键盘【Q】退出 |
du | 统计大小 | du -sh (统计当前目录下所有文件大小) du -sm * (以m为单位统计文件大小) |
firewall-cmd | 查看防火墙的状态 | firewall-cmd --state centos 7 关闭防火墙:systemctl stop firewalld.service |
echo | 判断上一条命令是否正确 | echo ‘1234’ (打印1234在命令行上面) echo $? (判断上一条命令执行是否正确,正确显示0,非0就是未执行正确) |
cal | 查看日历 | cal 2008 (查询2008年的月份日期) |
2、Linux下输入输出错误重定向
(1)输入输出错误重定向理解
- 输入重定向:把要输入的信息写入到指定的文件中去
- 输出重定向:把要输出的信息写入到一个文件中去,而不是将要输出的文件信息输出到控制台(显示屏)
- 错误重定向:把错误的信息写入到一个文件中去
Linux中一切皆文件,文件描述符如下:
posix名称 | 文件描述符 | 用途 |
/dev/stdin | 0 | 标准输入 |
/dev/stdout | 1 | 标准输出 |
/dev/stderr | 2 | 标准错误输出 |
(2)输入输出错误重定向实操
# 输入重定向
- 符号:【<】
- 示例:
wc -l < 123.txt
# 输出重定向
- 符号:【> #代表覆盖写入】【>> 代表追加写入】
- 示例:
cat >> 123.txt //向123.txt文件中输入追加内容,不会覆盖已有内容
cat > 123.txt //向123.txt文件中输入内容,会覆盖已有内容
ls -lrt > 123.txt //将ls -lrt显示的信息输入到123.txt文件中,会覆盖已有内容
echo '12345' > 123.txt //使用echo命令输入信息到123.txt文件中,会覆盖已有内容
# 错误重定向
示例:
llll 2> 123.txt //llll报错信息输出到123文件中
llll 2> /dev/null //错误信息不需要了解,就可以输出到无底洞里边
(3)其他符号
符号 | 功能说明 | 示例 |
& | 等同于 | ls -lrt /boot /test 1>/root/123.txt 2>/root/123.txt (查看boot目录以及text目录下的内容,这里判断boot目录下有内容,则写入了123文件,但test目录不存在,错误重定向并没有写入文件) ls -lrt /boot /test 1>/root/123.txt 2>&1 (错误的输出信息等同于正确的信息输入,即输入至123文件) |
&> | 不区分正确还是错误 | ls -lrt /boot /test &>123.txt (不区分正确错误信息,全部输入到123文件) |
管道符 | ||
; | 可以执行多条命令 | cat /etc/passwd |
&& | 前面的命令执行成功的话后面的才可以执行成功;前面的命令执行失败后面的就不可以执行 | llll && echo 123 |
3、Linux下的目录分类与作用
(1)CentOS7****下常见的目录作用
# 目录描述
下面列举一些根目录下常用的目录,便于我们更快了解虚拟机架构
目录 | 描述 |
/ | 根目录,一般根目录下只存放目录,不要存放文件,也不要修改/删除目录下的内容 |
/mnt | 用于测试的目录 |
/root | root用户的家目录 |
/home | 普通用户的家目录 |
/tmp | 临时目录(比如文件上传之类的) |
/var | 存放经常修改的数据,比如程序运行的日志文件 |
/boot | 存放启动Linux时使用的内核文件,包括连接文件以及镜像文件(原则上该目录不允许操作) |
/etc | 系统默认存放配置文件的地方 |
/bin | 所有用户都能执行的程序 |
/sbin | 只有root才能执行的程序 |
/usr | 用户自己的软件都可以放到这儿来 |
/dev | 存放硬件设备的地方(/dev/cdrom) |
/media | 挂载光盘的地方 |
# 挂载光盘命令
命令 | 功能说明 |
mount /dev/cdrom /media | 挂载光盘 |
umount /dev/cdrom | 卸载光盘 |
df -h | 查看挂载光盘 |
(2)路径理解
- 绝对路径:即完整的路径
- 相对路径:相对于当前位置的路径(./代表的是当前目录; …/代表的是上一级目录)
4、虚拟机中Centos7与外部物理机的时间同步
(1)前提
一般情况下,新安装的虚拟机同外部物理机的时间不一致,这是因为我们未安装VMware Tools工具,因此需要安装该工具
(2)获取VMware Tools软件包
在VM中右键虚拟机->安装VMware Tools,VM软件会自动帮我们下载VMware Tools工具到光盘中,再把光盘挂载在Linux系统中(由于VM软件的限制,安装结果没有弹框提示,我们可以试图挂载,以此来观察工具是否下载完成)
(3)安装VMware Tools
安装步骤:
1、安装VMware Tools 使工具软件包下载到光盘
2、挂载光盘到Linux系统
3、复制安装包到root目录【cp VMwareTools-10.3.23-16594550.tar.gz /root/】
4、卸载光盘【umount /dev/cdrom】
5、解压安装包【tar -xf VMwareTools-10.3.23-16594550.tar.gz】
6、进入解压缩包【cd vmware-tools-distrib】
7、安装Perl【yum -y install perl-Data-Dumper】
8、点击安装VMware Tools【./vmware-install.pl】
安装时一路摁住键盘的回车键即可(都选用默认路径),安装完成后验证是否安装成功,有两种验证方法:
命令 | 功能说明 |
echo $? | 验证是否安装成功,返回0就是成功(echo命令本身就可以判断上一条命令是否正确) |
date “+%Y-%m_%d %H:%M:%S” | 验证虚拟机时间是否与外部物理机的时间同步(若不同步,则重启主机即可) |
(4)date命令使用
可以使用date命令去查看当前时间
命令 | 功能说明 |
date | 查看当前时间(不美观) |
date “+%Y-%m_%d %H:%M:%S” | 显示年-月-日 时:分:秒 (如 2024-03_05 05:22:14) |
date -s “2020-10-1 22:00:00” | 更改时间为 2020-10-1 22:00:00 |
date -d yesterday “+%Y-%m-%d %H:%M:%S” | 查看当前时间的前一天的时间 |
date “+%w” | 查看今天是周几 |
注意:卸载的光盘的时候会出现如下报错
[root@localhost media]# umount /dev/cdrom
umount: /media: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
[root@localhost media]#
解决方法:
首先确认目前是联网状态,接下来需要安装 fuser 工具,用来查看光盘使用情况 ,接着杀掉光盘使用进程即可
安装fuser工具:yum install -y psmisc
查看光盘使用情况:fuser -mv /media
取消挂载盘符:fuser -kv /media
5、Linux编辑神器vi****的使用
(1)vi的基本概念
vi的三种模式:命令模式、插入模式、底行模式
使用vi命令则进入命令模式,不可编辑,摁住键盘的 i 或者 o 或者 a,进入插入模式,编辑我们想要的内容;内容编辑完成后,再摁住键盘的左上角esc键盘,切入命令模式;在命令模式输入【:】进入底行模式,在底行模式还可以做其他的一些操作
- 进入插入模式:摁住键盘的 i 或者 o 或者 a
- 进入命令模式:摁住键盘的左上角esc键盘
- 进入底行模式:前提是得在命令模式输入【:】进入
(2)命令行模式操作
命令 | 功能说明 |
Esc | 进入命令行模式 |
$ / 【shift + 4】 | 移动到这一行的行尾 |
gg | 移动到文档第一行行首 |
G | 移动到文档最后一行行首 |
x | 删除内容,删除一个字符【光标所在字符】 |
dd | 删除光标所在的那一整行 |
u | 复原原来的操作 |
v | 点击【v】后进入复制,按上下左右键选中范围,再按【y】就能复制 |
p | 粘贴 |
(3)底行模式操作
命令 | 功能说明 |
n | n为数字,光标移动到第n行 |
/ | 寻找内容,光标移到目标行行首 |
%s/word1/word2/g | 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2【word1字符串实现全文档替换】 |
n1,n2s/word1/word2/g | n1 与 n2 为数字,在第 n1 与 n2行之间寻找 word1这个字符串,并将该字符串取代为 word2 |
set nu | 显示每一行的行号 |
set nonu | 取消行号 |
q! | 强制离开不保存 |
wq | 离开并保存 |
wq! | 强制离开并保存 |
! | 相当于暂时离开,可以在【!】后直接输入命令进行别的操作 |
6、Linux****的用户管理与组管理
(1)Linux理解
Linux是一个多用户、多任务的操作系统
(2)Linux用户的分类
分类 | 权限 | UID |
超级用户root | 拥有至高无上的权限 | UID:0 |
普通用户 | 权限有一定的限制,可以登录系统,一般可以执行 /usr/local/bin 或者 /bin 或者 /usr/bin 或者自己家目录的命令 | UID:500-60000(centos 6)UID:1000-60000(centos7) |
系统用户(伪用户) | 一般不会登录系统,一般情况是用来维持某个服务程序 | UID:1-499(centos 6) UID:1-1000(centos 7) |
(3)用户的相关配置文件
- 账号信息:/etc/password
- 密码信息:/etc/shadow
test :x :1000 :1000 : :/home/test :/bin/bash
用户 密码占位符
UID GID
用户描述 用户家目录 登录后使用的
shell
解释/sbin/nologin #
是不可登录的/bin/bash #
可以登录
(4)用户相关命令
命令 | 命令属性 | 大功能 | 各属性功能说明 |
useradd | -u | 添加用户命令 | 指定用户UID |
-d | 指定用户主目录 | ||
-g | 指定用户所属组 | ||
-r | 指定用户是系统用户 | ||
-s | 用户登录shell解释器 | ||
-M | 不创建主目录 | ||
userdel | -r | 删除用户命令 | 连同家目录一块删除 |
groupadd | 添加用户组命令 | ||
groupdel | 删除用户组命令 | ||
usermod | -u | 修改用户的信息命令 | 指定用户UID |
-d | 指定用户主目录 | ||
-g | 指定用户所属组 | ||
passwd YYL | 设置用户密码命令passwd | ||
echo “123456” | passwd --stdin YYL |
(5)创建用户示例
创建一个用户YYL,指定UID为1010,指定家目录为/home/YYL,指定所属组为root组,指定登录shell为/bin/bash
useradd -u 1010 -d /home/YYL -g root -s /bin/bash YYL
注意:登录用户时出现以下信息如何解决
如:
bash-4.2$
bash-4.2$
这是因为家目录下缺少一些东西,在/etc/ske1/路径下将相关信息复制进系统用户家目录即可
解决:复制相关信息到家目录
cp -r /etc/skel/.bash* /home/YYL/
7、Linux****必备核心知识之文件属性与权限操作
(1)文件属性
ls -lrti | 查看文件的属性 |
#文件显示解读
135140482 -rw-------. 1 root root 1902 Oct 1 2020 yum.log |
第一列 |
第二列-文件的类型与权限 |
r #表示读权限 |
4 #表示读权限 |
rw------- |
第三列 |
第四列 |
第五列 |
第六列 |
第七列 |
第八列 |
# 链接
分类 | 命令 | 例如 | 举例 |
软链接 | ln -s | ln -s /home/YYL/yum.log /usr/local | i 节点跟源文件不一样,源文件一旦删除,软链接将找不到源文件 |
硬链接 | ln | ln /home/YYL/yum.log /usr/local/YYL/ | i 节点与源文件一模一样,源文件删除,硬链接还可以继续使用,常用于防止重要文件被误删 |
(2)文件权限更改
命令 | 参数 | 举例 |
chmod | 无参 | chmod u+x,g+w+o+w boot.log |
chmod u-x,g-w+o-w boot.log | ||
chmod 777 boot.log | ||
-R #递归的意思 | chmod -R 777 /home/YYL/* |
(3)文件所有者/所属组修改
命令 | 参数 | 举例 | 解释 |
chown | -R | chown -R root:YYL YYL | 递归更改文件目录YYL的所属者为root用户 跟 所属组为YYL组 |
8、Linux 的文件归档与解压缩详细介绍
(1)文件归档
文件归档也称之为打包,指的是一个文件或者多个文件或者目录的一个集合,这个集合存储在一个文件中;归档的文件是没有进行压缩的,所以占用的空间是所有文件或者目录的总和(工作中经常与压缩结合在一起使用)
(2)文件压缩
节约磁盘空间,加快文件的传输速率
(3)压缩与解压缩命令
压缩与解压缩有两种命令:gzip 、xz,区别如下:
- gzip:不能压缩目录,只能压缩文件,压缩速度最快,但是1压缩比例较低,扩展名【.gz】
- zx:可以压缩目录和文件,压缩速度比较慢,但是压缩比例最高,扩展名【.xz】
命令 | 目的 | 操作命令 |
gzip | 不保留源文件压缩 | gzip 111.txt |
保留源文件压缩 | gzip -c 123.txt > 123.txt.gz | |
不保留源文件解压 | gunzip 111.txt.gz | |
gzip -d 123.txt.gz | ||
保留源文件解压 | gunzip -c 123.txt.gz > 234.txt | |
xz | 不保留源文件压缩 | xz 111.txt |
保留源文件压缩 | xz -c 123.txt > 123.txt.xz | |
不保留源文件解压 | unxz 111.txt.xz | |
xz -d 123.txt.xz | ||
保留源文件解压 | xz -d -k 123.txt.xz |
(3)归档/解档/压缩/解压命令
参数 | 目的 | 示例 | 命令解析 |
-c | 归档时创建新文件,必选 | 归档vmware-tools-distrib文件并命名为vmware.tar | tar -cf vmware.tar vmware-tools-distrib |
-f | 归档时指定文件格式,必选 | ||
-v | 归档时显示详细过程 | 归档vmware-tools-distrib文件并命名为vmware.tar,归档时显示详细过程 | tar -cvf vmware.tar vmware-tools-distrib |
-z | 以gzip的方式归档并压缩 | 归档并压缩vmware-tools-distrib文件并命名为vm-tools.tar.gz,归档时显示详细过程 | tar -zcvf vm-tools.tar.gz vmware-tools-distrib |
-J | 以xz的方式归档并压缩 | 归档并压缩vmware-tools-distrib文件并命名为vm-tools.tar.xz,归档时显示详细过程 | tar -Jcvf vm-tools.tar.xz vmware-tools-distrib |
归档并压缩vmware-tools-distrib文件并命名为vm-tools.tar.xz,文件放于/home/YYL目录下,归档时显示详细过程 | tar -Jcvf /home/YYL/vm-tools.tar.xz vmware-tools-distrib | ||
-x | 接档解压操作 | 解档解压文件vm-tools.tar.xz | tar -xf vm-tools.tar.xz |
-C | 指定解压路径 | 指定vm-tools.tar.xz文件的解压路径为:/home/YYL | tar -xf vm-tools.tar.xz -C /home/YYL |
四、Linux核心命令
1、Linux搜索-find命令高级用法
(1)基本用法
命令 | 参数 | 参数解析 | 示例 | 示例解析 |
find 路径 选项 | -type | 根据文件类型搜索 | find /var/log -type f -name “*.log” | 查找后缀为“.log”的文件 |
find /var/log -type d | 查找该绝对路径下的目录 | |||
-name | 根据文件名搜索 | find /var/log -type f -name “*.log” | 查找后缀为“.log”的文件 | |
-perm | 根据文件权限 | find /var/log -perm 600 -type f -name “*.log” | 查找绝对路径下权限为600的后缀为“.log“的文件 | |
-user | 根据文件所属主 | find /var/log -user root | 查找绝对路径下所属主为 root 的文件【不仅限于文件】 |
(2)高级用法
# 命令使用解析
命令 | 各参数 | 各参数解析 | 示例 |
find /var/log -type f -name “*.log” -exec wc -l {} ; | ; | 可以执行多条命令 | find /var/log -type f -name “*.log” -exec cp -a {} /home/YYL/YYL2 ; |
\ | 转义符,使得该条命令结束 | ||
{} | 把find命令匹配到的每一次结果传递给{} | ||
-exec | 执行 |
# 命令相关参数
参数 | 参数解析 | mtime参数 | mtime参数解析 | 示例 |
-mtime | 根据文件的变更时间来查找 | -n | 表示更改时间举例现在n天以内 | find /var/log -mtime -2 -name “*.log” -exec ls -lrt {} ; |
+n | 表示更改时间举例现在n天以前 | find /var/log -mtime +2 -name “*.log” -exec ls -lrt {} ; |
2、CentOS7防火墙以及selinux介绍
(1)防火墙
# 防火墙理解
主要用于用户信息安全防护,主要有软件防火墙和硬件防火墙,firewall防火墙是权健防火墙
- 在Centos7之前默认采用的防火墙是iptables
- 在Centos7则采用的防火墙是firewall
# 设置防火墙相关命令
操作 | 命令 |
查看firewalld服务状态 | systemctl status firewalld |
开启firewalld服务 | systemctl start firewalld.service |
关闭firewalld服务 | systemctl stop firewalld.service |
重启firewalld服务 | systemctl restart firewalld.service |
查看firewall防火墙状态 | firewall-cmd --state |
查看防火墙开放端口 | firewall-cmd --list-port |
查看指定80端口是否开放 | firewall-cmd --query-port=80/tcp |
开放80端口 | firewall-cmd --permanent --add-port=80/tcp(–permanent代表永久生效,没有此参数重启后就失效了) |
加载生效开放的端口 | firewall-cmd --reload |
关闭80端口 | firewall-cmd --remove-port=80/tcp |
注意:
- 安装telnet命令:yum -y install xinetd telnet telnet-server(确认联网状态)
- 安装netstat与ifconfig命令:yum -y install net-tools(确认联网状态)
(2)SELinux介绍
SELinux有三种工作模式,配置文件路径在:/etc/selinux/config
- enforcing:强制模式,违反selinux规则的行为将被组织并记录到日志中去
- permissive:宽容模式,违反selinux规则的行为将会记录到日志中去
- disabled:关闭模式
3、linux服务器之间telnet与scp命令用法
(1)telnet命令
telnet命令主要用于测试到某台机器的某个端口是否畅通,telnet命令依赖于xinetd服务与telnet-server服务
- 用法:telnet IP地址 端口
- 场景使用:测试某个端口是否畅通
(2)scp命令
作用:用于服务器之间的文件或者文件目录拷贝
用法1:从本机拷贝文件到别的机器
scp 本机文件的存放路径 root@服务器IP:服务器目标路径
示例:
从192.168.213.132(本机)这台机器的 /root/VMwareTools-10.3.23-16594550.tar.gz 文件拷贝至192.168.213.129 的 /root/下
scp /root/VMwareTools-10.3.23-16594550.tar.gz root@192.168.213.129:/root/
用法2:从别的机器拷贝文件到本地目录
scp root@服务器IP:服务器目标路径 本机文件的存放路径
示例:
从192.168.213.129这台机器的/root/VMwareTools-10.3.23-16594550.tar.gz文件拷贝至 192.168.213.132(本机)的/root/下
scp root@192.168.213.129:/root/VMwareTools-10.3.23-16594550.tar.gz /root/
参数说明:
- -r:起到递归的作用,主要用来拷贝目录
示例:scp -r /root/vmware-tools-distrib root@192.168.213.129:/root/
4、Linux进程管理命令之 ps -ef 与 ps aux 详解
列名 | 含义 |
UID | 用户ID |
PID | 进程ID |
PPID | 父进程号 |
C | CPU的占用率 |
STIME | 进程的启动时间 |
TTY | TTY终端 |
TIME | 进程执行起到现在总的CPU占用时间 |
CMD | 启动这个进程的命令 |
列名 | 含义 |
USER | 哪个用户启动了这个命令 |
PID | 进程的ID |
%CPU | CPU的占用率 |
%MEM | 内存的使用率 |
VSZ | 如果一个程序完全驻留在内存中一共需要使用多少内存空间 |
RSS | 进程当前占用了多少内存 |
TTY | TTY终端 |
STAT | 表示当前进程的状态(S #处于休眠的状态;D #不可中断的状态;Z #僵尸进程;X #死掉的进程 ) |
START | 启动这个命令的时间点 |
TIME | 进程执行起到现在总的CPU占用时间 |
COMMAND | 启动这个进程的命令 |
目的:一般执行 ps -ef 或者 ps aux命令是查看我们的进程是否启动成功,或者找出进程号,对进程进行kill强制关闭
5、处理海量数据之cut命令
(1)cut应用场景
通常对数据进行列的提取
(2)语法
cut [选项]...[file]
(3)示例
选项 | -d #指定分割符(不加 -d 选项,默认为制表符,而非空格) |
-f #指定截取区域 | |
-c #以字符为单位进行分割 | |
以【:】为分隔符,截取出/etc/passwd的第一列和第三列 | cut -d ‘:’ -f 1,3 /etc/passwd |
以【:】为分隔符,截取出/etc/passwd的第一列到第三列 | cut -d ‘:’ -f 1-3 /etc/passwd |
以【:】为分隔符,截取出/etc/passwd的第二列到最后一列 | cut -d ‘:’ -f 2- /etc/passwd |
截取/etc/passwd文件从第二个字符到第九个字符 | cut -c 2-9 /etc/passwd |
截取linux上面所有可登录的普通用户 | cat /etc/passwd |
6、处理海量数据之awk命令
(1)awk简介
一个非常强大的数据处理命令,支持条件判断、数组、循环等功能,与grep、sed被称为linux三剑客
(2)awk应用场景
通常对数据进行列的提取
(3)awk语法
- awk ‘条件1 {执行动作} 条件2 {执行动作} …’ 文件名
- awk [选项] ‘条件1 {执行动作} 条件2 {执行动作} …’ 文件名
(4)awk特殊要点以及举例说明
特殊字段 | 含义 | 举例 | 查询结果 |
NR | 行号 | df -h | awk ‘NR==4 {print $1}’ |
$1 | 代表第一列 | df -h | awk ‘NR==1 {print $1}’ |
$2 | 代表第二列 | df -h | awk ‘(NR>=2 && NR <=5) {print $1}’ |
$NF | 代表最后一列 | df -h | awk ‘{print $NF}’ |
-F | 指定分割符 | awk -F":" ‘{print $1}’ /etc/passwd | 查询/etc/passwd文件下以【:】为分割符的第一列数据 |
BEGIN | 在读取所有行内容前就开始执行,一般用来初始化操作 | cat /etc/passwd | awk ‘BEGIN {FS=“:”} {print $1}’ |
df -h | grep -v ‘Filesystem’ | awk ‘BEGIN {printf “Filesystem \n \n”} {printf $1} {printf “\t Use%:”} {print $5}’ | 查询文件磁盘使用情况中的Filesystem和Use%列 |
END | 结束的时候执行 | df -h | grep -v ‘Filesystem’ |
7、处理海量数据之sed命令
(1)sed应用场景
主要对数据进行处理(选取、新增、替换、删除、搜索)
(2)sed语法
- sed [选项] [动作] 文件名
(3)sed常见选项与参数
选项 | 含义 | 举例 | 结果 |
-n | 把匹配到的行输出打印到屏幕 | df -h | sed -n ‘2p’ |
p | 以行为单位进行打印,通常与【-n】一起使用 | ||
d | 删除 | df -h | sed ‘2d’ |
a | 在行的下面插入新的内容 | df -h | sed ‘2a 1234567890’ |
i | 在行的上面插入新的内容 | df -h | sed ‘2i 1234567890’ |
c | 替换 | df -h | sed ‘2c 1234567890’ |
s/要被取代的内容/新的字符串/g | 指定字符串进行替换 | df -h | sed ‘s/centos-root/centos7/g’ |
-i | 对源文件进行修改(慎用,用之前需要备份源文件) | sed -i ‘s/centos7/centos8/g’ df.txt | 将df.txt文件中的【centos7】强制修改成【centos8】 |
p | 在文件中搜索内容 | sed -n ‘/tmpfs/p’ df.txt | 打印df.txt文件中的【tmpfs】字段—非精确查找 |
-e | 表示可以执行多条动作 | sed -e ‘s/centos8/centos7/g’ -e ‘s/tmpfs/TMP/g’ df.txt > 888.txt | 替换df.txt文件中的【centos8】以及【tmpfs】更为【centos7】和【TMP】,然后重定向至888.txt文件 |
五、Linux服务器常用企业服务安装
1、rpm方式介绍
(1)rpm安装
安装别人编译好的软件包,rpm即Redhat Package Manager,是Redhat的软件包管理方式
(2)rpm安装优点
- 软件已经编译打包,所以传输和安装方便,让用户免除编译
- 在安装之前,会先检查系统的磁盘、操作系统版本等,避免错误安装
(3)rpm安装缺点
- 软件包安装的环境必须与打包时的环境一致或相当
- 必须安装软件的依赖包
(4)rpm包命名规则
which-2.20-7.el7.x86_64.rpm
分段 | 含义 |
which | 代表的是软件名称 |
2.20 | 代表的是软件版本号 |
7 | 代表的是发布版本号,指的是这个rpm软件包是第几次编译生成的 |
el7 | 代表的是企业版的7操作系统 |
x86 | 代表的是CPU架构 |
64 | 代表的是系统的位数 |
(5)安装rpm软件包
参数 | -i | 安装软件包 |
-v | 输出更多的详情信息 | |
-h | 输出哈希标记(#) | |
–nodeps | 不验证软件的依赖(非常不推荐,即使安装成功了,也用不了) | |
举例 | rpm -ivh zsh-5.0.2-7.el7.x86_64.rpm | |
rpm -ivh mariadb-server-5.5.35-3.el7.x86_64.rpm --nodeps (不推荐) |
(6)rpm包下载地址
http://rpmfind.net/
http://rpm.phone.net/
http://www.rpmseek.com/index.html
(7)rpm查询功能
命令 | 参数 | 参数说明 | 举例 |
rpm -q | -a | 查询所有已安装的软件包 | rpm -qa zsh |
-f | 查询文件所属软件包 | rpm -qf /usr/bin/zsh | |
-p | 查询软件包 | rpm -qp zsh-5.0.2-7.el7.x86_64.rpm | |
-i | 显示软件包信息 | rpm -qi zsh | |
-l | 显示软件包中的文件列表 | rpm -ql zsh | |
-d | 显示被标注为文档的文件列表 | rpm -qd zsh | |
-c | 显示被标注为配置文件的文件列表 | rpm -qc zsh |
(8)rpm包升级
参数 | 参数说明 | 示例 |
-U | 升级rpm软件服务 | rpm -Uvh zsh-5.0.2-7.el7.x86_64.rpm(软件包必须是要升级的) |
(9)rpm包卸载
参数 | 参数说明 | 示例 |
-e | 卸载软件包 | rpm -e zsh |
2、yum方式介绍
(1)yum安装介绍
基于 C/S架构,yum安装称之为傻瓜式安装
(2)yum安装优缺点
- 优点:方便快捷,不用考虑依赖,自动下载软件包
- 缺点:人为无法干预,无法设定想要的参数
(3)配置本地yum源
配置文件的路径在:/etc/yum.repos.d/
[Centos7-yum] | yum源名称,唯一,用来区分不同的yum源 |
name=Centos7-source | 对yum源的描述信息 |
baseurl=file:///mnt | yum源的路径(repodata目录所在的目录) |
enabled=1 | 表示启用yum源 |
gpgcheck=0 | 为1表示使用公钥检验rpm的正确性 |
(4)yum安装方式的使用
yum repolist | 查看yum源列表 |
yum clean all | 清空之前yum缓存 |
yum makecache | 创建yum缓存,为后续安装更加快速 |
yum -y install | 安装软件(yum -y install zsh) |
yum info zsh | 查看zsh软件包信息(不管安没安装都会有信息) |
yum info installed zsh | 查看已经安装好的软件信息 |
yum remove -y zsh | 卸载软件 |
yum search gcc | 搜索gcc软件 |
yum update | 升级软件 |
3、源码编译安装方式介绍
(1)源码编译安装优缺点
- 优点:编译安装过程,可以设定参数,指定安装目录,按照需求进行安装,指定安装的版本,灵活性比较大
- 缺点:需要对依赖包一个一个的进行安装,不敢随便升级,一升级可能会由于依赖包的不能使用导致一系列连锁反应
(2)安装步骤
第一步:解压源码包
tar -xf 源码包
第二步:配置
进入解压后的目录,用 ./configure 命令来配置相关信息(比如指定安装目录 — prefix=/usr/local/nginx)和生成makefile文件
第三步:编译
make -j4
第四步:安装
make install
4、JDK8安装实战
(1)下载jdk官网
下载好后,将该压缩包上传至虚拟机中,具体上传步骤可参考【第二章第五节】
(2)全局环境变量的配置文件
修改文件【profile】的内容,在【profile】的最后添加下面的配置文件(其中路径需要修改为jdk1.8所在路径,其他不变)
命令:文件路径:vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.8 #这个路径要改,其余不需要改
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
(3)加载环境变量
命令:source /etc/profile
(4)验证是否安装成功
命令:java -version
5、部署tomcat网站服务器
(1)Tomcat定义
Tomcat是一个开源免费的Web应用服务器,性能稳定,是目前比较流行的Web应用服务器
(2)Tomcat下载
方法1:官网下载
官网地址:Apache Tomcat® - Apache Tomcat 8 Software Downloads
方法2:在虚拟机中应用wget命令下载
yum install -y wget //安装wget命令
wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.99/bin/apache-tomcat-8.5.99.tar.gz
(3)Tomat解压
解压后将文件移动至 /usr/local/tomcat8目录下(统一存放)
解压:tar -xf apache-tomcat-8.5.99.tar.gz
移动:mv apache-tomcat-8.5.99 /usr/local/tomcat8
检查java环境:java -version
(4)Tomat重要目录介绍
目录 | 含义 |
bin | 存放可执行命令,比如开启和关闭 |
conf | 配置文件 context.xml:Tomcat公用的环境配置,tomcat服务器会定时去扫描这个文件 web.xml:web应用程序描述文件,都是关于web应用程序的配置文件 server.xml:可以设置tomcat的端口号,添加虚拟机这些的,是对服务器的设置 tomcat-users.xml:用户配置文件 |
webapps | 发布web应用 |
lib | 库文件 |
(5)启动Tomat
//在bin路径下执行
sh startup.sh
(6)查看是否监听tomcat
ps -ef | grep tomcat
netstat -tunlp | grep 3328
(7)测试能否访问测试页面
关闭防火墙:systemctl stop firewalld.service
测试能否访问:IP地址:8080
6、部署apache网站服务器
(1)Apache介绍
Apache是软件基金会的一个开源免费的网页服务器,也是目前世界上使用最广泛的一种 web server,apache最出名的是它跨平台、高效和稳定,可以运行在几乎所有广泛使用的计算机平台上,其特点是简单、速度快、性能稳定,并可做代理服务器来使用,且可通过简单的 API 扩充,将 Perl/Python 等解释器编译到服务器中
(2)源码编译安装Apache
第一步:下载组件 apr 并解压
组件apr官网:Download - The Apache Portable Runtime Project
下载成功后,上传至虚拟机,并进行解压
解压命令:tar -xf apr-1.7.0.tar.gz
第二步:下载组件 apr-util 并解压
组件apr官网:Download - The Apache Portable Runtime Project
下载成功后,上传至虚拟机,并进行解压
解压命令:tar -xf apr-util-1.6.1.tar.gz
第三步:下载 apache 并解压
apache官网:Download - The Apache HTTP Server Project
下载成功后,上传至虚拟机,并进行解压
解压命令:tar -xf httpd-2.4.39.tar.gz
第四步:安装 gcc 环境
安装命令:yum install -y gcc*
第五步:安装 zlib-devel 库
安装命令:yum install -y zlib-devel
第六步:安装 xml 解析器
安装命令:yum install -y expat-devel
第七步:下载并安装 pcre 正则表达式库
官网下载地址:https://ftp.pcre.org/pub/pcre/
下载成功后,上传至虚拟机,并进行解压
解压命令:tar -xf pcre-8.43.tar.gz
进入【pcre-8.43】目录下进行安装,安装时需要指定安装路径,这里我创建了一个路径为 /usr/local/pcre,然后安装在该路径下
//1.进入pcre-8.43目录下
cd pcre-8.43
//2.新建一个安装路径
mkdir -p /usr/local/pcre
//3.指定安装路径为刚创建的路径
./configure --prefix=/usr/local/pcre
//4.安装pcre
make && make install
第八步:把组件apr与组件apr-util拷贝进apache安装包
cp -rf apr-1.7.0 /root/test/httpd-2.4.39/srclib/apr
cp -rf apr-util-1.6.1 /root/test/httpd-2.4.39/srclib/apr-util
第九步:进入apache安装包使用./configure进行环境收集检验与配置
进入apache安装包,新建目录/usr/local/apache,然后执行./configure命令校验
cd /root/test/httpd-2.4.39
mkdir -p /usr/local/apache
./configure \--prefix=/usr/local/apache \--sysconfdir=/usr/local/apache/etc \--with-apr=/root/test/apr-1.7.0 \--with-apr-util=/root/test/apr-util-1.6.1 \--with-included-apr \--with-pcre=/usr/local/pcre \--enable-deflate \--enable-expires \--enable-headers \--enable-so \--enable-modules=most \--with-mpm=worker \--enable-rewrite
选项 | 说明 |
–prefix | 指定安装目录 |
–sysconfdir | 指定配置文件的路径 |
–with-apr | 指定依赖文件的路径 |
–with-apr-util | 指定依赖文件的路径 |
–with-included-apr | 增加编译效率 |
–with-pcre | 指定pcre正则表达式库的安装路径 |
–enable-deflate | 开启压缩文件提高速度节约带宽 |
–enable-expires | 开启让浏览器缓存,减轻服务器压力,提高访问速度 |
–enable-headers | 使得支持http头 |
–enable-so | 使得支持动态模块 |
–enable-modules=most | 使得支持大多数模块 |
–with-mpm=worker | 使得Apache工作在worker模式下 |
–enable-rewrite | 使得支持地址重写 |
第十步:编译并安装apache
操作命令:make -j 4 && make install
第十一步:设置服务器名称
//操作命令
vi /usr/local/apache/etc/httpd.conf
输入:ServerName进行搜索
添加:
ServerName www.xdclass.com
第十二步:测试并启停apache服务器
//设置软链接
ln -s /usr/local/apache/bin/* /usr/sbin/
//设置环境变量
echo "export PATH=/usr/local/apache/bin:$PATH" >> /etc/profile
//加载环境变量
source /etc/profile
//测试配置文件语法有没有错误
httpd -t
//启动apache服务
httpd -k start
//关闭apache服务
httpd -k stop
在防火墙关闭的条件下,打开浏览器,输入IP地址,成功打开apache测试页面,如下图,即部署完成
192.168.213.132:80
7、部署nginx网站服务器
(1)nginx简介
Nginx是一款高性能的 HTTP 和反向代理服务器
(2)nginx优点
- 高并发量:根据官方给出的数据,能够支持高达 50000 个并发连接数的响应
- 内存消耗少:处理静态文件,同样起 web 服务,比 apache 占用更少的内存及资源,它是轻量级的
- 简单稳定:配置简单,基本在一个 conf 文件中配置,性能比较稳定,可以 7*24小时长时间不间断运行
- 模块化程度高:Nginx 是高度模块化的设计,编写模块相对简单
- 负载均衡:Nginx 可以做高并发的负载均衡,且 Nginx 是开源免费的,如果使用F5等硬件来做负载均衡,硬件成本比较高
- 可移植性高:Nginx 代码完全用C语言编写
(3)nginx缺点
- 动态处理差:Nginx 处理静态文件好,耗费内存少,但是处理动态页面比较差
- rewrite弱:虽然 Nginx 支持 rewrite 功能,但是相比于 Apache 来说,Apache 比 Nginx 的 rewrite 强大
(4)编译安装nginx
第一步:安装gcc编译环境
yum install -y gcc-c++
第二步:安装zlib-devel库
yum install -y zlib-devel
第三步:安装OpenSSL密码库
yum install -y openssl openssl-devel
第四步:安装pcre正则表达式库
官网下载地址:https://ftp.pcre.org/pub/pcre/
下载成功后,上传至虚拟机,并进行解压
解压命令:tar -xf pcre-8.43.tar.gz
进入【pcre-8.43】目录下进行安装,安装时需要指定安装路径,这里我创建了一个路径为 /usr/local/pcre,然后安装在该路径下
//1.进入pcre-8.43目录下
cd pcre-8.43
//2.新建一个安装路径
mkdir -p /usr/local/pcre
//3.指定安装路径为刚创建的路径
./configure --prefix=/usr/local/pcre
//4.安装pcre
make && make install
第五步:下载编译安装Nginx
Nginx 官网:nginx: download
下载成功后,上传至虚拟机,并进行解压
解压命令:tar -xf nginx-1.16.0.tar.gz
进入【nginx-1.16.0】目录下进行安装,安装时需要指定安装路径,这里我创建了一个路径为 /usr/local/pcre,然后安装在该路径下,接着使用./configure进行环境收集检验与配置,编译无误后进行安装
//1.进入nginx-1.16.0目录下
cd nginx-1.16.0
//2.新建一个安装路径
mkdir -p /usr/local/nginx
//3.指定安装路径为刚创建的路径
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-pcre
//4.安装pcre
make && make install
第六步:启停Nginx服务
//启动nginx服务
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
//测试相关配置文件是否正常
/usr/local/nginx/sbin/nginx -t
//关闭nginx服务
/usr/local/nginx/sbin/nginx -s stop
打开浏览器测试能否访问到测试页面,如图所示,即启动成功【ip addr 获取当前虚拟机IP地址,访问端口默认80】
8、安装mysql5.7.17数据库服务器
(1)mysql简介
(2)准备工作
第一步:关闭防火墙
//关闭防火墙命令
systemctl stop firewalld.service
//查看防火墙是否关闭
firewall-cmd --state
第二步:关闭selinux
进入config文件,将【SELINUX】的值改为【disabled】,如下图所示
vi /etc/selinux/config
第三步:安装 cmake 工具
安装命令:yum -y install cmake
第四步:下载boost库/mysql安装包
我这里下载的boost库是boost1.59.0,直接使用wget下载会快一点,下载成功后,直接进行解压
boost库历史版本下载地址:Boost Version History
wget https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
解压命令:tar -xf boost_1_59_0.tar.gz
MySQL这里下载的是mysql-5.7.17版本,直接在官网下载即可
MySQL官网地址:MySQL :: MySQL Downloads
下载成功后,上传至虚拟机,并进行解压
tar -xf mysql-5.7.17.tar.gz
第五步:yum安装其他依赖组件
yum -y install gcc gcc-c++ bzip2 bzip2-devel bzip2-libs python-devel ncurses ncurses-devel openssl openssl-devel
第六步:创建路径
mkdir -p /usr/local/mysql
mkdir -p /data/mydata
第七步:创建mysql用户
useradd -M -s /sbin/nologin mysql
(3)使用cmake工具对mysql5.7.17进行环境收集检验与配置相关模块
解压
mysql
源码包后,进入解压后的路径
cd mysql-5.7.17
使用cmake工具执行下面命令,进行环境收集检验与配置
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mydata -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DWITH_SSL=system -DWITH_ZLIB=system -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DDOWNLOAD_BOOST=1 -DWITH_BOOST=…/boost_1_59_0 -DENABLE_DOWNLOADS=1
各参数 | 参数说明 |
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql | 指定mysql数据库安装目录 |
-DMYSQL_DATADIR=/data/mydata | 指定数据库文件路径 |
-DSYSCONFDIR=/etc | 指定配置文件路径 |
-DWITH_INNOBASE_STORAGE_ENGINE=1 | 安装INNOBASE存储引擎 |
-DWITH_ARCHIVE_STORAGE_ENGINE=1 | 安装ARCHIVE存储引擎 |
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 | 安装BLACKHOLE存储引擎 |
-DWITH_READLINE=1 | 使用redline功能 |
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock | 连接文件位置 |
-DWITH_SSL=system | 表示使用系统上自带的SSL库 |
-DWITH_ZLIB=system | 表示使用系统上自带的ZLIB库 |
-DDEFAULT_CHARSET=utf8 | 指定默认使用的字符集编码 |
-DDEFAULT_COLLATION=utf8_general_ci | 指定默认使用的字符集校对规则 |
-DDOWNLOAD_BOOST=1 | 若无boost库则可自行下载 |
-DWITH_BOOST=…/boost_1_59_0 | 指定boost库的路径用于读取 |
-DENABLE_DOWNLOADS=1 | 支持下载可选文件 |
(4)编译并安装
make -j 4 && make install
(5)初始化mysql
初始化后,会生成一个临时密码,这里需要记住临时密码【1RlVUip10g>j】
/usr/local/mysql/bin/mysqld \--initialize \--user=mysql \--basedir=/usr/local/mysql \--datadir=/data/mydata \--socket=/tmp/mysql.sock
(6)对mysql的相关路径进行更改权限
chown -R mysql:mysql /usr/local/mysql /data/mydata
(7)修改配置文件
//进入配置文件进行修改
vi /etc/my.cnf
//文件内容修改如下
[mysqld]
datadir=/data/mydata
socket=/tmp/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/usr/local/mysql/log/mysql.errlog
pid-file=/data/mydata/$hostname.pid
(8)启停mysql
第一次启动时会报如下错误,这是因为没有创建【mysql.errlog】文件导致,创建后重新启动即可
//创建 mysql.errlog 文件
touch /usr/local/mysql/log/mysql.errlog
//创建后要进入log目录下修改该文件的权限
chown mysql:mysql *
chown -R mysql:mysql /usr/local/mysql/log/mysql.errlog
启动与关闭 mysql 服务的命令如下:
//启动
/usr/local/mysql/support-files/mysql.server start
//关闭
/usr/local/mysql/support-files/mysql.server stop
(9)登录mysql
第一次登录的密码是之前生成的随机密码,填入随机密码,即可登录成功
/usr/local/mysql/bin/mysql -uroot -p
(10)修改mysql密码
修改完密码需要刷新权限
//修改密码
set password for 'root'@'localhost'=password('YYL123');
//刷新权限
flush privileges;
刷新权限时,如果出现下面报错,则是因为表不存在,这里创建一个对应表即可
创建表的步骤:
//mysql中操作
use mysql;
drop table if exists mysql.servers;
//建表
CREATE TABLE `servers` (
`Server_name` char(64) NOT NULL,
`Host` char(64) NOT NULL,`Db` char(64) NOT NULL,
`Username` char(64) NOT NULL,
`Password` char(64) NOT NULL,
`Port` int(4) DEFAULT NULL,
`Socket` char(64) DEFAULT NULL,
`Wrapper` char(64) NOT NULL,
`Owner` char(64) NOT NULL,
PRIMARY KEY (`Server_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='MySQL Foreign Servers table';
(11)添加MySQL服务并设置mysql开机启动
//复制mysql.server到/etc/rc.d/init.d路径下并命名为mysql
cp -a /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysql
//添加一个mysql服务
chkconfig --add mysql
//查看mysql服务的状态
chkconfig --list mysql
chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级别等级0
等级0 | 表示关机 |
等级1 | 单用户模式 |
等级2 | 无网络连接的多用户命令行模式 |
等级3 | 有网络连接的多用户命令行模式 |
等级4 | 不可用 |
等级5 | 带图形界面的多用户模式 |
等级6 | 重新启动 |
使用mysql服务的方式操作启停mysql服务
//启动mysql服务器
service mysql start
//关闭mysql服务器
service mysql stop
//重启mysql服务器
service mysql restart
(12)使用 mysql -uroot -p 登录服务器
设置mysql环境变量,软链接到/usr/sbin/目录下,使得mysql在任何目录都可直接使用 mysql -uroot -p 登录服务器
ln -s /usr/local/mysql/bin/* /usr/sbin/
9、部署php服务与nginx的整合
(1)PHP介绍
PHP是一种脚本语言,常用于做动态网站
(2)源码编译安装
第一步:安装依赖组件
yum -y install gcc gcc-c++ bzip2 bzip2-devel bzip2-libs python-devel ncurses ncursesdevel openssl openssl-devel
yum install -y libxml2-devel
第二步:解压php安装包
官网下载php安装包,并上传至虚拟机中进行解压
解压命令:tar -xf php-5.5.35.tar.gz
第三步:使用./configure进行环境收集检验与配置
cd php-5.5.35
mkdir -p /usr/local/php
./configure --prefix=/usr/local/php/ --enable-fpm --with-config-file=/usr/local/php/etc
第四步:编译安装
make -j 4 && make install
(3)修改php服务器配置文件
cp -a php.ini-production /usr/local/php/etc/php.ini
cp -a /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
(4)启停php服务器
//启动php服务器
/usr/local/php/sbin/php-fpm
//php的默认监听端口是:9000
//关闭php服务器
cd /usr/local/php/sbin && pkill php-fpm
(5)整合nginx测试php
修改nginx配置文件,文件路径在/usr/local/nginx/conf/nginx.conf,修改后对 nginx进行重启即可
vi /usr/local/nginx/conf/nginx.conf
//配置文件内在location下增加下面内容并保存退出
location ~ \.php$ {
root /usr/local/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
//重启nginx服务器
/usr/local/nginx/sbin/nginx -s reload
其中,配置文件中修改的内容含义详解:
FastCGI是一个在HTTP服务器和动态脚本语言间通信的接口 |
fastcgi_pass 127.0.0.1:9000; |
fastcgi_param SCRIPT_FILENAME d o c u m e n t _ r o o t document\_root document_rootfastcgi_script_name; |
include fastcgi_params; |
(6)在nginx的网站发布路径下创建index.php文件
在nginx的/usr/local/nginx/html路径下新增一个index.php文件用于测试,文件内容如下:
vi /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
(7)测试是否安装成功
如下图所示,即安装成功
六、Linux下Shell脚本编程介绍
1、shell****编程语言的介绍
(1)shell简介
Shell
是一种脚本语言,又是一种命令语言。可以通俗一点来讲,
Shell
脚本就是一系列命令的集合,可以在 Unix/linux上面直接使用,并且直接调用大量系统内部的功能来解释执行程序把一些重复性工作交给
shell
做,来实现自动化运维。
Shell
虽然没有
C/C++
、
Java
、
Python
等强大,但也支持了基本的编程元素,例如:
if
、
for
、
while
、
case
等循环,还有变量、数组、字符串、注释、加减乘除逻辑运算等。
(2)常见的脚本语言
shell 、perl 、php 、python
(3)shell优点
- 易用 :
直接在
linux
系统上使用,不需要编译 - 高效 :
程序开发的效率非常高,依赖于功能强大的命令可以迅速地完成开发任务 - 简单:
语法和结构比较简单,易于掌握
(4)shell应用场景
- 监控
linux
系统的健康度 - 数据的处理 :
日志的切割、分析、统计等 - 与数据库交互 :
对数据库进行增,删,改,查等操作 - 监控进程,自动化启停服务
- 完成一些重复性的工作
2、shell****编写第一个脚本
(1)编写脚本
新建一个【first.sh】文件,在文件中编写脚本内容
vi first.sh
//脚本内容
# !/bin/bash
# 作者:YYL
# 编写时间:2024-03-23
# 功能:this is my first shell !
echo "this is my first shell !"
(2)执行脚本
方法1:直接使用 sh 命令执行
sh first.sh
方法2:先赋予文件可执行权限,在使用 ./ 执行
chmod 755 first.sh
./first.sh
3、shell脚本与crontab****定时器的运用
(1)crond服务
以守护进程方式在无需人工干预的情况下来处理着一系列作业和指令的服务
(2)crond服务的启停命令
//启动
systemctl start crond.service
//查看状态
systemctl status crond.service
//停止
systemctl stop crond.service
//重新启动
systemctl restart crond.service
(3)crontab定时器的使用
语法 | 选项 | 含义 | 内容格式 |
crontab 【选项】 | crontab -l | 列出crontab有哪些任务 | |
crontab -e | 编辑crontab任务 | * * * * * 级别 命令 | |
crontab -r | 删除crontab里的所有任务 |
crontab里的内容格式如下:
* * * * * 级别 命令
解析:五个星星分别代表【分、时、日、月、周】—从左到右
(4)crontab示例
crontab示例 | 实现命令 |
每分钟执行 | |
* * * * * 或者 */1 * * * * | |
每小时执行 | |
0 * * * * | |
每天执行 | |
0 0 * * * | |
每周执行 | |
0 0 * * 0 | |
每月执行 | |
0 0 1 * * | |
每年执行 | |
0 0 1 1 * | |
每天早上 | |
6 | |
点执行 | |
0 6 * * * | |
每两个小时执行 | |
0 */2 * * * | |
每小时的 | |
10 | |
分, | |
40 | |
分执行 | |
10,40 * * * * | |
每天的下午 | |
4 | |
点、 | |
5 | |
点、 | |
6 | |
点的 | |
5 min | |
、 | |
15 min | |
、 | |
25 min | |
、 | |
35 min | |
、 | |
45 min | |
、 | |
55 min | |
时执行命令 | |
5,15,25,35,45,55 16,17,18 * * * |
4、利用shell脚本企业实战nginx日志切割
(1)需求
- nginx的日志文件路径
- 每天0点对nginx 的access与error日志进行切割
- 以前一天的日期为命名
(2)脚本
新建shell脚本,命名为【nginx_cut.sh】,编写该脚本文件
#!/bin/bash
#Auto cut nginx log script.
#create by YYL
#create date:2024-03-24
#nginx日志路径
logs_path=/usr/local/nginx/logs
YesterDay=$(date -d 'yesterday' +%Y-%m-%d)
#移动日志并以日期改名
mv ${logs_path}/access.log ${logs_path}/access_${YesterDay}.log
mv ${logs_path}/error.log ${logs_path}/error_${YesterDay}.log
#向nginx主进程发送信号,重新生成日志文件
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
七、企业实战
1、企业实战静态ip地址配置
(1)使用NAT模式
固定IP地址,一般使用NAT模式
点击虚拟网络编辑器,选择NAT模式,并关闭【使用本地DHCP服务…】,关闭后需要修改网卡信息
**(2)**修改ip地址为静态
进入网卡路径,修改相关网卡信息,以下是我的网卡相关信息
vi /etc/sysconfig/network-scripts/ifcfg-eno16777728
BOOTPROTO="static"
IPADDR=192.168.213.100
GATEWAY=192.168.213.2
NETMASK=255.255.255.0
ONBOOT="yes"
//修改以上信息,以下是我网卡信息
HWADDR="00:0c:29:dc:47:58"
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPADDR=192.168.213.100
GATEWAY=192.168.213.2
NETMASK=255.255.255.0
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
NAME="eno16777728"
UUID="3199add9-379c-43a9-bab1-ae4e05c0f2cc"
ONBOOT="yes
网卡修改信息 | 说明 |
BOOTPROTO=“static” | 固定IP网址 |
IPADDR=192.168.213.100 | IP地址,可以根据子网ip进行设置 |
GATEWAY=192.168.213.2 | 网关IP,即NAT模式中的网关IP |
NETMASK=255.255.255.0 | 子网掩码 |
(3)重启网卡
systemctl restart network.service
(4)ping不通域名
如果设置为固定IP地址后,ping不通,那么加上以下域名服务器解析地址即可
vi /etc/resolv.conf
//配置内容
nameserver 114.114.114.114
nameserver 8.8.8.8
nameserver 1.1.1.1
(5)alias命令实现别名
//临时设置别名(重新登录后失效)
alias vinet='vi /etc/sysconfig/network-scripts/ifcfg-eno16777728'
//查看别名
alias
//取消临时别名
alias vinet
//永久设置别名
vi /root/.bashrc
//新增一条配置文件内容
alias vinet='vi /etc/sysconfig/network-scripts/ifcfg-eno16777728'
//加载使立即生效
source /root/.bashrc
2、CentOS7实战修改linux****系统主机名
虚拟机中都默认主机名为localhost
(1)查看主机名命令
hostname
(2)修改主机名的命令
hostnamectl set-hostname YYLCS
(3)修改后重启使之生效
reboot
(4)修改/etc/hosts文件
进入【hosts】文件,修改文件信息
vi /etc/hosts
192.168.213.100 YYLCS
(5)测试能否ping通
ping YYLCS
在YYLCS2机器上pingYYLCS机器,如下图所示,则说明修改成功
3、CentOS7实战ssh****免密远程登录其它机器
(1)执行命令创建密钥
ssh-keygen -t rsa
(2)拷贝密钥至YYLCS2服务器
从YYLCS拷贝文件到YYLCS2并重命名为【authorized_keys】
scp /root/.ssh/id_rsa.pub root@YYLCS2:/root/.ssh/authorized_keys
(3)测试能不能免密登录YYLCS2
ssh YYLCS2
4、CentOS7实战搭建nfs文件共享服务器
(1)NFS介绍
NFS
(
Network File System
)即网络文件系统,它允许网络中服务器之间通过
TCP/IP
网络共享资源,
NFS
的一个最大优点就是可以节省本地存储空间
(2)NFS体系组成
一台
NFS
服务器和若干台客户机,即一台NFS服务器共享给若干台客户机去访问
(3)环境准备
A
:
192.168.213.100
作服务端B
:
192.168.213.101
作客户端
(4)在A服务端机器安装nfs-utils和rpcbind包
- nfs-utils包提供了NFS服务器程序和相应的管理工具
- rpc则是能够获得nfs服务器端的端口号等信息
yum install -y nfs-utils rpcbind
(5)检查是否启动了rpcbind服务并监听着 111端口
成功安装rpcbind服务后,系统会自动启动服务,若没有自动启动,自己启动下即可
//启动rpcbind服务
sudo systemctl start rpcbind
netstat -tunlp | grep 111
(6)配置NFS服务的配置文件
首先创建一个共享目录供客户端去访问【/data/NFSdata】
mkdir -p /data/NFSdata
接着修改配置文件,配置文件路径在【/etc/exports】,配置信息如下:
vi /etc/exports
//修改配置信息内容
/data/NFSdata 192.168.213.101/24(rw,sync)
配置信息 | 说明 |
/data/NFSdata | 表示你要共享的目录 |
192.168.213.101/24 | 表示所允许访问的客户端IP |
(rw,sync) | rw:表示读写权限,sync:表示数据同步写入内存硬盘 |
(7)启动nfs服务
systemctl start nfs
(8)设置开机启动
systemctl enable rpcbind.service
systemctl enable nfs-server.service
(9)在B客户端机器安装nfs-utils和rpcbind包
yum install -y nfs-utils rpcbind
(10)设置rpcbind服务开机启动
systemctl enable rpcbind.service
(12)挂载
在B客户端机器创建一个目录供服务端机器挂载
mkdir /NFS
mount -t nfs 192.168.213.100:/data/NFSdata /NFS
showmount -e 192.168.213.100
若要在客户端也能有操作的权限,则需要在服务端中对NFSdata目录赋予对应权限
chmod -R 777 NFSdata