目录
1.4、整合更新多版本linux系统仓库源和zabbix-agent多版本安装包脚本
本文提供多个Linux系统管理脚本,涵盖以下功能:
- 系统管理脚本
- 多版本替换镜像源(支持Ubuntu/Debian、CentOS/RHEL等)
- IP地址修改脚本(支持静态/DHCP配置)
- 监控工具安装
- Zabbix Agent/Agent2安装(支持多版本选择)
- 自动检测系统类型并适配安装方式
- 容器化部署
- Docker安装脚本(支持在线/离线安装)
- Harbor私有镜像仓库部署脚本
- 数据库安装
- Redis编译安装脚本(支持多版本)
- MongoDB一键安装脚本
主要特点:
- 自动识别操作系统类型和版本
- 支持阿里云镜像源替换
- 包含错误检测和网络检查
- 安装完成后自动配置服务
- 支持交互式版本选择
这些脚本适用于Linux系统管理员快速部署常用服务,提升运维效率。
1.1、多版本替换镜像源
#! /bin/bash
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
#查询版本
ID=$(cat /etc/os-release | grep -E '^ID='|cut -d "=" -f2 | tr -d "\"")
#定义路径
ubuntupath="/etc/apt/sources.list"
centospath="/etc/yum.repos.d/Rocky*.repo"
file=/aliyun/aliyun.txt
replace_ubuntu() {
if [ -f $ubuntupath ];then
sed -i 's#http://cn.archive.ubuntu.com/#https://mirrors.aliyun.com/#' $ubuntupath
sed -i 's#http://security.ubuntu.com/#https://mirrors.aliyun.com/#' $ubuntupath
echo -e "\e[31m 执行更新源:aliyun \e[0m"
apt clean
apt update
echo -e "\e[32m 更新完成为aliyun源仓库 \e[0m"
else
touch $ubuntupath < $file
fi
}
replace_centos() {
echo -e "\e[31m 执行更新源:aliyun \e[0m"
for file in $centospath ;do
if [ -f $file ];then
sed -i -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' $file
else
echo -e "${RED}不存在.repo文件"
fi
done
echo -e "\e[32m 更新完成为aliyun源仓库 \e[0m"
echo
echo -e "$GREEN 执行清除源缓存"
yum clean all
echo -e "$GREEN 执行增加缓存"
yum makecache
echo -e "$GREEN 执行更新"
yum update
}
case $ID in
ubuntu|debian)
echo -e "${GREEN}执行更新ubuntu源为aliyun"
replace_ubuntu
;;
centos|rhel|almalinux|rocky)
echo -e "${GREEN}执行更新rocky源为aliyun"
replace_centos
;;
*)
echo -e "${RED}不支持的操作系统:$ID"
;;
esac
1.2、安装zabbix agent,agent2脚本
#! /bin/bash
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
#公共变量
ID=$(. /etc/os-release;echo $ID )
VERSION_ID=$(. /etc/os-release;echo $VERSION_ID )
package_name=zabbix-release_latest_6.0+${ID}${VERSION_ID}_all.deb
centos_name=$(. /etc/os-release;echo $VERSION_ID |cut -d "." -f1 )
read -p "请输入想要下载的agent版本: " usernum
ping_net() {
echo -e "${YELLOW}检测网络是否正常..."
for num in {1..5};do
num=`ping -c$num -w1 www.bu.com`
echo $num > /dev/null
if [ $(echo $?) -eq 0 ];then
echo -e "${GREEN}网络正常"
else
echo -e "${RED}网络不正常"
fi
done
}
#ubunutu agent安装
install_ubunturepo() {
echo -e "$YELLOW检测是否存在zabbix包并做删除"
delete_zbfile=$(find . -name "zabbix-release_latest*" -exec rm -rf ./{} \;)
echo
echo -e "$GREEN删除成功"
echo -e "$YELLOW获取zabbix包"
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/$package_name
echo
echo -e "$GREEN安装zabbix包"
dpkg -i ./$package_name
echo
if [ $usernum -eq 1 ];then
echo -e "$YELLOW将zabbix的默认源替换为aliyun源"
ubuntu_path=$(find /etc/apt/sources.list.d/ -name "zabbix*")
for f in $ubuntu_path;do
sed -i 's#repo.zabbix.com#mirrors.aliyun.com/zabbix#' $f
done
echo -e "$YELLOW zabbix的默认源替换为aliyun源完成"
echo -e "$GREEN更新源"
apt update
echo
echo
echo -e "$GREEN安装zabbix-agent"
apt -y install zabbix-agent
elif [ $usernum -eq 2 ];then
echo -e "$YELLOW将zabbix的默认源替换为aliyun源"
ubuntu_path=$(find /etc/apt/sources.list.d/ -name "zabbix*")
for f in $ubuntu_path;do
sed -i 's#repo.zabbix.com#mirrors.aliyun.com/zabbix#' $f
done
echo -e "$YELLOW zabbix的默认源替换为aliyun源完成"
echo -e "$GREEN更新源"
apt update
echo
echo -e "$YELLOW zabbix的默认源替换为aliyun源完成"
echo -e "$GREEN安装zabbix-agent2"
apt -y install zabbix-agent2
fi
}
#centos agent安装
install_centosrepo(){
echo -e "$YELLOW检测是否存在zabbix包并做删除"
delete_zbfile=$(find . -name "zabbix-release*" -exec rm -rf ./{} \;)
echo -e "$GREEN删除成功"
echo
echo -e "$YELLOW获取zabbix包"
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-latest-6.0.el$centos_name.noarch.rpm
echo
if [ $usernum -eq 1 ];then
echo -e "$GREEN安装zabbix_agent包"
dnf clean all
dnf -y install zabbix-agent
echo
elif [ $usernum -eq 2 ];then
echo -e "$GREEN安装zabbix_agent2包"
dnf clean all
dnf -y install zabbix-agent2
fi
echo -e "$GREEN更新源"
yum update
}
#ubuntu,centos服务重启
server_restart() {
if [ $usernum -eq 1 ];then
echo -e "$GREEN重启agent服务"
$(systemctl restart zabbix-agent)
echo
echo -e "$GREEN设置开机自启服务"
$(systemctl enable --now zabbix-agent)
echo
echo -e "$GREEN检测服务是否存活"
systemctl is-active zabbix-agent
elif [ $usernum -eq 2 ];then
echo -e "$GREEN重启agent2服务"
$(systemctl restart zabbix-agent2)
echo
echo -e "$GREEN设置开机自启服务"
$(systemctl enable --now zabbix-agent2)
echo
echo -e "$GREEN检测服务是否存活"
systemctl is-active zabbix-agent2
else
echo -e "$RED######未知请求######"
fi
}
#ubuntu主函数
ubuntu_main(){
install_ubunturepo
server_restart
}
#centos主函数
centos_main(){
install_centosrepo
server_restart
}
case $ID in
ubuntu|debian)
echo -e "${GREEN}执行安装ubuntu_zabbixagent"
ubuntu_main
;;
centos|rhel|almalinux|rocky)
echo -e "${GREEN}执行安装centos_zabbixagent"
centos_main
;;
*)
echo -e "${RED}不支持的操作系统:$ID"
;;
esac
1.3、整合更新多版本linux系统仓库源和zabbix-agent多版本安装包脚本
#! /bin/bash
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
#公共变量
ID=$(. /etc/os-release;echo $ID )
VERSION_ID=$(. /etc/os-release;echo $VERSION_ID )
package_name=zabbix-release_latest_6.0+${ID}${VERSION_ID}_all.deb
centos_name=$(. /etc/os-release;echo $VERSION_ID |cut -d "." -f1 )
read -p "请输入想要下载的agent版本: " usernum
#定义路径
ubuntu_repo="/etc/apt/sources.list"
centos_repo="/etc/yum.repos.d/Rocky*.repo"
file=/aliyun/aliyun.txt
#检测网络正常是否
ping_net() {
echo -e "${YELLOW}检测网络是否正常..."
for num in {1..5};do
num=`ping -c$num -w1 www.bu.com`
echo $num > /dev/null
if [ $(echo $?) -eq 0 ];then
echo -e "${GREEN}网络正常"
else
echo -e "${RED}网络不正常"
fi
done
}
#替换ubuntu系列源路径
replace_ubuntu() {
echo -e "${GREEN}执行更新ubuntu系列源为aliyun"
if [ -f $ubuntu_repo ];then
sed -i 's#http://cn.archive.ubuntu.com/#https://mirrors.aliyun.com/#' $ubuntu_repo
sed -i 's#http://security.ubuntu.com/#https://mirrors.aliyun.com/#' $ubuntu_repo
echo -e "\e[31m 执行更新源:aliyun \e[0m"
apt -y clean
apt -y update
echo -e "\e[32m 更新完成为aliyun源仓库 \e[0m"
echo
echo
else
touch $ubuntu_repo < $file
fi
}
#替换centos系列源路径
replace_centos() {
echo -e "${GREEN}执行更新ubuntu系列源为aliyun"
for file in $centos_repo ;do
if [ -f $file ];then
sed -i -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' $file
else
echo -e "${RED}不存在.repo文件"
fi
done
echo -e "\e[32m 更新完成为aliyun源仓库 \e[0m"
echo
echo -e "$GREEN 执行清除源缓存"
yum -y clean all
echo -e "$GREEN 执行增加缓存"
yum -y makecache
echo -e "$GREEN 执行更新"
yum -y update
}
#ubunutu agent安装
install_ubunturepo() {
echo -e "${GREEN}*********执行安装ubuntu_zabbixagent系列***********"
echo
echo
echo -e "$YELLOW检测是否存在zabbix包并做删除"
delete_zbfile=$(find . -name "zabbix-release_latest*" -exec rm -rf ./{} \;)
echo
echo -e "$GREEN删除成功"
echo -e "$YELLOW获取zabbix包"
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/$package_name
echo
echo -e "$GREEN安装zabbix包"
dpkg -i ./$package_name
echo
if [ $usernum -eq 1 ];then
echo -e "$YELLOW将zabbix的默认源替换为aliyun源"
ubuntu_path=$(find /etc/apt/sources.list.d/ -name "zabbix*")
for f in $ubuntu_path;do
sed -i 's#repo.zabbix.com#mirrors.aliyun.com/zabbix#' $f
done
echo -e "$YELLOW zabbix的默认源替换为aliyun源完成"
echo -e "$GREEN更新源"
apt -y update
echo
echo
echo -e "$GREEN安装zabbix-agent"
apt -y install zabbix-agent
elif [ $usernum -eq 2 ];then
echo -e "$YELLOW将zabbix的默认源替换为aliyun源"
ubuntu_path=$(find /etc/apt/sources.list.d/ -name "zabbix*")
for f in $ubuntu_path;do
sed -i 's#repo.zabbix.com#mirrors.aliyun.com/zabbix#' $f
done
echo -e "$YELLOW zabbix的默认源替换为aliyun源完成"
echo -e "$GREEN更新源"
apt -y update
echo
echo -e "$YELLOW zabbix的默认源替换为aliyun源完成"
echo -e "$GREEN安装zabbix-agent2"
apt -y install zabbix-agent2
fi
}
#centos agent安装
install_centosrepo(){
echo -e "${GREEN}*********执行安装centos_zabbixagent系列***********"
echo
echo
echo -e "$YELLOW检测是否存在zabbix包并做删除"
delete_zbfile=$(find . -name "zabbix-release*" -exec rm -rf ./{} \;)
echo -e "$GREEN删除成功"
echo
echo -e "$YELLOW获取zabbix包"
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-latest-6.0.el$centos_name.noarch.rpm
echo
if [ $usernum -eq 1 ];then
echo -e "$GREEN安装zabbix_agent包"
dnf clean all
dnf -y install zabbix-agent
echo
elif [ $usernum -eq 2 ];then
echo -e "$GREEN安装zabbix_agent2包"
dnf clean all
dnf -y install zabbix-agent2
fi
echo -e "$GREEN更新源"
yum -y update
}
#ubuntu,centos服务重启
server_restart() {
if [ $usernum -eq 1 ];then
echo -e "$GREEN重启agent服务"
$(systemctl restart zabbix-agent)
echo
echo -e "$GREEN设置开机自启服务"
$(systemctl enable --now zabbix-agent)
echo
echo -e "$GREEN检测服务是否存活"
systemctl is-active zabbix-agent
elif [ $usernum -eq 2 ];then
echo -e "$GREEN重启agent2服务"
$(systemctl restart zabbix-agent2)
echo
echo -e "$GREEN设置开机自启服务"
$(systemctl enable --now zabbix-agent2)
echo
echo -e "$GREEN检测服务是否存活"
systemctl is-active zabbix-agent2
else
echo -e "$RED######未知请求######"
fi
}
#ubuntu主函数
ubuntu_main(){
replace_ubuntu
echo -e "$RED****************************************************************************************"
echo -e "$YELLOW****************************************************************************************"
echo -e "$GREEN****************************************************************************************"
echo
echo
echo
install_ubunturepo
echo -e "$RED****************************************************************************************"
echo -e "$YELLOW****************************************************************************************"
echo -e "$GREEN****************************************************************************************"
echo
echo
echo
server_restart
}
#centos主函数
centos_main(){
replace_centos
echo -e "$RED****************************************************************************************"
echo -e "$YELLOW****************************************************************************************"
echo -e "$GREEN****************************************************************************************"
echo
echo
echo
install_centosrepo
echo -e "$RED****************************************************************************************"
echo -e "$YELLOW****************************************************************************************"
echo -e "$GREEN****************************************************************************************"
echo
echo
echo
server_restart
}
case $ID in
ubuntu|debian)
ubuntu_main
;;
centos|rhel|almalinux|rocky)
centos_main
;;
*)
echo -e "${RED}不支持的操作系统:$ID"
;;
esac
1.5、一键更改IP
#!/bin/bash
# Linux Network Configuration Script
# Supported Distributions: Ubuntu/Debian, CentOS/RHEL, Fedora, openSUSE/SLES, Arch Linux
# Check root permission
if [ "$(id -u)" != "0" ]; then
echo "Error: This script must be run as root!" 1>&2
exit 1
fi
# Detect distribution
detect_distro() {
if [ -f /etc/os-release ]; then
. /etc/os-release
DISTRO=$ID
VERSION=$VERSION_ID
elif [ -f /etc/centos-release ]; then
DISTRO="centos"
VERSION=$(grep -oE '[0-9]+\.[0-9]+' /etc/centos-release)
else
echo "Unsupported Linux distribution"
exit 1
fi
}
# Backup current configuration
backup_config() {
local interface=$1
TIMESTAMP=$(date +%Y%m%d%H%M%S)
case $DISTRO in
ubuntu|debian)
cp /etc/netplan/*.yaml /etc/netplan/*.yaml.bak.$TIMESTAMP 2>/dev/null
;;
centos|rhel|fedora)
cp /etc/sysconfig/network-scripts/ifcfg-$interface /etc/sysconfig/network-scripts/ifcfg-$interface.bak.$TIMESTAMP 2>/dev/null
;;
opensuse|sles)
cp /etc/sysconfig/network/ifcfg-$interface /etc/sysconfig/network/ifcfg-$interface.bak.$TIMESTAMP 2>/dev/null
;;
arch)
cp /etc/netctl/$interface /etc/netctl/$interface.bak.$TIMESTAMP 2>/dev/null
;;
esac
echo "Configuration backed up with timestamp: $TIMESTAMP"
}
# Configure Ubuntu/Debian (Netplan)
configure_netplan() {
local interface=$1
local mode=$2
local ip=${3:-""}
local prefix=${4:-""}
local gateway=${5:-""}
local dns=${6:-""}
CONFIG_FILE=$(ls /etc/netplan/*.yaml | head -n1)
if [ -z "$CONFIG_FILE" ]; then
CONFIG_FILE="/etc/netplan/01-network.yaml"
fi
# Generate Netplan config
cat > "$CONFIG_FILE" << EOF
network:
version: 2
renderer: networkd
ethernets:
$interface:
dhcp4: $([ "$mode" == "dhcp" ] && echo "true" || echo "false")
EOF
if [ "$mode" == "static" ]; then
cat >> "$CONFIG_FILE" << EOF
addresses: [$ip/$prefix]
routes:
- to: default
via: $gateway
nameservers:
addresses: [$dns]
EOF
fi
# Apply configuration
netplan apply
}
# Configure CentOS/RHEL/Fedora (ifcfg)
configure_rhel() {
local interface=$1
local mode=$2
local ip=${3:-""}
local prefix=${4:-""}
local gateway=${5:-""}
local dns=${6:-""}
CONFIG_FILE="/etc/sysconfig/network-scripts/ifcfg-$interface"
# Generate config
cat > "$CONFIG_FILE" << EOF
DEVICE=$interface
ONBOOT=yes
BOOTPROTO=$([ "$mode" == "dhcp" ] && echo "dhcp" || echo "none")
EOF
if [ "$mode" == "static" ]; then
cat >> "$CONFIG_FILE" << EOF
IPADDR=$ip
PREFIX=$prefix
GATEWAY=$gateway
DNS1=$dns
EOF
fi
# Apply configuration
if systemctl is-active NetworkManager >/dev/null; then
nmcli connection reload
nmcli device reapply $interface
else
systemctl restart network
fi
}
# Configure openSUSE/SLES (ifcfg)
configure_suse() {
local interface=$1
local mode=$2
local ip=${3:-""}
local prefix=${4:-""}
local gateway=${5:-""}
local dns=${6:-""}
CONFIG_FILE="/etc/sysconfig/network/ifcfg-$interface"
# Generate config
cat > "$CONFIG_FILE" << EOF
BOOTPROTO=$([ "$mode" == "dhcp" ] && echo "dhcp" || echo "static")
STARTMODE=auto
NAME=$interface
EOF
if [ "$mode" == "static" ]; then
cat >> "$CONFIG_FILE" << EOF
IPADDR=$ip
NETMASK=255.255.255.0
GATEWAY=$gateway
DNS1=$dns
EOF
fi
# Apply configuration
systemctl restart network
}
# Configure Arch Linux (netctl)
configure_arch() {
local interface=$1
local mode=$2
local ip=${3:-""}
local prefix=${4:-""}
local gateway=${5:-""}
local dns=${6:-""}
CONFIG_FILE="/etc/netctl/$interface"
if [ "$mode" == "dhcp" ]; then
cat > "$CONFIG_FILE" << EOF
Interface=$interface
Connection=ethernet
IP=dhcp
EOF
else
cat > "$CONFIG_FILE" << EOF
Interface=$interface
Connection=ethernet
IP=static
Address=('$ip/$prefix')
Gateway='$gateway'
DNS=('$dns')
EOF
fi
# Apply configuration
netctl stop $interface 2>/dev/null
netctl start $interface
}
# Main script
detect_distro
echo "Detected distribution: $DISTRO $VERSION"
# Get available interfaces
echo -e "\nAvailable network interfaces:"
ip -o link show | awk -F': ' '{print $2}'
read -p "Enter interface name: " INTERFACE
# Select configuration mode
PS3="Select configuration mode: "
options=("Static IP" "DHCP" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Static IP")
MODE="static"
read -p "IP Address (e.g., 192.168.1.100): " IP
read -p "Subnet Prefix (e.g., 24): " PREFIX
read -p "Gateway (e.g., 192.168.1.1): " GATEWAY
read -p "DNS Server (e.g., 8.8.8.8): " DNS
break
;;
"DHCP")
MODE="dhcp"
break
;;
"Quit")
exit 0
;;
*) echo "Invalid option";;
esac
done
# Backup and configure
backup_config $INTERFACE
case $DISTRO in
ubuntu|debian)
configure_netplan $INTERFACE $MODE $IP $PREFIX $GATEWAY $DNS
;;
centos|rhel|fedora)
configure_rhel $INTERFACE $MODE $IP $PREFIX $GATEWAY $DNS
;;
opensuse|sles)
configure_suse $INTERFACE $MODE $IP $PREFIX $GATEWAY $DNS
;;
arch)
configure_arch $INTERFACE $MODE $IP $PREFIX $GATEWAY $DNS
;;
*)
echo "Unsupported distribution: $DISTRO"
exit 1
;;
esac
echo -e "\nNetwork configuration applied successfully!"
echo "Interface $INTERFACE configured in $MODE mode"
二、安装docker脚本
在线安装参考aliyun官网
离线安装docker
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2022-10-14
#FileName: install_docker_offline.sh
#URL: http://www.wangxiaochun.com
#Description: The test script
#Copyright (C): 2022 All rights reserved
#********************************************************************
#支持在线和离线安装
DOCKER_VERSION=26.1.4
#DOCKER_VERSION=26.0.0
#DOCKER_VERSION=24.0.7
#DOCKER_VERSION=24.0.5
#DOCKER_VERSION=23.0.3
#DOCKER_VERSION=20.10.19
URL=https://mirrors.tuna.tsinghua.edu.cn
#URL=https://mirrors.aliyun.com
#URL=https://download.docker.com
color () {
RES_COL=60
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_WARNING="echo -en \\033[1;33m"
SETCOLOR_NORMAL="echo -en \E[0m"
echo -n "$1" && $MOVE_TO_COL
echo -n "["
if [ $2 = "success" -o $2 = "0" ] ;then
${SETCOLOR_SUCCESS}
echo -n $" OK "
elif [ $2 = "failure" -o $2 = "1" ] ;then
${SETCOLOR_FAILURE}
echo -n $"FAILED"
else
${SETCOLOR_WARNING}
echo -n $"WARNING"
fi
${SETCOLOR_NORMAL}
echo -n "]"
echo
}
prepare () {
if [ ! -e docker-${DOCKER_VERSION}.tgz ];then
#wget ${URL}/docker-ce/linux/static/stable/x86_64/docker-${DOCKER_VERSION}.tgz
wget ${URL}/docker-ce/linux/static/stable/x86_64/docker-${DOCKER_VERSION}.tgz
fi
[ $? -ne 0 ] && { echo "文件下载失败"; exit; }
}
install_docker () {
tar xf docker-${DOCKER_VERSION}.tgz -C /usr/local/
cp /usr/local/docker/* /usr/local/bin/
cat > /lib/systemd/system/docker.service <<-EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/local/bin/dockerd -H unix://var/run/docker.sock
ExecReload=/bin/kill -s HUP \$MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
}
config_docker () {
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://si7y70hh.mirror.aliyuncs.com"]
}
EOF
#systemctl restart docker
}
start_docker (){
systemctl enable --now docker
docker version && color "Docker 安装成功" 0 || color "Docker 安装失败" 1
}
config_docker_completion () {
wget -P /etc/bash_completion.d http://www.wangxiaochun.com:8888/testdir/docker/docker_completion
#source /etc/bash_completion.d/docker_completion
}
prepare
install_docker
config_docker
start_docker
config_docker_completion
三、安装harbor脚本
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2020-02-04
#FileName: install_harbor.sh
#URL: http://www.wangxiaochun.com
#Description: The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************
#建议提前下载Harbor文件进行离线安装,也支持在线下载安装
#docker和docker-compose无需下载,在线安装即可
HARBOR_VERSION=2.11.0
#HARBOR_VERSION=2.10.2
#HARBOR_VERSION=2.9.1
#HARBOR_VERSION=2.9.0
#HARBOR_VERSION=2.8.2
#HARBOR_VERSION=2.7.1
#HARBOR_VERSION=2.7.0
#HARBOR_VERSION=2.6.1
#HARBOR_VERSION=2.6.0
GITHUB_PROXY=https://mirror.ghproxy.com/
HARBOR_BASE=/usr/local
#HARBOR_NAME=harbor.wang.org
HARBOR_NAME=`hostname -I|awk '{print $1}'`
#HARBOR_NAME=10.0.0.200
DOCKER_VERSION="26.1.3"
#DOCKER_VERSION="24.0.0"
#DOCKER_VERSION="20.10.20"
#DOCKER_VERSION="19.03.14"
DOCKER_URL="http://mirrors.ustc.edu.cn"
#DOCKER_URL="https://mirrors.tuna.tsinghua.edu.cn"
DOCKER_COMPOSE_VERSION=2.27.1
#DOCKER_COMPOSE_VERSION=2.18.1
#DOCKER_COMPOSE_VERSION=2.6.1
#DOCKER_COMPOSE_VERSION=1.29.2
DOCKER_COMPOSE_FILE=docker-compose-linux-x86_64
HARBOR_ADMIN_PASSWORD=123456
HARBOR_IP=`hostname -I|awk '{print $1}'`
COLOR_SUCCESS="echo -e \\033[1;32m"
COLOR_FAILURE="echo -e \\033[1;31m"
END="\033[m"
. /etc/os-release
UBUNTU_DOCKER_VERSION="5:${DOCKER_VERSION}~3-0~${ID}-${UBUNTU_CODENAME}"
color () {
RES_COL=60
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_WARNING="echo -en \\033[1;33m"
SETCOLOR_NORMAL="echo -en \E[0m"
echo -n "$1" && $MOVE_TO_COL
echo -n "["
if [ $2 = "success" -o $2 = "0" ] ;then
${SETCOLOR_SUCCESS}
echo -n $" OK "
elif [ $2 = "failure" -o $2 = "1" ] ;then
${SETCOLOR_FAILURE}
echo -n $"FAILED"
else
${SETCOLOR_WARNING}
echo -n $"WARNING"
fi
${SETCOLOR_NORMAL}
echo -n "]"
echo
}
install_docker(){
if [ $ID = "centos" -o $ID = "rocky" ];then
if [ $VERSION_ID = "7" ];then
cat > /etc/yum.repos.d/docker.repo <<EOF
[docker]
name=docker
gpgcheck=0
#baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/
baseurl=${DOCKER_URL}/docker-ce/linux/centos/7/x86_64/stable/
EOF
else
cat > /etc/yum.repos.d/docker.repo <<EOF
[docker]
name=docker
gpgcheck=0
#baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable/
baseurl=${DOCKER_URL}/docker-ce/linux/centos/8/x86_64/stable/
EOF
fi
yum clean all
${COLOR_FAILURE} "Docker有以下版本"${END}
yum list docker-ce --showduplicates
${COLOR_FAILURE}"5秒后即将安装: docker-"${DOCKER_VERSION}" 版本....."${END}
${COLOR_FAILURE}"如果想安装其它Docker版本,请按ctrl+c键退出,修改版本再执行"${END}
sleep 5
yum -y install docker-ce-$DOCKER_VERSION docker-ce-cli-$DOCKER_VERSION \
|| { color "Base,Extras的yum源失败,请检查yum源配置" 1;exit; }
else
dpkg -s docker-ce &> /dev/null && $COLOR"Docker已安装,退出" 1 && exit
apt update || { color "更新包索引失败" 1 ; exit 1; }
apt -y install docker.io
fi
if [ $? -eq 0 ];then
color "安装软件包成功" 0
else
color "安装软件包失败,请检查网络配置" 1
exit
fi
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://si7y70hh.mirror.aliyuncs.com"],
"insecure-registries": ["harbor.wang.org"]
}
EOF
systemctl daemon-reload
systemctl enable docker
systemctl restart docker
docker version && color "Docker 安装成功" 0 || color "Docker 安装失败" 1
echo 'alias rmi="docker images -qa|xargs docker rmi -f"' >> ~/.bashrc
echo 'alias rmc="docker ps -qa|xargs docker rm -f"' >> ~/.bashrc
}
install_docker_compose(){
if [ $ID = "centos" -o $ID = "rocky" ];then
${COLOR_SUCCESS}"开始安装 Docker compose....."${END}
sleep 1
if [ ! -e ${DOCKER_COMPOSE_FILE} ];then
curl -L ${GITHUB_PROXY}https://github.com/docker/compose/releases/download/v${DOCKER_COMPOSE_VERSION}/${DOCKER_COMPOSE_FILE} -o /usr/bin/docker-compose
#curl -L https://get.daocloud.io/docker/compose/releases/download/v${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m) -o /usr/bin/docker-compose
else
mv ${DOCKER_COMPOSE_FILE} /usr/bin/docker-compose
fi
chmod +x /usr/bin/docker-compose
else
apt -y install docker-compose
fi
if docker-compose --version ;then
${COLOR_SUCCESS}"Docker Compose 安装完成"${END}
else
${COLOR_FAILURE}"Docker compose 安装失败"${END}
exit
fi
}
install_harbor(){
${COLOR_SUCCESS}"开始安装 Harbor....."${END}
sleep 1
if [ ! -e harbor-offline-installer-v${HARBOR_VERSION}.tgz ] ;then
wget ${GITHUB_PROXY}https://github.com/goharbor/harbor/releases/download/v${HARBOR_VERSION}/harbor-offline-installer-v${HARBOR_VERSION}.tgz || ${COLOR_FAILURE} "下载失败!" ${END}
fi
[ -d ${HARBOR_BASE} ] || mkdir ${HARBOR_BASE}
tar xvf harbor-offline-installer-v${HARBOR_VERSION}.tgz -C ${HARBOR_BASE}
cd ${HARBOR_BASE}/harbor
cp harbor.yml.tmpl harbor.yml
sed -ri "/^hostname/s/reg.mydomain.com/${HARBOR_NAME}/" harbor.yml
sed -ri "/^https/s/(https:)/#\1/" harbor.yml
sed -ri "s/(port: 443)/#\1/" harbor.yml
sed -ri "/certificate:/s/(.*)/#\1/" harbor.yml
sed -ri "/private_key:/s/(.*)/#\1/" harbor.yml
sed -ri "s/Harbor12345/${HARBOR_ADMIN_PASSWORD}/" harbor.yml
sed -i 's#^data_volume: /data#data_volume: /data/harbor#' harbor.yml
#mkdir -p /data/harbor
#{HARBOR_BASE}/harbor/install.sh --with-chartmuseum && ${COLOR_SUCCESS}"Harbor 安装完成"${END} || ${COLOR_FAILURE}"Harbor 安装失败"${END}
${HARBOR_BASE}/harbor/install.sh && ${COLOR_SUCCESS}"Harbor 安装完成"${END} || ${COLOR_FAILURE}"Harbor 安装失败"${END}
cat > /lib/systemd/system/harbor.service <<EOF
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor
[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/bin/docker-compose -f ${HARBOR_BASE}/harbor/docker-compose.yml up
ExecStop=/usr/bin/docker-compose -f ${HARBOR_BASE}/harbor/docker-compose.yml down
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable harbor &>/dev/null || ${COLOR}"Harbor已配置为开机自动启动"${END}
if [ $? -eq 0 ];then
echo
color "Harbor安装完成!" 0
echo "-------------------------------------------------------------------"
echo -e "请访问链接: \E[32;1mhttp://${HARBOR_IP}/\E[0m"
echo -e "用户和密码: \E[32;1madmin/${HARBOR_ADMIN_PASSWORD}\E[0m"
else
color "Harbor安装失败!" 1
exit
fi
echo "$HARBOR_IP $HARBOR_NAME" >> /etc/hosts
}
docker info &> /dev/null && ${COLOR_FAILURE}"Docker已安装"${END} || install_docker
docker-compose --version &> /dev/null && ${COLOR_FAILURE}"Docker Compose已安装"${END} || install_docker_compose
install_harbor
四、一键编译安装Redis脚本
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2020-07-22
#FileName: install_redis.sh
#URL: http://www.magedu.com
#Description: The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************
#本脚本支持在线和离线安装
REDIS_VERSION=redis-7.2.5
#REDIS_VERSION=redis-7.2.4
#REDIS_VERSION=redis-7.2.3
#REDIS_VERSION=redis-7.2.1
#REDIS_VERSION=redis-7.0.11
#REDIS_VERSION=redis-7.0.7
#REDIS_VERSION=redis-7.0.3
#REDIS_VERSION=redis-6.2.6
#REDIS_VERSION=redis-4.0.14
PASSWORD=123456
INSTALL_DIR=/apps/redis
CPUS=`lscpu |awk '/^CPU\(s\)/{print $2}'`
. /etc/os-release
color () {
RES_COL=60
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_WARNING="echo -en \\033[1;33m"
SETCOLOR_NORMAL="echo -en \E[0m"
echo -n "$1" && $MOVE_TO_COL
echo -n "["
if [ $2 = "success" -o $2 = "0" ] ;then
${SETCOLOR_SUCCESS}
echo -n $" OK "
elif [ $2 = "failure" -o $2 = "1" ] ;then
${SETCOLOR_FAILURE}
echo -n $"FAILED"
else
${SETCOLOR_WARNING}
echo -n $"WARNING"
fi
${SETCOLOR_NORMAL}
echo -n "]"
echo
}
prepare(){
if [ $ID = "centos" -o $ID = "rocky" ];then
yum -y install gcc make jemalloc-devel systemd-devel
else
apt update
apt -y install gcc make libjemalloc-dev libsystemd-dev
fi
if [ $? -eq 0 ];then
color "安装软件包成功" 0
else
color "安装软件包失败,请检查网络配置" 1
exit
fi
}
install() {
if [ ! -f ${REDIS_VERSION}.tar.gz ];then
wget http://download.redis.io/releases/${REDIS_VERSION}.tar.gz || { color "Redis 源码下载失败" 1 ; exit; }
fi
tar xf ${REDIS_VERSION}.tar.gz -C /usr/local/src
cd /usr/local/src/${REDIS_VERSION}
make -j $CUPS USE_SYSTEMD=yes PREFIX=${INSTALL_DIR} install && color "Redis 编译安装完成" 0 || { color "Redis 编译安装失败" 1 ;exit ; }
ln -s ${INSTALL_DIR}/bin/redis-* /usr/local/bin/
mkdir -p ${INSTALL_DIR}/{etc,log,data,run}
cp redis.conf ${INSTALL_DIR}/etc/
sed -i -e 's/bind 127.0.0.1/bind 0.0.0.0/' -e "/# requirepass/a requirepass $PASSWORD" -e "/^dir .*/c dir ${INSTALL_DIR}/data/" -e "/logfile .*/c logfile ${INSTALL_DIR}/log/redis-6379.log" -e "/^pidfile .*/c pidfile ${INSTALL_DIR}/run/redis_6379.pid" ${INSTALL_DIR}/etc/redis.conf
if id redis &> /dev/null ;then
color "Redis 用户已存在" 1
else
useradd -r -s /sbin/nologin redis
color "Redis 用户创建成功" 0
fi
chown -R redis.redis ${INSTALL_DIR}
cat >> /etc/sysctl.conf <<EOF
net.core.somaxconn = 1024
vm.overcommit_memory = 1
EOF
sysctl -p
if [ $ID = "centos" -o $ID = "rocky" ];then
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
/etc/rc.d/rc.local
else
echo -e '#!/bin/bash\necho never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local
chmod +x /etc/rc.local
/etc/rc.local
fi
cat > /lib/systemd/system/redis.service <<EOF
[Unit]
Description=Redis persistent key-value database
After=network.target
[Service]
ExecStart=${INSTALL_DIR}/bin/redis-server ${INSTALL_DIR}/etc/redis.conf --supervised systemd
ExecStop=/bin/kill -s QUIT \$MAINPID
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
LimitNOFILE=1000000
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now redis &> /dev/null
if [ $? -eq 0 ];then
color "Redis 服务启动成功,Redis信息如下:" 0
else
color "Redis 启动失败" 1
exit
fi
sleep 2
redis-cli -a $PASSWORD INFO Server 2> /dev/null
}
prepare
install
五、一键安装MongoDB脚本
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2021-02-19
#Filename: install_mongodb.sh
#URL: http://www.wangxiaochun.com
#Description: The test script
#Copyright (C): 2021 All rights reserved
#********************************************************************
MONGODB_VERSOIN=rhel80-5.0.3
#MONGODB_VERSOIN=rhel70-5.0.3
#MONGODB_VERSOIN=ubuntu1804-5.0.3
#MONGODB_VERSOIN=ubuntu1804-4.4.4
MONGODB_FILE=mongodb-linux-x86_64-${MONGODB_VERSOIN}.tgz
#MONGODB_FILE=mongodb-linux-x86_64-ubuntu1804-4.4.4.tgz
URL=https://fastdl.mongodb.org/linux/$MONGODB_FILE
MONGODB_DIR=/mongodb
INSTALL_DIR=/usr/local
PORT=27017
MY_IP=`hostname -I|awk '{print $1}'`
. /etc/os-release
color () {
RES_COL=60
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_WARNING="echo -en \\033[1;33m"
SETCOLOR_NORMAL="echo -en \E[0m"
echo -n "$1" && $MOVE_TO_COL
echo -n "["
if [ $2 = "success" -o $2 = "0" ] ;then
${SETCOLOR_SUCCESS}
echo -n $" OK "
elif [ $2 = "failure" -o $2 = "1" ] ;then
${SETCOLOR_FAILURE}
echo -n $"FAILED"
else
${SETCOLOR_WARNING}
echo -n $"WARNING"
fi
${SETCOLOR_NORMAL}
echo -n "]"
echo
}
system_prepare () {
[ -e $MONGODB_DIR -o -e $INSTALL_DIR/mongodb ] && { color "MongoDB 数据库已安装!" 1;exit; }
if [ $ID = "centos" -o $ID = "rocky" ];then
rpm -q curl &> /dev/null || yum install -y -q curl
elif [ $ID = "ubuntu" ];then
dpkg -l curl &> /dev/null || apt -y install curl
else
color '不支持当前操作系统!' 1
exit
fi
if [ -e /etc/rc.local ];then
echo "echo never > /sys/kernel/mm/transparent hugepage/enabled" >> /etc/rc.local
else
cat > /etc/rc.local <<EOF
#!/bin/bash
echo never > /sys/kernel/mm/transparent hugepage/enabled
EOF
fi
chmod +x /etc/rc.local
}
mongodb_file_prepare () {
if [ ! -e $MONGODB_FILE ];then
curl -O $URL || { color "MongoDB 数据库文件下载失败" 1; exit; }
fi
}
install_mongodb () {
id mongod &> /dev/null || useradd -m -s /bin/bash mongod
tar xf $MONGODB_FILE -C $INSTALL_DIR
ln -s $INSTALL_DIR/mongodb-linux-x86_64-${MONGODB_VERSOIN} $INSTALL_DIR/mongodb
#mongod --dbpath $db_dir --bind_ip_all --port $PORT --logpath $db_dir/mongod.log --fork
}
config_mongodb(){
echo PATH=$INSTALL_DIR/mongodb/bin/:'$PATH' > /etc/profile.d/mongodb.sh
. /etc/profile.d/mongodb.sh
mkdir -p $MONGODB_DIR/{conf,data,log}
cat > $MONGODB_DIR/conf/mongo.conf <<EOF
systemLog:
destination: file
path: "$MONGODB_DIR/log/mongodb.log"
logAppend: true
storage:
dbPath: "$MONGODB_DIR/data/"
journal:
enabled: true
processManagement:
fork: true
net:
port: 27017
bindIp: 0.0.0.0
EOF
chown -R mongod.mongod $MONGODB_DIR/
cat > /lib/systemd/system/mongod.service <<EOF
[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
User=mongod
Group=mongod
ExecStart=$INSTALL_DIR/mongodb/bin/mongod --config $MONGODB_DIR/conf/mongo.conf
ExecReload=/bin/kill -s HUP \$MAINPID
ExecStop=$INSTALL_DIR/bin/mongod --config $MONGODB/conf/mongo.conf --shutdown
PrivateTmp=true
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false
# Recommended limits for mongod as specified in
# https://docs.mongodb.com/manual/reference/ulimit/#recommended-ulimit-settings
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now mongod &>/dev/null
}
start_mongodb() {
systemctl is-active mongod.service &>/dev/null
if [ $? -eq 0 ];then
echo
color "MongoDB 安装完成!" 0
else
color "MongoDB 安装失败!" 1
exit
fi
}
system_prepare
mongodb_file_prepare
install_mongodb
config_mongodb
start_mongodb
五、一键安装mongdb脚本
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2021-02-19
#Filename: install_mongodb.sh
#URL: http://www.wangxiaochun.com
#Description: The test script
#Copyright (C): 2021 All rights reserved
#********************************************************************
MONGODB_VERSOIN=rhel80-5.0.3
#MONGODB_VERSOIN=rhel70-5.0.3
#MONGODB_VERSOIN=ubuntu1804-5.0.3
#MONGODB_VERSOIN=ubuntu1804-4.4.4
MONGODB_FILE=mongodb-linux-x86_64-${MONGODB_VERSOIN}.tgz
#MONGODB_FILE=mongodb-linux-x86_64-ubuntu1804-4.4.4.tgz
URL=https://fastdl.mongodb.org/linux/$MONGODB_FILE
MONGODB_DIR=/mongodb
INSTALL_DIR=/usr/local
PORT=27017
MY_IP=`hostname -I|awk '{print $1}'`
. /etc/os-release
color () {
RES_COL=60
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_WARNING="echo -en \\033[1;33m"
SETCOLOR_NORMAL="echo -en \E[0m"
echo -n "$1" && $MOVE_TO_COL
echo -n "["
if [ $2 = "success" -o $2 = "0" ] ;then
${SETCOLOR_SUCCESS}
echo -n $" OK "
elif [ $2 = "failure" -o $2 = "1" ] ;then
${SETCOLOR_FAILURE}
echo -n $"FAILED"
else
${SETCOLOR_WARNING}
echo -n $"WARNING"
fi
${SETCOLOR_NORMAL}
echo -n "]"
echo
}
system_prepare () {
[ -e $MONGODB_DIR -o -e $INSTALL_DIR/mongodb ] && { color "MongoDB 数据库已安装!" 1;exit; }
if [ $ID = "centos" -o $ID = "rocky" ];then
rpm -q curl &> /dev/null || yum install -y -q curl
elif [ $ID = "ubuntu" ];then
dpkg -l curl &> /dev/null || apt -y install curl
else
color '不支持当前操作系统!' 1
exit
fi
if [ -e /etc/rc.local ];then
echo "echo never > /sys/kernel/mm/transparent hugepage/enabled" >> /etc/rc.local
else
cat > /etc/rc.local <<EOF
#!/bin/bash
echo never > /sys/kernel/mm/transparent hugepage/enabled
EOF
fi
chmod +x /etc/rc.local
}
mongodb_file_prepare () {
if [ ! -e $MONGODB_FILE ];then
curl -O $URL || { color "MongoDB 数据库文件下载失败" 1; exit; }
fi
}
install_mongodb () {
id mongod &> /dev/null || useradd -m -s /bin/bash mongod
tar xf $MONGODB_FILE -C $INSTALL_DIR
ln -s $INSTALL_DIR/mongodb-linux-x86_64-${MONGODB_VERSOIN} $INSTALL_DIR/mongodb
#mongod --dbpath $db_dir --bind_ip_all --port $PORT --logpath $db_dir/mongod.log --fork
}
config_mongodb(){
echo PATH=$INSTALL_DIR/mongodb/bin/:'$PATH' > /etc/profile.d/mongodb.sh
. /etc/profile.d/mongodb.sh
mkdir -p $MONGODB_DIR/{conf,data,log}
cat > $MONGODB_DIR/conf/mongo.conf <<EOF
systemLog:
destination: file
path: "$MONGODB_DIR/log/mongodb.log"
logAppend: true
storage:
dbPath: "$MONGODB_DIR/data/"
journal:
enabled: true
processManagement:
fork: true
net:
port: 27017
bindIp: 0.0.0.0
EOF
chown -R mongod.mongod $MONGODB_DIR/
cat > /lib/systemd/system/mongod.service <<EOF
[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
User=mongod
Group=mongod
ExecStart=$INSTALL_DIR/mongodb/bin/mongod --config $MONGODB_DIR/conf/mongo.conf
ExecReload=/bin/kill -s HUP \$MAINPID
ExecStop=$INSTALL_DIR/bin/mongod --config $MONGODB/conf/mongo.conf --shutdown
PrivateTmp=true
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false
# Recommended limits for mongod as specified in
# https://docs.mongodb.com/manual/reference/ulimit/#recommended-ulimit-settings
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now mongod &>/dev/null
}
start_mongodb() {
systemctl is-active mongod.service &>/dev/null
if [ $? -eq 0 ];then
echo
color "MongoDB 安装完成!" 0
else
color "MongoDB 安装失败!" 1
exit
fi
}
system_prepare
mongodb_file_prepare
install_mongodb
config_mongodb
start_mongodb