中间件运维日常

Shell脚本一键部署nginx

2019-11-23  本文已影响0人  大白菜的猪猪

编程需求:


对于一些不是rpm包的应用,我们都需要采用源码安装的方式,但是如果多台设备都需要部署同一个中间件的时候,一台一台的去敲命令显然是非常低效率的。我们可以把源码安装相关中间件的步骤写成playbook或者Shell脚本,这样一件实现批量部署,省时省力省心。下面以一件部署nginx为例,进行源码安装中间件脚本的编写。


源代码:


#! /bin/bash

#功能描述:一键源码安装nginx

#设置各种显示消息的颜色属性

SETCOLOR_SUCCESS="echo -en \\033[1;32m"

SETCOLOR_FAILURE="echo -en \\033[1;31m"

SETCOLOR_WARNING="echo -en \\033[1;34m"

SETCOLOR_NORMAL="echo -en \\033[1;39m"

#测试yum源是否可用

test_yum(){

        yum clean all &>/dev/null

        num=$(yum repolist -e 0 | awk '/repolist/{print $2}'| sed 's/,//' )

        if [ $num -le 0 ];then

                $SETCOLOR_FAILURE

                echo -n "[ERROR]:没有yum源!"

                $SETCOLOR_NORMAL

                exit

        fi

}

#安装LNMP环境所需要的依赖包

install_deps(){

yum -y install gcc pcre-devel openssl-devel cmake ncurses-devel

yum -y install gcc-c++ bison bison-devel

yum -y install libxm12 libxm12-devel curl curl-devel libjpeg libjpeg-devel

yum -y install freetype gd gd-devel

yum -y install freetype-devel libxslt libxslt-devel bzip2 bzip2-devel

yum -y install libpng libpng-devel

}

#源码安装nginx:创建账户,激活需要的模块,禁用不需要的模块

install_nginx(){

if ! id nginx &>/dev/null;then

        useradd -s /sbin/nologin nginx

fi

tar -xf /root/nginx-1.12.2.tar.gz

cd /root/nginx-1.12.2

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-stream --with-http_realip_module --without-http_autoindex_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module

$SETCOLOR_WARNING

echo -n "正在编译nginx,请耐心等待程序执行......"

$SETCOLOR_NORMAL

make &>/dev/null && make install &>/dev/null

cd ..

ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx

}

#源码安装的软件默认是没有service文件无法通过systemd管理

#手动编写service文件,方便在CentOS7的环境中管理服务

config_nginx_systemd(){

cat > /usr/lib/systemd/system/nginx.service <<- EOF

        [Unit]

        Description=nginx

        After=syslog.target network.target

        [Service]

        Type=forking

        PIDFile=/usr/local/nginx/logs/nginx.pid

        ExecStartPre=/usr/sbin/nginx -t

        ExecStart=/usr/local/nginx/sbin/nginx

        ExecReload=/usr/sbin/nginx -s reload

        ExecStop=/bin/kill -s QUIT $MAINPID

        [Install]

        WantedBy=multi-user.target

EOF

}

test_yum

install_deps

install_nginx

config_nginx_systemd


脚本执行结果:

1.需要下载对应的软件包并放到对应的路径:tar -xf /root/nginx-1.12.2.tar.gz

2.yum源可用

chmod +x nginx.sh

/root/nginx.sh

正在编译nginx,请耐心等待程序执行......

[root@localhost ~]# systemctl start nginx

[root@localhost ~]# systemctl status nginx

Active: active (running) since 六 2019-11-23 17:52:47 CST; 6s ago

[root@localhost ~]# systemctl stop nginx

可以看到nginx一键部署成功,并且可以通过systemctl命令进行控制


上一篇 下一篇

猜你喜欢

热点阅读