学习linux
系统工程师
这方面学到的知识有一些基础的命令行之类 通过命令行来管理文件,是不同于windows操作的一种体验.
以下记录一些常用的liunx命令:
ifconfig 查看IP地址,mac地址等网络设置
cd 移动到对应目录下
cp 复制文件或文件夹 -a复制权限 -r复制多级目录
rm -rf 强制删除且不提醒
cat 查看内容
chmod 改变文件权限
chroot 改变用户属组属主
ls -l 查看目录下的文件和属组和权限
touch 创建文件 -r自动创建文件夹
useradd userdel groupadd groupdel
useradd -m -d /home/haha -s /bin/bash -u 2020 uos1
usermod 修改用户属性
fdisk -l 查看硬盘
fdisk gdisk两种分区模式
find 查找
dpkg -l 显示软件安装列表
apt purge -y 删除包
其他更多命令都放在自己的百度云里了
其中在做磁盘管理的题目时会遇到一些问题 北站 :比如使用radi5时,假如之前的记录没有删除干净,很容易出现没法继续进行的情况,很有可能出现fliter报错。 其原因在于逻辑卷上的签名未删除,删掉就好。 同样在挂载时如果采用的是虚拟硬盘进行挂载实验,是无法重新开机的。
运维工程师
网络基础知识
ip地址相当于独一无二的一个门牌号
mac地址相当于邮编
端口相当于一个公司的一个收件人
路由可以实现在不同的网段进行通信 进行动态的路由选择
网关和路由作用差不多,其中有一个NAT转换的功能,起作用就像套个信封给你的ip。
下面就是比较重要的ISO/OSI的七层协议模型
应用层:给用户提供一个操作界面
表示层:提供数据表示,加密,压缩
会话层:确定数据是否需要进行网络传递
传输层:对数据进行分组,组装。提供传输协议的选择:tcp/udp 端口封装,差错校验
网络层:IP地址,路由选择
数据链路层:mac地址编址,mac地址寻址,差错校验
物理层:电气方面,电流的传输
数据传输的过程:通过表示层压缩,加密,确定需要进行网络传递,对数据组进行分组,选择协议,封装校验。ip地址编译,路由选择。mac地址编译,进入物理层。到另一台机器的物理层后将上述过程反着来。
apache
apache是一个广泛应用的web服务器软件,可将php等解释器编译到服务器中
apache有三种工作模式,由于apache是基于进程为基础的结构,不太适用于多处理器环境。
其中有个拓展知识为keep-alive模式,他可以解决长时间被占用的线程浪费问题。
练习题目例子
*虚拟主机监听的端口为8899
*设置DocumentRoot为/var/www/port
*下载http://virtual.storage.uosexam.com/exam/port.html文件到/var/www/port下并重命名为index.html
*访问http://server1.uosexam.com:8899即可看到/var/www/port/index.html的内容
*为http://server1.uosexam.com 配置安全的web服务,可以使用
apt install apache2
systemctl enable / restart apache2
mkdir /var/www/port
chmod -R 777 /var/www
wget http:virtual.storage.uosexam.com/exam/port.html -O /var/www/port/index.html
vim /etc/apache2/sites-enabled/port.conf
Listen 8899
<VirtualHost *:8899>
ServerName server1.uosexam.com
DocumentRoot /var/www/port
</VirtualHost>
systemctl restart apache2
ALL:
vim /etc/hosts
192.168.1.10 server1 server1.uosexam.com
Server1:
apt install apache2
apt install openssl
systemctl enable / restart apache2
mkdir /var/www/ssl
chmod -R 777 /var/www
wget http:virtual.storage.uosexam.com/exam/port.html -O /var/www/ssl/index.html
vim /etc/apache2/sites-enabled/ssl.conf
<VirtualHost *:80>
ServerName server1.uosexam.com
DocumentRoot /var/www/ssl
</VirtualHost>
mkdir /etc/apache2/ssl
cd /etc/apache2/ssl
openssl genrsa > 1.key
openssl req -new -x509 -key 1.key > 1.pem
> CN -> BJ -> BJ -> TX -> PXB -> TEST -> test@test.com
cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/
vim +32,33 /etc/apache2/sites-enabled/default-ssl.conf
ServerName server1.uosexam.com
DocumentRoot /var/www/ssl
SSLCertificateFile /etc/apache2/ssl/1.pem
SSLCertificateKeyFile /etc/apache2/ssl/1.key
a2enmod ssl
systemctl restart apache2
ALL:
vim /etc/hosts
192.168.1.10 server1 server1.uosexam.com
其中有点需要注意 由于openssl服务中的密钥我们是自己生成,所以登陆网站时会提示,无视就好。
如使用curl命令则需要在后面加上--insecure即可。
---
ssh安全远程管理
简单点来说就是一个远程控制服务
其中里面有个比较重要的知识为ssh免密登陆
刚开始配置ssh免密登陆的时候可能会碰到很多问题,首先我们需要将sshd服务里的PermitLogin打开
如果还是显示publickey denied的话可以重新设置一下root用户账号密码
使用ssh-copy-id复制密钥实现免密登陆
nginx
nginx是一款轻量级的服务器,占用内存少,并发能力强。
在配置链接php会有点小问题。
nginx在目前阶段接触不多学到知识较少。
不过这里面有一个很重要的概念:同步 异步 阻塞 非阻塞
用拿快递举个例子方便理解
同步取快递:小明收到快递即将到达的短信,在楼下一直等到快递送达
异步取快递:小明收到快递即将到达的短信,快递到楼下后,小明下楼再去取
阻塞取快递:小明收到快递即将送达信息后,什么事也不做,一直专门等快递
非阻塞取快递:小明收到快递即将送达的信息后,等待快递的时候,一边敲代码,一边耍微信
将以上相组合便有了四种组合方式,但只有一下两种是比较常用的
同步阻塞:小明收到信息后,啥也不干,在楼下等快递
异步非阻塞:小明收到信息后,边刷微博,边等快递员通知他取快递
DNS
DNS服务是一项将域名指向空间IP的服务
在日常生活中我们上网一般都是输域名,但域名的背后其实空间IP。DNS就是充当之间桥梁的翻译官。
DNS的解析过程:
www.kernel.org
- 客户机首先查找本地hosts文件,如果有则返回,否则进行下一步
- 客户机查看本地缓存,是否存在本条目的缓存,如果有则返回,否则进行下一步
- 将请求转发给指向的DNS服务器。
- 查看域名是否本地解析,是则本地解析返回,有则返回,否则进行下一步
- 本地DNS服务器在缓存中查找,是则返回,否则进行下一步
- 向全球十三个根域服务器发起DNS请求,根域返回org地址
- 使用org域的ip地址,发起DNS,org域返回kernel域服务器地址列表
- 使用一个kernel域ip地址,发起DNS请求,kernel域返回www.kernel.org 的ip地址,本地DNS服务器收到后,返回客户机,并在本地DNS服务器保存一份
相关练习题
缓存DNS
在server1上配置DNS服务器、满足下列要求,且保证服务重启后依然生效
*域名www.uos.com可访问机器为172.25.0.11的机器
*域名admin.uos.com 可访问机器为 172.25.0.33的机器
在server2上配置缓存DNS服务
*在任意机器指定DNS服务器为server2的IP时,可解析出server1配置的所有地址
Server1:
apt install bind9
systemctl enable / restart bind9
cp /etc/bind/named.conf.default-zones /etc/bind/named.conf.default-zones.bak
vim /etc/bind/named.conf.default-zones
zone "uos.com" {
type master;
file "/etc/bind/uos.com";
};
cp /etc/bind/db.local /etc/bind/uos.com
vim /etc/bind/uos.com
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA uos.com. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS uos.
www IN A 192.168.0.1 # IP改为实际要求IP
admin IN A 192.168.0.2 # IP改为实际要求IP
vim /etc/resolv.conf
nameserver 192.168.1.10 (注释掉 #192.168.1.254)
systemctl restart bind9
---
ALL:解析为对应IP地址即为成功
nslookup www.uos.com server1
nslookup admin.uos.com server1
===========
在server2上配置缓存DNS服务
*在任意机器指定DNS服务器为server2的IP时,可解析出server1配置的所有地址
Server2:
apt install bind9
systemctl enable / restart bind9
cp /etc/bind/named.conf.options /etc/bind/named.conf.options.bak
vim +13 /etc/bind/named.conf.options
forwarders {
192.168.1.10;
};
vim /etc/resolv.conf
nameserver 192.168.1.20
systemctl restart bind9
---
ALL:解析为对应IP地址即为成功
nslookup www.uos.com server1 /server2
nslookup admin.uos.com /server1 /server2
注意不要配置错误的本机DNS地址
DHCP
DHCP通常被应用在大型的局域网络之中,主要作用是集中的管理分配网络资源,使网络环境中的主机能动态的获得ip地址、gateway、DNS服务器地址等信息,并能够提升地址的使用率。
DHCP租约四部曲
- DHCP客户端进行IP请求
- DHCP服务器响应请求
- DHCP客户机选择IP
- DHCP服务器确认租约
需要注意的是一开始客户端是不知道服务器ip地址的,以0.0.0.0作为源,255.255.255.255作为目标地址广播,由于确认租约之后客户机才有地址,所以整个过程中的广播目标都为255.255.255.255
ISCSI
iSCSI利用了TCP/IP的port 860 和 3260 作为沟通的渠道。透过两部计算机之间利用iSCSI的协议来交换SCSI命令,让计算机可以透过高速的局域网集线来把SAN模拟成为本地的储存装置。
相关习题
在server2上配置iscsi服务,并满足下列要求
*磁盘名为iqn.2020-06.com.uosexam:server
*对/dev/sdb进行分区,大小为5G
*使用uos_disk作为后端卷,大小为/dev/sdb1分区大小
在server1上挂载server2提供的iscsi存储,并满足下列要求
*iscsi设备在系统重启后能自动加载
*在iscsi块设备上划分一个2G的分区,格式为ext4
*将分区永久挂载在/var/www上
Server2:
fdisk /dev/sdb
n->回车->回车->回车->+5G->p->w
# lsblk查看sdb大小,如果是5G
# n->一路回车->w
partprobe
apt-get -y install targetcli-fb
targetcli
/> ls
/> /backstores/block create uos_disk /dev/sdb1
/> /iscsi create iqn.2020-06.com.uosexam:server
/> /iscsi/iqn.2020-06.com.uosexam:server/tpg1/acls create iqn.2020-06.com.uosexam:client
/> /iscsi/iqn.2020-06.com.uosexam:server/tpg1/luns create /backstores/block/uos_disk
/> saveconfig
/> exit
Server1:
apt-get -y install open-iscsi
vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2020-06.com.uosexam:client
systemctl restart iscsid
systemctl enable iscsid
iscsiadm --mode discoverydb --type sendtargets --portal 192.168.1.20 --discover\
iscsiadm --mode node --targetname iqn.2020-06.com.uosexam:server --portal 192.168.1.20:3260 --login
systemctl restart iscsid
lsblk
fdisk /dev/sdb
n->回车->回车->回车->+5G->p->w
partprobe
lsblk
vim /etc/iscsi/iscsi.conf
# node.startup = automatic #去掉前面的注释符
node.startup = manual #在前面加上注释符
mkfs.ext4 /dev/sdb1
blkid /dev/sdb1
vim /etc/fstab
UUID=”********” /var/www ext4 defaults,_netdev 0 0
mkdir /var/www/
mount -a
Shell
Shell脚本本质上感觉和java差不太多,比较好理解==
相关练习题目
在server1上创建名为/root/test.sh的脚本、完成以下功能
*判断传入的位置参数有且只有一个
*执行脚本时,传入一个位置参数
#参数为quit,则输出exit
#参数为yes,则输出running
#为其它任意值,均执行非正常退出,脚本退出码11
Server1:
vim /root/test.sh
#!/bin/bash
if [ $# -eq 1 ];then
if [ $1 == 'quit' ];then
echo 'exit'
elif [ $1 == 'yes' ];then
echo 'running'
else
exit 11
fi
else
exit 11
fi
chmod +x test.sh
---
./test.sh -> echo $? -> 11
./test.sh quit -> exit
./test.sh yes -> running
./test.sh test -> echo $? -> 11
除了题目里写的还有另外一种运行方式 bash /root/test.sh
此外exit输出的值是默认不显示的,可以输入echo $?查看
在server1上,编写shell脚本,保存为/root/square.sh,要求找出1-200以内6的倍数,并打印这些数的平方值
vim /root/square.sh
#!/bin/bash
for i in {1..200};
do
j=$(($i%6))
if [ $j -eq 0 ];then
echo $(($i*$i));
fi
done
SAMBA
此项服务是由微软推出的夸平台传输文件的一种网络服务,目前对他了解不深。
我们的网络领居其实采用的就是SAMBA,如果你创建虚拟机后想把本机的东西放进去,就可以利用网上邻居这个功能,十分便利。
VSFTP
VSFTP工作模式
相关习题
在server1上创建FTP服务并按照下列要求进行配置
*创建/srv/ftp/pub目录
*要求在server2上使用匿名用户可以在/srv/ftp/pub/里面执行上传以及下载
FTP用户登录限制,使用user_list方式
*创建tangseng、sunwukong、zhubajie、shaseng四个FTP用户,密码为‘123123’
*只允许tangseng、sunwukong可以登陆FTP服务器
* 其他用户将不允许登陆
apt-get install vsftpd
systemctl start vsftpd
ss -anput | grep 21
vim /etc/vsftpd.conf
anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022 # 本条配置自行添加
# 主动式连接使用的数据通道,如果有防火墙,就添加下面两行!!!!!!!
connect_from_port_20=YES
pasv_enable=NO # 支持数据流的被动式连接模式
mkdir /srv/ftp/pub
chmod -R o+rw /srv/ftp/pub
systemctl restart vsftpd
systemctl enable vsftpd
useradd -m -s /bin/bash tangseng
useradd -m -s /bin/bash sunwukong
useradd -m -s /bin/bash zhubajie
useradd -m -s /bin/bash shaseng
echo "tangseng:123123" | chpasswd
echo "sunwukong:123123" | chpasswd
echo "zhubajie:123123" | chpasswd
echo "shaseng:123123" | chpasswd
echo 'tangseng' >> /etc/vsftpd.user_list
echo 'sunwukong' >> /etc/vsftpd.user_list
vim /etc/vsftpd.conf # 添加以下内容
userlist_file=/etc/vsftpd.user_list
userlist_enable=YES
userlist_deny=NO
systemctl restart vsftpd
docker
docker是一个非常好用的镜像工具
是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
相关习题
使用dockerfile创建nginx服务
在server1上面搭建docker服务,满足下列要求
*下载http://virtual.storage.uosexam.com/exam/uos.tar
*导入uos.tar到docker并将uos打标签为uos:nginx
*基于uos:nginx镜像书写dockerfile,安装nginx服务,访问默认主页返回内容为:I’m UOS NGINX
*nginx为开机自启动;
*生成的新镜像命令为uos:nginx2
*基于uos:nginx2镜像,生成容器,命名为mynginx,并映射到server1的8888端口
*访问server1:8888,返回结果: I’m UOS NGINX
Server1:
wget http://virtual.storage.uosexam.com/exam/uos.tar
apt install docker docker.io
systemctl enable / restart docker
docker load -i uos.tar
docker images
docker tag uosproject/uos:latest uos:nginx
mkdir /root/dockerfile_8888
cd /root/dockerfile_8888
vim dockerfile
FROM uos:nginx
RUN apt clean && apt update
RUN apt install -y nginx
RUN echo "I'm UOS NGINX" > /var/www/html/index.html
RUN nginx
EXPOSE 80
CMD ["nginx","-g","daemon off;"]
docker build -t uos:nginx2 . #注意后面有个点表示当前目录
docker run -id --name mynginx --restart=always -p 8888:80 uos:nginx2
docker ps
没有文件的话自己用docker pull命令下载,然后使用docker save xxx -o xxx.tar打包即可使用
ansible
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
相关习题
在server1上安装配置ansible,满足下列要求
*server1在web组里面
*server2在db组
编写一个playbook名称为/root/apt.yml、满足下列要求
*在web组安装软件包“php-mysql”、“php-fpm”、”gcc”
*在db组安装“mariadb-server”
*保证所有机器都是启动的、并实现开机自启动
Server1:
apt install ansible
vim /etc/ansible/hosts
[web]
server1
[db]
server2
---
Server1:
ansible server1 -m ping
ansible server2 -m ping
vim /root/apt.yml
---
- hosts: web
remote_user: root
tasks:
- name: install web-server
apt: name=php-fpm,php-mysql,gcc state=present
- hosts: db
remote_user: root
tasks:
- name: install db-server
apt: name=mariadb-server state=present
- name: enable
service: name=mariadb enabled=true state=started
ansible-playbook --syntax-check /root/apt.yml
ansible all -m shell -a "apt update"
ansible-playbook /root/apt.yml
需要注意的是yml非常看重缩进和空格,最好严格按照样式来做,不然报错的大概率是因为格式问题。
MySQL
待更新。。。
链路聚合
简单理解的的话就是数据链路层生成数协议有两条或者两条以上时,会自动切断另外一条。
链路聚合中同时只允许一个成员端口工作。可将多张网卡绑在一块。列如使用bond和team。bond最多添加两张网卡
一般轮询和活动备份用的多一点
运维考试回顾
有几点要注意一下
在hosts里要写上server1和server2的地址,不然机器不认识。
第一道防火墙就不用写了,纯纯的浪费时间
dhcp那道题,我一开始以为没办法写后来发现要给网卡配置一个网段
ifconfig ens3:1 192.168.1.3
移除的命令是ip addr del ip/netmask dev 别名
设置完后重新启动一下dhcp服务
要注意写完脚本要用chmod +x不然坑爹的考试系统判别不了
有几道题目会轮换,所以运维的题库也要看看
其他基本没什么了都是送分的
UCE
容器
容器的代表的是一个个操作系统,docker就像我们操作系统里面的一个小的操作系统。
当一些大型公司里容器很多的时候就需要进行编排,市面上现在有许多专业的编排工具。
openstack
Rackspace+NASA共同成立了openstack
云计算有三种工作模式:Iaas Paas SaaS
User:登陆的用户
Token:令牌
用户凭据:密码
serverice 服务
端点目录