教你怎么使用shell脚本实现服务器快速设置

 4559

本篇文章给大家怎么使用shell脚本实现服务器快速设置,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所助。


教你怎么使用shell脚本实现服务器快速设置


通过shell脚本实现服务器快速设置

现在企业出海已经是常态,我们面临更多的国家地区服务器安装的工作。虽然云服务已经普及,还有各种SaaS可以快速使用,但定制化需求会一直存在,那么快速部署的方法就很有必要。

目前与那些快速部署方法?

服务器镜像——最快,但必须在同一个供应商内,出海可能会不同地区用不同的云服务商,就无法实现。

docker——可以通过镜像方式快速部署,应对复杂环境;

shell脚本——可以简化大多数复杂应用的安装,适合系统环境变化不大的情况,例如可以用同一个版本系统。

虽然shell脚本的方式不如docker和镜像好使,但如果你还没有尝试过,可以试一下,作为一个工具,可以极大提高效率,因为我们也看到,很多的linux安装包也提供了类似的一键安装脚本。

在上脚本之前,先要说明一下我的服务器软件内容:

gitlab-runner集成部署

nodeJS环境

nodeJS标准的跑在gitlab-runner用户下

使用nvm管理nodejs版本

使用pm2管理进程

下面是以我在游戏出海时使用的shell脚本,简单说明如何通过shell脚本快速部署:

  1. #!/bin/sh #第一句,基本是所有sh脚本的标准开头
  2. # Centos 7.8  #说明这个脚本适用的系统和版本,给人看的
  3.  
  4. #硬盘目录:#变量声明
  5. DISK_PATH="/data" #之前已经mount好的硬盘路径
  6. #hostname:
  7. HOSTNAME="my_server_name" #服务器名字,方便登录后区分
  8. #gitlab-runner:
  9. GITLAB_RUNNER="https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh"
  10. #nodejs version
  11. NODE_VERSION="v8.17.0"
  12.  
  13. #NVM #nvm安装脚本
  14. NVM_SCRIPT="https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh"
  15. #PM2 #pm2版本
  16. PM2="pm2"
  17. #pm2 data path: #pm2日志路径,我们不希望放到系统盘中
  18. PM2_DATA_DIR="pm2Data" # 下方会组合成完整的路径 DISK_PATH+/PM2_DATA_DIR
  19.  
  20. echo "开始安装SDK channel套件============"
  21.  
  22. if [ -"$HOSTNAME" ] # if的使用方式,大家需要去了解一下,-n是如果不为空的意思
  23. then
  24.   echo "修改hostname为:$HOSTNAME"
  25.   hostnamectl set-hostname "$HOSTNAME"
  26. else
  27.   echo "可以使用 'hostnamectl set-hostname newHostname' #设置当前hostname,立即生效,重启也生效"
  28. fi
  29. echo "准备开始,当前hostname:"
  30. hostname
  31.  
  32. # 下面是一连串的安装和处理了
  33.  
  34. echo "基础准备:"
  35. yum install epel-release -y
  36. yum update -y
  37.  
  38. echo "安装 htop:"
  39. yum install htop -y
  40.  
  41. echo "安装 ngnix:"
  42. rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
  43. yum install nginx -y
  44. systemctl enable nginx
  45. systemctl start nginx
  46. touch "/etc/nginx/conf.d/virtual.conf"
  47.  
  48. echo "安装gitlab-runner:"
  49. # For RHEL/CentOS/Fedora
  50. curl -"$GITLAB_RUNNER" | sudo bash
  51. yum install gitlab-runner -y
  52. echo "alias lg='su -l gitlab-runner'" >> "$HOME/.bashrc"
  53. source "$HOME/.bashrc"
  54.  
  55. echo "建立pm2Data目录:"
  56. PM2_FINALDIR="$DISK_PATH/$PM2_DATA_DIR"
  57. if [ ! -"$PM2_FINALDIR" ]; then #-d是判断是不是目录,不是就创建
  58.   mkdir "$PM2_FINALDIR"
  59. fi
  60. chown gitlab-runner:gitlab-runner "$PM2_FINALDIR" #修改目录owner
  61.  
  62. # 我会生成一个新的脚本到gitlab-runner目录,为什么这样做呢?
  63. # 因为需要在gitlab-ruuner用户跑服务,希望环境在目标用户那里。
  64. # 另外的原因是,以其他用户身份安装pm2会出现问题,那我就跑2次脚本咯
  65.  
  66. echo "切换用户安装 node 套件"
  67. ######## nodejs.sh Start########
  68. NODE_SHELL='/home/gitlab-runner/nodejs.sh'
  69.  
  70. echo "#!/bin/sh
  71. # Centos 7.8
  72.  
  73. #硬盘目录:
  74. #nodejs version
  75. NODE_VERSION=\"$NODE_VERSION\"
  76. PM2_FINALDIR=\"$PM2_FINALDIR\"
  77.  
  78. #NVM
  79. NVM_SCRIPT=\"$NVM_SCRIPT\"
  80. #PM2
  81. PM2=\"$PM2\"
  82.  
  83. echo \"安装 nvm\"
  84. curl -o- $NVM_SCRIPT | bash
  85. echo \"安装 node $NODE_VERSION:\"
  86. source \"\$HOME/.bashrc\"
  87. nvm install $NODE_VERSION
  88. nvm use $NODE_VERSION
  89. echo \"安装pm2: $PM2\"  
  90. npm i $PM2 -g
  91. npm install --global coffeescript
  92. npm install --global gulp
  93.  
  94. # pm2 目录的骚操作
  95. PM2_HOME=\"\$HOME/.pm2\"
  96. if [ -d \$PM2_HOME ]; then
  97.   echo '处理.pm2目录'
  98.   pwd
  99.   ll
  100.   mv \$PM2_HOME $PM2_FINALDIR
  101.   rm \$PM2_HOME -r
  102.   ln -s $PM2_FINALDIR/ \$PM2_HOME
  103. else
  104.   echo -e '.pm2 目录不存在'
  105.   ln -s $PM2_FINALDIR/ \$PM2_HOME
  106. fi
  107. source \"\$HOME/.bashrc\"
  108. echo \"NodeJS 套件结束\"" > "$NODE_SHELL"
  109.  
  110. chown gitlab-runner:gitlab-runner "$NODE_SHELL"
  111. chmod +"$NODE_SHELL" # 让脚本可以运行
  112. # sudo -H -u gitlab-runner bash -c "$NODE_SHELL" #无法跑pm2安装
  113. echo "将切换到gitlab-runner 用户,然后运行./nodejs.sh"
  114. ######## nodejs.sh End ########
  115. su -l gitlab-runner #切换用户,跑./nodejs.sh,就可以安装好nodejs环境
  116.  
  117. sudo gitlab-runner register # 注册gitlab-runner
  118.  
  119. echo "完成"
  120. exit 0

这个脚本里遇到的最大问题是,我们目前无法在root中安装pm2,会报错。当然也可以通过研究解决,但万一以后pm2版本更新了呢?研究出来的方法是不是不能用?所以干脆脚本生成脚本,再跑一次。coding的时候记得字符串中的转义。

通过这个方式,我实现了另外2个共3个为一组的服务群快速安装。中间发生了一次,安装了一半的时候,发现供应商给错服务器了,只能3个服务器都需要重新安装!还好有脚本,否则真的是灾难!


本文网址:https://www.zztuku.com/detail-9233.html
站长图库 - 教你怎么使用shell脚本实现服务器快速设置
申明:如有侵犯,请 联系我们 删除。

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐

    卡哇伊动物头像矢量素材