master
Your Name 2 years ago
commit 220d5ca326
  1. 94
      config/k8s/deployment.yaml
  2. 205
      config/k8s/kube-flannel.yaml
  3. 16
      config/k8s/service.yaml
  4. BIN
      package/Python-3.10.4.tar.xz
  5. BIN
      package/memtest.war
  6. BIN
      package/openssl-1.1.1n.tar.gz
  7. 47
      repo/centos7-repo
  8. 5
      repo/pip.conf
  9. 30
      script/get-cmd-history.sh
  10. 8
      script/get-docker-compose.sh
  11. 35
      script/get-docker-image.sh
  12. 34
      script/get-docker-latest.sh
  13. 8
      script/get-k8s-cmd.sh
  14. 46
      script/get-mysql57.sh
  15. 82
      script/get-os-info.sh
  16. 106
      script/get-os-init.sh
  17. 39
      script/get-py3104.sh
  18. 100
      script/get-redis-instance.sh
  19. 1400
      script/get-shadowsocks-all.sh

@ -0,0 +1,94 @@
apiVersion: extensions/v1beta1 # 指定api版本,此值必须在kubectl api-versions中
kind: Deployment # 指定创建资源的角色/类型
metadata: # 资源的元数据/属性
name: demo # 资源的名字,在同一个namespace中必须唯一
namespace: default # 部署在哪个namespace中
labels: # 设定资源的标签
app: nginx
version: v1
spec: # 资源规范字段
replicas: 1 # 声明副本数目
revisionHistoryLimit: 3 # 保留历史版本
selector: # 选择器
matchLabels: # 匹配标签
app: nginx
version: v1
strategy: # 策略
rollingUpdate: # 滚动更新
maxSurge: 30% # 最大额外可以存在的副本数,可以为百分比,也可以为整数
maxUnavailable: 30% # 示在更新过程中能够进入不可用状态的 Pod 的最大值,可以为百分比,也可以为整数
type: RollingUpdate # 滚动更新策略
template: # 模版
metadata: # 资源的元数据/属性
annotations: # 自定义注解列表
sidecar.istio.io/inject: "false" # 自定义注解名字
labels: # 设定资源的标签
app: nginx
version: v1
spec: # 资源规范字段
containers:
- name: nginx# 容器的名字
image: nginx:1.17.0 # 容器使用的镜像地址
imagePullPolicy: IfNotPresent # 每次Pod启动拉取镜像策略,三个选择 Always、Never、IfNotPresent
# Always,每次都检查;
# Never,每次都不检查(不管本地是否有);
# IfNotPresent,如果本地有就不检查,如果没有就拉取(手动测试时,已经打好镜像存在docker容器中时,
# 使用存在不检查级别, 默认为每次都检查,然后会进行拉取新镜像,因镜像仓库不存在,导致部署失败)
volumeMounts: #文件挂载目录,容器内配置
- mountPath: /data/ #容器内要挂载的目录
name: share #定义的名字,需要与下面vloume对应
resources: # 资源管理
limits: # 最大使用
cpu: 300m # CPU,1核心 = 1000m
memory: 500Mi # 内存,1G = 1000Mi
requests: # 容器运行时,最低资源需求,也就是说最少需要多少资源容器才能正常运行
cpu: 100m
memory: 100Mi
livenessProbe: # pod 内部健康检查的设置
httpGet: # 通过httpget检查健康,返回200-399之间,则认为容器正常
path: /healthCheck # URI地址
port: 8080 # 端口
scheme: HTTP # 协议
# host: 127.0.0.1 # 主机地址
initialDelaySeconds: 30 # 表明第一次检测在容器启动后多长时间后开始
timeoutSeconds: 5 # 检测的超时时间
periodSeconds: 30 # 检查间隔时间
successThreshold: 1 # 成功门槛
failureThreshold: 5 # 失败门槛,连接失败5次,pod杀掉,重启一个新的pod
readinessProbe: # Pod 准备服务健康检查设置
httpGet:
path: /healthCheck
port: 8080
scheme: HTTP
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
successThreshold: 1
failureThreshold: 5
#也可以用这种方法
#exec: 执行命令的方法进行监测,如果其退出码不为0,则认为容器正常
# command:
# - cat
# - /tmp/health
#也可以用这种方法
#tcpSocket: # 通过tcpSocket检查健康
# port: number
ports:
- name: http # 名称
containerPort: 8080 # 容器开发对外的端口
protocol: TCP # 协议
imagePullSecrets: # 镜像仓库拉取密钥
- name: harbor-certification
volumes: #挂载目录在本机的路径
- name: share #对应上面的名字
hostPath:
path: /data #挂载本机的路径
affinity: # 亲和性调试
nodeAffinity: # 节点亲和力
requiredDuringSchedulingIgnoredDuringExecution: # pod 必须部署到满足条件的节点上
nodeSelectorTerms: # 节点满足任何一个条件就可以
- matchExpressions: # 有多个选项,则只有同时满足这些逻辑选项的节点才能运行 pod
- key: beta.kubernetes.io/arch
operator: In
values:
- amd64

