yum install curl policycoreutils openssh-server openssh-clients postfix

  1. [root@linux-node2 ~]# yum install curl policycoreutils openssh-server openssh-clients postfix
  2. [root@linux-node2 ~]# systemctl start postfix
  3. curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh| sudo bash
  4. curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh| bash
  5. yum install -y gitlab-ce
  6. [root@linux-node2 ~]# vim /etc/yum.repos.d/gitlab-ce.repo
  7. [gitlab-ce]
  8. name=gitlab-ce
  9. baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
  10. repo_gpgcheck=0
  11. gpgcheck=0
  12. enabled=1
  13. gpgkey=https://packages.gitlab.com/gpg.key
  14. [root@linux-node2 ~]# yum makecache
  15. [root@linux-node2 ~]# yum install gitlab-ce
  16. /etc/gitlab
  17. [root@node2 gitlab]# egrep -v "^$|^#" gitlab.rb
  18. external_url 'http://192.168.3.4.com'
  19. gitlab-ctl reconfigure
  20. gitlab-ctl status
  21. 关闭gitlab:[root@linux-node2 ~]# gitlab-ctl stop
  22. 启动gitlab:[root@linux-node2 ~]# gitlab-ctl start
  23. 重启gitlab:[root@linux-node2 ~]# gitlab-ctl restart
  24. 最终脚本
  25. #!/bin/bash
  26. # Dir List
  27. # mkdir -p /deploy/code/web-demo
  28. # mkdir -p /deploy/config/web-demo/base
  29. # mkdir -p /deploy/config/web-demo/other
  30. # mkdir -p /deploy/tar
  31. # mkdir -p /deploy/tmp
  32. # mkdir -p /opt/webroot
  33. # mkdir -p /webroot
  34. # chown -R www.www /deploy
  35. # chown -R www.www /opt/webroot
  36. # chown -R www.www /webroot
  37. # Node List
  38. PRE_LIST="192.168.3.3"
  39. GROUP2_LIST="192.168.3.4"
  40. NODE_LIST="192.168.3.3 192.168.3.4"
  41. ROLLBACK_LIST="192.168.3.3 192.168.3.4"
  42. # Date/Time Veriables
  43. LOG_CTIME=$(date "+%H-%M-%S")
  44. LOG_CDATE=$(date "+%Y-%m-%d")
  45. CTIME="date +%Y-%m-%d"
  46. CDATE="date +%H-%M-%S"
  47. # Shell Env
  48. PRO_NAME="web-demo"
  49. SHELL_NAME="deploy.sh"
  50. SHELL_DIR="/home/www/"
  51. SHELL_LOG="${SHELL_DIR}/${SHELL_NAME}.log"
  52. LOCK_FILE="/tmp/deploy.lock"
  53. # Code Env
  54. CODE_DIR="/deploy/code/web-demo"
  55. CONFIG_DIR="/deploy/config/web-demo"
  56. TMP_DIR="/deploy/tmp"
  57. TAR_DIR="/deploy/tar"
  58. url_test(){
  59. URL=$1
  60. curl -s --head $1 |grep '200 OK'
  61. if [ $? -ne 0 ]; then
  62. shell_unlock;
  63. writelog "test error" &&exit;
  64. fi
  65. }
  66. usage(){
  67. echo $"Usage $0 { deploy | rollback [ list | version ] }"
  68. }
  69. writelog(){
  70. LOGINFO=$1
  71. echo "`${CDATE}` `${CTIME}`: ${SHELL_NAME} : ${LOGINFO} " >> ${SHELL_LOG}
  72. }
  73. shell_lock(){
  74. touch ${LOCK_FILE}
  75. }
  76. shell_unlock(){
  77. rm -f ${LOCK_FILE}
  78. }
  79. code_get(){
  80. echo code_get
  81. writelog "code_get"
  82. cd ${CODE_DIR} && git pull
  83. cp -rp ${CODE_DIR} ${TMP_DIR}/
  84. API_VERL=`git show|grep commit|cut -d ' ' -f2`
  85. API_VER=${API_VERL:0:6}
  86. }
  87. code_build(){
  88. echo code_build
  89. }
  90. code_config(){
  91. echo code_config
  92. writelog "code_config"
  93. /bin/cp -rp ${CONFIG_DIR}/base/* ${TMP_DIR}/${PRO_NAME}
  94. PKG_NAME="${PRO_NAME}"_"${API_VER}"-"`$CDATE`-`${CTIME}`"
  95. cd ${TMP_DIR} && mv ${PRO_NAME} ${PKG_NAME}
  96. }
  97. code_tar(){
  98. echo code_tar
  99. writelog "code_tar"
  100. cd ${TMP_DIR} && tar czf ${PKG_NAME}.tar.gz ${PKG_NAME}
  101. writelog "${PKG_NAME}.tar.gz"
  102. }
  103. code_scp(){
  104. echo code_scp
  105. writelog "code_scp"
  106. for node in $PRE_LIST ;do
  107. scp ${TMP_DIR}/${PKG_NAME}.tar.gz $node:/opt/webroot/
  108. done
  109. for node in $GROUP2_LIST ;do
  110. scp ${TMP_DIR}/${PKG_NAME}.tar.gz $node:/opt/webroot/
  111. done
  112. }
  113. cluster_node_remove(){
  114. writelog "cluster_node_remove"
  115. echo cluster_node_remove
  116. }
  117. pre_deploy(){
  118. writelog "remove from cluster pre"
  119. echo code_deploy
  120. for node in $PRE_LIST ;do
  121. ssh $node "cd /opt/webroot && tar zxf ${PKG_NAME}.tar.gz"
  122. ssh $node "rm -f /webroot/web-demo && ln -s /opt/webroot/${PKG_NAME} /webroot/web-demo"
  123. done
  124. }
  125. pre_test(){
  126. url_test "http://${PRE_LIST}/index.html"
  127. echo "add to cluster pre"
  128. }
  129. group2_deploy(){
  130. writelog "remove from cluster 2"
  131. for node in $GROUP2_LIST ;do
  132. ssh $node "cd /opt/webroot && tar zxf ${PKG_NAME}.tar.gz"
  133. ssh $node "rm -f /webroot/web-demo && ln -s /opt/webroot/${PKG_NAME} /webroot/web-demo"
  134. done
  135. scp ${CONFIG_DIR}/other/192.168.3.4.crontab.xml 192.168.3.4:/webroot/web-demo/crontab.xml
  136. }
  137. group2_test(){
  138. for node in $GROUP2_LIST ;do
  139. url_test "http://${node}/index.html"
  140. done
  141. echo "add to cluster group2"
  142. }
  143. config_diff(){
  144. echo config_diff
  145. }
  146. code_test(){
  147. echo code_test
  148. }
  149. cluster_node_in(){
  150. echo cluster_node_in
  151. }
  152. rollback_fun(){
  153. [ -z $1 ] && echo "input rollback version" &&return
  154. for node in $ROLLBACK_LIST ;do
  155. ssh $node "[ -d /opt/webroot/$1 ] && rm -f /webroot/web-demo && ln -s /opt/webroot/$1 /webroot/web-demo"
  156. done
  157. }
  158. rollback (){
  159. case $1 in
  160. list)
  161. ls -l /opt/webroot/*.tar.gz
  162. ;;
  163. *)
  164. rollback_fun $1
  165. esac
  166. }
  167. main(){
  168. if [ -f $LOCK_FILE ]; then
  169. echo "Deploy is running" && exit;
  170. fi
  171. shell_lock
  172. DEPLOY_METHOD=$1
  173. ROLLBACK_VER=$2
  174. case $DEPLOY_METHOD in
  175. deploy)
  176. code_get;
  177. code_build;
  178. code_config;
  179. code_tar;
  180. code_scp;
  181. pre_deploy;
  182. pre_test;
  183. group2_deploy;
  184. group2_test;
  185. config_diff;
  186. code_test;
  187. cluster_node_in;
  188. ;;
  189. rollback)
  190. rollback $ROLLBACK_VER
  191. ;;
  192. *)
  193. usage;
  194. esac
  195. shell_unlock
  196. }
  197. 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与设计模式之创建型模式及实战

    用Python学习一下设计模式,如果很枯燥的话,就强行能使用的就用一下.设计模式参考Python与设计模式-途索 1. 单例模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点. import ...

  2. 【学习】pandas 基础介绍说明 【pandas】

    本文来源于<利用python进行数据分析>中文版,大家有兴趣可以看原版,入门的东西得脚踏实地哈 1.pandas 数据结构介绍 首先熟悉它的两个主要数据结构,Series 和 DataFr ...

  3. Android单元测试学习(一)

    什么是单元测试 首先总结一下什么是单元测试,单元测试中的单元在Android或Java中可以理解为某个类中的某一个方法,因此单元测试就是针对Android或Java中某个类中的某一个方法中的逻辑代码进 ...

  4. java学习--面向对象

    对象及类的概念 对象是java程序的核心,在java程序中“万事万物皆对象” 对象可以看成是属性和方法的封装体 类是用来创建同一类型的对象的模板,在一个类中定义了该类对象所应具有的属性和方法 J2SD ...

  5. nexus的安装和简介

    下载nexus Nexus 是Maven仓库管理器,通过nexus可以搭建maven仓库,同时nexus还提供强大的仓库管理功能,构件搜索功能等. 下载Nexus, 下载地址:http://www.s ...

  6. 从一个简单的约束看规范性的SQL脚本对数据库运维的影响

    之前提到了约束的一些特点,看起来也没什么大不了的问题,http://www.cnblogs.com/wy123/p/7350265.html以下以实际生产运维中遇到的一个问题来说明规范的重要性. 如下 ...

  7. hello2

    String username = request.getParameter("username");//获取参数值 if (username != null && ...

  8. 加入 Jungle Testnet

    [加入 Jungle Testnet] 主网测试需要消耗大量 EOS,JungleTestnet为我们提供了一个测试用的EOS主链,上面的EOS可以通过申请获得.每6小时可以申请100EOS. [创建 ...

  9. 在windows下安装Git并用GitHub同步

    准备环境: 1,注册github账户 2,下载安装git(下载地址:https://git-scm.com/download/win) 注释: git是什么? git是版本管理工具,当然也是分布式的管 ...

  10. linux上安装字体

    安装字体命令: yum install wqy-microhei-fonts wqy-zenhei-fonts   安装完字体的存放目录:/usr/share/fonts   默认会在fonts目录下 ...