数据库
安装
[root@master2 ~]# ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
[root@master2 ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm
[root@master2 ~]# rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
[root@master2 ~]# yum -y install mysql-community-server
修改密码
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=6;
mysql> set password for 'root'@'localhost'=password('123456');
主从
# /etc/my.cnf
log-bin=mysql-bin-master
server-id=1
CHANGE MASTER TO
MASTER_HOST='10.244.84.160',
MASTER_PASSWORD='123456',
MASTER_PORT=3306
mysql> create user root@'10.0.0.%' identified by '123456';
mysql> grant REPLICATION SLAVE on *.* to root@'10.0.0.%' identified by '123456';
mysql> grant all on *.* to root@'10.0.0.%' identified by '123456';
授权
grant replication slave on *.* to slave@'%' identified by '123456';
change master to master_host='10.244.84.160',master_user='slave',master_password='123456';
网络代理
vim /etc/profile.d/proxy.sh
export proxy="http://192.168.101.43:7890"
export http_proxy=$proxy
export https_proxy=$proxy
export ftp_proxy=$proxy
export no_proxy="localhost, 127.0.0.1, ::1"
色彩模板
红色:PS1='\[\e[31;1m\][\u@\h \w]\$\[\e[0m\]'
绿色:PS1='\[\e[32;1m\][\u@\h \w]\$\[\e[0m\]'
黄色:PS1='\[\e[33;1m\][\u@\h \w]\$\[\e[0m\]'
蓝色:PS1='\[\e[34;1m\][\u@\h \w]\$\[\e[0m\]'
紫色:PS1='\[\e[35;1m\][\u@\h \w]\$\[\e[0m\]'
青色:PS1='\[\e[36;1m\][\u@\h \w]\$\[\e[0m\]'
白色:PS1='\[\e[37;1m\][\u@\h \w]\$\[\e[0m\]'
红色高亮:PS1='\[\e[42;1m\][\u@\h \w]\$\[\e[0m\]'
绿色高亮:PS1='\[\e[43;1m\][\u@\h \w]\$\[\e[0m\]'
黄色高亮:PS1='\[\e[44;1m\][\u@\h \w]\$\[\e[0m\]'
蓝色高亮:PS1='\[\e[45;1m\][\u@\h \w]\$\[\e[0m\]'
紫色高亮:PS1='\[\e[46;1m\][\u@\h \w]\$\[\e[0m\]'
青色高亮:PS1='\[\e[47;1m\][\u@\h \w]\$\[\e[0m\]'
白色高亮:PS1='\[\e[48;1m\][\u@\h \w]\$\[\e[0m\]'
例:
PS1="\[\e[38;5;11m\][\[\e[38;5;39m\]\u@\h \[\e[38;5;11m\]\W]\\$\[\e[m\] " >> /etc/bashrc
主:export PS1='[\[\e[35;1m\]\u\[\e[32;1m\]@\[\e[31;1m\]\h\[\e[35;1m\]\w\[\e[0m\]]\[\e[36;1m\]$ \[\e[0m\]'
编译安装Nginx
useradd -s /sbin/nologin nginx
tar xf nginx-1.18.0.tar.gz
cd nginx-1.18.0
./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module
make -j 4 && make -j 4 install
chown -R nginx.nginx /apps/nginx
diff -u f1 f2 > f.patch # 生成补丁文件
patch -p0 f1 < f.patch #给f1打补丁
Nginx Service文件
cat /etc/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/run/nginx.pid
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /var/run/nginx.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /var/run/nginx.pid)"
[Install]
WantedBy=multi-user.target
mkdir -p /apps/nginx/run/
Scandisk
alias scandisk='echo - - - > /sys/class/scsi_host/host0/scan;echo - - - > /sys/class/scsi_host/host1/scan;echo - - - > /sys/class/scsi_host/host2/scan'
scandisk
JAVA环境变量
JAVA_HOME=/usr/local/src/jdk1.8.0_311
JAVA_BIN=$JAVA_HOME/bin
JRE_HOME=$JAVA_HOME/jre
JRE_BIN=$JRE_HOME/bin
PATH=$JAVA_BIN:$JRE_BIN:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
配置网络
debian
root@debian:~# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug ens32
iface ens32 inet static
address 10.0.0.3
netmask 255.255.255.0
gateway 10.0.0.1
重启网络:# service networking restart
Ubuntu 22.04
root@myx02:/etc/apt# cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
ens33:
addresses:
- 10.0.0.32/24
nameservers:
addresses:
- 223.5.5.5
search: []
routes:
- to: default
via: 10.0.0.1
version: 2
重启网络:netplan apply
CentOS 7.9
[root@master-1~]$ cat /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="yes"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens32"
UUID="83ad004c-b210-40b3-b489-9e43721d0eb1"
DEVICE="ens32"
ONBOOT="yes"
IPADDR="10.0.0.9"
PREFIX="24"
GATEWAY="10.0.0.1"
DNS1="223.5.5.5"
IPV6_PRIVACY="no"
Docker 部署脚本
#!/bin/bash
# Function to install Docker on Ubuntu
install_docker_ubuntu() {
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get -y update
sudo apt-get -y install docker-ce
}
# Function to install Docker on CentOS
install_docker_centos() {
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
sudo yum makecache fast
sudo yum -y install docker-ce
}
# Configure Docker mirrors
configure_docker_mirrors() {
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://grv5468h.mirror.aliyuncs.com",
"https://registry.dockercn.com",
"https://docker.mirrors.ustc.edu.cn",
"https://dockerhub.azk8s.cn",
"http://hubmirror.c.163.com",
"http://qtid6917.mirror.aliyuncs.com",
"https://rncxm540.mirror.aliyuncs.com"
],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now docker
}
# Determine OS and run appropriate installation function
if [ -f /etc/os-release ]; then
ID=$(cat /etc/os-release | grep "^NAME=" | cut -d'"' -f2)
if [ "$ID" == "Ubuntu" ]; then
install_docker_ubuntu
elif [ "$ID" == "CentOS Linux" ]; then
install_docker_centos
else
echo "Unsupported distribution: $ID"
exit 1
fi
configure_docker_mirrors
else
echo "Unsupported distribution"
exit 1
fi
echo "Docker installation and configuration completed successfully."
docker run -d -p 8088:8080 -p 8099:50000 -v /mnt/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/bin/docker -v /etc/localtime:/etc/localtime --name myjenkins jenkins/jenkins
时间同步
timedatectl set-ntp true &&
timedatectl set-timezone Asia/Shanghai &&
chronyc -a makestep &&
timedatectl status &&
chronyc sources -v &&
timedatectl set-local-rtc 0
K8s 命令自动补全
yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
# 永久修改字符集:
```
echo "LANG=en_US.UTF-8" > /etc/locale.conf && source /etc/locale.conf
echo "LANG=zh_CN.UTF-8" > /etc/locale.conf && source /etc/locale.conf
```
# 彩色提示符
```
PS1='[\[\e[$[RANDOM%7+31]m\]\u\[\[\e[$[RANDOM%7+31]m\]@\[\[\e[$[RANDOM%7+31]m\]\h\[\[\e[$[RANDOM%7+31]m\]\w]\[\[\e[$[RANDOM%7+31]m\]$ \[\[\e[$[RANDOM%7+31]m\]'
```
# exit
```
定义:exit 100
取值范围:0-255
```
# ( ) 与 { } 区别
```
( )中可以运子shell,子shell中的a和父shell的a值不冲突
{ }会替换原有系统的变量的值
```
# 用户自定义环境变量和用户自定义变量的区别
```
用户自定义变量:不能跨终端生效,可以在子shell中生效
用户自定义环境变量:能跨终端生效,可以在子shell中生效
```
服务器不宕机,数据不丢失,用户体验好!
df -Th
df:查看磁盘使用情况
T:文件类型
h:容量换算
inode:文件权限信息
block:数据块 - df-hi
# 文件类型
mkfs.ext{2,3,4,5}
mkfa.xfs
# 实时查看
watch df -hi
# 查看系统分区情况
fdisk -l
# 热加载磁盘 在线扫描
alias scandisk='echo - - - > /sys/class/scsi_host/host0/scan;echo - - - > /sys/class/scsi_host/host1/scan;echo - - - > /sys/class/scsi_host/host2/scan'
brw-rw---- b:块设备
# 创建分区
fdisk
p:查看
n:创建分区
w:保存退出
# 格式化
mkfs.ext4 /dev/sdb1
mkfs.xfs /dev/sdb2
#### 更新分区表:
partprobe
partx -a /dev/sdb
# 显示指定设备 UUID:
sudo blkid -s UUID /dev/sdb1
# 挂载
查看:df -h
创建挂载点:mkdir /opt/sdb1
挂载:mount /dev/sdb1 /opt/sdb1
卸载:umount /dev/sdb1
# 查看类型 blkid
/dev/sdb1: UUID="1c70cf3e-a571-49d4-8e98-891aff54c49b" TYPE="ext4"
/dev/sdb2: UUID="ef1f5eea-f681-4659-ba19-56f59b8b1579" TYPE="xfs"
# 开机自挂载
vim /etc/fstab
# 添加下列两行
/dev/sdb1 /opt/sdb1 ext4 defaults 0 0
/dev/sdb2 /opt/sdb2 xfs defaults 0 0
# 测试是否挂载成功
mount -a
df -Th 查看
## 文本常见处理工具:
# head 命令 —— 显示文件本从头内容
head /etc/passwd 默认显示前10行的内容
head -n 5 /etc/passwd 显示前5行内容信息
head -v 显示文件名的头信息
head -c 指定显示前几个字节
# tail 命令:
tail -c # 指定获取后#字节
tail -n # 指定获取后#行
tai -# 同上
tail -f 跟踪显示文件fd新追加的内容,常用日志监控,相当于 --follow=descriptor,当文件删除再新建同名文件,将无法继续跟踪文件
tail -F 跟踪文件名,相当于--follow=name --retry,当文件删除再新建同名文件,将可以继续跟踪文件
# cat 查看
# nl 编号显示
# tac 与cat相反输出
# trv 对文本内容进行反转
# more 一点点读取文件内容
# less 分屏读取内容
# head 命令:
# cut 按列抽取信息
# paste 合并多个文件
-d 指定分隔符,默认是Tab
-s 默认纵向合并,-s 横向合并
# wc 统计数据
# sort 文本排序
# uniq 去重
# tr 转换 -s
# sed
-I 忽略大小写
-e 连接指令
-n 关闭sed默认输出,只输出script处理过的信息
-p 处理过的数据行
-d 删除
-i 修改文件 插入 前
-a 追加 后
-c 替换
-n 取反 !
w 写
r 读
-i.bak 备份后修改
-E 扩展正则
gp全局打印
快速配置交换分区:
fdisk /dev/sdb
#划分交换分区大小
mkswap /dev/sdb1
#设置为交换空间
echo "UUID=24f585ed-2151-4091-8f8c-710e3e9c4ff3 swap swap defaults 0 0" >> /etc/fstab
#开机自挂载
mount -a && swapon -a
#刷新使配置生效
lsblk
#重启查看挂载成功
linux系统类型:ext3、ext4、btrfs、xfs
热加载
alias scandisk='echo - - - > /sys/class/scsi_host/host0/scan;echo - - - > /sys/class/scsi_host/host1/scan;echo - - - > /sys/class/scsi_host/host2/scan
scandisk
parted 快速创建分区
示例:
parted /dev/sdb
# mklabel,mktable LABEL-TYPE #指定分区类型
# mkpart PART-TYPE [FS-TYPE] START END #创建一个新分区
mklabel gpt # 创建一个 gpt 类型分区表
mkpart primary 0 1G # 指定分区大小
q #保存退出
# rm 2 #删除分区2
相关命令:
scandisk #热加载
umount [文件名] # 卸载
mount -a # 重新挂载
df -h #显示文件系统的磁盘使用情况
fdisk #树状态列出磁盘、分区和其他存储设备信息