@ -0,0 +1,205 @@
---
kind: Namespace
apiVersion: v1
metadata:
name: kube-flannel
labels:
pod-security.kubernetes.io/enforce: privileged
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: flannel
rules:
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- apiGroups:
- ""
resources:
- nodes
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- nodes/status
verbs:
- patch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: flannel
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: flannel
subjects:
- kind: ServiceAccount
name: flannel
namespace: kube-flannel
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: flannel
namespace: kube-flannel
---
kind: ConfigMap
apiVersion: v1
metadata:
name: kube-flannel-cfg
namespace: kube-flannel
labels:
tier: node
app: flannel
data:
cni-conf.json: |
{
"name": "cbr0",
"cniVersion": "0.3.1",
"plugins": [
{
"type": "flannel",
"delegate": {
"hairpinMode": true,
"isDefaultGateway": true
}
},
{
"type": "portmap",
"capabilities": {
"portMappings": true
}
}
]
}
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan"
}
}
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: kube-flannel-ds
namespace: kube-flannel
labels:
tier: node
app: flannel
spec:
selector:
matchLabels:
app: flannel
template:
metadata:
labels:
tier: node
app: flannel
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: In
values:
- linux
hostNetwork: true
priorityClassName: system-node-critical
tolerations:
- operator: Exists
effect: NoSchedule
serviceAccountName: flannel
initContainers:
- name: install-cni-plugin
#image: flannelcni/flannel-cni-plugin:v1.1.0 for ppc64le and mips64le (dockerhub limitations may apply)
image: docker.io/rancher/mirrored-flannelcni-flannel-cni-plugin:v1.1.0
command:
- cp
args:
- -f
- /flannel
- /opt/cni/bin/flannel
volumeMounts:
- name: cni-plugin
mountPath: /opt/cni/bin
- name: install-cni
#image: flannelcni/flannel:v0.20.2 for ppc64le and mips64le (dockerhub limitations may apply)
image: docker.io/rancher/mirrored-flannelcni-flannel:v0.20.2
command:
- cp
args:
- -f
- /etc/kube-flannel/cni-conf.json
- /etc/cni/net.d/10-flannel.conflist
volumeMounts:
- name: cni
mountPath: /etc/cni/net.d
- name: flannel-cfg
mountPath: /etc/kube-flannel/
containers:
- name: kube-flannel
#image: flannelcni/flannel:v0.20.2 for ppc64le and mips64le (dockerhub limitations may apply)
image: docker.io/rancher/mirrored-flannelcni-flannel:v0.20.2
command:
- /opt/bin/flanneld
args:
- --ip-masq
- --kube-subnet-mgr
resources:
requests:
cpu: "100m"
memory: "50Mi"
limits:
cpu: "100m"
memory: "50Mi"
securityContext:
privileged: false
capabilities:
add: ["NET_ADMIN", "NET_RAW"]
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: EVENT_QUEUE_DEPTH
value: "5000"
volumeMounts:
- name: run
mountPath: /run/flannel
- name: flannel-cfg
mountPath: /etc/kube-flannel/
- name: xtables-lock
mountPath: /run/xtables.lock
volumes:
- name: run
hostPath:
path: /run/flannel
- name: cni-plugin
hostPath:
path: /opt/cni/bin
- name: cni
hostPath:
path: /etc/cni/net.d
- name: flannel-cfg
configMap:
name: kube-flannel-cfg
- name: xtables-lock
hostPath:
path: /run/xtables.lock
type: FileOrCreate

