• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 教你怎么使用shell脚本实现服务器快速设置

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

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了shell脚本,服务器快速设置等相关知识,希望对您有所帮助

本篇文章给大家怎么使用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_DIR echo "开始安装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 -y echo "安装 htop:"yum install htop -y echo "安装 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-runner echo "完成"exit 0

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

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


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

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

相关文章

  • 2022-04-29vue2&vue3数据响应式原理分析及手动实现(实例详解)
  • 2022-04-29详解MySQL 联合查询 (IN和EXISTS区别)
  • 2022-04-29Vue 手势组件教程
  • 2022-04-29一文浅析Angular中的响应式表单
  • 2022-04-29Dedecms5.7如何将系统的data目录迁移到web以外目录
  • 2022-04-29WordPress使用OSS Upload后媒体库无法加载一直转圈解决方法
  • 2022-04-29phpcms后台上传不了图片怎么办
  • 2022-04-29Illustrator制作超有质感立体矢量LOGO
  • 2022-04-29WordPress主题RiPro美化-给特定分类添加VIP权限才可访问效果
  • 2022-04-29总结分享: 6 种JavaScript的打断点的方式(收藏学习)

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • Node.js中JSON格式和Excel格式的双向转换
    • Angular CLI发布路径的配置项浅析
    • WordPress如何插入视频?WP文章插入视频代码方法
    • DedeCMS关键词替换问题较完美解决方案
    • 浅谈Angular中elem.scope()、elem.isolateScope和$compile(elem)(scope)中scope的区别
    • PHP中如何将JSON文件转XML格式
    • Thinkphp中JS如何获取模板变量(示例详解)
    • PHP如何使用Echarts生成数据统计报表
    • Photoshop绘制质感IE图标教程
    • Photoshop CC教程:您必须知道的CC新功能

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有