》》》》》魏红斌带你学shell脚本《《《《《
更多shell脚本学习点击个人主页
作为一个资深程序猿,我将带领您从零开始,一步步踏上运维之旅,无论您是否拥有现成的服务器,都将学会如何轻松购买、部署,并通过编写及应用精心设计的Shell脚本,解决实际工作中遇到的问题。这些脚本不仅源自真实的业务场景,经历了反复实践与严格测试,确保了其简洁高效、易于理解且便于使用。更重要的是,我们将全程免费分享,并深度解析背后原理,助您深入理解并灵活运用,每一款脚本均经过真实业务场景的反复打磨与严格测试,秉持着简洁高效、易于理解和使用的理念设计,无偿提供并且提供相关解析过程,让读者能更深入了解相关内容。
无服务器的朋友们:
让我们先从选购并部署服务器开始。只需简单三步,即可拥有您的专属云服务器:
- 访问ECS官网:点击链接直达阿里云ECS网站:ECS选择网址。这是您获取高质量云服务器的第一站。
- 选择并购买:在琳琅满目的服务器配置中,挑选符合您需求的那一款,一键下单,完成支付。整个过程犹如在线购物般便捷。
- 进入ECS控制台:支付成功后,您将被引导至ECS管理控制台。在这里,您可以全面掌控您的服务器资源,后续的所有运维操作都将在此展开。
已有服务器的朋友们:
如果您已拥有ECS实例,那么请直接登录ECS管理控制台。在左侧导航栏中,依次选择“实例与镜像” > “实例”,确保您已定位到目标资源所在的资源组和地域。接下来,在实例列表中找到待连接的实例,点击操作列下的“远程连接”,选择“通过Workbench远程连接”并点击“立即登录”。
登录实例:
无论是新购还是已有服务器,接下来都需要进行实例登录。这里支持多种认证方式,以最常见的“密码认证”为例:
- 输入用户名(通常为
root
或ecs-user
)。 - 接着,输入登录密码。如果您忘记了密码,无需担忧,您可以在ECS实例详情页面查询,或者通过“更改密码”功能进行修改。
编写与运行Shell脚本:
成功登录后,您将看到一个熟悉的命令行界面——这就是您的运维主战场。现在,键入vim test.sh
,我们便进入了文本编辑模式,准备创建第一个Shell脚本。
按下键盘上的i
键,进入插入模式,此刻您可以自由地复制粘贴今天要学习的脚本代码,粘贴后按ecs
后,按:wq
保存脚本,可以用./ test.sh
或者sh test.sh
进行脚本执行。
今天我们要学习的脚本是(脚本内容直接复制粘贴即可):
#!/bin/bash
CPUS=`lscpu | sed -nr '4 s/\S+:\s+(\S+)$/\1/p'`
VERSION=2.4.46
TAR_SUFFIX="tar.bz2"
DOWLOAD_DIR=/usr/src
DEST_DIR=/usr/local/src
INSTALL_DIR=/apps/httpd
RE_VAR=`lsb_release -i | sed -nr '/^Distributor ID/s/(\S+\s+){2}(\S)/\2/p'`
[[ "$RE_VAR" =~ "CentOS" ]] || { echo -e "${YELLOW}warning:${DIST} 暂时没有安装...! ${END}" ; exit 1 ; }
rpm -q wget &>/dev/null || { echo -e "${YELLOW}warning: Install wget ${END}" ; yum -y install wget &>/dev/null ; }
echo -e "${GREEN}Downloading httpd packages....${END}"
wget -P $DOWLOAD_DIR https://mirrors.bfsu.edu.cn/apache//httpd/httpd-${VERSION}.${TAR_SUFFIX} &>/dev/null
[ "$?" -eq 0 ] || { echo -e "${RED} httpd-${VERSION}.${TAR_SUFFIX} 下载失败....!${END}" ; exit 2 ; }
id apache &> /dev/null || { groupadd -g 80 -r apache ; useradd -u 80 -g 80 -s /sbin/nologin -r apache ; }
echo -e "${GREEN}Downloading programs depends on packages.${END}"
yum -y install dos2unix bzip2 redhat-lsb-core apr-devel gcc gcc-c++ pcre-devel openssl-devel make redhat-rpm-config
net-tools apr-util-devel &>/dev/null
# 解压软件包到指定目录
tar xf ${DOWLOAD_DIR}/httpd-${VERSION}.${TAR_SUFFIX} -C ${DEST_DIR}
cd ${DEST_DIR}/httpd-${VERSION}/
# 预配置 && 编译 && 安装
./configure --prefix=${INSTALL_DIR} --sysconfdir=/etc/httpd --enable-ssl
make -j ${CPUS} && make install
# 将程序启动脚本路径,追加至PATH环境变量,并使配置文件生效。
echo 'PATH='${INSTALL_DIR}/bin:'$PATH' >> /etc/profile.d/apache.sh
source /etc/profile.d/apache.sh
# 修改配置文件 用户和组
sed -ri '/^User/ s/(\S+\s+)\S+$/\1apache/' /etc/httpd/httpd.conf
sed -ri '/^Group/ s/(\S+\s+)\S+$/\1apache/' /etc/httpd/httpd.conf
sed -i '/^#ServerName/s/^#//' /etc/httpd/httpd.conf
# 启动服务
apachectl start &>/dev/null
sleep 3
# 定义服务端口号 和 pid 文件
PID_FILE="${INSTALL_DIR}/logs/httpd.pid"
PORT_LINE=`netstat -antptu | grep -o "\<80\>" |wc -l`
# 判断服务是否启动成功。
[ -e ${PID_FILE} -a "${PORT_LINE}" -eq "1" ] || { echo -e "${RED}error:Service startup failed${END}" ; exit 3 ;
}
echo -e "${GREEN}Service started successfully!!!${END}"
下面是对脚本各部分功能的详细解析:
- 环境变量初始化:
CPUS
变量通过lscpu
命令获取系统CPU核心数,用于后续编译时并行处理。VERSION
设置了要下载的Apache版本为2.4.46。TAR_SUFFIX
指定下载文件的格式为tar.bz2。- 分别定义了下载目录
DOWLOAD_DIR
、目标解压目录DEST_DIR
、安装目录INSTALL_DIR
。
- 系统检查与依赖安装:
- 使用正则表达式检查系统发行版,确保是CentOS,否则脚本退出。
- 检查
wget
是否已安装,如未安装则使用yum
自动安装。
- 下载Apache源码包:
- 使用
wget
尝试从北京外国语大学镜像站点下载指定版本的Apache源码压缩包。但根据提供的反馈,该URL返回404错误,意味着指定的文件不存在或路径错误。
- 用户与组管理:
- 如果apache用户和组不存在,则创建它们,设置UID和GID为80,并禁用登录Shell。
- 安装依赖库:
- 使用
yum
安装一系列编译和运行Apache所需的依赖包,包括开发工具、库文件等。
- 解压与编译安装:
- 解压缩下载的源码包到
DEST_DIR
目录下。 - 进入解压后的目录,执行配置、编译(利用所有CPU核心加速)、安装步骤。配置中指定了安装路径、配置文件目录及启用SSL支持。
- 环境配置与服务设置:
- 更新环境变量PATH以包含Apache的可执行文件路径。
- 修改Apache配置文件
httpd.conf
,设置运行用户和组为刚创建的apache,并取消ServerName行的注释。
- 启动服务与验证:
- 使用
apachectl start
启动Apache服务,并等待3秒以确保服务有足够时间启动。 - 检查PID文件是否存在以及端口80是否被监听,以此判断服务是否成功启动。
- 输出结果:
- 根据服务启动情况输出成功或失败的消息。
注意:由于下载环节的URL无效,脚本在实际运行时会因为无法下载所需文件而失败。需要更正下载链接后才能顺利完成安装过程。
如果想上手操作练代码的同学们可以通过阿里云ecs服务器免费试用参与!
入口:新老同学免费试用