@ -0,0 +1,16 @@
apiVersion: v1 # 版本
kind: Service # 类型
metadata: # 元数据
name: # 资源名称
namespace: # 命名空间
spec:
selector: # 标签选择器,用于确定当前Service代理那些Pod
app: nginx
type: # Service的类型,指定Service的访问方式
clusterIP: # 虚拟服务的IP地址
sessionAffinity: # session亲和性,支持ClientIP、None两个选项,默认值为None
ports: # 端口信息
- port: 8080 # Service端口
protocol: TCP # 协议
targetPort : # Pod端口
nodePort: # 主机端口

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,47 @@
[mysql57]
name=mysql57
baseurl=http://package.qf.com/mysql57-community
enabled=1
gpgcheck=0
[mysql57-connectors-community]
name=mysql57-connectors-community
baseurl=http://package.qf.com/mysql-connectors-community
enabled=1
gpgcheck=0
[mysql57-tools-community]
name=mysql57-tools-community
baseurl=http://package.qf.com/mysql-tools-community
enabled=1
gpgcheck=0
[myxtrabackup]
name=myxtrabackup
baseurl=http://package.qf.com/xtrabackup
enabled=0
gpgcheck=0
[mybase]
name=mybase
baseurl=http://package.qf.com/base
enabled=1
gpgcheck=0
[myepel]
name=myepel
baseurl=http://package.qf.com/epel
enabled=1
gpgcheck=0
[myextras]
name=myepel
baseurl=http://package.qf.com/extras
enabled=1
gpgcheck=0
[myupdates]
name=myupdates
baseurl=http://package.qf.com/updates
enabled=1
gpgcheck=0

@ -0,0 +1,5 @@
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com

