Linux基础命令与服务

Linux基础命令与服务

1. 基础命令 VIM 用户 权限 进程

基础命令
	history !87		重新执行87行命令
	ls 	-a			查看隐藏文件
	which 			查看命令存储的位置
	cat -n 			显示行号

	修改主机名		临时:hostname
					永久:/etc/hostname

VIM
	:n				光标定位到n行
	/string (n N)   查找字符,n下一个
	set list   		显示不可见字符
	set nu 			显示行号
	set nonu 		取消行号
	yy  			复制
	p 				粘贴
	dd 				删除
	dG 				删除当前行至结尾
	dgg 			删除光标至行首
	hjkl 			上下左右
	0 $             行首行尾
	gg G 			页首页尾
	s  /旧/新/		光标所在行单个替换,注意光标位置
	s  /旧/新/g		整行替换
	5,$/旧/新/		第五行到末尾行,每行匹配到的第一个替换
	%s /旧/新/		所有行匹配到的第一个替换
	%s /旧/新/g 		每行搜索到的所有替换

用户
	root的uid为0

	useradd /etc/passwd   用户的配置文件
			-d 	directory指定用户家目录
			-u 	指定用户uid
	userdel -r 	删除用户与其关联文件
	usermod -G 	覆盖原有的附加组
			-aG 增加新的附加组,不会覆盖

	groupadd -g 增加组并指定组id
	groupdel	删除组
	gpasswd /etc/group  组的配置文件
			-a 	增加一个新的用户
			-M 	设置组的成员列表 会覆盖
			-A 	设置组的管理员列表 会覆盖
			-d 	把用户从组中删除

权限
	echo “123” > 1.txt	覆盖
	echo “123” >> 1.txt	追加

	lsattr 1.txt		查看文件属性
	chattr +/-a 1.txt	a属性只能追加数据,不能修改源文件
			  i			i属性不能修改文件任何内容,文件加锁

	which cat     which rm

	chmod u+s /user/bin/cat 	suid只能运用在可执行文件上,普通用户通过suid提权	
		  g+s /home/hr			针对目录	新创建的文件继承目录的属组
		  o+t /home/dir1		针对目录 	sticky	用户只能删除自己的文件,别人不行
		  -R  这个目录里的所有文件全部继承该目录的权限
	
	ll    查看文件详细信息
 	ll -d 查看当前目录权限

 	默认创建的文件及目录权限		文件:644		目录:755
 	原始umask 022				666-022 	777-022

进程
 	192段是NAT,只能自己发现,10段是桥接模式,局域网可以发现

 	ps aux/ef 							静态查看进程信息
 		   --sort -%cpu | less 			--sort 排序  -%cpu 倒序  %cpu 正序
 						| grep -v USER 	-v:取反
 							   -i 		-i:忽略大小写

 		   USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

 	top	动态实时显示机器的负载状态
 		第一部分:系统整体负载信息	当前时间、运行时间、当前用户数、load average x,x,x:cpu 1 5 15 分钟的平均负载
 		第二部分:单个进程负载信息	KiB Mem/Swap 查看本机内存使用率 = free -m

 		进程开启需要有一个守护进程的用户		//httpd 用户:apache

 	pkill 服务名
 		  -u 用户名 	kill用户全部进程
 	killall 服务名		yum provides killall	yum -y install psmisc-22.20-16.el7.x86_64

 	lsof -i:数字  查看端口

2. 重定向 at计划任务 排序 创建磁盘分区

重定向
	1> 	正确输出重定向	将正确的命令输出到重定向	错误的仍然输出在屏幕上	ls /home/ /111 1>list.txt	1可以省略
	2>	错误输出重定向	将错误的命令输出到重定向	正确的仍然输出在屏幕上	ls /home/ /111 2>list.txt	2不可省略 
	&>	混合输出重定向	不论正确与否都输出到重定向  屏幕无显示			ls /home/ /111 &>list.txt

	ls /home /111 >list 2>/dev/null	正确命令输出重定向 错误命令到黑洞

at计划任务
	at now +1 min			一分钟后添加用户
	at>	useradd tianyun
	 (ctrl+d)

排序
	sort -t ":" -k 3 -n /etc/passwd  -r 	sort排序	-t 指定分隔符 -k 指定列 -n 按数值 -r 倒序

磁盘
	磁盘容量:2T rpm=7200转
	接口:IDE、SATA、SCSI、SAS和光纤通道五种
		IDE接口硬盘多用于家用产品中,也部分应用于服务器
		SCSI接口的硬盘则主要应用于服务器市场
		SAS接口比普通SCSI接口小,并支持2.5英寸的硬盘,可以向下兼容SATA,串口
		而光纤通道只用于高端服务器上

	磁盘尺寸:3.5 2.5 SATA 1.8
	固态硬盘性能高,读写速率快,造价高。没有转速

磁盘命令
	lsblk 列出块设备信息	块设备:硬盘 闪存盘 cd-ROM等
	df -Th 查看分区剩余空间及文件系统类型
	fdisk -l 查看分区
	fdisk /dev/sdb 磁盘分区		SSD固态不可以做系统盘,2T的HDD机械不可以做系统盘		fdisk不可以格式化2T的磁盘
		n 新建分区                                                               
		p 打印分区表
		q 退出
		w 保存并退出

linux系统必须要有3个分区
	/swap 分区 oom out of memory 防止内存溢出
	/boot 引导
	/

挂载磁盘
	1 磁盘分区
	2 创建挂载点(一般创建在/mnt目录下)
	3 格式化磁盘  mkfs.xfs /dev/sdb -f   	格式化成xfs系统 	-f:覆盖
				mkfs.ext4 /dev/sdb 		格式化成ext4文件系统
	4 挂载 mount /dev/sdb1 /mnt/dir1

	umount /dev/sdc1 /mnt/dir1
	取消挂载时候要注意
	1 不能在当前挂载目录中,否则取消挂载失败
	2 想要格式化磁盘 ,必须先要取消挂载,才能格式化成功
	3 挂载前,需要手动创建挂载目录,然后格式化分区,然后再去手动挂载

