yum install curl policycoreutils openssh-server openssh-clients postfix

[root@linux-node2 ~]# yum install curl policycoreutils openssh-server openssh-clients postfix
[root@linux-node2 ~]# systemctl start postfix curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh| sudo bash curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh| bash yum install -y gitlab-ce [root@linux-node2 ~]# vim /etc/yum.repos.d/gitlab-ce.repo
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key
[root@linux-node2 ~]# yum makecache
[root@linux-node2 ~]# yum install gitlab-ce /etc/gitlab
[root@node2 gitlab]# egrep -v "^$|^#" gitlab.rb
external_url 'http://192.168.3.4.com' gitlab-ctl reconfigure gitlab-ctl status 关闭gitlab:[root@linux-node2 ~]# gitlab-ctl stop
启动gitlab:[root@linux-node2 ~]# gitlab-ctl start
重启gitlab:[root@linux-node2 ~]# gitlab-ctl restart 最终脚本 #!/bin/bash # Dir List
# mkdir -p /deploy/code/web-demo
# mkdir -p /deploy/config/web-demo/base
# mkdir -p /deploy/config/web-demo/other
# mkdir -p /deploy/tar
# mkdir -p /deploy/tmp
# mkdir -p /opt/webroot
# mkdir -p /webroot
# chown -R www.www /deploy
# chown -R www.www /opt/webroot
# chown -R www.www /webroot # Node List
PRE_LIST="192.168.3.3"
GROUP2_LIST="192.168.3.4"
NODE_LIST="192.168.3.3 192.168.3.4"
ROLLBACK_LIST="192.168.3.3 192.168.3.4" # Date/Time Veriables
LOG_CTIME=$(date "+%H-%M-%S")
LOG_CDATE=$(date "+%Y-%m-%d")
CTIME="date +%Y-%m-%d"
CDATE="date +%H-%M-%S" # Shell Env PRO_NAME="web-demo"
SHELL_NAME="deploy.sh"
SHELL_DIR="/home/www/"
SHELL_LOG="${SHELL_DIR}/${SHELL_NAME}.log"
LOCK_FILE="/tmp/deploy.lock" # Code Env CODE_DIR="/deploy/code/web-demo"
CONFIG_DIR="/deploy/config/web-demo"
TMP_DIR="/deploy/tmp"
TAR_DIR="/deploy/tar" url_test(){
URL=$1
curl -s --head $1 |grep '200 OK'
if [ $? -ne 0 ]; then
shell_unlock;
writelog "test error" &&exit;
fi
} usage(){
echo $"Usage $0 { deploy | rollback [ list | version ] }"
} writelog(){
LOGINFO=$1
echo "`${CDATE}` `${CTIME}`: ${SHELL_NAME} : ${LOGINFO} " >> ${SHELL_LOG}
} shell_lock(){
touch ${LOCK_FILE}
} shell_unlock(){
rm -f ${LOCK_FILE}
} code_get(){
echo code_get
writelog "code_get"
cd ${CODE_DIR} && git pull
cp -rp ${CODE_DIR} ${TMP_DIR}/
API_VERL=`git show|grep commit|cut -d ' ' -f2`
API_VER=${API_VERL:0:6} } code_build(){
echo code_build
} code_config(){
echo code_config
writelog "code_config"
/bin/cp -rp ${CONFIG_DIR}/base/* ${TMP_DIR}/${PRO_NAME}
PKG_NAME="${PRO_NAME}"_"${API_VER}"-"`$CDATE`-`${CTIME}`"
cd ${TMP_DIR} && mv ${PRO_NAME} ${PKG_NAME} } code_tar(){
echo code_tar
writelog "code_tar"
cd ${TMP_DIR} && tar czf ${PKG_NAME}.tar.gz ${PKG_NAME}
writelog "${PKG_NAME}.tar.gz"
} code_scp(){
echo code_scp
writelog "code_scp"
for node in $PRE_LIST ;do
scp ${TMP_DIR}/${PKG_NAME}.tar.gz $node:/opt/webroot/
done
for node in $GROUP2_LIST ;do
scp ${TMP_DIR}/${PKG_NAME}.tar.gz $node:/opt/webroot/
done
} cluster_node_remove(){
writelog "cluster_node_remove"
echo cluster_node_remove
} pre_deploy(){
writelog "remove from cluster pre"
echo code_deploy
for node in $PRE_LIST ;do
ssh $node "cd /opt/webroot && tar zxf ${PKG_NAME}.tar.gz"
ssh $node "rm -f /webroot/web-demo && ln -s /opt/webroot/${PKG_NAME} /webroot/web-demo"
done
} pre_test(){
url_test "http://${PRE_LIST}/index.html"
echo "add to cluster pre"
} group2_deploy(){
writelog "remove from cluster 2"
for node in $GROUP2_LIST ;do
ssh $node "cd /opt/webroot && tar zxf ${PKG_NAME}.tar.gz"
ssh $node "rm -f /webroot/web-demo && ln -s /opt/webroot/${PKG_NAME} /webroot/web-demo"
done
scp ${CONFIG_DIR}/other/192.168.3.4.crontab.xml 192.168.3.4:/webroot/web-demo/crontab.xml
} group2_test(){
for node in $GROUP2_LIST ;do
url_test "http://${node}/index.html"
done
echo "add to cluster group2"
} config_diff(){
echo config_diff } code_test(){
echo code_test
} cluster_node_in(){
echo cluster_node_in
} rollback_fun(){
[ -z $1 ] && echo "input rollback version" &&return
for node in $ROLLBACK_LIST ;do
ssh $node "[ -d /opt/webroot/$1 ] && rm -f /webroot/web-demo && ln -s /opt/webroot/$1 /webroot/web-demo"
done } rollback (){
case $1 in
list)
ls -l /opt/webroot/*.tar.gz
;;
*)
rollback_fun $1
esac } main(){
if [ -f $LOCK_FILE ]; then
echo "Deploy is running" && exit;
fi
shell_lock
DEPLOY_METHOD=$1
ROLLBACK_VER=$2
case $DEPLOY_METHOD in
deploy)
code_get;
code_build;
code_config;
code_tar;
code_scp;
pre_deploy;
pre_test;
group2_deploy;
group2_test;
config_diff;
code_test;
cluster_node_in;
;;
rollback)
rollback $ROLLBACK_VER
;; *)
usage;
esac
shell_unlock
} main $1 $2

自动化部署shell的更多相关文章

  1. 自动化部署--shell脚本--1

    传统部署方式1.纯手工scp2.纯手工登录git pull .svn update3.纯手工xftp往上拉4.开发给打一个压缩包,rz上去.解压 传统部署缺点:1.全程运维参与,占用大量时间2.上线速 ...

  2. 自动化部署--shell脚本--2

    node1和node2都装apache   [root@linux-node1 ~]# yum install httpd -y Loaded plugins: fastestmirror Loadi ...

  3. 自动化部署--shell脚本--3

    登录gitlab第一次登录gitlab,需要为root用户修改密码,root用户也是gitlab的超级管理员.http://192.168.58.11设置密码是gitlab 密码不够长,重新设置下,设 ...

  4. LINUX系统自动化部署shell脚本

    #!/bin/shsudo /etc/init.d/tomcatstopwaitsudo rm -rf /opt/tomcat7/work/*waitsudo rm -rf /opt/tomcat7/ ...

  5. 通过shell脚本实现代码自动化部署

    通过shell脚本实现代码自动化部署 一.传统部署方式及优缺点 1.传统部署方式 (1)纯手工scp (2)纯手工登录git pull.svn update (3)纯手工xftp往上拉 (4)开发给打 ...

  6. Linux下的Jenkins+Tomcat+Maven+Gitlab+Shell环境的搭建使用(jenkins自动化部署)

    jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...

  7. shell脚本自动化部署服务

    shell脚本自动化部署 !/bin/bash #export PATH=$PATH:/export/maven/bin run_flag_dir="/data0/shell/deploy_ ...

  8. Linux下的Jenkins+Tomcat+Maven+Git+Shell环境的搭建使用(jenkins自动化部署)【转】

    jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...

  9. 运维与自动化系列③自动化部署基础与shell脚本实现

    自动化部署基础与shell脚本实现 关于自动化的基础知识: 1.1:当前代码部署的实现方式: 运维纯手工scp到web服务器纯手工登录git服务器执行git pull或svn服务器执行svn upda ...

随机推荐

  1. python-web自动化-Python+Selenium之expected_conditions:各种判断

    expected_conditions一般也简称EC 以下两个条件类验证title,验证传入的参数title是否等于或包含于driver.titletitle_istitle_contains 以下两 ...

  2. python_08 函数式编程、高阶函数、map、filter、reduce函数、内置函数

    函数式编程 编程方法论: 1.面向过程 找到解决问题的入口,按照一个固定的流程去模拟解决问题的流程 (1).搜索目标,用户输入(配偶要求),按照要求到数据结构内检索合适的任务 (2)表白,表白成功进入 ...

  3. Apache配置默认主页

    Apache配置默认主页 进入Apache的conf目录 打开httpd.conf文件输入: 在文件末位添加: <Directory "F:/www_php/blog_com/my_b ...

  4. Android TextView 跑马灯效果 - 2018年6月19日

    第一步在布局中添加加粗部分代码: <TextView android:id="@+id/tv_company" android:layout_width="0dp& ...

  5. 使用jQuery+huandlebars遍历if判断不足引用helper

    兼容ie8(很实用,复制过来,仅供技术参考,更详细内容请看源地址:http://www.cnblogs.com/iyangyuan/archive/2013/12/12/3471227.html) & ...

  6. ArcGIS自定义工具箱-字段值部分替换

    ArcGIS自定义工具箱-字段值部分替换 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:替换某个字段中的字符串 用例:湖南省长沙市=>湖南/长沙:临湘县 ...

  7. vivo手机,自带世界之窗浏览器,sessionStorage设置的值为null

    最近遇到一个小问题 用vivo手机自带浏览器,每次跳转到一个新页面都是重新打开一个webpage,导致sessionStorage设置的值都没了. 所以开发移动端网页时,谨慎使用sessionStor ...

  8. C# 字符串 输出格式 指定间隔 通用性很强

    C#winform string s = "FE 68 01 00 1111 11 11 68 1104 35 33B337 7C 16"; string r = Regex.Re ...

  9. cdn贝四层协议配置端口映射TCP端口转发

    端口映射就是将外网主机的IP地址的一个端口映射到内网中一台机器,提供相应的服务.当用户访问该IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上.端口映射有动态和静态之分 1.安装好节点后初 ...

  10. django admin 模块添加 static

    目前路径是在 /var/www/jastme/static 但是admin的静态文件不在这个位置,那么怎么办呢? 首先到项目下,就是有manage.py的这个目录 编辑项目下的setting.py 首 ...