@ -0,0 +1,30 @@
#!/usr/bin/env bash
#history
# 获取登录ip地址
# USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
USER_IP=$(env |grep SSH_CLIENT | awk '{print $1}' | sed 's/SSH_CLIENT=//' | awk -F " " '{print $1}')
# 指定历史命令路径
HISTDIR=/usr/share/.history
if [ -z $USER_IP ]
then
USER_IP=`hostname`
fi
if [ ! -d $HISTDIR ]
then
mkdir -p $HISTDIR
chmod 777 $HISTDIR
fi
if [ ! -d $HISTDIR/${LOGNAME} ]
then
mkdir -p $HISTDIR/${LOGNAME}
chmod 300 $HISTDIR/${LOGNAME}
fi
# 设置历史命令条数
export HISTSIZE=4000
# 设置文件后缀
DT=`date +%Y%m%d_%H%M%S`
export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT" #文件路径
export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S] " #记录格式
# 设置权限
chmod 600 $HISTDIR/${LOGNAME}/*.history* 2>/dev/null

@ -0,0 +1,8 @@
#!/usr/bin/bash
echo "版本信息可查看 https://dn-dao-github-mirror.daocloud.io/docker/compose/releases/"
LEVEL=${DOCKER_COMPOSE_LEVEL:-1.20.1}
curl -L https://get.daocloud.io/docker/compose/releases/download/${LEVEL}/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose && chmod a+x /usr/local/bin/docker-compose
if [ -z $DOCKER_COMPOSE_LEVEL ];then
echo "采用默认版本1.20.1,如需要指定版本,可以在终端执行 export DOCKER_COMPOSE_LEVEL=版本"
fi

@ -0,0 +1,35 @@
#!/bin/bash
TAG_PREFIX=
save(){
if [ ! -d "./images" ]; then
mkdir images
fi
cd images
docker images --format "{{.ID}} {{.Repository}}:{{.Tag}} {{.Size}}" |grep $TAG_PREFIX > images_pull.txt
while read line
do
image_id=`echo $line | awk '{print $1}'`
image_repository=`echo $line | awk '{print $2}'`
image_size=`echo $line | awk '{print $3}'`
docker save -o $image_id.tar $image_repository && \
echo "Image $image_repository saved, size $image_size"
done < images_pull.txt
}
load(){
cd images
while read line
do
image_id=`echo $line | awk '{print $1}'`
image_repository=`echo $line | awk '{print $2}'`
docker load -i $image_id.tar && \
echo "Image $image_repository loaded"
done < images_pull.txt
}
if [ -z "$1" ]; then
echo "Usage: image_operation.sh [save|load]"
fi
eval $1

@ -0,0 +1,34 @@
#!/usr/bin/bash
set -e
unset c
color(){
declare -A c=([Error]=31 [Success]=32 [Warning]=33 [Info]=34)
#echo -e "\033[${c[$1]}m[`date +%T`]($1) $2\033[0m"
printf "\033[${c[$1]}m%-10s%-10s %-30s\033[0m\n" "[`date +%T`]" "($1)" "$2"
sleep 0.5
}
install(){
color Info "开始安装docker服务"
yum install -y yum-utils device-mapper-persistent-data lvm2 git && \
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo && \
yum install -y docker-ce
mkdir -p /etc/docker
color Success "安装完成"
color Info "开始配置镜像加速器"
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://pilvpemn.mirror.aliyuncs.com"]
}
EOF
cat >> /etc/sysctl.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
EOF
systemctl daemon-reload && \
systemctl enable docker --now
}
install
color Success "配置完成"

@ -0,0 +1,8 @@
#!/usr/bin/bash
yum -y install bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

@ -0,0 +1,46 @@
#!/bin/bash
# by newrain
# time 2019-11-28
# lv 2.0
level=5.7
password="QianFeng@123"
remote_user="remote"
remote_passwd="QianFeng@123"
unset c
color(){
declare -A c=([Error]=31 [Success]=32 [Warning]=33 [Info]=34)
#echo -e "\033[${c[$1]}m[`date +%T`]($1) $2\033[0m"
printf "\033[${c[$1]}m%-10s%-10s %-30s\033[0m\n" "[`date +%T`]" "($1)" "$2"
sleep 0.5
}
color Info "此脚本用于yum 安装mysql"
color Warning "此脚本将删除所有mysql数据,如需备份请ctrl+c终止脚本,程序将在3秒后执行"
sleep 3
if [[ $UID -ne 0 ]];then
color Warning "使用root 执行此脚本"
exit 1
fi
color Warning "清理环境"
systemctl stop mysqld mariadb &>/dev/null
yum erase -y `rpm -qa |grep mariadb` 2>/dev/null
yum erase -y `rpm -qa |grep mysql` 2>/dev/null
rm -rvf /etc/my.cnf /var/lib/mysql /var/log/mysql*
userdel -rf mysql &>/dev/null
ping -c1 -w1 www.baidu.com &>/dev/null
if [[ $? -eq 0 ]];then
if [ ! -f /tmp/.init ];then
yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
fi
else
color Error "网络错误"
exit 22
fi
yum -y install mysql-community-server mysql-community-devel --disablerepo mysql80 --enablerepo mysql57 --nogpgcheck
systemctl start mysqld
color Warning "启动成功,初始密码如下(mysql5.7前版本没有初始密码)"
passwd=$(grep -o 'root@localhost.*' /var/log/mysqld.log | awk 'END{print $NF}')
mysqladmin -uroot -p$passwd password $password && \
mysql -uroot -p$password -e "grant all on *.* to \"$remote_user\"@'%' identified by \"$remote_passwd\"; flush privileges;"
color Success "安装完成 初始密码为$password"

@ -0,0 +1,82 @@
#!/usr/bin/bash
unset c
color(){
declare -A c=([Error]=31 [Success]=32 [Warning]=33 [Info]=34)
#echo -e "\033[${c[$1]}m[`date +%T`]($1) $2\033[0m"
printf "\033[${c[$1]}m%-10s%-10s %-30s\033[0m\n" "[`date +%T`]" "($1)" "$2"
sleep 0.5
}
cpu(){
cpus=$(grep processor /proc/cpuinfo |wc -l)
cpuModel=$(grep "model name" /proc/cpuinfo | uniq | awk -F ':' '{print $2}')
cpuCache=$(grep "cache size" /proc/cpuinfo | uniq | awk -F ':' '{print $2}')
printf "%-10s\t%-50s\n" "[CPU]" "[Info]"
printf "%-10s\t%-50s\n" "cpu核心:" "${cpus/ /}"
printf "%-10s\t%-50s\n" "cpu型号:" "${cpuModel/ /}"
printf "%-10s\t%-50s\n" "cpu缓存:" "${cpuCache/ /}"
}
memory(){
memTotal=$(awk -F':' '/MemTotal:/{print $2}' /proc/meminfo | awk '{print $1,$2}')
memFree=$(awk -F':' '/MemFree:/{print $2}' /proc/meminfo | awk '{print $1,$2}')
memBuffer=$(awk -F':' '/Buffers:/{print $2}' /proc/meminfo | awk '{print $1,$2}')
memCached=$(awk -F':' '/^Cached:/{print $2}' /proc/meminfo | awk '{print $1,$2}')
swapTotal=$(awk -F':' '/SwapTotal:/{print $2}' /proc/meminfo | awk '{print $1,$2}')
swapFree=$(awk -F':' '/SwapFree:/{print $2}' /proc/meminfo | awk '{print $1,$2}')
memDevice=$(dmidecode |grep -P -A 5 "Memory Device"|grep Size|grep -v 'Range' | wc -l)
maxMem=$(dmidecode |grep "Maximum Capacity" | awk '{print $3,$4}')
maxHz=$(dmidecode |grep "Max Speed" |uniq | awk '{print $3,$4}')
printf "%-10s\t%-50s\n" "[Memory]" "[Info]"
printf "%-10s\t%-50s\n" "内存总量:" "$memTotal"
printf "%-10s\t%-50s\n" "内存剩余:" "$memFree"
printf "%-10s\t%-50s\n" "内存写缓:" "$memBuffer"
printf "%-10s\t%-50s\n" "内存读缓:" "$memCached"
printf "%-10s\t%-50s\n" "临时缓存总量:" "$swapTotal"
printf "%-10s\t%-50s\n" "临时缓存剩余:" "$swapFree"
printf "%-10s\t%-50s\n" "内存条数:" "$memDevice"
printf "%-10s\t%-50s\n" "最大支持内存:" "$maxMem"
printf "%-10s\t%-50s\n" "内存频率:" "$maxHz"
}
disk(){
printf "%-10s\t%-15s\t%-30s\t%-5s\n" "[MountPoint]" "[Used]" "[FileSystem]" "[Size]"
df -Th | awk 'BEGIN{ORS="\n"}$2 ~ /(ext|xfs)/{printf "%-10s\t%-15s\t%-30s\t%-5s\n",$NF,$(NF-1),$1,$3}'
}
os(){
os_release=$(hostnamectl | awk -F': ' '/Operating System/{print $2}')
os_kernel=$(hostnamectl | awk -F': ' '/Kernel/{print $2}')
hostname=$(hostnamectl | awk -F': ' '/Static hostname/{print $2}')
printf "%-10s\t%-20s\n" "[Info]" "[Value]"
printf "%-20s\t%-20s\n" "系统版本:" "$os_release"
printf "%-20s\t%-20s\n" "内核版本:" "$os_kernel"
printf "%-20s\t%-20s\n" "主机名称:" "$hostname"
netIf=$(ip -f inet a | awk '/^[0-9]/{print $0}' |awk -F':' '{print $2}')
netIfs=$(echo netIf |wc -w)
printf "%-20s\t%-20s\t%-18s\n" "[InterFace]" "[IpAddress]" "[MacAddress]"
for i in $netIf
do
# 网卡ip
iname=$(ip -f inet a show dev $i | awk '/inet/{print $2}')
# 网卡mac
mname=$(ip -f link a show dev $i |awk '/link/{print $2}')
printf "%-20s\t%-20s\t%-18s\n" "$i" "$iname" "$mname"
done
}
color Info "开始读取本地信息"
main(){
color Success "中央处理器信息"
# cpu 信息查询函数
cpu
color Success "内存信息"
# 内存 信息查询函数
memory
color Success "网络信息"
os
# 磁盘信息
color Success "磁盘信息"
disk
}
main

@ -0,0 +1,106 @@
#!/usr/bin/bash
color(){
unset c
declare -A c=([Error]=31 [Success]=32 [Warning]=33 [Info]=34)
#echo -e "\033[${c[$1]}m[`date +%T`]($1) $2\033[0m"
printf "\033[${c[$1]}m%-10s%-10s %-30s\033[0m\n" "[`date +%T`]" "($1)" "$2"
sleep 0.5
}
static_addr(){
ifname=$(ip -f inet a | awk '/^2/{print $2}')
ifname=$(echo ${ifname/:/})
ipaddr=$(ip -f inet a show dev $ifname | awk '/inet/{print $2}' | awk -F'/' '{print $1}')
prefix=$(ip -f inet a show dev $ifname | awk '/inet/{print $2}' | awk -F'/' '{print $2}')
gateway=$(ip r |awk '/default/{print $3}')
cat > /etc/sysconfig/network-scripts/ifcfg-$ifname <<EOF
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="${ifname}"
UUID="`uuidgen`"
DEVICE="${ifname}"
ONBOOT="yes"
IPADDR=${ipaddr}
PREFIX=${prefix}
GATEWAY=${gateway}
DNS1=${gateway}
DNS2=114.114.114.114
DNS3=8.8.8.8
EOF
systemctl restart network
ping -w1 -c1 www.baidu.com &>/dev/null && \
return 10 || \
return 20
}
local_yum_make(){
cd /etc/yum.repos.d/ && \
rename .repo .repo.bak *.repo &>/dev/null
grep '10.8.161.40 package.qf.com' /etc/hosts &>/dev/null
if [ $? -ne 0 ];then
cat >> /etc/hosts <<EOF
10.8.161.40 package.qf.com
EOF
fi
curl -o /etc/yum.repos.d/centos7.repo http://download.beyourself.org.cn/repo/centos7-repo && \
yum repolist && yum clean all && yum makecache && \
color Success "本地源配置完成" || color Error "yum配置错误,可以\ncd /etc/yum.repos.d/ && rm -rf centos7.repo && rename .repo.bak .repo *.repo.bak \n使用手动恢复历史yum"
}
remote_yum_make(){
cd /etc/yum.repos.d/ && \
rename .repo .repo.bak *.repo &>/dev/null
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum repolist && yum clean all && yum makecache && \
color Success "阿里源配置完成" || color Error "yum配置错误,可以\ncd /etc/yum.repos.d/ && rm -rf centos7.repo && rename .repo.bak .repo *.repo.bak \n使用手动恢复历史yum"
}
init(){
color Success "开始配置静态ip"
static_addr
if [ $? -eq 10 ];then
color Success "静态ip配置并检测完成"
else
color Error "静态ip配置异常"
fi
color Info "正在关闭防火墙、selinux"
color Warning "注意,这将降低服务器安全性"
systemctl disable firewalld postfix --now && \
setenforce 0 ; sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config && \
color Success "配置完成" || color Error "配置异常,请检查"
color Info "配置yum源, 此操作将备份您的历史源"
ping -w 1 -c 1 10.8.161.40 &>/dev/null
if [ $? -eq 0 ];then
local_yum_make
else
remote_yum_make
fi
color Info "开始安装常用软件"
yum install -y wget unzip vim yum-utils httpd-tools psacct net-tools nc ntpdate jq htop && \
color Success "安装完成" || color Warning "部分包可能失败"
color Info "开始进行时间校准"
ntpdate ntp.aliyun.com && \
# 修改时间到硬件
clock -w
#保存时间到硬件
hwclock -s
color Success "时间校准完成"
# color Info "修改终端前缀显示"
# cat > /etc/profile.d/psdiy.sh <<EOF
# export PS1="[\e[32m(\t)\u\e[36m@\h\e[31m\e[0m \W]\$ "
# EOF
# color Success "修改完成,重新进入终端查看"
echo {"time": "`date +'%F %T'`"} > /tmp/.init
}
if [ -f /tmp/.init ];then
color Success "检测到此前已进行初始化,如需重新执行,请删除: rm -f /tmp/.init"
exit 0
fi
init
color Success "初始化完成"

@ -0,0 +1,39 @@
#!/usr/bin/bash
path=/opt/py3104
unset c
color(){
declare -A c=([Error]=31 [Success]=32 [Warning]=33 [Info]=34)
#echo -e "\033[${c[$1]}m[`date +%T`]($1) $2\033[0m"
printf "\033[${c[$1]}m%-10s%-10s %-30s\033[0m\n" "[`date +%T`]" "($1)" "$2"
sleep 0.5
}
mkdir -pv $path
cd $path && \
yum -y install gcc gcc-c++ zlib-devel bzip2-devel sqlite-devel readline-devel libffi-devel && \
color Info "openssl 包下载,请稍等..." && \
wget http://download.beyourself.org.cn/package/openssl-1.1.1n.tar.gz && \
tar xf openssl-1.1.1n.tar.gz && \
cd openssl-1.1.1n && \
./config --prefix=/usr/local/openssl && \
make -j $(cat /proc/cpuinfo | grep processor |wc -l) && make install && cd .. && \
wget http://download.beyourself.org.cn/package/Python-3.10.4.tar.xz && \
tar xf Python-3.10.4.tar.xz && \
cd Python-3.10.4 && \
./configure --enable-shared --prefix=/usr/local/python3.10.4 --with-openssl=/usr/local/openssl --with-openssl-rpath=auto && \
make -j $(cat /proc/cpuinfo | grep processor |wc -l) && \
make install && \
echo "/usr/local/python3.10.4/lib" >> /etc/ld.so.conf && \
ldconfig && \
echo "export PATH=/usr/local/python3.10.4/bin:\$PATH" >> /etc/profile && \
color Success "python安装完成"
color Info "配置pip加速"
mkdir ~/.pip &>/dev/null
tee ~/.pip/pip.conf <<EOF
[global]
index_url=https://mirrors.aliyun.com/pypi/simple
timeout=6000
EOF
color Success "配置完成"

@ -0,0 +1,100 @@
#!/usr/bin/bash
<<!
redis 多实例配置脚本
!
REDIS_INSTALL_PATH=/data/application/redis
REDIS_COMMAND_PATH=$REDIS_INSTALL_PATH/src
REDIS_CONFIG_PATH=$REDIS_INSTALL_PATH/redis.conf
REDIS_BIND_IP="0.0.0.0"
REDIS_PORT=6379
REDIS_INSTANCE_PATH=/opt/instace/redis
ERROR_INFO="
Usage: $0 \n
\t-i\t--install 安装redis\n
\t-s\t--instance 多实例配置\n
\t--start\t启动redis\n
\t--stop\t停止redis\n"
install_function(){
if [ ! -d $REDIS_INSTALL_PATH ];then
mkdir -p $REDIS_INSTALL_PATH
fi
yum -y install gcc gcc-c++ make wget
wget http://download.redis.io/releases/redis-4.0.9.tar.gz && \
tar -zxvf redis-4.0.9.tar.gz && \
cp -r redis-4.0.9/* $REDIS_INSTALL_PATH && \
rm -rf redis-4.0.9 redis-4.0.9.tar.gz
cd $REDIS_INSTALL_PATH && \
make
echo -e "安装完成\nredis安装目录:$REDIS_INSTALL_PATH\nredis配置文件:$REDIS_CONFIG_PATH\nredis命令目录:$REDIS_COMMAND_PATH"
}
install_instance_function(){
INSTANCE_NAME=$1
if [ ! -d $REDIS_INSTANCE_PATH ];then
mkdir -p $REDIS_INSTANCE_PATH
fi
if [ ! -d $REDIS_INSTALL_PATH ];then
echo "请先安装redis,或修改脚本中的安装目录"
exit 1
fi
if [ -d $REDIS_INSTANCE_PATH/$INSTANCE_NAME ];then
echo "实例已存在"
exit 1
fi
mkdir -p $REDIS_INSTANCE_PATH/$INSTANCE_NAME
cp $REDIS_CONFIG_PATH $REDIS_INSTANCE_PATH/$INSTANCE_NAME/redis.conf
sed -i "s#^port.*#port $INSTANCE_NAME#" $REDIS_INSTANCE_PATH/$INSTANCE_NAME/redis.conf
sed -i "s#^bind.*#bind $REDIS_BIND_IP#" $REDIS_INSTANCE_PATH/$INSTANCE_NAME/redis.conf
sed -i "s#^pidfile.*#pidfile $REDIS_INSTANCE_PATH/$INSTANCE_NAME/redis_$INSTANCE_NAME.pid#" $REDIS_INSTANCE_PATH/$INSTANCE_NAME/redis.conf
sed -i "s#^logfile.*#logfile $REDIS_INSTANCE_PATH/$INSTANCE_NAME/redis_$INSTANCE_NAME.log#" $REDIS_INSTANCE_PATH/$INSTANCE_NAME/redis.conf
sed -i "s#^dir.*#dir $REDIS_INSTANCE_PATH/$INSTANCE_NAME#" $REDIS_INSTANCE_PATH/$INSTANCE_NAME/redis.conf
sed -i "s#^daemonize.*#daemonize yes#" $REDIS_INSTANCE_PATH/$INSTANCE_NAME/redis.conf
echo -e "实例安装完成\n实例目录:$REDIS_INSTANCE_PATH/$INSTANCE_NAME\n实例配置文件:$REDIS_INSTANCE_PATH/$INSTANCE_NAME/redis.conf"
}
option=$(getopt -l "help::,install,instance,start,stop" -o "i,s:" -a -- "$@")
if [ $# -lt 1 ];then
echo -e $ERROR_INFO
exit 0
fi
eval set -- "$option"
while true
do
case $1 in
-i|--install)
install_function
shift 1
;;
-s|--instance)
install_instance_function $2
shift 2
;;
--start)
for i in `ls $REDIS_INSTANCE_PATH`
do
$REDIS_COMMAND_PATH/redis-server $REDIS_INSTANCE_PATH/$i/redis.conf
echo "启动实例$i"
done
shift 1
;;
--stop)
for i in `ls $REDIS_INSTANCE_PATH`
do
$REDIS_COMMAND_PATH/redis-cli -p $i shutdown
echo "停止实例$i"
done
shift 1
;;
--)
shift
break
;;
*)
echo -e $ERROR_INFO
exit 0
;;
esac
done

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save