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