千家信息网

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

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"怎么用shell脚本实现服务器快速设置"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
千家信息网最后更新 2026年11月01日怎么用shell脚本实现服务器快速设置

本篇内容介绍了"怎么用shell脚本实现服务器快速设置"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

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

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

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

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

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

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

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

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

  • gitlab-runner集成部署

  • nodeJS环境

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

  • 使用nvm管理nodejs版本

  • 使用pm2管理进程

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

#!/bin/sh #第一句,基本是所有sh脚本的标准开头# Centos 7.8  #说明这个脚本适用的系统和版本,给人看的#硬盘目录:#变量声明DISK_PATH="/data" #之前已经mount好的硬盘路径#hostname:HOSTNAME="my_server_name" #服务器名字,方便登录后区分#gitlab-runner:GITLAB_RUNNER="https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh"#nodejs versionNODE_VERSION="v8.17.0"#NVM #nvm安装脚本NVM_SCRIPT="https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh"#PM2 #pm2版本PM2="pm2"#pm2 data path: #pm2日志路径,我们不希望放到系统盘中PM2_DATA_DIR="pm2Data" # 下方会组合成完整的路径 DISK_PATH+/PM2_DATA_DIRecho "开始安装SDK channel套件============"if [ -n "$HOSTNAME" ] # if的使用方式,大家需要去了解一下,-n是如果不为空的意思then  echo "修改hostname为:$HOSTNAME"  hostnamectl set-hostname "$HOSTNAME"else  echo "可以使用 'hostnamectl set-hostname newHostname' #设置当前hostname,立即生效,重启也生效"fiecho "准备开始,当前hostname:" hostname# 下面是一连串的安装和处理了echo "基础准备:"yum install epel-release -yyum update -yecho "安装 htop:"yum install htop -yecho "安装 ngnix:"rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpmyum install nginx -ysystemctl enable nginxsystemctl start nginxtouch "/etc/nginx/conf.d/virtual.conf"echo "安装gitlab-runner:"# For RHEL/CentOS/Fedoracurl -L "$GITLAB_RUNNER" | sudo bashyum install gitlab-runner -yecho "alias lg='su -l gitlab-runner'" >> "$HOME/.bashrc"source "$HOME/.bashrc"echo "建立pm2Data目录:"PM2_FINALDIR="$DISK_PATH/$PM2_DATA_DIR"if [ ! -d "$PM2_FINALDIR" ]; then #-d是判断是不是目录,不是就创建  mkdir "$PM2_FINALDIR"fichown gitlab-runner:gitlab-runner "$PM2_FINALDIR" #修改目录owner# 我会生成一个新的脚本到gitlab-runner目录,为什么这样做呢?# 因为需要在gitlab-ruuner用户跑服务,希望环境在目标用户那里。# 另外的原因是,以其他用户身份安装pm2会出现问题,那我就跑2次脚本咯echo "切换用户安装 node 套件"######## nodejs.sh Start########NODE_SHELL='/home/gitlab-runner/nodejs.sh'echo "#!/bin/sh# Centos 7.8#硬盘目录:#nodejs versionNODE_VERSION=\"$NODE_VERSION\"PM2_FINALDIR=\"$PM2_FINALDIR\"#NVMNVM_SCRIPT=\"$NVM_SCRIPT\"#PM2PM2=\"$PM2\"echo \"安装 nvm\"curl -o- $NVM_SCRIPT | bashecho \"安装 node $NODE_VERSION:\"source \"\$HOME/.bashrc\"nvm install $NODE_VERSIONnvm use $NODE_VERSIONecho \"安装pm2: $PM2\"  npm i $PM2 -gnpm install --global coffeescriptnpm install --global gulp# pm2 目录的骚操作PM2_HOME=\"\$HOME/.pm2\"if [ -d \$PM2_HOME ]; then  echo '处理.pm2目录'  pwd  ll  mv \$PM2_HOME $PM2_FINALDIR  rm \$PM2_HOME -r  ln -s $PM2_FINALDIR/ \$PM2_HOMEelse   echo -e '.pm2 目录不存在'  ln -s $PM2_FINALDIR/ \$PM2_HOMEfisource \"\$HOME/.bashrc\"echo \"NodeJS 套件结束\"" > "$NODE_SHELL"chown gitlab-runner:gitlab-runner "$NODE_SHELL"chmod +x "$NODE_SHELL" # 让脚本可以运行# sudo -H -u gitlab-runner bash -c "$NODE_SHELL" #无法跑pm2安装echo "将切换到gitlab-runner 用户,然后运行./nodejs.sh"######## nodejs.sh End ########su -l gitlab-runner #切换用户,跑./nodejs.sh,就可以安装好nodejs环境sudo gitlab-runner register # 注册gitlab-runnerecho "完成"exit 0

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

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

"怎么用shell脚本实现服务器快速设置"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

脚本 服务 服务器 目录 用户 版本 环境 方式 系统 内容 套件 方法 更多 硬盘 路径 镜像 切换 不同 复杂 供应商 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 云信互联网科技有限公司 A股互联网金融科技公司 厦门中拓互联网络科技有限公司 互联网科技生活的内容 科技大学互联网专业好不好 汉立互联网科技有限公司联系电话 互联网教育科技公司vipkid 昭通云南众福互联网科技有限公司 全球顶尖互联网科技公司 互联网为啥属于高科技 互联网公司黑科技创始人 科技赋能视角下互联网保险发展 济南有互联网科技公司吗 锡山区互联网智能科技产品供应 上海同邻互联网科技有限公司规模 长沙渺峰互联网科技有限公司 中国科技和美国互联网 互联网的科技体现在哪里 深圳互联网科技园地址 互联网科技快速发展优美句子 山东特亿宝互联网科技有限公司 互联网和科技技术 互联网科技公司介绍 全球顶尖互联网科技公司 允成互联网科技有限公司融资 济南有互联网科技公司吗 互联网第三次科技革命特征 电子商务与互联网科技的关系 广州三三互联网科技有限公司 互联网科技创业计划的风险分析
0