您好,欢迎访问一九零五行业门户网

教你怎么使用shell脚本实现服务器快速设置(附代码)

之前的文章《一文讲解css3实现椭圆轨迹旋转(总结)》中,给大家介绍了如何用css3实现椭圆轨迹旋转的方法。下面本篇文章给大家怎么使用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个服务器都需要重新安装!还好有脚本,否则真的是灾难!
推荐学习:linux教程
以上就是教你怎么使用shell脚本实现服务器快速设置(附代码)的详细内容。
其它类似信息

推荐信息