2.1 链接文件 开机执行脚本 开机自动挂载 UUID inode LVM 查看内存使用情况

开机执行脚本
	/etc/rc.d/rc.local 开机自动执行脚本 chmod +x
	ls -i 查看inode
	blkid 查看UUID	UUID在文件系统格式化后产生

开机自动挂载	/etc/fstab
	dev/mapper/centos-swap 	swap 	swap    defaults	0 0
	文件位置/UUID=""			挂载点	文件类型	
	mount -a 	挂载
	free -m/-h 	查看内存使用情况	swap分区:防止内存溢出

LVM逻辑卷实验

	————————————————————————LVM——————————————————————————

	3块硬盘   思路:物理磁盘n --> PVn --加入--> VG --create--> LVn

	lsblk
	pvcreate /dev/sdb 				将/dev/sdb创建为PV
	pvs/pvscan	 					查看PV
	vgcreate datavg /dev/sdb 		从/dev/sdb创建VG datavg是vg名字
	vgs/vgscan						查看VG
	lvcreate -L 200M -n lv1 datavg 	创建LV -L:指定lv的大小 lv1:创建lv名字 从datevg里创建
	lvcreate -L 300M -n lv2 datavg
	lvscan          				查看VG
	lsblk							查看分区
	mkfs.xfs /dev/datavg/lv1		格式化lv1为xfs文件系统
	mkfs.ext4 /dev/datavg/lv2		格式化lv2为ext4文件系统
	mkdir /mnt/lv1 /mnt/lv2  		创建挂载点
	mount /dev/datavg/lv1  /mnt/lv1	挂载
	mount /dev/datavg/lv2  /mnt/lv2	挂载

	df -h
	LVM完成 

	————————————————————————扩大VG——————————————————————————
	
	vgs 						查看vg
	pvcreate /dev/sdc       	先变成PV
	vgextend datavg /dev/sdc   	将/dev/sdc添加到datavg中

	vgs free增大     
	扩大VG完成

	——————————————————————减小VG(数据迁移)————————————————————

	pvs  						查看pv
	pvmove /dev/sdb /dev/sdc    将sdb数据移到sdc    
	vgreduce datevg /dev/sdb

	pvscan/lsblk变化
	迁移完成

	vgreduce datavg /dev/sdb 	将/dev/sdb移出vg
	pvs

	lvextend -L +1G /dev/datavg/lv1		扩大lv

	注意:
	pv不能跨越vg
	lv不能跨越vg
	系统中可以创建多个vg
	vg中可以创建多个lv

	————————————————————————————卸载——————————————————————————

	umount /dev/sdc /mnt/lv1
	lvremove /dev/datavg lv1
	vgremove datavg
	pvremove /dev/sdc
	mkfs.xfs /dev/sdc -f

2.2 find 传参 扩大文件 查看时间 查看目录大小 远程拷贝 解压

   find 查找路径 参数
	-name "1.txt"		名字		//^文件内容 *文件名称
	! -name "1.txt"		取反
	-iname "FILE"		忽略大小写
	-size -/+5M			小于/大于5M
	-maxdepth 2			指定查找的目录深度 2:最大2层
	-a 					并且
	-o 					或者
	-mtime -/+5			修改时间小于/大于5天
	-type f/d/l/b/c/s/p	按文件类型 f:普通 d:目录 l:链接 b:块设备 c:字符设备 s:套接字 p:管道文件
	-perm 222			文件权限为222的
	-perm 222 -ls		查看文件权限为222的详细信息
	-perm -222 -ls		查看文件权限包含222的详细信息
	-empty				空文件
	-mtime 				最后修改时间
	-atime 				最后访问时间
	ctime 				最后变更时间,变更动作可以是chmod、chgrp、mv等
   
   扩大文件 查看时间 查看目录大小
	dd if=/dev/zero of=test bs=1M count=5
	du -sh * 	查看目录下每个文件大小
	date 		查看系统时间	修改:月日时分 // date 10101000 每个单位是两位数字
   
   传参
	-exec 动作 {} \; 		{}:前面命令结果的占位符		一个一个传参	find . -name "*.log" -exec rm -rf {} \;
	| xargs					不能操作文件名有空格的文件	一次性传参	find . -name "*.log" | xargs rm -rf *
			-I {} 动作 {}	-I 后需要事先指定替换字符
							-i 直接用{}就能代替管道之前的标准输出的内容;
	  
   远程拷贝 解压
	scp -r 源目录 IP地址:目标目录	远程拷贝文件	基于ssh协议  端口不能变
	tar -czf a.tar.gz /etc 		参数 压缩包名字 压哪个	c:创建 v:显示过程 f:文件
	-xf a.tar.gz -C /etc	指定解压路径

2.3 RAID、YUM

   RAID 虚拟磁盘阵列
	RAID 	类型           			个数           	利用率            	优缺点
	-----------------------------------------------------
	RAID0   条带集   	       			2+     			100%          		读写速率最快,不容错
	RAID1   镜像集                  	2				50%	         		读写速率一般,容错
	RAID5   带奇偶校验条带集   			3+       		(n-1)/n      		读写速率快,容错,允许坏一块
	RAID6   带奇偶校验条带集双校验dp    	4+        		(n-2)/n      		读写快,容错,允许坏两块
	RAID10	RAID0与RAID1综合应用。
 
 	RAID  单盘0 全盘0  RAID0_single  	只需要一块盘,不支持容错, 不提供冗余机制。常见于新服务器,只有一块盘,用来安装操作系统
 	RAID1+RAID5    					前两块盘做RAID1 后面的盘做RAID5
 	RAID1+SSD_RAID5    				前两块盘做RAID1 后面的SSD硬盘做成raid5用来存储数据

   YUM

 	sed -ri s/^mirrorlist/#mirrorlist/g /etc/yum.repos.d/CentOS-Base.repo 	国外源生效
 	sed -ri s/^#baseurl/baseurl/g /etc/yum.repos.d/CentOS-Base.repo 		国外源生效

 	curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 	新增阿里源

 	yum clean all 					清除本地缓存
 	yum makecache					创建新的本地yum缓存
 	yum -y install epel-release		安装扩展源
 		   remove 					移除
 		   reinstall				重新安装
 		   provides					查询

   windows&linux传文件
 	rz 回车  如果软件上传失败 更换windows包的路径
	sz 文件名  linux服务器上的文件上传到windows   必须安装上面的软件包

