update docs and scripts
parent
db7bccdc68
commit
097cfb45ef
|
@ -59,8 +59,8 @@
|
||||||
- [Nodejs 安装](docs/linux/soft/nodejs-install.md)
|
- [Nodejs 安装](docs/linux/soft/nodejs-install.md)
|
||||||
- 开发工具
|
- 开发工具
|
||||||
- [Nexus 运维](docs/linux/soft/nexus-ops.md)
|
- [Nexus 运维](docs/linux/soft/nexus-ops.md)
|
||||||
- [Gitlab 运维](docs/linux/soft/kafka-install.md)
|
- [Gitlab 运维](docs/linux/soft/gitlab-ops.md)
|
||||||
- [Jenkins 运维](docs/linux/soft/jenkins.md)
|
- [Jenkins 运维](docs/linux/soft/jenkins-ops.md)
|
||||||
- [Svn 运维](docs/linux/soft/svn-ops.md)
|
- [Svn 运维](docs/linux/soft/svn-ops.md)
|
||||||
- [YApi 运维](docs/linux/soft/yapi-ops.md)
|
- [YApi 运维](docs/linux/soft/yapi-ops.md)
|
||||||
- 中间件服务
|
- 中间件服务
|
||||||
|
|
|
@ -1,154 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------------
|
|
||||||
# 数据库操作脚本
|
|
||||||
# @author Zhang Peng
|
|
||||||
# -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------ 1. env
|
|
||||||
|
|
||||||
## 数据库IP
|
|
||||||
#ENV_MYSQL_HOST="127.0.0.1"
|
|
||||||
## 数据库用户名
|
|
||||||
#ENV_MYSQL_USERNAME="root"
|
|
||||||
## 数据密码
|
|
||||||
#ENV_MYSQL_PASSWORD="Tw#123456"
|
|
||||||
if [[ ! ${ENV_MYSQL_HOST} ]] || [[ ! ${ENV_MYSQL_USERNAME} ]] || [[ ! ${ENV_MYSQL_PASSWORD} ]]; then
|
|
||||||
logError "执行本脚本前必须先 export 环境变量: ENV_MYSQL_HOST, ENV_MYSQL_USERNAME, ENV_MYSQL_PASSWORD."
|
|
||||||
exit ${ENV_FAILED}
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 备份模式:备份所有数据库(--all-databases)|备份指定数据库列表
|
|
||||||
MYSQL_DATABASES="${ENV_MYSQL_DATABASES:---all-databases}"
|
|
||||||
|
|
||||||
#备份路径
|
|
||||||
MYSQL_BACKUP_DIR="${ENV_MYSQL_BACKUP_DIR:-/var/lib/mysql/backup}"
|
|
||||||
#备份日志路径
|
|
||||||
export ENV_LOG_PATH="${MYSQL_BACKUP_DIR}/mysql-backup.log"
|
|
||||||
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------ 2. libs
|
|
||||||
|
|
||||||
# 装载其它库
|
|
||||||
LINUX_SCRIPTS_LIB_DIR=`dirname ${BASH_SOURCE[0]}`
|
|
||||||
|
|
||||||
if [[ ! -x ${LINUX_SCRIPTS_LIB_DIR}/utils.sh ]]; then
|
|
||||||
logError "${LINUX_SCRIPTS_LIB_DIR}/utils.sh not exists!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
source ${LINUX_SCRIPTS_LIB_DIR}/utils.sh
|
|
||||||
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------ 3. global var
|
|
||||||
|
|
||||||
# 备份文件最大数量
|
|
||||||
BACKUP_ARTIFACTS_MAX_NUM=7
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------ 4. functions
|
|
||||||
|
|
||||||
backupAllDatabase() {
|
|
||||||
|
|
||||||
#时间戳
|
|
||||||
local timestamp=$(date +"%Y%m%d")
|
|
||||||
|
|
||||||
#备份所有数据库
|
|
||||||
logInfo "正在备份所有数据库"
|
|
||||||
mysqldump -h ${ENV_MYSQL_HOST} -P${ENV_MYSQL_PORT} -u${ENV_MYSQL_USERNAME} -p${ENV_MYSQL_PASSWORD} --all-databases > "${MYSQL_BACKUP_DIR}/all-${timestamp}.sql" 2>> ${ENV_LOG_PATH};
|
|
||||||
|
|
||||||
#检查备份结果是否成功
|
|
||||||
if [[ "$?" != 0 ]]; then
|
|
||||||
logError "<<<< 备份所有数据库失败"
|
|
||||||
return ${ENV_FAILED}
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 压缩备份sql文件,删除旧的备份文件
|
|
||||||
cd "${MYSQL_BACKUP_DIR}"
|
|
||||||
if [[ ! -f "${MYSQL_BACKUP_DIR}/all-${timestamp}.sql" ]]; then
|
|
||||||
logError "备份文件 ${MYSQL_BACKUP_DIR}/all-${timestamp}.sql 不存在"
|
|
||||||
return ${ENV_FAILED}
|
|
||||||
fi
|
|
||||||
#为节约硬盘空间,将数据库压缩
|
|
||||||
sudo tar zcf "all-${timestamp}.tar.gz" "all-${timestamp}.sql" > /dev/null
|
|
||||||
#删除原始文件,只留压缩后文件
|
|
||||||
sudo rm -f "all-${timestamp}.sql"
|
|
||||||
#删除七天前备份,也就是只保存7天内的备份
|
|
||||||
find "${MYSQL_BACKUP_DIR} -name all-*.tar.gz -type f -mtime +${BACKUP_ARTIFACTS_MAX_NUM} -exec rm -rf {} \;" > /dev/null 2>&1
|
|
||||||
|
|
||||||
logInfo "<<<< 备份所有数据库成功"
|
|
||||||
return ${ENV_SUCCEED}
|
|
||||||
}
|
|
||||||
|
|
||||||
backupSelectedDatabase() {
|
|
||||||
|
|
||||||
#时间戳
|
|
||||||
local timestamp=$(date +"%Y%m%d")
|
|
||||||
|
|
||||||
#数据库,如有多个库用空格分开
|
|
||||||
databaseList="${MYSQL_DATABASES}"
|
|
||||||
|
|
||||||
#备份指定数据库列表
|
|
||||||
for database in ${databaseList}; do
|
|
||||||
|
|
||||||
logInfo "正在备份数据库:${database}"
|
|
||||||
mysqldump -h ${ENV_MYSQL_HOST} -P${ENV_MYSQL_PORT} -u${ENV_MYSQL_USERNAME} -p${ENV_MYSQL_PASSWORD} "${database}" > "${MYSQL_BACKUP_DIR}/${database}-${timestamp}.sql" 2>> ${ENV_LOG_PATH};
|
|
||||||
if [[ "$?" != 0 ]]; then
|
|
||||||
logError "<<<< 备份 ${database} 失败"
|
|
||||||
return ${ENV_FAILED}
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 压缩备份sql文件,删除旧的备份文件
|
|
||||||
cd "${MYSQL_BACKUP_DIR}"
|
|
||||||
if [[ ! -f "${MYSQL_BACKUP_DIR}/${database}-${timestamp}.sql" ]]; then
|
|
||||||
logError "备份文件 ${MYSQL_BACKUP_DIR}/${database}-${timestamp}.sql 不存在"
|
|
||||||
return ${ENV_FAILED}
|
|
||||||
fi
|
|
||||||
#为节约硬盘空间,将数据库压缩
|
|
||||||
sudo tar zcf "${database}-${timestamp}.tar.gz" "${database}-${timestamp}.sql" > /dev/null
|
|
||||||
#删除原始文件,只留压缩后文件
|
|
||||||
sudo rm -f "${database}-${timestamp}.sql"
|
|
||||||
#删除七天前备份,也就是只保存7天内的备份
|
|
||||||
find "${MYSQL_BACKUP_DIR} -name ${database}-*.tar.gz -type f -mtime +${BACKUP_ARTIFACTS_MAX_NUM} -exec rm -rf {} \;" > /dev/null 2>&1
|
|
||||||
done
|
|
||||||
|
|
||||||
logInfo "<<<< 备份数据库 ${MYSQL_DATABASES} 成功"
|
|
||||||
return ${ENV_SUCCEED}
|
|
||||||
}
|
|
||||||
|
|
||||||
backupMysql() {
|
|
||||||
|
|
||||||
#日志记录头部
|
|
||||||
sudo mkdir -p ${MYSQL_BACKUP_DIR}
|
|
||||||
touch ${ENV_LOG_PATH}
|
|
||||||
|
|
||||||
logInfo "------------------------------------------------------------------"
|
|
||||||
logInfo ">>>> 备份数据库开始"
|
|
||||||
|
|
||||||
#正式备份数据库
|
|
||||||
if [[ ${MYSQL_DATABASES} == "--all-databases" ]]; then
|
|
||||||
backupAllDatabase
|
|
||||||
else
|
|
||||||
backupSelectedDatabase
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
recoveryMysql() {
|
|
||||||
|
|
||||||
logInfo "------------------------------------------------------------------"
|
|
||||||
logInfo ">>>> 恢复数据库开始"
|
|
||||||
|
|
||||||
if [[ ! -f ${ENV_SQL_FILE_PATH} ]]; then
|
|
||||||
logError "sql 文件 ${ENV_SQL_FILE_PATH} 不存在"
|
|
||||||
return ${ENV_FAILED}
|
|
||||||
fi
|
|
||||||
|
|
||||||
mysql -h ${ENV_MYSQL_HOST} -P${ENV_MYSQL_PORT} -u${ENV_MYSQL_USERNAME} -p${ENV_MYSQL_PASSWORD} < ${ENV_SQL_FILE_PATH}
|
|
||||||
if [[ "$?" != 0 ]]; then
|
|
||||||
logError "<<<< 恢复数据库失败"
|
|
||||||
return ${ENV_FAILED}
|
|
||||||
fi
|
|
||||||
|
|
||||||
logInfo "<<<< 恢复数据库成功"
|
|
||||||
return ${ENV_SUCCEED}
|
|
||||||
}
|
|
|
@ -18,9 +18,9 @@ collation_server = utf8mb4_0900_ai_ci
|
||||||
|
|
||||||
# LOG
|
# LOG
|
||||||
# -------------------------------------------------------------------------------
|
# -------------------------------------------------------------------------------
|
||||||
log_error = /var/log/mysql/mysql-error.log
|
log_error = /var/log/mysql/mysql.log
|
||||||
slow_query_log = 1
|
slow_query_log = 1
|
||||||
slow_query_log_file = /var/log/mysql/mysql-slow.log
|
slow_query_log_file = /var/log/mysql/mysql_slow_query_log.log
|
||||||
long_query_time = 3
|
long_query_time = 3
|
||||||
min_examined_row_limit = 100
|
min_examined_row_limit = 100
|
||||||
expire_logs_days = 7
|
expire_logs_days = 7
|
||||||
|
|
|
@ -1,25 +1,112 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
###################################################################################
|
# -----------------------------------------------------------------------------------------------------
|
||||||
# 安装 Gitlab 脚本
|
# 安装 Gitlab 脚本
|
||||||
# 仅适用于 CentOS7 发行版本
|
# 仅适用于 CentOS7 发行版本
|
||||||
# @author: Zhang Peng
|
# @author: Zhang Peng
|
||||||
###################################################################################
|
# -----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
echo -e "\n>>>>>>>>> install gitlab"
|
# ------------------------------------------------------------------------------ env
|
||||||
|
|
||||||
echo -e "\n>>>>>>>>> 安装和配置必要依赖"
|
# Regular Color
|
||||||
sudo yum install -y curl policycoreutils-python openssh-server
|
export ENV_COLOR_BLACK="\033[0;30m"
|
||||||
sudo systemctl enable sshd
|
export ENV_COLOR_RED="\033[0;31m"
|
||||||
sudo systemctl start sshd
|
export ENV_COLOR_GREEN="\033[0;32m"
|
||||||
sudo firewall-cmd --permanent --add-service=http
|
export ENV_COLOR_YELLOW="\033[0;33m"
|
||||||
sudo systemctl reload firewalld
|
export ENV_COLOR_BLUE="\033[0;34m"
|
||||||
|
export ENV_COLOR_MAGENTA="\033[0;35m"
|
||||||
|
export ENV_COLOR_CYAN="\033[0;36m"
|
||||||
|
export ENV_COLOR_WHITE="\033[0;37m"
|
||||||
|
# Bold Color
|
||||||
|
export ENV_COLOR_B_BLACK="\033[1;30m"
|
||||||
|
export ENV_COLOR_B_RED="\033[1;31m"
|
||||||
|
export ENV_COLOR_B_GREEN="\033[1;32m"
|
||||||
|
export ENV_COLOR_B_YELLOW="\033[1;33m"
|
||||||
|
export ENV_COLOR_B_BLUE="\033[1;34m"
|
||||||
|
export ENV_COLOR_B_MAGENTA="\033[1;35m"
|
||||||
|
export ENV_COLOR_B_CYAN="\033[1;36m"
|
||||||
|
export ENV_COLOR_B_WHITE="\033[1;37m"
|
||||||
|
# Reset Color
|
||||||
|
export ENV_COLOR_RESET="$(tput sgr0)"
|
||||||
|
|
||||||
echo -e "\n>>>>>>>>> 安装和配置邮件服务"
|
# status
|
||||||
sudo yum install postfix
|
export ENV_YES=0
|
||||||
sudo systemctl enable postfix
|
export ENV_NO=1
|
||||||
sudo systemctl start postfix
|
export ENV_SUCCEED=0
|
||||||
|
export ENV_FAILED=1
|
||||||
|
|
||||||
echo -e "\n>>>>>>>>> 通过 yum 安装 gitlab"
|
# ------------------------------------------------------------------------------ functions
|
||||||
curl -o- https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
|
|
||||||
sudo EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ce
|
# 显示打印日志的时间
|
||||||
|
SHELL_LOG_TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
|
||||||
|
# 那个用户在操作
|
||||||
|
USER=$(whoami)
|
||||||
|
|
||||||
|
redOutput() {
|
||||||
|
echo -e "${ENV_COLOR_RED} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
greenOutput() {
|
||||||
|
echo -e "${ENV_COLOR_B_GREEN} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
yellowOutput() {
|
||||||
|
echo -e "${ENV_COLOR_YELLOW} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
blueOutput() {
|
||||||
|
echo -e "${ENV_COLOR_BLUE} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
magentaOutput() {
|
||||||
|
echo -e "${ENV_COLOR_MAGENTA} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
cyanOutput() {
|
||||||
|
echo -e "${ENV_COLOR_CYAN} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
whiteOutput() {
|
||||||
|
echo -e "${ENV_COLOR_WHITE} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
printInfo() {
|
||||||
|
echo -e "${ENV_COLOR_B_GREEN}[INFO] $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
printWarn() {
|
||||||
|
echo -e "${ENV_COLOR_B_YELLOW}[WARN] $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
printError() {
|
||||||
|
echo -e "${ENV_COLOR_B_RED}[ERROR] $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
callAndLog () {
|
||||||
|
$*
|
||||||
|
if [[ $? -eq ${ENV_SUCCEED} ]]; then
|
||||||
|
printInfo "$@"
|
||||||
|
return ${ENV_SUCCEED}
|
||||||
|
else
|
||||||
|
printError "$@ EXECUTE FAILED"
|
||||||
|
return ${ENV_FAILED}
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------ main
|
||||||
|
|
||||||
|
printInfo ">>>> 安装 gitlab"
|
||||||
|
printInfo ">>>> 安装和配置必要依赖"
|
||||||
|
yum install -y curl policycoreutils-python openssh-server
|
||||||
|
systemctl enable sshd
|
||||||
|
systemctl start sshd
|
||||||
|
printInfo ">>>> 关闭防火墙"
|
||||||
|
firewall-cmd --permanent --add-service=http
|
||||||
|
systemctl reload firewalld
|
||||||
|
printInfo ">>>> 安装和配置邮件服务"
|
||||||
|
yum install postfix
|
||||||
|
systemctl enable postfix
|
||||||
|
systemctl start postfix
|
||||||
|
printInfo ">>>> 通过 yum 安装 gitlab"
|
||||||
|
curl -o- https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash
|
||||||
|
EXTERNAL_URL="http://gitlab.transwarp.io" yum install -y gitlab-ce
|
||||||
|
|
|
@ -0,0 +1,233 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------------------------------
|
||||||
|
# 数据库操作脚本
|
||||||
|
# 支持操作:
|
||||||
|
# 备份 Mysql
|
||||||
|
# 恢复 Mysql
|
||||||
|
# @author: Zhang Peng
|
||||||
|
# -----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------ env
|
||||||
|
|
||||||
|
# Regular Color
|
||||||
|
export ENV_COLOR_BLACK="\033[0;30m"
|
||||||
|
export ENV_COLOR_RED="\033[0;31m"
|
||||||
|
export ENV_COLOR_GREEN="\033[0;32m"
|
||||||
|
export ENV_COLOR_YELLOW="\033[0;33m"
|
||||||
|
export ENV_COLOR_BLUE="\033[0;34m"
|
||||||
|
export ENV_COLOR_MAGENTA="\033[0;35m"
|
||||||
|
export ENV_COLOR_CYAN="\033[0;36m"
|
||||||
|
export ENV_COLOR_WHITE="\033[0;37m"
|
||||||
|
# Bold Color
|
||||||
|
export ENV_COLOR_B_BLACK="\033[1;30m"
|
||||||
|
export ENV_COLOR_B_RED="\033[1;31m"
|
||||||
|
export ENV_COLOR_B_GREEN="\033[1;32m"
|
||||||
|
export ENV_COLOR_B_YELLOW="\033[1;33m"
|
||||||
|
export ENV_COLOR_B_BLUE="\033[1;34m"
|
||||||
|
export ENV_COLOR_B_MAGENTA="\033[1;35m"
|
||||||
|
export ENV_COLOR_B_CYAN="\033[1;36m"
|
||||||
|
export ENV_COLOR_B_WHITE="\033[1;37m"
|
||||||
|
# Reset Color
|
||||||
|
export ENV_COLOR_RESET="$(tput sgr0)"
|
||||||
|
|
||||||
|
# status
|
||||||
|
export ENV_YES=0
|
||||||
|
export ENV_NO=1
|
||||||
|
export ENV_SUCCEED=0
|
||||||
|
export ENV_FAILED=1
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------ functions
|
||||||
|
|
||||||
|
# 显示打印日志的时间
|
||||||
|
SHELL_LOG_TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
|
||||||
|
# 那个用户在操作
|
||||||
|
USER=$(whoami)
|
||||||
|
|
||||||
|
redOutput() {
|
||||||
|
echo -e "${ENV_COLOR_RED} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
greenOutput() {
|
||||||
|
echo -e "${ENV_COLOR_B_GREEN} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
yellowOutput() {
|
||||||
|
echo -e "${ENV_COLOR_YELLOW} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
blueOutput() {
|
||||||
|
echo -e "${ENV_COLOR_BLUE} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
magentaOutput() {
|
||||||
|
echo -e "${ENV_COLOR_MAGENTA} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
cyanOutput() {
|
||||||
|
echo -e "${ENV_COLOR_CYAN} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
whiteOutput() {
|
||||||
|
echo -e "${ENV_COLOR_WHITE} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
printInfo() {
|
||||||
|
echo -e "${ENV_COLOR_B_GREEN}[INFO] $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
printWarn() {
|
||||||
|
echo -e "${ENV_COLOR_B_YELLOW}[WARN] $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
printError() {
|
||||||
|
echo -e "${ENV_COLOR_B_RED}[ERROR] $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
callAndLog () {
|
||||||
|
$*
|
||||||
|
if [[ $? -eq ${ENV_SUCCEED} ]]; then
|
||||||
|
printInfo "$@"
|
||||||
|
return ${ENV_SUCCEED}
|
||||||
|
else
|
||||||
|
printError "$@ EXECUTE FAILED"
|
||||||
|
return ${ENV_FAILED}
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------ env
|
||||||
|
|
||||||
|
# Mysql 操作的环境变量,使用方法:
|
||||||
|
# 可以在执行本脚本之前,export 以下环境变量,否则将按照默认配置执行
|
||||||
|
|
||||||
|
# Mysql HOST(默认为 127.0.0.1)
|
||||||
|
ENV_MYSQL_HOST="${ENV_MYSQL_HOST:-127.0.0.1}"
|
||||||
|
# Mysql 端口(默认为 3306)
|
||||||
|
ENV_MYSQL_PORT=${ENV_MYSQL_PORT:-3306}
|
||||||
|
# Mysql 用户名(默认为 root)
|
||||||
|
ENV_MYSQL_USERNAME=${ENV_MYSQL_USERNAME:-root}
|
||||||
|
# Mysql 密码(默认为 root)
|
||||||
|
ENV_MYSQL_PASSWORD=${ENV_MYSQL_PASSWORD:-root}
|
||||||
|
# Mysql 备份文件最大数量(默认为 7 天)
|
||||||
|
ENV_BACKUP_MAX_NUM=${ENV_BACKUP_MAX_NUM:-7}
|
||||||
|
|
||||||
|
# 备份模式:备份所有数据库(--all-databases)|备份指定数据库列表
|
||||||
|
ENV_MYSQL_DATABASES="${ENV_MYSQL_DATABASES:---all-databases}"
|
||||||
|
# 备份路径
|
||||||
|
ENV_MYSQL_BACKUP_DIR="${ENV_MYSQL_BACKUP_DIR:-/var/lib/mysql/backup}"
|
||||||
|
# 备份日志路径
|
||||||
|
export ENV_LOG_PATH="${ENV_MYSQL_BACKUP_DIR}/mysql-backup.log"
|
||||||
|
|
||||||
|
magentaOutput "------------------------------------------------------------------------------"
|
||||||
|
magentaOutput "Mysql 脚本操作环境变量:"
|
||||||
|
magentaOutput "ENV_MYSQL_HOST:${ENV_MYSQL_HOST}"
|
||||||
|
magentaOutput "ENV_MYSQL_PORT:${ENV_MYSQL_PORT}"
|
||||||
|
magentaOutput "ENV_MYSQL_USERNAME:${ENV_MYSQL_USERNAME}"
|
||||||
|
magentaOutput "ENV_MYSQL_PASSWORD:${ENV_MYSQL_PASSWORD}"
|
||||||
|
magentaOutput "ENV_BACKUP_MAX_NUM:${ENV_BACKUP_MAX_NUM}"
|
||||||
|
magentaOutput "ENV_MYSQL_DATABASES:${ENV_MYSQL_DATABASES}"
|
||||||
|
magentaOutput "ENV_MYSQL_BACKUP_DIR:${ENV_MYSQL_BACKUP_DIR}"
|
||||||
|
magentaOutput "ENV_LOG_PATH:${ENV_LOG_PATH}"
|
||||||
|
magentaOutput "------------------------------------------------------------------------------"
|
||||||
|
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------ functions
|
||||||
|
|
||||||
|
# 备份所有 database(schema)
|
||||||
|
backupAllDatabase() {
|
||||||
|
|
||||||
|
#时间戳
|
||||||
|
local timestamp=$(date +"%Y%m%d")
|
||||||
|
|
||||||
|
#备份所有数据库
|
||||||
|
printInfo ">>>> 备份所有数据库开始"
|
||||||
|
mysqldump -h ${ENV_MYSQL_HOST} -P${ENV_MYSQL_PORT} -u${ENV_MYSQL_USERNAME} -p${ENV_MYSQL_PASSWORD} --all-databases > "${ENV_MYSQL_BACKUP_DIR}/all-${timestamp}.sql" 2>> ${ENV_LOG_PATH};
|
||||||
|
|
||||||
|
#检查备份结果是否成功
|
||||||
|
if [[ "$?" != ${ENV_SUCCEED} ]]; then
|
||||||
|
printError "<<<< 备份所有数据库失败"
|
||||||
|
return ${ENV_FAILED}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 压缩备份sql文件,删除旧的备份文件
|
||||||
|
cd "${ENV_MYSQL_BACKUP_DIR}"
|
||||||
|
if [[ ! -f "${ENV_MYSQL_BACKUP_DIR}/all-${timestamp}.sql" ]]; then
|
||||||
|
printError "备份文件 ${ENV_MYSQL_BACKUP_DIR}/all-${timestamp}.sql 不存在"
|
||||||
|
return ${ENV_FAILED}
|
||||||
|
fi
|
||||||
|
#为节约硬盘空间,将数据库压缩
|
||||||
|
tar zcf "all-${timestamp}.tar.gz" "all-${timestamp}.sql" > /dev/null
|
||||||
|
#删除原始文件,只留压缩后文件
|
||||||
|
rm -f "all-${timestamp}.sql"
|
||||||
|
#只保存期限内的备份文件,其余删除
|
||||||
|
find "${ENV_MYSQL_BACKUP_DIR} -name all-*.tar.gz -type f -mtime +${ENV_BACKUP_MAX_NUM} -exec rm -rf {} \;" > /dev/null 2>&1
|
||||||
|
|
||||||
|
printInfo "<<<< 备份所有数据库成功\n"
|
||||||
|
return ${ENV_SUCCEED}
|
||||||
|
}
|
||||||
|
|
||||||
|
# 备份指定的 database(schema)
|
||||||
|
backupSelectedDatabase() {
|
||||||
|
|
||||||
|
#时间戳
|
||||||
|
local timestamp=$(date +"%Y%m%d")
|
||||||
|
|
||||||
|
#数据库,如有多个库用空格分开
|
||||||
|
databaseList="${ENV_MYSQL_DATABASES}"
|
||||||
|
|
||||||
|
#备份指定数据库列表
|
||||||
|
printInfo ">>>> 备份指定数据库开始"
|
||||||
|
for database in ${databaseList}; do
|
||||||
|
|
||||||
|
printInfo "正在备份数据库:${database}"
|
||||||
|
mysqldump -h ${ENV_MYSQL_HOST} -P${ENV_MYSQL_PORT} -u${ENV_MYSQL_USERNAME} -p${ENV_MYSQL_PASSWORD} "${database}" > "${ENV_MYSQL_BACKUP_DIR}/${database}-${timestamp}.sql" 2>> ${ENV_LOG_PATH};
|
||||||
|
if [[ "$?" != 0 ]]; then
|
||||||
|
printError "<<<< 备份 ${database} 失败"
|
||||||
|
return ${ENV_FAILED}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 压缩备份sql文件,删除旧的备份文件
|
||||||
|
cd "${ENV_MYSQL_BACKUP_DIR}"
|
||||||
|
if [[ ! -f "${ENV_MYSQL_BACKUP_DIR}/${database}-${timestamp}.sql" ]]; then
|
||||||
|
printError "备份文件 ${ENV_MYSQL_BACKUP_DIR}/${database}-${timestamp}.sql 不存在"
|
||||||
|
return ${ENV_FAILED}
|
||||||
|
fi
|
||||||
|
#为节约硬盘空间,将数据库压缩
|
||||||
|
tar zcf "${database}-${timestamp}.tar.gz" "${database}-${timestamp}.sql" > /dev/null
|
||||||
|
#删除原始文件,只留压缩后文件
|
||||||
|
rm -f "${database}-${timestamp}.sql"
|
||||||
|
#只保存期限内的备份文件,其余删除
|
||||||
|
find "${ENV_MYSQL_BACKUP_DIR} -name ${database}-*.tar.gz -type f -mtime +${ENV_BACKUP_MAX_NUM} -exec rm -rf {} \;" > /dev/null 2>&1
|
||||||
|
done
|
||||||
|
|
||||||
|
printInfo "<<<< 备份数据库 ${ENV_MYSQL_DATABASES} 成功\n"
|
||||||
|
return ${ENV_SUCCEED}
|
||||||
|
}
|
||||||
|
|
||||||
|
# 备份 Mysql
|
||||||
|
backupMysql() {
|
||||||
|
#创建备份目录及日志文件
|
||||||
|
mkdir -p ${ENV_MYSQL_BACKUP_DIR}
|
||||||
|
if [[ ! -f ${ENV_LOG_PATH} ]]; then
|
||||||
|
touch ${ENV_LOG_PATH}
|
||||||
|
fi
|
||||||
|
|
||||||
|
#正式备份数据库
|
||||||
|
if [[ ${ENV_MYSQL_DATABASES} == "--all-databases" ]]; then
|
||||||
|
backupAllDatabase
|
||||||
|
else
|
||||||
|
backupSelectedDatabase
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 恢复 Mysql
|
||||||
|
recoveryMysql() {
|
||||||
|
#创建备份目录及日志文件
|
||||||
|
mkdir -p ${ENV_MYSQL_BACKUP_DIR}
|
||||||
|
if [[ ! -f ${ENV_LOG_PATH} ]]; then
|
||||||
|
touch ${ENV_LOG_PATH}
|
||||||
|
fi
|
||||||
|
|
||||||
|
printInfo ">>>> 恢复数据库开始"
|
||||||
|
|
||||||
|
mysql -h ${ENV_MYSQL_HOST} -P${ENV_MYSQL_PORT} -u${ENV_MYSQL_USERNAME} -p${ENV_MYSQL_PASSWORD} < ${ENV_LOG_PATH}
|
||||||
|
if [[ "$?" != 0 ]]; then
|
||||||
|
printError "<<<< 恢复数据库失败"
|
||||||
|
return ${ENV_FAILED}
|
||||||
|
fi
|
||||||
|
|
||||||
|
printInfo "<<<< 恢复数据库成功\n"
|
||||||
|
return ${ENV_SUCCEED}
|
||||||
|
}
|
|
@ -71,18 +71,38 @@ createLogFileIfNotExists() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
redOutput() {
|
||||||
|
echo -e "${ENV_COLOR_RED} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
greenOutput() {
|
||||||
|
echo -e "${ENV_COLOR_B_GREEN} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
yellowOutput() {
|
||||||
|
echo -e "${ENV_COLOR_YELLOW} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
blueOutput() {
|
||||||
|
echo -e "${ENV_COLOR_BLUE} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
magentaOutput() {
|
||||||
|
echo -e "${ENV_COLOR_MAGENTA} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
cyanOutput() {
|
||||||
|
echo -e "${ENV_COLOR_CYAN} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
whiteOutput() {
|
||||||
|
echo -e "${ENV_COLOR_WHITE} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
logInfo() {
|
logInfo() {
|
||||||
echo -e "${ENV_COLOR_B_GREEN}[INFO] $@${ENV_COLOR_RESET}"
|
echo -e "${ENV_COLOR_B_GREEN}[INFO] $@${ENV_COLOR_RESET}"
|
||||||
createLogFileIfNotExists
|
createLogFileIfNotExists
|
||||||
echo "[${SHELL_LOG_TIMESTAMP}] [${USER}] [INFO] [$0] $@" >> "${LOG_PATH}"
|
echo "[${SHELL_LOG_TIMESTAMP}] [${USER}] [INFO] [$0] $@" >> "${LOG_PATH}"
|
||||||
}
|
}
|
||||||
|
|
||||||
logWarn() {
|
logWarn() {
|
||||||
echo -e "${ENV_COLOR_B_YELLOW}[WARN] $@${ENV_COLOR_RESET}"
|
echo -e "${ENV_COLOR_B_YELLOW}[WARN] $@${ENV_COLOR_RESET}"
|
||||||
createLogFileIfNotExists
|
createLogFileIfNotExists
|
||||||
echo "[${SHELL_LOG_TIMESTAMP}] [${USER}] [WARN] [$0] $@" >> "${LOG_PATH}"
|
echo "[${SHELL_LOG_TIMESTAMP}] [${USER}] [WARN] [$0] $@" >> "${LOG_PATH}"
|
||||||
}
|
}
|
||||||
|
|
||||||
logError() {
|
logError() {
|
||||||
echo -e "${ENV_COLOR_B_RED}[ERROR] $@${ENV_COLOR_RESET}"
|
echo -e "${ENV_COLOR_B_RED}[ERROR] $@${ENV_COLOR_RESET}"
|
||||||
createLogFileIfNotExists
|
createLogFileIfNotExists
|
||||||
|
@ -92,11 +112,9 @@ logError() {
|
||||||
printInfo() {
|
printInfo() {
|
||||||
echo -e "${ENV_COLOR_B_GREEN}[INFO] $@${ENV_COLOR_RESET}"
|
echo -e "${ENV_COLOR_B_GREEN}[INFO] $@${ENV_COLOR_RESET}"
|
||||||
}
|
}
|
||||||
|
|
||||||
printWarn() {
|
printWarn() {
|
||||||
echo -e "${ENV_COLOR_B_YELLOW}[WARN] $@${ENV_COLOR_RESET}"
|
echo -e "${ENV_COLOR_B_YELLOW}[WARN] $@${ENV_COLOR_RESET}"
|
||||||
}
|
}
|
||||||
|
|
||||||
printError() {
|
printError() {
|
||||||
echo -e "${ENV_COLOR_B_RED}[ERROR] $@${ENV_COLOR_RESET}"
|
echo -e "${ENV_COLOR_B_RED}[ERROR] $@${ENV_COLOR_RESET}"
|
||||||
}
|
}
|
|
@ -1,70 +1,39 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
#数据库IP
|
# -----------------------------------------------------------------------------------------------------
|
||||||
dbServer="127.0.0.1"
|
# Mysql 备份脚本
|
||||||
#数据库用户名
|
# 可以通过 crond 服务,设置称为定时执行脚本:
|
||||||
dbUser="root"
|
# (1)执行 crontab -e 编辑定时执行任务,如:59 23 * * * /home/scripts/mysql-backup.sh
|
||||||
#数据密码
|
# (2)vi /etc/crontab,编辑 crontab 文件后保存,可以通过 crontab -l 查看
|
||||||
dbPassword="Tw#123456"
|
# @author Zhang Peng
|
||||||
# 备份模式:备份所有数据库(ALL)|备份指定数据库列表(CUSTOM)
|
# -----------------------------------------------------------------------------------------------------
|
||||||
backupMode="ALL"
|
|
||||||
#backupMode="CUSTOM"
|
# ------------------------------------------------------------------------------ env
|
||||||
#数据库,如有多个库用空格分开
|
# Mysql Host
|
||||||
databaseList="mysql sys"
|
export ENV_MYSQL_HOST="127.0.0.1"
|
||||||
#备份日期
|
# Mysql 端口
|
||||||
backupDate=`date +"%Y%m%d"`
|
export ENV_MYSQL_PORT=3306
|
||||||
|
# Mysql 用户名
|
||||||
|
export ENV_MYSQL_USERNAME=root
|
||||||
|
# Mysql 密码
|
||||||
|
export ENV_MYSQL_PASSWORD=root
|
||||||
|
# Mysql 备份文件最大数量
|
||||||
|
export ENV_BACKUP_MAX_NUM=7
|
||||||
|
# 备份模式:备份所有数据库(--all-databases)|备份指定数据库列表
|
||||||
|
export ENV_MYSQL_DATABASES=--all-databases
|
||||||
# 备份路径
|
# 备份路径
|
||||||
backupPath="/var/lib/mysql/backup"
|
export ENV_MYSQL_BACKUP_DIR=/var/lib/mysql/backup
|
||||||
# 备份日志路径
|
# 备份日志路径
|
||||||
logPath="${backupPath}/mysql-backup.log"
|
export ENV_LOG_PATH="${ENV_MYSQL_BACKUP_DIR}/mysql-backup.log"
|
||||||
|
|
||||||
#日志记录头部
|
# ------------------------------------------------------------------------------ libs
|
||||||
mkdir -p ${backupPath}
|
LINUX_SCRIPTS_LIB_DIR=`dirname ${BASH_SOURCE[0]}`
|
||||||
touch ${logPath}
|
if [[ ! -x ${LINUX_SCRIPTS_LIB_DIR}/lib/mysql.sh ]]; then
|
||||||
echo "------------------------------------------------------------------" >> ${logPath}
|
echo "${LINUX_SCRIPTS_LIB_DIR}/lib/mysql.sh not exists!"
|
||||||
beginTime=`date +"%Y-%m-%d %H:%M:%S"`
|
exit 1
|
||||||
echo "备份数据库开始,时间:${beginTime}" >> ${logPath}
|
fi
|
||||||
|
source ${LINUX_SCRIPTS_LIB_DIR}/lib/mysql.sh
|
||||||
|
|
||||||
#正式备份数据库
|
# ------------------------------------------------------------------------------ main
|
||||||
if [[ ${backupMode} == "ALL" ]];then
|
# 执行备份方法
|
||||||
filename="all-${backupDate}"
|
backupMysql
|
||||||
#备份所有数据库
|
|
||||||
source=`mysqldump -h ${dbServer} -u ${dbUser} -p${dbPassword} --all-databases > ${backupPath}/${filename}.sql`
|
|
||||||
2>> ${logPath};
|
|
||||||
#备份成功以下操作
|
|
||||||
if [[ "$?" == 0 ]];then
|
|
||||||
cd ${backupPath}
|
|
||||||
#为节约硬盘空间,将数据库压缩
|
|
||||||
tar zcf ${filename}.tar.gz ${filename}.sql > /dev/null
|
|
||||||
#删除原始文件,只留压缩后文件
|
|
||||||
rm -f ${backupPath}/${filename}.sql
|
|
||||||
#删除七天前备份,也就是只保存7天内的备份
|
|
||||||
find ${backupPath} -name "*.tar.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
|
|
||||||
echo ">>>> 备份所有数据库成功!" >> ${logPath}
|
|
||||||
else
|
|
||||||
#备份失败则进行以下操作
|
|
||||||
echo ">>>> 备份所有数据库失败!" >> ${logPath}
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
#备份指定数据库列表
|
|
||||||
for database in ${databaseList}; do
|
|
||||||
filename="${database}-${backupDate}"
|
|
||||||
source=`mysqldump -h ${dbServer} -u ${dbUser} -p${dbPassword} ${database} > ${backupPath}/${filename}.sql` 2>> ${logPath};
|
|
||||||
#备份成功以下操作
|
|
||||||
if [[ "$?" == 0 ]];then
|
|
||||||
cd ${backupPath}
|
|
||||||
#为节约硬盘空间,将数据库压缩
|
|
||||||
tar zcf ${filename}.tar.gz ${filename}.sql > /dev/null
|
|
||||||
#删除原始文件,只留压缩后文件
|
|
||||||
rm -f ${backupPath}/${filename}.sql
|
|
||||||
#删除七天前备份,也就是只保存7天内的备份
|
|
||||||
find ${backupPath} -name "*.tar.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
|
|
||||||
echo ">>>> 备份数据库 ${database} 成功!" >> ${logPath}
|
|
||||||
else
|
|
||||||
#备份失败则进行以下操作
|
|
||||||
echo ">>>> 备份数据库 ${database} 失败!" >> ${logPath}
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
endTime=`date +"%Y-%m-%d %H:%M:%S"`
|
|
||||||
echo "备份数据库结束,时间:${endTime}" >> ${logPath}
|
|
||||||
|
|
|
@ -1,71 +1,143 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
###################################################################################
|
# -----------------------------------------------------------------------------------------------------
|
||||||
# 控制台颜色
|
# 安装 Mysql 脚本
|
||||||
BLACK="\033[1;30m"
|
# 仅适用于 CentOS7 发行版本
|
||||||
RED="\033[1;31m"
|
|
||||||
GREEN="\033[1;32m"
|
|
||||||
YELLOW="\033[1;33m"
|
|
||||||
BLUE="\033[1;34m"
|
|
||||||
PURPLE="\033[1;35m"
|
|
||||||
CYAN="\033[1;36m"
|
|
||||||
RESET="$(tput sgr0)"
|
|
||||||
###################################################################################
|
|
||||||
|
|
||||||
printf "${BLUE}"
|
|
||||||
cat << EOF
|
|
||||||
|
|
||||||
###################################################################################
|
|
||||||
# 安装 mysql 脚本
|
|
||||||
# @system: 适用于 Centos7 发行版本。
|
|
||||||
# @author: Zhang Peng
|
# @author: Zhang Peng
|
||||||
###################################################################################
|
# -----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
EOF
|
# ------------------------------------------------------------------------------ env
|
||||||
printf "${RESET}"
|
|
||||||
|
|
||||||
printf "${GREEN}>>>>>>>> install mysql begin.${RESET}\n"
|
# Regular Color
|
||||||
|
export ENV_COLOR_BLACK="\033[0;30m"
|
||||||
|
export ENV_COLOR_RED="\033[0;31m"
|
||||||
|
export ENV_COLOR_GREEN="\033[0;32m"
|
||||||
|
export ENV_COLOR_YELLOW="\033[0;33m"
|
||||||
|
export ENV_COLOR_BLUE="\033[0;34m"
|
||||||
|
export ENV_COLOR_MAGENTA="\033[0;35m"
|
||||||
|
export ENV_COLOR_CYAN="\033[0;36m"
|
||||||
|
export ENV_COLOR_WHITE="\033[0;37m"
|
||||||
|
# Bold Color
|
||||||
|
export ENV_COLOR_B_BLACK="\033[1;30m"
|
||||||
|
export ENV_COLOR_B_RED="\033[1;31m"
|
||||||
|
export ENV_COLOR_B_GREEN="\033[1;32m"
|
||||||
|
export ENV_COLOR_B_YELLOW="\033[1;33m"
|
||||||
|
export ENV_COLOR_B_BLUE="\033[1;34m"
|
||||||
|
export ENV_COLOR_B_MAGENTA="\033[1;35m"
|
||||||
|
export ENV_COLOR_B_CYAN="\033[1;36m"
|
||||||
|
export ENV_COLOR_B_WHITE="\033[1;37m"
|
||||||
|
# Reset Color
|
||||||
|
export ENV_COLOR_RESET="$(tput sgr0)"
|
||||||
|
|
||||||
|
# status
|
||||||
|
export ENV_YES=0
|
||||||
|
export ENV_NO=1
|
||||||
|
export ENV_SUCCEED=0
|
||||||
|
export ENV_FAILED=1
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------ functions
|
||||||
|
|
||||||
|
# 显示打印日志的时间
|
||||||
|
SHELL_LOG_TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
|
||||||
|
# 那个用户在操作
|
||||||
|
USER=$(whoami)
|
||||||
|
|
||||||
|
redOutput() {
|
||||||
|
echo -e "${ENV_COLOR_RED} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
greenOutput() {
|
||||||
|
echo -e "${ENV_COLOR_B_GREEN} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
yellowOutput() {
|
||||||
|
echo -e "${ENV_COLOR_YELLOW} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
blueOutput() {
|
||||||
|
echo -e "${ENV_COLOR_BLUE} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
magentaOutput() {
|
||||||
|
echo -e "${ENV_COLOR_MAGENTA} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
cyanOutput() {
|
||||||
|
echo -e "${ENV_COLOR_CYAN} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
whiteOutput() {
|
||||||
|
echo -e "${ENV_COLOR_WHITE} $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
printInfo() {
|
||||||
|
echo -e "${ENV_COLOR_B_GREEN}[INFO] $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
printWarn() {
|
||||||
|
echo -e "${ENV_COLOR_B_YELLOW}[WARN] $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
printError() {
|
||||||
|
echo -e "${ENV_COLOR_B_RED}[ERROR] $@${ENV_COLOR_RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
callAndLog () {
|
||||||
|
$*
|
||||||
|
if [[ $? -eq ${ENV_SUCCEED} ]]; then
|
||||||
|
printInfo "$@"
|
||||||
|
return ${ENV_SUCCEED}
|
||||||
|
else
|
||||||
|
printError "$@ EXECUTE FAILED"
|
||||||
|
return ${ENV_FAILED}
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------ main
|
||||||
|
|
||||||
|
printInfo ">>>> install mysql begin"
|
||||||
|
|
||||||
command -v wget > /dev/null 2>&1 || {
|
command -v wget > /dev/null 2>&1 || {
|
||||||
printf "${RED}Require wget but it's not installed.${RESET}\n";
|
printError "Require wget but it's not installed"
|
||||||
exit 1;
|
exit 1;
|
||||||
}
|
}
|
||||||
command -v rpm > /dev/null 2>&1 || {
|
command -v rpm > /dev/null 2>&1 || {
|
||||||
printf "${RED}Require rpm but it's not installed.${RESET}\n";
|
printError "Require rpm but it's not installed"
|
||||||
exit 1;
|
exit 1;
|
||||||
}
|
}
|
||||||
command -v yum > /dev/null 2>&1 || {
|
command -v yum > /dev/null 2>&1 || {
|
||||||
printf "${RED}Require yum but it's not installed.${RESET}\n";
|
printError "Require yum but it's not installed"
|
||||||
exit 1;
|
exit 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
# 使用 rpm 安装 mysql
|
printInfo ">>>> install mysql by rpm"
|
||||||
printf "${CYAN}>>>> yum install mysql${RESET}\n"
|
|
||||||
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
|
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
|
||||||
sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
|
sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
|
||||||
sudo yum install mysql-community-server
|
sudo yum install mysql-community-server
|
||||||
|
|
||||||
printf "${CYAN}>>>> replace settings${RESET}\n"
|
printInfo ">>>> modify my.cnf"
|
||||||
cp /etc/my.cnf /etc/my.cnf.bak
|
cp /etc/my.cnf /etc/my.cnf.bak
|
||||||
wget -N https://gitee.com/turnon/linux-tutorial/raw/master/codes/linux/soft/config/mysql/my.cnf -O /etc/my.cnf
|
wget -N https://gitee.com/turnon/linux-tutorial/raw/master/codes/linux/soft/config/mysql/my.cnf -O /etc/my.cnf
|
||||||
# 创建空的慢查询日志文件
|
|
||||||
|
printInfo ">>>> create mysql log file"
|
||||||
mkdir -p /var/log/mysql
|
mkdir -p /var/log/mysql
|
||||||
touch /var/log/mysql/mysql-slow.log
|
touch /var/log/mysql/mysql-slow.log
|
||||||
chmod 777 /var/log/mysql/mysql-slow.log
|
chmod 777 /var/log/mysql/mysql-slow.log
|
||||||
chown -R mysql:mysql /var/log/mysql
|
chown -R mysql:mysql /var/log/mysql
|
||||||
|
|
||||||
# 设置开机启动
|
printInfo ">>>> modify limits.conf"
|
||||||
printf "${CYAN}>>>> start mysqld${RESET}\n"
|
|
||||||
systemctl enable mysqld
|
|
||||||
systemctl start mysqld
|
|
||||||
systemctl daemon-reload
|
|
||||||
|
|
||||||
cat >> /etc/security/limits.conf << EOF
|
cat >> /etc/security/limits.conf << EOF
|
||||||
mysql soft nofile 65536
|
mysql soft nofile 65536
|
||||||
mysql hard nofile 65536
|
mysql hard nofile 65536
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
password=$(grep "password" /var/log/mysqld.log | awk '{print $NF}')
|
printInfo ">>>> start mysqld"
|
||||||
printf "临时密码为:${PURPLE}${password}${RESET},请登录 mysql 后重置新密码\n"
|
systemctl enable mysqld
|
||||||
|
systemctl start mysqld
|
||||||
|
systemctl daemon-reload
|
||||||
|
|
||||||
printf "${GREEN}<<<<<<<< install mysql end.${RESET}\n"
|
printInfo ">>>> 管理员密码如下,请登录 mysql 后重置新密码:"
|
||||||
|
password=$(grep "password" /var/log/mysql/mysql.log | awk '{print $NF}')
|
||||||
|
blueOutput "${password}"
|
||||||
|
|
||||||
|
printInfo "<<<< install mysql success"
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------------------------------
|
||||||
|
# MYSQL 恢复脚本
|
||||||
|
# @author Zhang Peng
|
||||||
|
# -----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------ env
|
||||||
|
# Mysql Host
|
||||||
|
export ENV_MYSQL_HOST="127.0.0.1"
|
||||||
|
# Mysql 端口
|
||||||
|
export ENV_MYSQL_PORT=3306
|
||||||
|
# Mysql 用户名
|
||||||
|
export ENV_MYSQL_USERNAME=root
|
||||||
|
# Mysql 密码
|
||||||
|
export ENV_MYSQL_PASSWORD=root
|
||||||
|
# Mysql 备份文件最大数量
|
||||||
|
export ENV_BACKUP_MAX_NUM=7
|
||||||
|
# 备份模式:备份所有数据库(--all-databases)|备份指定数据库列表
|
||||||
|
export ENV_MYSQL_DATABASES=--all-databases
|
||||||
|
# 备份路径
|
||||||
|
export ENV_MYSQL_BACKUP_DIR=/var/lib/mysql/backup
|
||||||
|
# 备份日志路径
|
||||||
|
export ENV_LOG_PATH="${ENV_MYSQL_BACKUP_DIR}/mysql-backup.log"
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------ libs
|
||||||
|
LINUX_SCRIPTS_LIB_DIR=`dirname ${BASH_SOURCE[0]}`
|
||||||
|
if [[ ! -x ${LINUX_SCRIPTS_LIB_DIR}/lib/mysql.sh ]]; then
|
||||||
|
echo "${LINUX_SCRIPTS_LIB_DIR}/lib/mysql.sh not exists!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
source ${LINUX_SCRIPTS_LIB_DIR}/lib/mysql.sh
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------ main
|
||||||
|
# 执行备份方法
|
||||||
|
recoveryMysql
|
|
@ -49,7 +49,7 @@ Kubernetes 主要由以下几个核心组件组成:
|
||||||
|
|
||||||
K8S 包含若干抽象用来表示系统状态,包括:已部署的容器化应用和负载、与它们相关的网络和磁盘资源以及有关集群正在运行的其他操作的信息。
|
K8S 包含若干抽象用来表示系统状态,包括:已部署的容器化应用和负载、与它们相关的网络和磁盘资源以及有关集群正在运行的其他操作的信息。
|
||||||
|
|
||||||
<br>![img](http://dunwu.test.upcdn.net/cs/os/kubernetes/pod.svg!zp)<br>
|
![img](http://dunwu.test.upcdn.net/cs/os/kubernetes/pod.svg!zp)
|
||||||
|
|
||||||
- `Pod` - K8S 使用 Pod 来管理容器,每个 Pod 可以包含一个或多个紧密关联的容器。Pod 是一组紧密关联的容器集合,它们共享 PID、IPC、Network 和 UTS namespace,是 K8S 调度的基本单位。Pod 内的多个容器共享网络和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务。
|
- `Pod` - K8S 使用 Pod 来管理容器,每个 Pod 可以包含一个或多个紧密关联的容器。Pod 是一组紧密关联的容器集合,它们共享 PID、IPC、Network 和 UTS namespace,是 K8S 调度的基本单位。Pod 内的多个容器共享网络和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务。
|
||||||
- `Node` - Node 是 Pod 真正运行的主机,可以是物理机,也可以是虚拟机。为了管理 Pod,每个 Node 节点上至少要运行 container runtime(比如 docker 或者 rkt)、`kubelet` 和 `kube-proxy` 服务。
|
- `Node` - Node 是 Pod 真正运行的主机,可以是物理机,也可以是虚拟机。为了管理 Pod,每个 Node 节点上至少要运行 container runtime(比如 docker 或者 rkt)、`kubelet` 和 `kube-proxy` 服务。
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
linux 目录结构是树形结构,其根目录是 `/` 。一张思维导图说明各个目录的作用:
|
linux 目录结构是树形结构,其根目录是 `/` 。一张思维导图说明各个目录的作用:
|
||||||
|
|
||||||
<br>![img](http://dunwu.test.upcdn.net/cs/os/linux/linux-folders.png!zp)<br>
|
![img](http://dunwu.test.upcdn.net/cs/os/linux/linux-folders.png!zp)
|
||||||
|
|
||||||
### 1.2. Linux 文件属性
|
### 1.2. Linux 文件属性
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
|
||||||
|
|
||||||
每个文件的属性由左边第一部分的 10 个字符来确定(如下图)。
|
每个文件的属性由左边第一部分的 10 个字符来确定(如下图)。
|
||||||
|
|
||||||
<br>![img](http://dunwu.test.upcdn.net/snap/20180920180927171909.png!zp)<br>
|
![img](http://dunwu.test.upcdn.net/snap/20180920180927171909.png!zp)
|
||||||
|
|
||||||
从左至右用 0-9 这些数字来表示。
|
从左至右用 0-9 这些数字来表示。
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ _[Čeština](README-cs.md) ∙ [Deutsch](README-de.md) ∙ [Ελληνικά](RE
|
||||||
|
|
||||||
# 命令行的艺术
|
# 命令行的艺术
|
||||||
|
|
||||||
<br>![img](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)<br>
|
![img](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||||
|
|
||||||
- [前言](#前言)
|
- [前言](#前言)
|
||||||
- [基础](#基础)
|
- [基础](#基础)
|
||||||
|
@ -18,7 +18,7 @@ _[Čeština](README-cs.md) ∙ [Deutsch](README-de.md) ∙ [Ελληνικά](RE
|
||||||
- [更多资源](#更多资源)
|
- [更多资源](#更多资源)
|
||||||
- [免责声明](#免责声明)
|
- [免责声明](#免责声明)
|
||||||
|
|
||||||
<br>![img](https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/cowsay.png)<br>
|
![img](https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/cowsay.png)
|
||||||
|
|
||||||
熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会提高你作为工程师的灵活性以及生产力。本文是一份我在 Linux 上工作时,发现的一些命令行使用技巧的摘要。有些技巧非常基础,而另一些则相当复杂,甚至晦涩难懂。这篇文章并不长,但当你能够熟练掌握这里列出的所有技巧时,你就学会了很多关于命令行的东西了。
|
熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会提高你作为工程师的灵活性以及生产力。本文是一份我在 Linux 上工作时,发现的一些命令行使用技巧的摘要。有些技巧非常基础,而另一些则相当复杂,甚至晦涩难懂。这篇文章并不长,但当你能够熟练掌握这里列出的所有技巧时,你就学会了很多关于命令行的东西了。
|
||||||
|
|
||||||
|
@ -616,6 +616,6 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir
|
||||||
|
|
||||||
## 授权条款
|
## 授权条款
|
||||||
|
|
||||||
<br>![img](http://creativecommons.org/licenses/by-sa/4.0/)<br>
|
![img](http://creativecommons.org/licenses/by-sa/4.0/)
|
||||||
|
|
||||||
本文使用授权协议 [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/)。
|
本文使用授权协议 [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/)。
|
||||||
|
|
|
@ -149,7 +149,7 @@ Windows:
|
||||||
|
|
||||||
访问:`\\<你的ip>\<你的共享路径>` :
|
访问:`\\<你的ip>\<你的共享路径>` :
|
||||||
|
|
||||||
<br>![img](http://dunwu.test.upcdn.net/snap/20180920180928161334.png!zp)<br>
|
![img](http://dunwu.test.upcdn.net/snap/20180920180928161334.png!zp)
|
||||||
|
|
||||||
Mac:
|
Mac:
|
||||||
|
|
||||||
|
|
|
@ -147,7 +147,7 @@ Vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错
|
||||||
>
|
>
|
||||||
> \> 如果你认为单词是由 blank 字符分隔符,那么你需要使用大写的 E 和 W。(注:程序语句)
|
> \> 如果你认为单词是由 blank 字符分隔符,那么你需要使用大写的 E 和 W。(注:程序语句)
|
||||||
>
|
>
|
||||||
> <br>![img](http://upload-images.jianshu.io/upload_images/3101171-46f752c581d79057.jpg)<br>
|
> ![img](http://upload-images.jianshu.io/upload_images/3101171-46f752c581d79057.jpg)
|
||||||
|
|
||||||
下面,让我来说说最强的光标移动:
|
下面,让我来说说最强的光标移动:
|
||||||
|
|
||||||
|
@ -196,7 +196,7 @@ Vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错
|
||||||
> - `t,` → 到逗号前的第一个字符。逗号可以变成其它字符。
|
> - `t,` → 到逗号前的第一个字符。逗号可以变成其它字符。
|
||||||
> - `3fa` → 在当前行查找第三个出现的 a。
|
> - `3fa` → 在当前行查找第三个出现的 a。
|
||||||
> - `F` 和 `T` → 和 `f` 和 `t` 一样,只不过是相反方向。
|
> - `F` 和 `T` → 和 `f` 和 `t` 一样,只不过是相反方向。
|
||||||
> <br>![img](http://upload-images.jianshu.io/upload_images/3101171-00835b8316330c58.jpg)<br>
|
> ![img](http://upload-images.jianshu.io/upload_images/3101171-00835b8316330c58.jpg)
|
||||||
|
|
||||||
还有一个很有用的命令是 `dt"` → 删除所有的内容,直到遇到双引号—— `"。`
|
还有一个很有用的命令是 `dt"` → 删除所有的内容,直到遇到双引号—— `"。`
|
||||||
|
|
||||||
|
@ -218,7 +218,7 @@ Vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错
|
||||||
> - `v2i)` → 会选择 `map (+) ("foo")`
|
> - `v2i)` → 会选择 `map (+) ("foo")`
|
||||||
> - `v2a)` → 会选择 `(map (+) ("foo"))`
|
> - `v2a)` → 会选择 `(map (+) ("foo"))`
|
||||||
|
|
||||||
<br>![img](http://upload-images.jianshu.io/upload_images/3101171-0b109d66a6111c83.png)<br>
|
![img](http://upload-images.jianshu.io/upload_images/3101171-0b109d66a6111c83.png)
|
||||||
|
|
||||||
#### 2.4.3. 块操作: `<C-v>`
|
#### 2.4.3. 块操作: `<C-v>`
|
||||||
|
|
||||||
|
@ -229,7 +229,7 @@ Vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错
|
||||||
- `<C-d>` → 向下移动 (你也可以使用 hjkl 来移动光标,或是使用%,或是别的)
|
- `<C-d>` → 向下移动 (你也可以使用 hjkl 来移动光标,或是使用%,或是别的)
|
||||||
- `I-- [ESC]` → I 是插入,插入“`--`”,按 ESC 键来为每一行生效。
|
- `I-- [ESC]` → I 是插入,插入“`--`”,按 ESC 键来为每一行生效。
|
||||||
|
|
||||||
<br>![img](http://upload-images.jianshu.io/upload_images/3101171-8b093a0f65707949.gif?imageMogr2/auto-orient/strip)<br>
|
![img](http://upload-images.jianshu.io/upload_images/3101171-8b093a0f65707949.gif?imageMogr2/auto-orient/strip)
|
||||||
|
|
||||||
在 Windows 下的 vim,你需要使用 `<C-q>` 而不是 `<C-v>` ,`<C-v>` 是拷贝剪贴板。
|
在 Windows 下的 vim,你需要使用 `<C-q>` 而不是 `<C-v>` ,`<C-v>` 是拷贝剪贴板。
|
||||||
|
|
||||||
|
@ -237,7 +237,7 @@ Vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错
|
||||||
|
|
||||||
在 Insert 模式下,你可以输入一个词的开头,然后按 `<C-p>或是<C-n>,自动补齐功能就出现了……`
|
在 Insert 模式下,你可以输入一个词的开头,然后按 `<C-p>或是<C-n>,自动补齐功能就出现了……`
|
||||||
|
|
||||||
<br>![img](http://upload-images.jianshu.io/upload_images/3101171-e2ae877e67880ff7.gif?imageMogr2/auto-orient/strip)<br>
|
![img](http://upload-images.jianshu.io/upload_images/3101171-e2ae877e67880ff7.gif?imageMogr2/auto-orient/strip)
|
||||||
|
|
||||||
#### 2.4.5. 宏录制: `qa` 操作序列 `q`, `@a`, `@@`
|
#### 2.4.5. 宏录制: `qa` 操作序列 `q`, `@a`, `@@`
|
||||||
|
|
||||||
|
@ -266,7 +266,7 @@ Vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错
|
||||||
>
|
>
|
||||||
> - 现在做 `100@@` 会创建新的 100 行,并把数据增加到 103.
|
> - 现在做 `100@@` 会创建新的 100 行,并把数据增加到 103.
|
||||||
|
|
||||||
<br>![img](http://upload-images.jianshu.io/upload_images/3101171-f1889f8bca723964.gif?imageMogr2/auto-orient/strip)<br>
|
![img](http://upload-images.jianshu.io/upload_images/3101171-f1889f8bca723964.gif?imageMogr2/auto-orient/strip)
|
||||||
|
|
||||||
#### 2.4.6. 可视化选择: `v`,`V`,`<C-v>`
|
#### 2.4.6. 可视化选择: `v`,`V`,`<C-v>`
|
||||||
|
|
||||||
|
@ -276,7 +276,7 @@ Vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错
|
||||||
- `<` 或 `>` → 左右缩进
|
- `<` 或 `>` → 左右缩进
|
||||||
- `=` → 自动给缩进 (注:这个功能相当强大,我太喜欢了)
|
- `=` → 自动给缩进 (注:这个功能相当强大,我太喜欢了)
|
||||||
|
|
||||||
<br>![img](http://upload-images.jianshu.io/upload_images/3101171-fe1e19983fca213f.gif?imageMogr2/auto-orient/strip)<br>
|
![img](http://upload-images.jianshu.io/upload_images/3101171-fe1e19983fca213f.gif?imageMogr2/auto-orient/strip)
|
||||||
|
|
||||||
在所有被选择的行后加上点东西:
|
在所有被选择的行后加上点东西:
|
||||||
|
|
||||||
|
@ -285,7 +285,7 @@ Vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错
|
||||||
- `$` 到行最后
|
- `$` 到行最后
|
||||||
- `A`, 输入字符串,按 `ESC。`
|
- `A`, 输入字符串,按 `ESC。`
|
||||||
|
|
||||||
<br>![img](http://upload-images.jianshu.io/upload_images/3101171-b192601247334c4e.gif?imageMogr2/auto-orient/strip)<br>
|
![img](http://upload-images.jianshu.io/upload_images/3101171-b192601247334c4e.gif?imageMogr2/auto-orient/strip)
|
||||||
|
|
||||||
#### 2.4.7. 分屏: `:split` 和 `vsplit`.
|
#### 2.4.7. 分屏: `:split` 和 `vsplit`.
|
||||||
|
|
||||||
|
@ -296,7 +296,7 @@ Vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错
|
||||||
> - `<C-w>_` (或 `<C-w>|`) : 最大化尺寸 (<C-w>| 垂直分屏)
|
> - `<C-w>_` (或 `<C-w>|`) : 最大化尺寸 (<C-w>| 垂直分屏)
|
||||||
> - `<C-w>+` (或 `<C-w>-`) : 增加尺寸
|
> - `<C-w>+` (或 `<C-w>-`) : 增加尺寸
|
||||||
|
|
||||||
<br>![img](http://upload-images.jianshu.io/upload_images/3101171-f329d01e299cb366.gif?imageMogr2/auto-orient/strip)<br>
|
![img](http://upload-images.jianshu.io/upload_images/3101171-f329d01e299cb366.gif?imageMogr2/auto-orient/strip)
|
||||||
|
|
||||||
## 3. Vim Cheat Sheet
|
## 3. Vim Cheat Sheet
|
||||||
|
|
||||||
|
@ -308,33 +308,33 @@ Vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错
|
||||||
|
|
||||||
此外,[这里](http://blog.ngedit.com/vi-vim-cheat-sheet-sch.gif)还有简体中文版。
|
此外,[这里](http://blog.ngedit.com/vi-vim-cheat-sheet-sch.gif)还有简体中文版。
|
||||||
|
|
||||||
<br>![img](http://dunwu.test.upcdn.net/cs/os/linux/vim/vim-cheat-sheet.png!zp)<br>
|
![img](http://dunwu.test.upcdn.net/cs/os/linux/vim/vim-cheat-sheet.png!zp)
|
||||||
|
|
||||||
### 3.2. 入门版
|
### 3.2. 入门版
|
||||||
|
|
||||||
基本操作的入门版。[原版出处](https://github.com/ahrencode/Miscellaneous)还有 keynote 版本可供 DIY 以及其他相关有用的 cheatsheet。
|
基本操作的入门版。[原版出处](https://github.com/ahrencode/Miscellaneous)还有 keynote 版本可供 DIY 以及其他相关有用的 cheatsheet。
|
||||||
|
|
||||||
<br>![img](http://dunwu.test.upcdn.net/cs/os/linux/vim/basic-vim-cheat-sheet.png!zp)<br>
|
![img](http://dunwu.test.upcdn.net/cs/os/linux/vim/basic-vim-cheat-sheet.png!zp)
|
||||||
|
|
||||||
### 3.3. 进阶版
|
### 3.3. 进阶版
|
||||||
|
|
||||||
下图是 300DPI 的超清大图,另外[查看原文](http://michael.peopleofhonoronly.com/vim/)还有更多版本:黑白,低分辨率,色盲等
|
下图是 300DPI 的超清大图,另外[查看原文](http://michael.peopleofhonoronly.com/vim/)还有更多版本:黑白,低分辨率,色盲等
|
||||||
|
|
||||||
<br>![img](http://dunwu.test.upcdn.net/cs/os/linux/vim/vim-cheat-sheet-for-programmers.png!zp)<br>
|
![img](http://dunwu.test.upcdn.net/cs/os/linux/vim/vim-cheat-sheet-for-programmers.png!zp)
|
||||||
|
|
||||||
### 3.4. 增强版
|
### 3.4. 增强版
|
||||||
|
|
||||||
下图是一个更新时间较新的现代版,含有的信息也更丰富。[原文链接](http://vimcheatsheet.com/)
|
下图是一个更新时间较新的现代版,含有的信息也更丰富。[原文链接](http://vimcheatsheet.com/)
|
||||||
|
|
||||||
<br>![img](http://dunwu.test.upcdn.net/cs/os/linux/vim/vim-cheat-sheet-02.png!zp)<br>
|
![img](http://dunwu.test.upcdn.net/cs/os/linux/vim/vim-cheat-sheet-02.png!zp)
|
||||||
|
|
||||||
### 3.5. 文字版
|
### 3.5. 文字版
|
||||||
|
|
||||||
[原文链接](http://tnerual.eriogerg.free.fr/vimqrc.pdf)
|
[原文链接](http://tnerual.eriogerg.free.fr/vimqrc.pdf)
|
||||||
|
|
||||||
<br>![img](http://dunwu.test.upcdn.net/cs/os/linux/vim/vim-cheat-sheet-text-01.png!zp)<br>
|
![img](http://dunwu.test.upcdn.net/cs/os/linux/vim/vim-cheat-sheet-text-01.png!zp)
|
||||||
|
|
||||||
<br>![img](http://dunwu.test.upcdn.net/cs/os/linux/vim/vim-cheat-sheet-text-02.png!zp)<br>
|
![img](http://dunwu.test.upcdn.net/cs/os/linux/vim/vim-cheat-sheet-text-02.png!zp)
|
||||||
|
|
||||||
## 4. 资料
|
## 4. 资料
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ Beats 是安装在服务器上的数据中转代理。
|
||||||
|
|
||||||
Beats 可以将数据直接传输到 Elasticsearch 或传输到 Logstash 。
|
Beats 可以将数据直接传输到 Elasticsearch 或传输到 Logstash 。
|
||||||
|
|
||||||
<br>![img](https://www.elastic.co/guide/en/beats/libbeat/current/images/beats-platform.png)<br>
|
![img](https://www.elastic.co/guide/en/beats/libbeat/current/images/beats-platform.png)
|
||||||
|
|
||||||
Beats 有多种类型,可以根据实际应用需要选择合适的类型。
|
Beats 有多种类型,可以根据实际应用需要选择合适的类型。
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ Filebeat带有内部模块(auditd,Apache,Nginx,System和MySQL),可
|
||||||
|
|
||||||
FileBeat 不会让你的管道超负荷。FileBeat 如果是向 Logstash 传输数据,当 Logstash 忙于处理数据,会通知 FileBeat 放慢读取速度。一旦拥塞得到解决,FileBeat 将恢复到原来的速度并继续传播。
|
FileBeat 不会让你的管道超负荷。FileBeat 如果是向 Logstash 传输数据,当 Logstash 忙于处理数据,会通知 FileBeat 放慢读取速度。一旦拥塞得到解决,FileBeat 将恢复到原来的速度并继续传播。
|
||||||
|
|
||||||
<br>![img](https://www.elastic.co/guide/en/beats/filebeat/current/images/filebeat.png)<br>
|
![img](https://www.elastic.co/guide/en/beats/filebeat/current/images/filebeat.png)
|
||||||
|
|
||||||
## 安装
|
## 安装
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
单击侧面导航栏中的 `Discover` ,可以显示 `Kibana` 的数据查询功能功能。
|
单击侧面导航栏中的 `Discover` ,可以显示 `Kibana` 的数据查询功能功能。
|
||||||
|
|
||||||
<br>![img](https://www.elastic.co/guide/en/kibana/current/images/tutorial-discover.png)<br>
|
![img](https://www.elastic.co/guide/en/kibana/current/images/tutorial-discover.png)
|
||||||
|
|
||||||
在搜索栏中,您可以输入Elasticsearch查询条件来搜索您的数据。您可以在 `Discover` 页面中浏览结果并在 `Visualize` 页面中创建已保存搜索条件的可视化。
|
在搜索栏中,您可以输入Elasticsearch查询条件来搜索您的数据。您可以在 `Discover` 页面中浏览结果并在 `Visualize` 页面中创建已保存搜索条件的可视化。
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
默认情况下,每个匹配文档都显示所有字段。要选择要显示的文档字段,请将鼠标悬停在“可用字段”列表上,然后单击要包含的每个字段旁边的添加按钮。例如,如果只添加account_number,则显示将更改为包含五个帐号的简单列表:
|
默认情况下,每个匹配文档都显示所有字段。要选择要显示的文档字段,请将鼠标悬停在“可用字段”列表上,然后单击要包含的每个字段旁边的添加按钮。例如,如果只添加account_number,则显示将更改为包含五个帐号的简单列表:
|
||||||
|
|
||||||
<br>![img](https://www.elastic.co/guide/en/kibana/6.1/images/tutorial-discover-3.png)<br>
|
![img](https://www.elastic.co/guide/en/kibana/6.1/images/tutorial-discover-3.png)
|
||||||
|
|
||||||
### 查询语义
|
### 查询语义
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ Logstash 有两个必要元素:`input` 和 `output` ,一个可选元素:`f
|
||||||
|
|
||||||
这三个元素,分别代表 Logstash 事件处理的三个阶段:输入 > 过滤器 > 输出。
|
这三个元素,分别代表 Logstash 事件处理的三个阶段:输入 > 过滤器 > 输出。
|
||||||
|
|
||||||
<br>![img](https://www.elastic.co/guide/en/logstash/current/static/images/basic_logstash_pipeline.png)<br>
|
![img](https://www.elastic.co/guide/en/logstash/current/static/images/basic_logstash_pipeline.png)
|
||||||
|
|
||||||
- input 负责从数据源采集数据。
|
- input 负责从数据源采集数据。
|
||||||
- filter 将数据修改为你指定的格式或内容。
|
- filter 将数据修改为你指定的格式或内容。
|
||||||
|
|
|
@ -32,7 +32,7 @@ ELK 是 elastic 公司旗下三款产品 [ElasticSearch](https://www.elastic.co/
|
||||||
|
|
||||||
### Elastic 架构
|
### Elastic 架构
|
||||||
|
|
||||||
<br>![img](https://www.elastic.co/guide/en/logstash/current/static/images/deploy3.png)<br>
|
![img](https://www.elastic.co/guide/en/logstash/current/static/images/deploy3.png)
|
||||||
|
|
||||||
> **说明**
|
> **说明**
|
||||||
>
|
>
|
||||||
|
@ -274,7 +274,7 @@ output {
|
||||||
|
|
||||||
大功告成,此后,`io.github.dunwu.spring` 包中的 TRACE 及以上级别的日志信息都会被定向输出到 logstash 服务。
|
大功告成,此后,`io.github.dunwu.spring` 包中的 TRACE 及以上级别的日志信息都会被定向输出到 logstash 服务。
|
||||||
|
|
||||||
<br>![img](http://upload-images.jianshu.io/upload_images/3101171-cd876d79a14955b0.png)<br>
|
![img](http://upload-images.jianshu.io/upload_images/3101171-cd876d79a14955b0.png)
|
||||||
|
|
||||||
## 资料
|
## 资料
|
||||||
|
|
||||||
|
|
|
@ -1,31 +1,16 @@
|
||||||
# Gitlab 安装
|
# Gitlab 运维
|
||||||
|
|
||||||
> 环境:
|
## gitlab 安装
|
||||||
>
|
|
||||||
> OS: CentOS7
|
|
||||||
|
|
||||||
<!-- TOC depthFrom:2 depthTo:3 -->
|
### Gitlab 的普通安装
|
||||||
|
|
||||||
- [安装 gitlab](#安装-gitlab)
|
#### 下载
|
||||||
- [常规安装 gitlab](#常规安装-gitlab)
|
|
||||||
- [Docker 安装 gitlab](#docker-安装-gitlab)
|
|
||||||
- [安装 gitlab-ci-multi-runner](#安装-gitlab-ci-multi-runner)
|
|
||||||
- [常规安装 gitlab-ci-multi-runner](#常规安装-gitlab-ci-multi-runner)
|
|
||||||
- [Docker 安装 gitlab-ci-multi-runner](#docker-安装-gitlab-ci-multi-runner)
|
|
||||||
- [自签名证书](#自签名证书)
|
|
||||||
- [创建证书](#创建证书)
|
|
||||||
- [gitlab 配置](#gitlab-配置)
|
|
||||||
- [更多内容](#更多内容)
|
|
||||||
|
|
||||||
<!-- /TOC -->
|
|
||||||
|
|
||||||
## 安装 gitlab
|
|
||||||
|
|
||||||
### 常规安装 gitlab
|
|
||||||
|
|
||||||
进入官方下载地址:https://about.gitlab.com/install/ ,如下图,选择合适的版本。
|
进入官方下载地址:https://about.gitlab.com/install/ ,如下图,选择合适的版本。
|
||||||
|
|
||||||
<br>![img](http://dunwu.test.upcdn.net/snap/20190129155838.png!zp)<br>
|
![img](http://dunwu.test.upcdn.net/snap/20190129155838.png!zp)
|
||||||
|
|
||||||
以 CentOS7 为例:
|
以 CentOS7 为例:
|
||||||
|
|
||||||
|
@ -65,7 +50,7 @@ sudo EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ce
|
||||||
|
|
||||||
安装完成后,即可通过默认的 root 账户进行登录。更多细节可以参考:[documentation for detailed instructions on installing and configuration](https://docs.gitlab.com/omnibus/README.html#installation-and-configuration-using-omnibus-package)
|
安装完成后,即可通过默认的 root 账户进行登录。更多细节可以参考:[documentation for detailed instructions on installing and configuration](https://docs.gitlab.com/omnibus/README.html#installation-and-configuration-using-omnibus-package)
|
||||||
|
|
||||||
### Docker 安装 gitlab
|
### Gitlab 的 Docker 安装
|
||||||
|
|
||||||
拉取镜像
|
拉取镜像
|
||||||
|
|
||||||
|
@ -87,9 +72,9 @@ docker run -d \
|
||||||
gitlab/gitlab-ce
|
gitlab/gitlab-ce
|
||||||
```
|
```
|
||||||
|
|
||||||
<br>![img](http://dunwu.test.upcdn.net/snap/20190131150515.png!zp)<br>
|
![img](http://dunwu.test.upcdn.net/snap/20190131150515.png!zp)
|
||||||
|
|
||||||
## 安装 gitlab-ci-multi-runner
|
## gitlab-ci-multi-runner 安装
|
||||||
|
|
||||||
> 参考:https://docs.gitlab.com/runner/install/
|
> 参考:https://docs.gitlab.com/runner/install/
|
||||||
|
|
||||||
|
@ -138,7 +123,7 @@ sudo gitlab-runner register
|
||||||
|
|
||||||
URL 和令牌信息在 Gitlab 的 Runner 管理页面获取:
|
URL 和令牌信息在 Gitlab 的 Runner 管理页面获取:
|
||||||
|
|
||||||
<br>![img](http://dunwu.test.upcdn.net/snap/20190129163100.png!zp)<br>
|
![img](http://dunwu.test.upcdn.net/snap/20190129163100.png!zp)
|
||||||
|
|
||||||
```
|
```
|
||||||
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
|
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
|
||||||
|
@ -302,31 +287,31 @@ sudo gitlab-ctl restart
|
||||||
|
|
||||||
3. 打开 **Profile settings**.
|
3. 打开 **Profile settings**.
|
||||||
|
|
||||||
<br>![img](https://docs.gitlab.com/ce/gitlab-basics/img/profile_settings.png)<br>
|
![img](https://docs.gitlab.com/ce/gitlab-basics/img/profile_settings.png)
|
||||||
|
|
||||||
4. 跳转到 **SSH keys** tab 页
|
4. 跳转到 **SSH keys** tab 页
|
||||||
|
|
||||||
<br>![img](https://docs.gitlab.com/ce/gitlab-basics/img/profile_settings_ssh_keys.png)<br>
|
![img](https://docs.gitlab.com/ce/gitlab-basics/img/profile_settings_ssh_keys.png)
|
||||||
|
|
||||||
5. 黏贴你的 SSH 公钥内容到 Key 文本框
|
5. 黏贴你的 SSH 公钥内容到 Key 文本框
|
||||||
|
|
||||||
<br>![img](https://docs.gitlab.com/ce/gitlab-basics/img/profile_settings_ssh_keys_paste_pub.png)<br>
|
![img](https://docs.gitlab.com/ce/gitlab-basics/img/profile_settings_ssh_keys_paste_pub.png)
|
||||||
|
|
||||||
6. 为了便于识别,你可以为其命名
|
6. 为了便于识别,你可以为其命名
|
||||||
|
|
||||||
<br>![img](https://docs.gitlab.com/ce/gitlab-basics/img/profile_settings_ssh_keys_title.png)<br>
|
![img](https://docs.gitlab.com/ce/gitlab-basics/img/profile_settings_ssh_keys_title.png)
|
||||||
|
|
||||||
7. 点击 **Add key** 将 SSH 公钥添加到 GitLab
|
7. 点击 **Add key** 将 SSH 公钥添加到 GitLab
|
||||||
|
|
||||||
<br>![img](https://docs.gitlab.com/ce/gitlab-basics/img/profile_settings_ssh_keys_single_key.png)<br>
|
![img](https://docs.gitlab.com/ce/gitlab-basics/img/profile_settings_ssh_keys_single_key.png)
|
||||||
|
|
||||||
### 创建项目
|
### 创建项目
|
||||||
|
|
||||||
<br>![img](http://dunwu.test.upcdn.net/snap/20190131150658.png!zp)<br>
|
![img](http://dunwu.test.upcdn.net/snap/20190131150658.png!zp)
|
||||||
|
|
||||||
输入项目信息,点击 Create project 按钮,在 Gitlab 创建项目。
|
输入项目信息,点击 Create project 按钮,在 Gitlab 创建项目。
|
||||||
|
|
||||||
<br>![img](http://dunwu.test.upcdn.net/snap/20190131150759.png!zp)<br>
|
![img](http://dunwu.test.upcdn.net/snap/20190131150759.png!zp)
|
||||||
|
|
||||||
### 克隆项目到本地
|
### 克隆项目到本地
|
||||||
|
|
||||||
|
@ -338,25 +323,44 @@ sudo gitlab-ctl restart
|
||||||
|
|
||||||
依次点击 **Project’s Dashboard** > **Issues** > **New Issue** 可以新建 Issue
|
依次点击 **Project’s Dashboard** > **Issues** > **New Issue** 可以新建 Issue
|
||||||
|
|
||||||
<br>![img](https://docs.gitlab.com/ce/user/project/issues/img/new_issue_from_tracker_list.png)<br>
|
![img](https://docs.gitlab.com/ce/user/project/issues/img/new_issue_from_tracker_list.png)
|
||||||
|
|
||||||
在项目中直接添加 issue
|
在项目中直接添加 issue
|
||||||
|
|
||||||
<br>![img](https://docs.gitlab.com/ce/user/project/issues/img/new_issue.png)<br>
|
![img](https://docs.gitlab.com/ce/user/project/issues/img/new_issue.png)
|
||||||
|
|
||||||
在未关闭 issue 中,点击 **New Issue** 添加 issue
|
在未关闭 issue 中,点击 **New Issue** 添加 issue
|
||||||
|
|
||||||
<br>![img](https://docs.gitlab.com/ce/user/project/issues/img/new_issue_from_open_issue.png)<br>
|
![img](https://docs.gitlab.com/ce/user/project/issues/img/new_issue_from_open_issue.png)
|
||||||
|
|
||||||
通过项目面板添加 issue
|
通过项目面板添加 issue
|
||||||
|
|
||||||
<br>![img](https://docs.gitlab.com/ce/user/project/issues/img/new_issue_from_projects_dashboard.png)<br>
|
![img](https://docs.gitlab.com/ce/user/project/issues/img/new_issue_from_projects_dashboard.png)
|
||||||
|
|
||||||
通过 issue 面板添加 issue
|
通过 issue 面板添加 issue
|
||||||
|
|
||||||
<br>![img](https://docs.gitlab.com/ce/user/project/issues/img/new_issue_from_issue_board.png)<br>
|
![img](https://docs.gitlab.com/ce/user/project/issues/img/new_issue_from_issue_board.png)
|
||||||
|
|
||||||
## 更多内容
|
## gitlab 权限配置
|
||||||
|
|
||||||
|
### 用户组的权限
|
||||||
|
|
||||||
|
- 用户组有这几种权限的概念:`Guest、Reporter、Developer、Master、Owner`
|
||||||
|
- 这个概念在设置用户组的时候会遇到,叫做:`Add user(s) to the group`,比如链接:`https://<gitlab_host>/<group>`
|
||||||
|
|
||||||
|
| 行为 | Guest | Reporter | Developer | Master | Owner |
|
||||||
|
| ---------- | ----- | -------- | --------- | ------ | ----- |
|
||||||
|
| 浏览组 | ✓ | ✓ | ✓ | ✓ | ✓ |
|
||||||
|
| 编辑组 | | | | | ✓ |
|
||||||
|
| 创建项目 | | | | ✓ | ✓ |
|
||||||
|
| 管理组成员 | | | | | ✓ |
|
||||||
|
| 移除组 | | | | | |
|
||||||
|
|
||||||
|
## 资料
|
||||||
|
|
||||||
|
- 官网:https://about.gitlab.com/
|
||||||
|
- 中文网:https://www.gitlab.com.cn/
|
||||||
|
- 官网下载:https://about.gitlab.com/downloads/
|
||||||
|
- 官网安装说明:https://about.gitlab.com/installation/#centos-7
|
||||||
|
|
||||||
- **引申**
|
|
||||||
- [操作系统、运维部署总结系列](https://github.com/dunwu/OS)
|
- [操作系统、运维部署总结系列](https://github.com/dunwu/OS)
|
|
@ -22,13 +22,13 @@ a. 进入 [Java 官网下载页面](https://www.oracle.com/technetwork/java/java
|
||||||
|
|
||||||
b. 选择需要的版本:
|
b. 选择需要的版本:
|
||||||
|
|
||||||
<br>![img](http://dunwu.test.upcdn.net/snap/20180920181010164121.png!zp)<br>
|
![img](http://dunwu.test.upcdn.net/snap/20180920181010164121.png!zp)
|
||||||
|
|
||||||
c. 选择对应操作系统的安装包:
|
c. 选择对应操作系统的安装包:
|
||||||
|
|
||||||
Windows 系统选择 exe 安装包;Mac 系统选择 dmp 安装包;Linux 系统选择 tar.gz 压缩包(RedHat 发行版可以安装 rpm 包)。
|
Windows 系统选择 exe 安装包;Mac 系统选择 dmp 安装包;Linux 系统选择 tar.gz 压缩包(RedHat 发行版可以安装 rpm 包)。
|
||||||
|
|
||||||
<br>![img](http://dunwu.test.upcdn.net/snap/20180920181010164308.png!zp)<br>
|
![img](http://dunwu.test.upcdn.net/snap/20180920181010164308.png!zp)
|
||||||
|
|
||||||
(2)运行安装包,按提示逐步安装
|
(2)运行安装包,按提示逐步安装
|
||||||
|
|
||||||
|
@ -51,11 +51,11 @@ Windows 系统选择 exe 安装包;Mac 系统选择 dmp 安装包;Linux 系
|
||||||
|
|
||||||
a. 安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置";
|
a. 安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置";
|
||||||
|
|
||||||
<br>![img](https://www.runoob.com/wp-content/uploads/2013/12/win-java1.png)<br>
|
![img](https://www.runoob.com/wp-content/uploads/2013/12/win-java1.png)
|
||||||
|
|
||||||
b. 选择"高级"选项卡,点击"环境变量";
|
b. 选择"高级"选项卡,点击"环境变量";
|
||||||
|
|
||||||
<br>![img](https://www.runoob.com/wp-content/uploads/2013/12/java-win2.png)<br>
|
![img](https://www.runoob.com/wp-content/uploads/2013/12/java-win2.png)
|
||||||
|
|
||||||
然后就会出现如下图所示的画面:
|
然后就会出现如下图所示的画面:
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ a. "开始"->"运行",键入"cmd";
|
||||||
|
|
||||||
b. 键入命令: **java -version**、**java**、**javac** 几个命令,出现以下信息,说明环境变量配置成功;
|
b. 键入命令: **java -version**、**java**、**javac** 几个命令,出现以下信息,说明环境变量配置成功;
|
||||||
|
|
||||||
<br>![img](https://www.runoob.com/wp-content/uploads/2013/12/java-win9.png)<br>
|
![img](https://www.runoob.com/wp-content/uploads/2013/12/java-win9.png)
|
||||||
|
|
||||||
## Linux 系统安装方法
|
## Linux 系统安装方法
|
||||||
|
|
||||||
|
|
|
@ -98,7 +98,7 @@ Jenkins 是一个强大的 CI 工具,虽然本身使用 Java 开发,但也
|
||||||
|
|
||||||
General 是构建任务的一些基本配置。名称,描述之类的。
|
General 是构建任务的一些基本配置。名称,描述之类的。
|
||||||
|
|
||||||
![](http://dunwu.test.upcdn.net/snap/20200310221814.png)
|
![img](http://dunwu.test.upcdn.net/snap/20200310221814.png)
|
||||||
|
|
||||||
重要配置项:
|
重要配置项:
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ General 是构建任务的一些基本配置。名称,描述之类的。
|
||||||
|
|
||||||
**Source Code Management**,即源码管理,就是配置你代码的存放位置。
|
**Source Code Management**,即源码管理,就是配置你代码的存放位置。
|
||||||
|
|
||||||
![](http://dunwu.test.upcdn.net/snap/20200310222110.png)
|
![img](http://dunwu.test.upcdn.net/snap/20200310222110.png)
|
||||||
|
|
||||||
- **Git:** 支持主流的 Github 和 Gitlab 代码仓库。因我们的研发团队使用的是 gitlab,所以下面我只会对该项进行介绍。
|
- **Git:** 支持主流的 Github 和 Gitlab 代码仓库。因我们的研发团队使用的是 gitlab,所以下面我只会对该项进行介绍。
|
||||||
- **Repository URL**:仓库地址。
|
- **Repository URL**:仓库地址。
|
||||||
|
@ -124,7 +124,7 @@ General 是构建任务的一些基本配置。名称,描述之类的。
|
||||||
|
|
||||||
**Build Triggers**,即构建触发器,用于构建任务的触发器。
|
**Build Triggers**,即构建触发器,用于构建任务的触发器。
|
||||||
|
|
||||||
![](http://dunwu.test.upcdn.net/snap/20200310222608.png)
|
![img](http://dunwu.test.upcdn.net/snap/20200310222608.png)
|
||||||
|
|
||||||
配置说明:
|
配置说明:
|
||||||
|
|
||||||
|
@ -138,7 +138,7 @@ General 是构建任务的一些基本配置。名称,描述之类的。
|
||||||
|
|
||||||
**Build Environment**,即构建环境,配置构建前的一些准备工作,如指定构建工具。
|
**Build Environment**,即构建环境,配置构建前的一些准备工作,如指定构建工具。
|
||||||
|
|
||||||
![](http://dunwu.test.upcdn.net/snap/20200310223004.png)
|
![img](http://dunwu.test.upcdn.net/snap/20200310223004.png)
|
||||||
|
|
||||||
### Build
|
### Build
|
||||||
|
|
||||||
|
@ -146,7 +146,7 @@ Build,即构建。
|
||||||
|
|
||||||
点击下图中的 Add build step 按钮,会弹出一个构建任务菜单,可以根据实际需要来选择。
|
点击下图中的 Add build step 按钮,会弹出一个构建任务菜单,可以根据实际需要来选择。
|
||||||
|
|
||||||
![](http://dunwu.test.upcdn.net/snap/20200310223241.png)
|
![img](http://dunwu.test.upcdn.net/snap/20200310223241.png)
|
||||||
|
|
||||||
【说明】
|
【说明】
|
||||||
|
|
||||||
|
@ -162,11 +162,11 @@ Build,即构建。
|
||||||
|
|
||||||
**Post-build Actions**,即构建后操作,用于构建完本项目的一些后续操作,比如生成相应的代码测试报告。
|
**Post-build Actions**,即构建后操作,用于构建完本项目的一些后续操作,比如生成相应的代码测试报告。
|
||||||
|
|
||||||
![](http://dunwu.test.upcdn.net/snap/20200310224106.png)
|
![img](http://dunwu.test.upcdn.net/snap/20200310224106.png)
|
||||||
|
|
||||||
![](http://dunwu.test.upcdn.net/snap/20200310224254.png)
|
![img](http://dunwu.test.upcdn.net/snap/20200310224254.png)
|
||||||
|
|
||||||
![](http://dunwu.test.upcdn.net/snap/20200310224331.png)
|
![img](http://dunwu.test.upcdn.net/snap/20200310224331.png)
|
||||||
|
|
||||||
个人较常用的配置:
|
个人较常用的配置:
|
||||||
|
|
||||||
|
@ -182,13 +182,13 @@ Build,即构建。
|
||||||
|
|
||||||
### 开始构建
|
### 开始构建
|
||||||
|
|
||||||
![](http://dunwu.test.upcdn.net/snap/20200310224927.png)
|
![img](http://dunwu.test.upcdn.net/snap/20200310224927.png)
|
||||||
|
|
||||||
如上图所示,一切配置好后,即可点击 **Build Now** 开始构建。
|
如上图所示,一切配置好后,即可点击 **Build Now** 开始构建。
|
||||||
|
|
||||||
### 构建结果
|
### 构建结果
|
||||||
|
|
||||||
![](http://dunwu.test.upcdn.net/snap/20200310225234.png)
|
![img](http://dunwu.test.upcdn.net/snap/20200310225234.png)
|
||||||
|
|
||||||
- **构建状态**
|
- **构建状态**
|
||||||
- **Successful 蓝色**:构建完成,并且被认为是稳定的。
|
- **Successful 蓝色**:构建完成,并且被认为是稳定的。
|
||||||
|
|
|
@ -4,38 +4,19 @@
|
||||||
>
|
>
|
||||||
> 关键词:maven, nexus
|
> 关键词:maven, nexus
|
||||||
>
|
>
|
||||||
> 部署环境
|
> 部署环境:
|
||||||
>
|
>
|
||||||
> - Nexus 3.13.0
|
> - Nexus 3.13.0
|
||||||
> - JDK 1.8
|
> - JDK 1.8
|
||||||
> - Maven 3.5.4
|
> - Maven 3.5.4
|
||||||
|
|
||||||
<!-- TOC depthFrom:2 depthTo:3 -->
|
|
||||||
|
|
||||||
- [1. 安装 Nexus](#1-安装-nexus)
|
|
||||||
- [2. 启动/停止 Nexus](#2-启动停止-nexus)
|
|
||||||
- [3. 搭建 Maven 私服](#3-搭建-maven-私服)
|
|
||||||
- [3.1. 配置仓库](#31-配置仓库)
|
|
||||||
- [3.2. 配置 settings.xml](#32-配置-settingsxml)
|
|
||||||
- [3.3. 配置 pom.xml](#33-配置-pomxml)
|
|
||||||
- [3.4. 执行 maven 构建](#34-执行-maven-构建)
|
|
||||||
- [4. 开机自启动](#4-开机自启动)
|
|
||||||
- [5. Nexus 备份和迁移](#5-nexus-备份和迁移)
|
|
||||||
- [5.1. 备份](#51-备份)
|
|
||||||
- [5.2. 迁移](#52-迁移)
|
|
||||||
- [6. FAQ](#6-faq)
|
|
||||||
- [6.1. 配置 INSTALL4J_JAVA_HOME](#61-配置-install4j_java_home)
|
|
||||||
- [7. 参考资料](#7-参考资料)
|
|
||||||
|
|
||||||
<!-- /TOC -->
|
|
||||||
|
|
||||||
## 1. 安装 Nexus
|
## 1. 安装 Nexus
|
||||||
|
|
||||||
进入[官方下载地址](https://www.sonatype.com/download-oss-sonatype),选择合适版本下载。
|
进入[官方下载地址](https://www.sonatype.com/download-oss-sonatype),选择合适版本下载。
|
||||||
|
|
||||||
![img](http://dunwu.test.upcdn.net/snap/20181127203029.png!zp)
|
![img](http://dunwu.test.upcdn.net/snap/20181127203029.png!zp)
|
||||||
|
|
||||||
本人希望将 Nexus 部署在 Linux 机器,所以选用的是 Unix 版本。
|
本人将 Nexus 部署在 Linux 机器,所以选用的是 Unix 版本。
|
||||||
|
|
||||||
这里,如果想通过命令方式直接下载(比如用脚本安装),可以在[官方历史发布版本页面](https://help.sonatype.com/repomanager3/download/download-archives---repository-manager-3)中找到合适版本,然后执行以下命令:
|
这里,如果想通过命令方式直接下载(比如用脚本安装),可以在[官方历史发布版本页面](https://help.sonatype.com/repomanager3/download/download-archives---repository-manager-3)中找到合适版本,然后执行以下命令:
|
||||||
|
|
||||||
|
@ -46,8 +27,8 @@ tar -zxf nexus-unix.tar.gz
|
||||||
|
|
||||||
解压后,有两个目录:
|
解压后,有两个目录:
|
||||||
|
|
||||||
- nexus-3.13.0-01 - 包含了 Nexus 运行所需要的文件。是 Nexus 运行必须的。
|
- `nexus-3.13.0-01` - 包含了 Nexus 运行所需要的文件。是 Nexus 运行必须的。
|
||||||
- sonatype-work - 包含了 Nexus 生成的配置文件、日志文件、仓库文件等。当我们需要备份 Nexus 的时候默认备份此目录即可。
|
- `sonatype-work` - 包含了 Nexus 生成的配置文件、日志文件、仓库文件等。当我们需要备份 Nexus 的时候默认备份此目录即可。
|
||||||
|
|
||||||
## 2. 启动/停止 Nexus
|
## 2. 启动/停止 Nexus
|
||||||
|
|
||||||
|
|
|
@ -145,7 +145,7 @@ $ vi /etc/sysconfig/svnserve
|
||||||
|
|
||||||
在新的窗口,输入地址 `svn://<你的 IP>` 即可,不出意外输入用户名和密码就能连接成功了(这里的用户、密码必须在 passwd 配置文件的清单中)。默认端口 3690,如果你修改了端口,那么要记得加上端口号。如下图所示:
|
在新的窗口,输入地址 `svn://<你的 IP>` 即可,不出意外输入用户名和密码就能连接成功了(这里的用户、密码必须在 passwd 配置文件的清单中)。默认端口 3690,如果你修改了端口,那么要记得加上端口号。如下图所示:
|
||||||
|
|
||||||
<br>![img](http://dunwu.test.upcdn.net/snap/20190129175443.png!zp)<br>
|
![img](http://dunwu.test.upcdn.net/snap/20190129175443.png!zp)
|
||||||
|
|
||||||
## 2. 参考资料
|
## 2. 参考资料
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue