本教程部署的是nacos1.4.0
一、首先将nacos包与jdk存放在目录nacos_deploy
将该文件夹压缩打包
tar -zcvf nacos_deploy.tar.gz nacos_deploy/
然后将nacos_deploy.tar.gz
上传到OSS
二、利用shell从oss拉取 并部署
#!/bin/bash# define log & color
readonly FG_GREY="30" #灰色
readonly FG_RED="31"
readonly FG_GREEN="32"
readonly FG_YELLOW="33"
readonly FG_BLUE="34" #前景色蓝色
readonly FG_VIOLET="35" #紫色
readonly FG_SKY_BLUE="36"
readonly FG_WHITE="37"readonly BG_RED="41"
readonly BG_GREEN="42"
readonly BG_YELLOW="43"
readonly BG_BLUE="44"
readonly BG_VIOLET="45"
readonly BG_SKYBLUE="46"
readonly BG_WHITE="47"readonly LOG_DEBUG="[调试]"
readonly LOG_INFO="[信息]"
readonly LOG_WARN="[警告]"
readonly LOG_ERROR="[错误]"function debug()
{echo -e "\033[${FG_WHITE}m${LOG_DEBUG}\033[0m $1"
}
function info(){echo -e "\033[${FG_GREEN}m${LOG_INFO}\033[0m $1"
}
function warn()
{echo -e "\033[${FG_YELLOW}m${LOG_WARN}\033[0m $1"
}
function error()
{echo -e "\033[${FG_RED}m${LOG_ERROR}\033[0m $1"
}# nacos部署路径
NACOS_DEPLOY_DIR="/usr/local/nacos/deploy"DEPLOY_GZ_FILE_NAME="nacos_deploy"# oss地址
OSS_URL="https://xxx/${DEPLOY_GZ_FILE_NAME}.tar.gz"# nacos集群IP
IP_1="192.168.0.1"
IP_2="192.168.0.2"
IP_3="192.168.0.3"DB_URL="jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC"
DB_USER="root"
DB_PASSWORD="123456"function initDir() {rm -rf "${NACOS_DEPLOY_DIR}"mkdir "${NACOS_DEPLOY_DIR}"info 'end init dir...'
}function downloadRes() {cd ${NACOS_DEPLOY_DIR} && wget ${OSS_URL}info "download finished."
}function unGzip() {cd ${NACOS_DEPLOY_DIR}deploy_file=${DEPLOY_GZ_FILE_NAME}.tar.gztar -zxvf ${deploy_file}mv ${DEPLOY_GZ_FILE_NAME}/* ./rm -rf ${DEPLOY_GZ_FILE_NAME}rm -rf ${deploy_file}tar -zxvf jdk-8u281-linux-x64.tar.gztar -zxvf nacos-server-1.4.0.tar.gzrm -rf jdk-8u281-linux-x64.tar.gzrm -rf nacos-server-1.4.0.tar.gzinfo 'end un gzip and clear dir.'
}function configNacosClusterIp() {nacos_config_dir=${NACOS_DEPLOY_DIR}/nacos/conftouch ${nacos_config_dir}/cluster.confecho '# nacos cluster ip'echo "${IP_1}:8848" >> ${nacos_config_dir}/cluster.confecho "${IP_2}:8848" >> ${nacos_config_dir}/cluster.confecho "${IP_3}:8848" >> ${nacos_config_dir}/cluster.confcat ${NACOS_DEPLOY_DIR}/nacos/conf/cluster.confinfo "end nacos cluster ip config: ${nacos_config_dir}/cluster.conf"echo "db.num=1" >> ${nacos_config_dir}/application.propertiesecho "db.url.0=${DB_URL}" >> ${nacos_config_dir}/application.propertiesecho "db.user=${DB_USER}" >> ${nacos_config_dir}/application.propertiesecho "db.password=${DB_PASSWORD}" >> ${nacos_config_dir}/application.propertieswarn "please check ${nacos_config_dir}/application.properties db config!"
}function configJdk() {echo -n "conform config java env? [1-yes,0-no]"read conformif [[ "0" == ${conform} ]];theninfo "bye~~"exit 0ficd ${NACOS_DEPLOY_DIR}info "start java env config! "curr_dir=$(pwd)echo "" >> /etc/profileecho "#java env [create on "$(date "+%Y-%m-%d %H:%M:%S]") >> /etc/profileecho "export JAVA_HOME=${curr_dir}/jdk1.8.0_281" >> /etc/profileecho 'export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/tools.jar' >> /etc/profileecho 'export PATH=$PATH:${JAVA_HOME}/bin' >> /etc/profilenacos_config_dir=${NACOS_DEPLOY_DIR}/nacos/conf/application.propertieswarn "please check /etc/profile and do 'source /etc/profile' command!"}function main() {initDirdownloadResunGzipconfigNacosClusterIpconfigJdk
}main
最后还要检查一下/etc/profile
,用java -version
看java运行环境是否正常,正常后再检查nacos的配置,然后调用nacos提供的启动脚本启动即可
三、异常退出重启处理(拓展)
如果要加上systemd
,满足在异常退出,及开机重启,脚本改成以下:
- 不再配置系统级的Java环境变量,而是改成systemd级别的。
- 使用
systemctl start nacos
、systemctl status nacos
、systemctl stop nacos
管理
#!/bin/bash# define log & color
readonly FG_GREY="30" #灰色
readonly FG_RED="31"
readonly FG_GREEN="32"
readonly FG_YELLOW="33"
readonly FG_BLUE="34" #前景色蓝色
readonly FG_VIOLET="35" #紫色
readonly FG_SKY_BLUE="36"
readonly FG_WHITE="37"readonly BG_RED="41"
readonly BG_GREEN="42"
readonly BG_YELLOW="43"
readonly BG_BLUE="44"
readonly BG_VIOLET="45"
readonly BG_SKYBLUE="46"
readonly BG_WHITE="47"readonly LOG_DEBUG="[调试]"
readonly LOG_INFO="[信息]"
readonly LOG_WARN="[警告]"
readonly LOG_ERROR="[错误]"function debug()
{echo -e "\033[${FG_WHITE}m${LOG_DEBUG}\033[0m $1"
}
function info(){echo -e "\033[${FG_GREEN}m${LOG_INFO}\033[0m $1"
}
function warn()
{echo -e "\033[${FG_YELLOW}m${LOG_WARN}\033[0m $1"
}
function error()
{echo -e "\033[${FG_RED}m${LOG_ERROR}\033[0m $1"
}#NACOS_DEPLOY_DIR="/tmp/nacos/deploy"
NACOS_DEPLOY_DIR="/usr/local/nacos/deploy"DEPLOY_GZ_FILE_NAME="nacos_deploy"OSS_URL="https://xxx/${DEPLOY_GZ_FILE_NAME}.tar.gz"IP_1="192.168.1.1"
IP_2="192.168.1.2"
IP_3="192.168.1.3"DB_URL="jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC"
DB_USER="root"
DB_PASSWORD="123456"function initDir() {debug '=============================================================='rm -rf "${NACOS_DEPLOY_DIR}"mkdir "${NACOS_DEPLOY_DIR}"info 'end init dir...'
}function downloadRes() {debug '=============================================================='cd ${NACOS_DEPLOY_DIR} && wget ${OSS_URL}info "download finished."
}function copyRes() {cp ~/Downloads/nacos_deploy.tar.gz ${NACOS_DEPLOY_DIR}
}function unGzip() {debug '=============================================================='cd ${NACOS_DEPLOY_DIR}deploy_file=${DEPLOY_GZ_FILE_NAME}.tar.gztar -zxvf ${deploy_file}mv ${DEPLOY_GZ_FILE_NAME}/* ./rm -rf ${DEPLOY_GZ_FILE_NAME}rm -rf ${deploy_file}tar -zxvf jdk-8u281-linux-x64.tar.gztar -zxvf nacos-server-1.4.0.tar.gzrm -rf jdk-8u281-linux-x64.tar.gzrm -rf nacos-server-1.4.0.tar.gzinfo 'end un gzip and clear dir.'
}function configNacos() {debug '=============================================================='nacos_config_dir=${NACOS_DEPLOY_DIR}/nacos/conftouch ${nacos_config_dir}/cluster.confecho '# nacos cluster ip'echo "${IP_1}:8848" >> ${nacos_config_dir}/cluster.confecho "${IP_2}:8848" >> ${nacos_config_dir}/cluster.confecho "${IP_3}:8848" >> ${nacos_config_dir}/cluster.confcat ${NACOS_DEPLOY_DIR}/nacos/conf/cluster.confinfo "end nacos cluster config,please check: ${nacos_config_dir}/cluster.conf"echo "db.num=1"echo "db.url.0=${DB_URL}"echo "db.user=${DB_USER}"echo "db.password=${DB_PASSWORD}"echo "db.num=1" >> ${nacos_config_dir}/application.propertiesecho "db.url.0=${DB_URL}" >> ${nacos_config_dir}/application.propertiesecho "db.user=${DB_USER}" >> ${nacos_config_dir}/application.propertiesecho "db.password=${DB_PASSWORD}" >> ${nacos_config_dir}/application.propertiesinfo "end db config,please check: ${nacos_config_dir}/application.properties config!"
}function configJdk() {debug '=============================================================='cd ${NACOS_DEPLOY_DIR}echo -n "conform config java env? [1-yes,0-no]"read conformif [[ "0" == ${conform} ]];theninfo "bye~~"exit 0fiinfo "start java env config! "echo "" >> /etc/profileecho "#java env [create on "$(date "+%Y-%m-%d %H:%M:%S]") >> /etc/profileecho "export JAVA_HOME=${NACOS_DEPLOY_DIR}/jdk1.8.0_281" >> /etc/profileecho 'export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/tools.jar' >> /etc/profileecho 'export PATH=$PATH:${JAVA_HOME}/bin' >> /etc/profilewarn "please check /etc/profile and do 'source /etc/profile' command!"
}function configSystemdShell() {debug '=============================================================='echo '#!/bin/bash' > ${NACOS_DEPLOY_DIR}/start_nacos.shecho "# java env [create on "$(date "+%Y-%m-%d %H:%M:%S]") >> ${NACOS_DEPLOY_DIR}/start_nacos.shecho "export JAVA_HOME=${NACOS_DEPLOY_DIR}/jdk1.8.0_281" >> ${NACOS_DEPLOY_DIR}/start_nacos.shecho 'export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/tools.jar' >> ${NACOS_DEPLOY_DIR}/start_nacos.shecho 'export PATH=$PATH:${JAVA_HOME}/bin' >> ${NACOS_DEPLOY_DIR}/start_nacos.shecho -n 'echo "-------------Start nacos on [$(date "+%Y-%m-%d %H:%M:%S"])-------------"' >> ${NACOS_DEPLOY_DIR}/start_nacos.shecho " >> ${NACOS_DEPLOY_DIR}/deploy_nacos.txt" >> ${NACOS_DEPLOY_DIR}/start_nacos.shecho "/bin/sh ${NACOS_DEPLOY_DIR}/nacos/bin/startup.sh" >> ${NACOS_DEPLOY_DIR}/start_nacos.shcat ${NACOS_DEPLOY_DIR}/start_nacos.shinfo "end start_nacos.sh, please check: ${NACOS_DEPLOY_DIR}/start_nacos.sh!"echo '#!/bin/bash' > ${NACOS_DEPLOY_DIR}/stop_nacos.shecho -n 'echo "Stop nacos on [$(date "+%Y-%m-%d %H:%M:%S"])"' >> ${NACOS_DEPLOY_DIR}/stop_nacos.shecho " >> ${NACOS_DEPLOY_DIR}/deploy_nacos.txt" >> ${NACOS_DEPLOY_DIR}/stop_nacos.shecho "/bin/sh ${NACOS_DEPLOY_DIR}/nacos/bin/shutdown.sh" >> ${NACOS_DEPLOY_DIR}/stop_nacos.shcat ${NACOS_DEPLOY_DIR}/stop_nacos.shinfo "end stop_nacos.sh, please check: ${NACOS_DEPLOY_DIR}/start_stop.sh!"
}function configSystemd() {debug '=============================================================='echo '' > /usr/lib/systemd/system/nacos.serviceecho '[Unit]' >> /usr/lib/systemd/system/nacos.serviceecho 'Description=nacos-cluster' >> /usr/lib/systemd/system/nacos.serviceecho 'After=network.target' >> /usr/lib/systemd/system/nacos.serviceecho '' >> /usr/lib/systemd/system/nacos.serviceecho '[Service]' >> /usr/lib/systemd/system/nacos.serviceecho 'Type=forking' >> /usr/lib/systemd/system/nacos.serviceecho "ExecStart=/bin/bash ${NACOS_DEPLOY_DIR}/start_nacos.sh" >> /usr/lib/systemd/system/nacos.serviceecho "ExecStop=/bin/bash ${NACOS_DEPLOY_DIR}/stop_nacos.sh" >> /usr/lib/systemd/system/nacos.serviceecho 'Restart=on-failure' >> /usr/lib/systemd/system/nacos.serviceecho '' >> /usr/lib/systemd/system/nacos.serviceecho '[Install]' >> /usr/lib/systemd/system/nacos.serviceecho 'WantedBy=multi-user.target' >> /usr/lib/systemd/system/nacos.servicecat /usr/lib/systemd/system/nacos.serviceinfo "finish systemd config! please check in: /usr/lib/systemd/system/nacos.service"info "use:[ systemctl daemon-reload ]to reload, use [ systemctl enable nacos ] to reboot start, use [ systemctl disable nacos ] to close reboot start"info "use [ systemctl start nacos ] to start, use [ systemctl status nacos ] to view, use [ systemctl stop nacos ]to stop"
}function main() {initDirdownloadRes
# copyResunGzipconfigNacos
# configJdkconfigSystemdShellconfigSystemd
}main