之前的文章《一文讲解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 version NODE_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,立即生效,重启也生效" fi echo "准备开始,当前hostname:" hostname # 下面是一连串的安装和处理了 echo "基础准备:" yum install epel-release -y yum 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.rpm yum install nginx -y systemctl enable nginx systemctl start nginx touch "/etc/nginx/conf.d/virtual.conf" echo "安装gitlab-runner:" # For RHEL/CentOS/Fedora curl -L "$GITLAB_RUNNER" | sudo bash yum install gitlab-runner -y echo "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" fi chown 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 version NODE_VERSION=\"$NODE_VERSION\" PM2_FINALDIR=\"$PM2_FINALDIR\" #NVM NVM_SCRIPT=\"$NVM_SCRIPT\" #PM2 PM2=\"$PM2\" echo \"安装 nvm\" curl -o- $NVM_SCRIPT | bash echo \"安装 node $NODE_VERSION:\" source \"\$HOME/.bashrc\" nvm install $NODE_VERSION nvm use $NODE_VERSION echo \"安装pm2: $PM2\" npm i $PM2 -g npm install --global coffeescript npm 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_HOME else echo -e '.pm2 目录不存在' ln -s $PM2_FINALDIR/ \$PM2_HOME fi source \"\$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个服务器都需要重新安装!还好有脚本,否则真的是灾难!
推荐学习:Linux教程
以上是教你怎麼使用shell腳本實作伺服器快速設定(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Linux操作系統的5個核心組件是:1.內核,2.系統庫,3.系統工具,4.系統服務,5.文件系統。這些組件協同工作,確保系統的穩定和高效運行,共同構成了一個強大而靈活的操作系統。

Linux的五個核心元素是:1.內核,2.命令行界面,3.文件系統,4.包管理,5.社區與開源。這些元素共同定義了Linux的本質和功能。

Linux用戶管理和安全性可以通過以下步驟實現:1.創建用戶和組,使用命令如sudouseradd-m-gdevelopers-s/bin/bashjohn。 2.批量創建用戶和設置密碼策略,使用for循環和chpasswd命令。 3.檢查和修復常見錯誤,如家目錄和shell設置。 4.實施最佳實踐,如強密碼策略、定期審計和最小權限原則。 5.優化性能,使用sudo和調整PAM模塊配置。通過這些方法,可以有效管理用戶和提升系統安全性。

Linux文件系統和進程管理的核心操作包括文件系統的管理和進程的控制。 1)文件系統操作包括創建、刪除、複製和移動文件或目錄,使用命令如mkdir、rmdir、cp和mv。 2)進程管理涉及啟動、監控和終止進程,使用命令如./my_script.sh&、top和kill。

Shell腳本是Linux系統中用於自動化執行命令的強大工具。 1)Shell腳本通過解釋器逐行執行命令,處理變量替換和條件判斷。 2)基本用法包括備份操作,如使用tar命令備份目錄。 3)高級用法涉及使用函數和case語句管理服務。 4)調試技巧包括使用set-x開啟調試模式和set-e在命令失敗時退出。 5)性能優化建議避免子Shell,使用數組和優化循環。

Linux是一個基於Unix的多用戶、多任務操作系統,強調簡單性、模塊化和開放性。其核心功能包括:文件系統:以樹狀結構組織,支持多種文件系統如ext4、XFS、Btrfs,使用df-T查看文件系統類型。進程管理:通過ps命令查看進程,使用PID管理進程,涉及優先級設置和信號處理。網絡配置:靈活設置IP地址和管理網絡服務,使用sudoipaddradd配置IP。這些功能在實際操作中通過基本命令和高級腳本自動化得以應用,提升效率並減少錯誤。

進入Linux維護模式的方法包括:1.編輯GRUB配置文件,添加"single"或"1"參數並更新GRUB配置;2.在GRUB菜單中編輯啟動參數,添加"single"或"1"。退出維護模式只需重啟系統。通過這些步驟,你可以在需要時快速進入維護模式,並安全地退出,確保系統的穩定性和安全性。

Linux的核心組件包括內核、shell、文件系統、進程管理和內存管理。 1)內核管理系統資源,2)shell提供用戶交互界面,3)文件系統支持多種格式,4)進程管理通過fork等系統調用實現,5)內存管理使用虛擬內存技術。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3漢化版
中文版,非常好用

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!