3. RPM 源码安装 NTP

RPM安装

	RPM包安装信息存储到本地RPM数据库中

	rpm -ivh 包名			安装
		-q 服务名				查询是否安装
		-qa | grep ntfs		查询是否安装
		-e 服务名	 --nodeps	卸载 nodeps:不检测依赖关系,强制卸载
				 --force	强制安装软件包 

	yum install unzip		unzip  xxx.zip    解压zip格式的包

源码包安装

	准备 	1.编译环境如编译器gcc、make 
			2.准备软件 tengine-2.2.0.tar.gz  
			3.部署Tengine pcre: 正则表达式库,做地址重写rewrite
	
	环境 	yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel
				--enable -so 			启用动态模块
				--enable -modules=all  	全部启用动态模块
				--enable -ssl   		启用https 安全链接 useradd www

	解压 	tar xvf tengine-2.2.0.tar.gz
			cd tengine-2.2.0

	配置		./configure \
			--user=www \
			--group=www \
			--prefix=/usr/local/nginx \			安装路径
			--with-http_stub_status_module \	依赖包//–-with-tk=/usr/local
			--with-http_sub_module \
			--with-http_ssl_module \
			--with-pcre	

	编译 	make 						按Makefile文件编译,可以使用-j 指定两颗CPU编译,优化编译器参数
	安装 	make install				按Makefile定义的文件路径安装
	启动 	cd /usr/local/nginx/sbin/nginx

	        cd  /usr/local/apache2/bin
				./apachectl  start

		NTP 进行集群的时间对时
			首先修改成错误的时间, 然后查询安装软件包yum provides/install 
			执行ntpdate -s ntp.api.bz
			使用date命令查看时间是否修改成功

3.1 计划任务 /被注释解决办法 日志查看 内存写入磁盘

计划任务
	crontab	-e 		编写计划任务	* * * * * 命令	*/5	* 4-9/2	*  1,2		*/5:每五分钟	*:全部 4-9日每隔两天
												分 	时 	日 	月 	周		周:周几	周日是0
			-l 		查看计划任务
			-r 		删除全部计划任务

fstab / 被注释的解决方法
	e -> linux16 -> end -> init=/bin/sh -> ctrl+x -> mount -o remount,rw / -> 修改fstab文件 -> touch /.autorelabel ->exec /sbin/init

日志存放文件
	/var/log/messages			系统主日志文件
	/var/log/audit/audit.log 	系统审计日志
	/var/log/dmesg			    开机时核心检测过程中产生的日志
	/var/log/secure		    	认证/安全日志 ssh ftp telnet pop3 
	/var/log/maillog			postfix 邮件日志
	/var/log/cron				crond/at 计划任务日志
	/var/log/yum.log           	yum
	/var/log/mysqld.log   		MySQL
	/var/log/httpd			    apache
	/var/log/xferlog       		vsftp
	/var/log/wtmp 				登录系统的用户名单 last
	/var/log/btmp				登入系统失败的用户名单 lastb
	var/log/lastlog				记录每个用户最后的登入信息 lastlog

tail -f / tailf	动态查看		tailf /var/log/cron
sync	强制将内存中的文件缓冲内容写到磁盘,这个命令是通过调用sync系统调用来实现的

3.2 日志轮转 免密登录 网卡配置文件 链路聚合 子接口

logrotate	本身不是系统守护进程,它是通过计划任务crond每天执行
	/etc/logrotate.conf 	决定日志文件如何轮转
	/etc/logrotate.d/*		

	vim /etc/logrotate.d/yum
		/var/log/yum.log {
			missingok				丢失不提醒
			#notifempty				空文件不轮转
			#maxsize	30k			到30k轮转
			daily					一年轮转一次(yearly monthly weekly)
			rotate 3				保留三份
			create 0600 root root }	轮转后创建新文件,并设置权限

		/usr/sbin/logrotate /etc/logrotate.conf	  	手动轮转
		ls /var/log/yum* 	修改日期会生成新的,到rotate数量会删除旧文件

免密登录
	ssh-kengen
	ssh-copy-id -i IP地址
禁止密码登录
	vim /etc/ssh/sshd_config
	PasswordAuthentication no
	重启ssh	finalshell 登录失败	ssh免密机可以登录
查看网卡协商(传输)速率
	ethtool 	speed 1000Mb/s		Link detected 查看网线是否连接(物理)
	使用 ethtool 命令后 网线的网卡协商速率是100mb/s  不是千兆	解决方法:换网线
网卡配置文件
	vim /etc/sysconfig/network-scripts/ifcfg-eth0 
		TYPE="Ethernet"			以太网接口类型
		BOOTPROTO="none"		地址配置协议	dhcp
		NAME="eth0"				NetworkManager网卡名称
		DEVICE="eth0"			设备名称
		ONBOOT="yes"			开机自动开启网卡
		IPADDR=192.168.15.138	IP地址				10.9.62.124
		NETMASK=255.255.255.0	子网掩码				255.255.255.0
		GATWAY=192.168.15.2		网关					10.9.62.1
		NM_CONTROLLED=no 		默认开启安全策略

————————————————————————————配置链路聚合——————————————————————————
	-> 新建 ifcfg-bond0(BONDING_MASTER/BONDING_OPTS="mode=6 miimon=100") 
	-> 修改 ifcfg-eth0 (SLAVE/MASTER)
	-> 重启

	1. 接口配置文件
		vim /etc/sysconfig/network-scripts/ifcfg-bond0 
			DEVICE=bond0
			TYPE=Ethernet
			ONBOOT=yes
			NM_CONTROLLED=no 		安全策略,是否接受NetworkManager控制
			BOOTPROTO=none
			IPADDR=10.9.62.124
			PREFIX=24 				子网掩码
			IPV6INIT=no 			
			USERCTL=no 				是否允许普通用户控制该设备
			#BONDING_MASTER=yes		
			#BONDING_OPTS="mode=6 miimon=100"	工作模式	监视网络连接的频度(毫秒)

		vim /etc/sysconfig/network-scripts/ifcfg-eth0		
			DEVICE=eth0
			TYPE=Ethernet
			ONBOOT=yes
			NM_CONTROLLED=no
			BOOTPROTO=none
			IPV6INIT=no
			USERCTL=no 
			MASTER=bond0 			接口配置文件名 需要和上面的ifcfg-bond0配置文件中的DEVICE的值对应
			SLAVE=yes 				受控制

		vim /etc/sysconfig/network-scripts/ifcfg-eth1
			DEVICE=eth1
			TYPE=Ethernet
			ONBOOT=yes
			NM_CONTROLLED=no
			BOOTPROTO=none
			IPV6INIT=no
			USERCTL=no
			MASTER=bond0
			SLAVE=yes

	2. bonding参数
		vim /etc/modprobe.d/bond0.conf 			定义bond网卡轮询模式 加载bond0接口到内核 为bond0设置bonding kernel module
			alias  bond0 bonding 				
			options bonding mode=0 miimon=100	工作模式	监视网络连接的频度(毫秒)

		常见的网卡绑定驱动有三种模式—mode0、mode1和mode6
			mode0(平衡负载模式):balance-rr 平时两块网卡均工作,且自动备援,但需要在与服务器本地网卡相连的交换机设备上进行端口聚合来支持绑定技术。否则会一个mac地址对应多个端口
			mode1(自动备援模式):active-backup 平时只有一块网卡工作,在它故障后自动替换为另外的网卡。优点:冗余性高;缺点:链路利用率低,两块网卡只有1块在工作
			mode6(平衡负载模式):balance-alb 平时两块网卡均工作,且自动备援,无须交换机设备提供辅助支持。因为做bonding的这两块网卡是使用不同的MAC地址。

	3. 重启网络服务 
		systemctl restart network
		ip a 		ethtool

——————————————————————————配置网卡的子接口—————————————————————————
	复制 ifcfg-eth0 改名 ifcfg-eth0:0 -> 改静态ip设备名 -> 重启网卡

	vim /etc/sysconfig/network-scripts/ifcfg-eth0
		TYPE=“Ethernet”
		BOOTPROTO=“none”
		NAME=“ens33”
		DEVICE=“ens33”
		ONBOOT=“yes”
		IPADDR=192.168.163.130
		NETMASK=255.255.255.0
	vim /etc/sysconfig/network-scripts/ifcfg-eth0:0
		TYPE=“Ethernet”
		BOOTPROTO=“none”
		NAME=“ens33:0”
		DEVICE=“ens33:0”
		ONBOOT=“yes”
		IPADDR=192.168.163.131
		NETMASK=255.255.255.0
	vim /etc/sysconfig/network-scripts/ifcfg-eth0:1
		TYPE=“Ethernet”
		BOOTPROTO=“none”
		NAME=“ens33:1”
		DEVICE=“ens33:1”
		ONBOOT=“yes”
		IPADDR=192.168.163.132
		NETMASK=255.255.255.0

bond和子接口的区别
	bond:两个(或以上)物理网卡变成一个虚拟网卡,优化网络,提高带宽。需要跨交换机使用。
	子接口:一个网卡配置多个IP,多个IP使用同一个服务器(IP前三段要一样),在同一个网卡上连接多个IP地址,提高组网应用灵活性。

3.3 网卡重命名 FTP NFS

网卡重命名
	mv ifcfg-ens33 ifcfg-eth0
	vim /etc/sysconfig/grub
		GRUB_CMDLINE_LINUX="crashkernel=auto net.ifnames=0 biosdevname=0 rhgb quiet"	重新加载grub
	grub2-mkconfig -o /boot/grub2/grub.cfg 												生成启动菜单
	reboot		

FTP
	FTP的两种工作模式:主动模式  被动模式 		端口  20  21
	服务端:服务名称vsftpd
	linux客户端:必须安装 lftp

	————————————————————————————FTP——————————————————————————

	部署:安装 -> 启服务 -> 访问共享目录

		yum -y install vsftpd
		systemctl restart vsftpd
		/var/ftp/  	FTP的共享默认目录

	访问:lftp xxx 			linux客户端访问
	下载:get 文件名 -o 路径	下载到指定路径
		 mirror 目录名		下载目录
	上传:put 文件 			上传文件 默认匿名用户不能上传 需要先cd进目录
							上传后下载 需要给文件权限
	
	配置文件:/etc/vsftpd/vsftpd.conf
		anonymous_enable=YES			是否允许匿名用户登录
		local_enable=YES				是否允许本地用户登录
		write_enable=YES				是否允许写(全局)
		local_umask=022					控制本地用户上传文件的默认权限,umask表示要减掉的权限
		anon_umask=077					控制匿名用户上传文件的默认权限 

		chroot_list_enable=YES 						chroot: 锁定本地用户HOME 	
		chroot_list_file=/etc/vsftpd/chroot_list 	部分用户chroot
		chroot_local_user=YES 						所有本地用户chroot

		anon_max_rate=500000			匿名用户限速
		local_max_rate=80000			本地用户限速
		max_clients=500					ftp最大连接数
		max_per_ip=2					单个IP最大连接数,线程数

		local_root=/ftproot				指定本地用户访问的root目录
		anon_root=/anonroot				指定匿名用户访问的root目录

NFS
	Network File System 网络文件系统,Unix系统之间共享文件的一种协议
	NFS 的客户端主要为Linux,支持多节点同时挂载以及并发写入
	为集群中的Web Server配置后端存储

	————————————————————————————NFS——————————————————————————

	NFS存储端:		安装 -> 创建存储网站代码的目录 -> 修改配置文件:共享的目录 IP(参数,参数) -> 启服务
		yum -y install nfs-utils
		mkdir /webdata 	
		echo “123” > /webdata/index.html
		vim /etc/exports 	
			/webdata        10.37.129.0/24(rw,sync,no_root_squash)	不压制root(当client端使用root挂载时,也有root权限)
			共享的目录 		主机名或IP(参数,参数)		rw:读写访问	sync:所有数据在请求时写入共享
		systemctl start nfs-server
		exportfs -v

	WEB 客户端:		安装 -> 启服务 -> 挂载IP地址:/网站代码存储目录 apache网站根目录 -> 挂载
		yum -y install nfs-utils httpd
		systemctl start httpd
		showmount -e IP地址 							查看存储端共享
		mount -t nfs IP地址:/webdata /var/www/html/	手动挂载
		vim /etc/fstab
			IP地址:/webdata	/var/www/html 	nfs 	defaults 	0 0 	自动挂载
		mount -a
		df -h

3.4 DNS Apache Web服务器

DNS	
	配置文件:DNS域名解析	/etc/resolv.conf 	nameserver 8.8.8.8	DNS地址
			本地域名解析	/etc/hosts 			127.0.0.1   localhost localhost.localdomain

Web服务器
	Web Server:	Nginx(Tengine)、Apache、IIS
	Web 中间件:	php:PHP-fpm、HHVM
				jsp:Tomcat、JBOSS、Resin、IBM WebSphere
	常见组合方式:	LNMP    (Linux + Nginx + MySQL + PHP) 	php-fpm进程
				LAMP    (Linux + Apache + MySQL + PHP)	php作为Apache的模块
				Nginx + Tomcat       

虚拟主机技术
	基于端口 ip 域名
	同一个IP地址,开放不同端口
	不同IP地址,使用相同的端口跑不同的网站    

Apache主配置文件:	vi /etc/httpd/conf/httpd.conf   

动态部署
	————————————————————————————部署博客系统wordpress——————————————————————————

		安装:	yum -y install mariadb mariadb-server mariadb-libs php php-mysql php-gd php-fpm php-cli gd httpd
	  	启服务:	systemctl start httpd mariadb
		设密码:	mysqladmin -uroot password "123"	

		创建数据库 -> 添加端口 -> 添加虚拟主机配置文件 -> 创建网站主目录 -> 导入网站源码 -> 解压到网站主目录 -> 给777权限 -> 添加本地域名解析

		mysql -uroot -p123
			create database tianyun;
		vim /etc/httpd/conf.d/tianyun.conf
			
			        ServerName www.tianyun.com
			        ServerAlias   tianyun.com
			        DocumentRoot  /web/tianyun
			
			 		访问控制
			        Require all granted
			
		mkdir -p /web/tianyun
		tar xf wordpress-4.7.2-zh_CN.tar.gz
		cp -rf wordpress/* /web/tianyun/
		chmod  -R 777 /web/       

		本机浏览器登录
			数据库名 	 	tianyun
			用户名 	 	root
			密码 		123
			数据库 主机 	localhost
			表前缀   		wp_
			点提交
			进行安装
			站点标题	tianyunhaha
			用户名	tianyun
			密码   	123
		如果想重新安装,请删除数据库中的旧数据表,删除目录下的wp-config.php

		curl IP地址 -I 看状态返回码

		问题:博客服务器访问不到
			ping服务器 -> 通,网络没问题,证明服务有问题 -> 查看ssh httpd 状态 端口开启情况 -> 看配置文件是否正确 -> 查看目录权限 -> 查看中间件及数据库启动情况 -> nfs挂载看挂载点

4. 购买域名 WEB+数据库+NFS架构

购买域名(阿里云)
	DNS记录:A		将域名指向一个IPV4地址	
			CNAME	将域名指向另外一个域名
			AAAA 	将域名指向一个IPV6地址

WEB+数据库+NFS架构
	WEB———————http /etc/httpd/conf.d/ 	NFS客户端 vim /etc/fstab
	数据库—————mariadb 	grant all  on *.* to 'root'@'x.x.x.x' identified by '123' WEB端IP
	NFS———————NFS存储端 vim /etc/exports

4.1 wiki jira

wiki
	企业多人协作系统 -> 企业级文档 -> 新员工手册 -> 员工须知
	1 拷贝文件注意大小 ll du
	2 数据库授权
	3 缺包yum安装或去网上找
	4 jira java version at least 1.8  安装版本有问题换一个或者换java环境
		安装java注意修改环境变量 /etc/exports
	5 java权限 注意公司规定java和php版本
		php升级
		yum remove php* -y  php -v
		php update
		yum -y install php*
	6 jira启动不了 有时候执行启动任务并没有启动 需要看端口 进程
	7 注意破解顺序 文件错误 -> cp
	8 电脑配置8G以上
	9 没关服务直接破解 /opt/xxxx/xxxxx start  -s stop
	10 jira 找不到数据库
		前端页面和后端数据库连接不上
		企业:重启数据库服务 确认安全策略 确认授权(*) 重启前端页面  清缓存重新开浏览器 
		虚拟机:删库 重建 检查授权 重启服务 页面重连
	11 上传正确压缩包
	12 数据库错误
		判断是中间件问题还是数据库问题
		少装包 没起服务 没给授权
	13 忘记密码 
		记住密码 忘记应用密码需要重做  忘记数据库密码跳过密码
		root 账号拥有至高无上的权利
	14 jira起不来,重启两次就好了 释放内存 echo 3  注意基本配置
	15 内存不够

jira
	企业级项目管理 工单创建系统
	是收费的,不是开源软件,需要破解使用。你说搭过conf~wiki/jira 面试官问你开源还是收费的?
	收费单,但是我们公司比较小,我给破解了
	1 先搭建wiki 再搭jira 使用默认的数据库
	2 机器必须 内存 2G+ 否则出不来页面
	3 在走进度条(页面加载)过程中,切记耐心等待,不要随便刷新,否则失败,重做(5分钟)
	4 注意8090 80 8080 3306 端口是否起来
	5 搭建jira时需要邮箱激活,如果使用QQ邮箱,去垃圾箱去找邮件
	6 浏览器的访问 注意访问的端口 x.x.x.x:8000
	7 破解wiki的时候需要本机的JAVA环境去破解
	8 搭建jira 使用本机默认数据库 mysql
	10 搭建完成后创建项目和工单 工单--子工单

	free -m  先看看内存多少
	echo 3 > /proc/sys/vm/drop_caches     释放本机所有缓存

4.2 vlan bond 思科 华三

情况一:接到任务请将A机器做ip地址变更,将192.168.x。x改成10.x.x.x 	//以前是web集群,现在是数据库集群,所以变更ip

	问题分析:A机器连1口 B机器连2口 1口2口属于一个vlan	现场把这两台机器接反了,这两台机器能通吗?	//A接了2口,B接了1口
			因为AB一个地址段,vlan一样,可以通信。但是验收时查不出来这两台是否接反了,一旦做了变更就会发生事故
			变更IP,vlan也会变,所以要换vlan,然而这时候因为线接反了换的是2口vlan,所以A机器和B机器全部挂掉
	解决方案:根据手册找每个vlan分配的地址与服务,重新刷vlan
	解决经验:在对任何网络设备进行变更之前,我们会让现场把服务器网线拔掉
			如果拔1口显示down,表示1口没问题可以进行正常变更,但如果拔1口显示2口down,这时候不能直接换vlan,先让现场再次确认是否拔错网线,确认完毕我们在处理状况
			不要对up staus状态进行任何的网络意义上的变更

情况二:机房整合,机柜内服务器零星摆放,为了节省资金整合机柜

	解决方案:1 查看机柜中服务器数量,少的往多的地方移(特殊情况:少的上面有交换机时,往少的上移)
			2 要注意确认好要下架的服务器设备
			3 查看并迁移业务
			4 下架服务器并重新上架到要整合的机柜
			5 迁回业务
			6 更新信息

情况三:老旧机房目前只有一台核心交换机,需要再加一台核心交换机,因为只有一台核心交换机的话,遇到交换机宕机就会出现服务掉线。

	问题分析:首先先做预设方案,还有人员调配。需要机房人员、网络工程师、运维工程师以及机房大门的管控人员
	解决方案:1 到机房查看是否有空余位置放置核心交换机,如果没有空余位置就要查看各个机柜服务器内跑的业务,寻找跑的业务量最少的服务器。
			2 找到合适的位置后,让机房现场人员去拔掉选好的服务器的电源线,不要拔其他的线路,等半个小时看是否有用户投诉,没有则把业务数据迁移到别的地方
			3 上架核心交换机,要在凌晨的时候上,因为凌晨服务访问量最少,出了问题好处理。
			4 让网络组划分网络,把网络流量给到新加的这台核心交换机上。
			5 将服务器重新上架,将服务迁移回来。能不动网络设备就不要动

情况四:一名工程师在接到任务后,将两块网卡做了一个bond,但是产生了ping命令丢包50%

	问题分析:交换机的两个网口没有做bond
	解决方案:先拖住相关的部门,然后给交换机网口做一个bond+access,然后ping就会正常,再跟有关联的部门讲是现场拔网线了

vlan 
	作用:防止泛洪 每个地址段都有一个对应vlan的ID

	接口模式		access  单内单外
				bond+access
				bond+trunk  trunk:可以对外通信
	思科交换机	show ip int brief 						查看接口状态
				show vlan brief 						查看vlan数据库信息
				show etherchannel summary				查看聚合端口状态
				show run interface gigabitEthernet 1/1	查看该接口配置信息
				show run interface port-channel 1  		查看该聚合接口配置信息
	思科划分vlan
		access模式  单内单外	
			配置vlan
				enable							进入特权模式
				conf t							进入配置模式
				vlan 238						创建vlan仓库//会进入vlan中
				name 172.16.138.0/24			划分vlan地址段
				exit							回到配置模式
			配置接口
				interface GigabitEthernet0/3	进入第三接口
				description D16112301 			描述 //连接服务器名
				switchport mode access			将第三个口设置为access模式
				switchport access vlan 238		第三个接口加入vlan
				spanning-tree portfast 			//开启生成树协议(计算一条最优线路)
				no shutdown 					激活接口
				end								退出模式
				write							保存

		bond+access模式
			配置vlan
				enable				
				conf t				
				vlan 238			
				name 172.16.138.0/2
				exit
			配置组				
				interface Port-channel 5 		创建组//会进入组
				switchport mode access
				switchport access vlan 238
				exit
			配置接口
				interface GigabitEthernet0/3
				switchport mode access
				switchport access vlan 238
				channel-group 5 mode on 		//不能补全
				exit
				interface GigabitEthernet0/6
				switchport mode access
				switchport access vlan 238
				channel-group 5 mode on
				end
				write
	思科划分模板
		access
			en
			Conf t
			Vlan 100
			interface FastEthernet0/1
			switchport mode access
			switchport access vlan 100
			No shutdown

			interface FastEthernet0/3
			switchport mode access
			switchport access vlan 100
			No shutdown

			Vlan 200
			interface FastEthernet0/2
			switchport mode access
			switchport access vlan 200
			No shutdown

			interface FastEthernet0/4
			switchport mode access
			switchport access vlan 200
			No shutdown
			end
			write

		access bond
			en
			conf t
			Vlan 23
			interface Port-channel1
			switchport mode access
			switchport access vlan 23
			No shutdown

			interface FastEthernet0/4
			switchport mode access
			switchport access vlan 23
			channel-group 1 mode on
			No shutdown

			interface FastEthernet0/6
			switchport mode access
			switchport access vlan 23
			channel-group 1 mode on
			No shutdown

			Vlan 24
			interface Port-channel2
			switchport mode access
			switchport access vlan 24
			No shutdown

			interface FastEthernet0/1
			switchport mode access
			switchport access vlan 24
			channel-group 2 mode on
			No shutdown

			interface FastEthernet0/3
			switchport mode access
			switchport access vlan 24
			channel-group 2 mode on
			No shutdown
			end
			write
	华三交换机	display interface brief											查看接口状态
				display vlan all 												查看vlan数据库信息
				display link-aggregation verbose Bridge-Aggregation 1			查看聚合端口状态
				display current-configuration interface GigabitEthernet 1/0/1 	查看该接口配置信息
				display current-configuration interface Bridge-Aggregation1		查看该聚合接口配置信息
	华三划分vlan
		access模式  单内单外	
			配置vlan
				system-view 	
				vlan 348
				name 10.75.62.0/24
				exit
			配置接口
				interface GigabitEthernet1/0/1
				 description D16112280
				 port link-mode bridge
				 port access vlan 348
				 undo shutdown
				Quit
				save
				default
				Y

		bond+access模式
			配置vlan
				system-view
				vlan 235
				name 10.39.54.0/24
				exit
			配置组
				interface Bridge-Aggregation10
				port access vlan 235
				exit
			配置接口
				interface GigabitEthernet1/0/1
				port link-mode bridge
				port access vlan 235
				port link-aggregation group 10
				undo shutdown
				interface GigabitEthernet1/0/2
				port link-mode bridge
				port access vlan 235
				port link-aggregation group 10
				undo shutdown
				qu
				save
				default
				Y
	划分模板
		access
			system-view
			vlan 348
			interface GigabitEthernet1/0/1
			port link-mode bridge
			port access vlan 348
			undo shutdown

			vlan 350
			interface GigabitEthernet1/0/2
			port link-mode bridge
			port access vlan 350
			undo shutdown

			vlan 360
			interface GigabitEthernet1/0/3
			port link-mode bridge
			port access vlan 360
			undo shutdown
			Quit
			save
			default
			Y

		access bond
			system-view
			vlan 235
			interface Bridge-Aggregation1
			port access vlan 235
			interface GigabitEthernet1/0/10
			port link-mode bridge
			port access vlan 235
			port link-aggregation group 1
			interface GigabitEthernet1/0/11
			port link-mode bridge
			port access vlan 235
			port link-aggregation group 1

			vlan 250
			interface Bridge-Aggregation2
			port access vlan 250
			interface GigabitEthernet1/0/12
			port link-mode bridge
			port access vlan 250
			port link-aggregation group 2
			interface GigabitEthernet1/0/13
			port link-mode bridge
			port access vlan 250
			port link-aggregation group 2
			qu
			save
			default
			Y

	vlan变更
		先把变更的服务器网线拔掉,把down的接口划分vlan,防止现场接错交换机接口

4.3 TCP/IP ARP 三次握手 四次挥手 SYN攻击

TCP/IP
	TCP/IP是一个协议族,TCP/IP包括TCP,IP,UDP,ICMP,RIP,SMTP,ARP,等许多协议
	TCP 	transport control protocol 			传输控制协议
	IP 		internetworking protocol 			网间网协议
	UDP 	user datagram protocol 				用户数据协议
	ICMP 	internet control message protocol	互联网控制信息协议
	SMTP 	simple mail transfer protocol 		简单邮件传输协议
	SNMP 	simple networkmanager protocol 		简单网络管理协议
	FTP 	file transfer protocol  			文件传输协议
	ARP 	address resolution protocol 		地址解析协议 MAC 	0F:23:SF:SD

TCP链接状态有哪些,分别代表什么意思
	listen 			侦听来自远方的TCP端口连接请求
	SYN-SENT		再发送连接请求后等待匹配的连接请求
	SYN-RECEIVED	再收到和发送一个连接请求后等待对方对连接请求的确认
	ESTABLISHED 	代表一个打开的连接
	FIN-WAIT-1 		等待远程TCP连接中断请求,或先前的连接中断请求的确认
	FIN-WAIT-2	   	从远程TCP等待连接中断请求
	CLOSE-WAIT		等待从本地用户发来的连接中断请求
	CLOSING			等待远程TCP对连接中断的确认
	LAST-ACK		等待原来的发向远程TCP的连接中断请求的确认
	TIME-WAIT		等待足够的时间以确保TCP接收到连接中断请求的确认
	CLOSED			没有任何连接状态

数据包置位:根据TCP的包头字段,存在3个重要的标识ACK、SYN、FIN
	ACK:表示验证字段
	SYN:位数置1,表示建立TCP连接
	FIN:位数置1,表示断开TCP连接

三次握手

  Client 		 			 Server
	|					  	 	|
	|					 	  	|
	|-------SYN=1,seq=x-------->| Client将标志位SYN置为1,随机产生一个值seq,并将该数据包发送给Server
	|							| Client进入SYN_SENT状态,等待Server确认
	|					 	  	|
	|						   	|
	|<-----SYN=1,ack=x,seq=y----| Server收到数据包后由标志位SYN=1知道Client请求建立连接
	|							| Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K
	|					 	  	| 并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态
	|					 	  	| 
	|					 	  	| 
	|--SYN=1,ack=y+1,seq=x+1--->| Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1
	|							| 并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功
	|					  	 	| Client和Server进入ESTABLISHED状态
	|							| 
	|					 	  	| 完成三次握手,随后Client与Server之间可以开始传输数据了

四次挥手

  Client 		 			 Server
	|					  	 	|
	|					 	  	|
	|-------FIN=1,seq=x-------->| 客户端发送断开TCP连接请求的报文,其中报文中包含seq序列号,是由发送端随机生成的
	|							| 并且还将报文中的FIN字段置为1,表示需要断开TCP连接。(FIN=1,seq=x,x由客户端随机生成)
	|					 	  	|
	|						   	|
	|<---FIN=1,ack=x+1,seq=y----| 服务端会回复客户端发送的TCP断开请求报文,其包含seq序列号,是由回复端随机生成的
	|							| 而且会产生ACK字段,ACK字段数值是在客户端发过来的seq序列号基础上加1进行回复
	|					 	  	| 以便客户端收到信息时,知晓自己的TCP断开请求已经得到验证。
	|					 	  	| FIN=1,ACK=x+1,seq=y,y由服务端随机生成
	|					 	  	|
	|						   	|
	|<---FIN=1,ack=x+1,seq=z----| 服务端在回复完客户端的TCP断开请求后,不会马上进行TCP连接的断开,
	|							| 服务端会先确保断开前,所有传输到A的数据是否已经传输完毕,
	|					 	  	| 一旦确认传输数据完毕,就会将回复报文的FIN字段置1,并且产生随机seq序列号。
	|					 	  	| FIN=1,ACK=x+1,seq=z,z由服务端随机生成
	|					 	  	|
	|						   	|
	|---FIN=1,ack=z+1,seq=h---->| 客户端收到服务端的TCP断开请求后,会回复服务端的断开请求,
	|							| 包含随机生成的seq字段和ACK字段,ACK字段会在服务端的TCP断开请求的seq基础上加1,
	|					  	 	| 从而完成服务端请求的验证回复。
	|					  	 	| FIN=1,ACK=z+1,seq=h,h为客户端随机生成
	|					  	 	| 
	|							| TCP断开的4次挥手过程完毕

https://blog.51cto.com/jinlong/2065461

ARP(address Resolution Protocol)地址解析协议
	根据IP地址获取物理地址的一个TCP/IP协议(IP地址->mac地址)

SYN攻击
	在三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。SYN攻击时一种典型的DDOS攻击,检测SYN攻击的方式非常简单,当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了
    netstat -nap | grep SYN_RECV 	攻击第二次
	netstat -n| awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' tcp状态

总结提问
	1 OSI七层是什么?每一层跑什么协议?
	2 TCP/IP是什么?
	3 tcp三次握手
	4 tcp四次挥手
	5 什么是icmp arp   tcp  udp
	6 TCP/IP四层

4.4 apache nginx隐藏版本号 nginx三方模块搭建图片服务器

——————————————————————————————apache nginx隐藏版本号——————————————————————————
curl --head 127.0.0.1
vim /etc/httpd/conf/httpd.conf
ServerTokens OS 改为ServerTokens productonly
systemctl restart httpd

curl --head 127.0.0.1
vim /etc/nginx/nginx.conf
http { 	# ...省略一些配置
		server_tokens off; #默认是注释掉的
		# ...省略一些配置}
systemctl restart nginx
curl --head 127.0.0.1
编辑php-fpm 配置文件,如fastcgi.conf 或fcgi.conf(这个配置文件名也可以自定义的,根据具体文件名修改)
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;改为:fastcgi_param SERVER_SOFTWARE nginx;
systemctl restart nginx

————————————————————————————nginx三方模块搭建图片服务器——————————————————————————

nginx-grdfs(三方模块):nginx-mongodb 连接

安装环境 				yum -y install gcc-c++  pcre pcre-devel zlib zlib-devel  openssl openssl-devel git
					wget https://nginx.org/download/nginx-1.7.4.tar.gz
	 				tar xf nginx-1.7.4.tar.gz 
					git clone https://github.com/rjhunjhunwla/nginx-gridfs
					cd nginx-gridfs/
模块仓库初始化/更新		git submodule init && git submodule update
					cd nginx-1.7.4
添加模块				./configure --add-module=../nginx-gridfs		 ../ 上一级目录
编译安装				make && make install
nginx编译安装配置主文件	vim /usr/local/nginx/conf/nginx.conf
						server {
					        listen       80;
					        server_name  localhost;

					        location /img/ {
					                			gridfs test
					                    			field=filename
					                    			type=string;
					                			mongo 127.0.0.1:27017
					        }
					        location / {
					            				root   html;
					            				index  index.html index.htm;
					        }

/usr/local/nginx/sbin/nginx -t 			检测配置文件是否有问题
/usr/local/nginx/sbin/nginx -s reload   重新加载nginx配置文件
/usr/local/nginx/sbin/nginx 			启动nginx
/usr/local/nginx/sbin/nginx -s stop  	关闭nginx

创建yum仓库	vim /etc/yum.repos.d/mongodb-org-3.4.repo
			   [mongodb-org-3.4]
				name=MongoDB Repository
				baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
				gpgcheck=1
				enabled=1
				gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
加载缓存		yum makecache
安装mongodb	yum -y install mongodb-org
			systemctl restart mongod
上传照片		mongofiles put --host 127.0.0.1 --port 27017 --db test 1.jpg --type jpg	  
			mkdir /img

添加路由

	添加静态路由
		route add -net  10.18.45.0 netmask 255.255.255.0 gw 10.18.45.1 
	删除静态路由
		route del -net  10.18.45.0 netmask 255.255.255.0 gw 10.18.45.1 
		Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
		目标网络           网关 
	               
	永久添加静态路由
		修改rc.local

	删除默认路由/网关	ip r d default  
	删除静态路由	    ip r d 10.18.40.0/24

网线线序: 568B线序 	橙白 橙 绿白 蓝  蓝白  绿  棕白 棕 

万兆网卡-协商速率10000MB/S 	此网卡为外接网卡

批量部署业务slt

你可能感兴趣的:(Linux,linux,centos,运维)