【需求】
将如下部署文档用一个shell脚本实现。
1)下载源码
cd /usr/local/src
sudo curl -O http://nginx.org/download/nginx-1.23.0.tar.gz
2)解压
sudo tar zxf nginx-1.23.0.tar.gz
cd nginx-1.23.0
3)安装依赖
RHEL/Rocky
sudo yum install -y gcc make pcre-devel zlib-devel openssl-devel
##ubuntu
sudo apt install -y gcc make libpcre++-dev libssl-dev zlib1g-dev
4)配置
sudo ./configure --prefix=/usr/local/nginx --with-http_ssl_module
5)编译和安装
sudo make && sudo make install
6)编辑system服务管理脚本
sudo vi /lib/systemd/system/nginx.service #写入如下内容
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /usr/local/nginx/logs/nginx.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /usr/local/nginx/logs/nginx.pid)"
[Install]
WantedBy=multi-user.target
7)加载服务
sudo systemctl daemon-reload
8)启动服务
sudo systemctl start nginx
【部署脚本】
#!/bin/bash
#检测上条命令是否有错误,如果有就抛出异常退出
sofeware_name="nginx-1.23.0"
status_ok(){
if [ $? -ne 0 ]
then
echo "$1 error."
exit 1
fi
}
download_ng()
{
cd /usr/local/src
if [ -f nginx-1.23.0.tar.gz ]
then
echo "当前目录已经存在nginx-1.23.0.tar.gz"
echo "检测md5"
ng_md5=`md5sum $sofeware_name.tar.gz|awk '{print $1}'`
if [ ${ng_md5} == 'e8768e388f26fb3d56a3c88055345219' ]
then
return 0
else
sudo /bin/mv $sofeware_name.tar.gz $sofeware_name.tar.gz.old
fi
fi
sudo curl -O http://nginx.org/download/nginx-1.23.0.tar.gz
status_ok "下载Nginx"
}
install_ng()
{
cd /usr/local/src
echo "解压Nginx"
sudo tar zxf $sofeware_name.tar.gz
status_ok "解压Nginx"
cd $sofeware_name
echo "安装依赖"
if which yum >/dev/null 2>&1
then
## RHEL/Rocky
for pkg in gcc make pcre-devel zlib-devel openssl-devel
do
if ! rpm -q $pkg >/dev/null 2>&1
then
sudo yum install -y $pkg
status_ok "yum 安装$pkg"
else
echo "$pkg已经安装"
fi
done
fi
if which apt >/dev/null 2>&1
then
##ubuntu
for pkg in make libpcre++-dev libssl-dev zlib1g-dev
do
if ! dpkg -l $pkg >/dev/null 2>&1
then
sudo apt install -y $pkg
status_ok "apt 安装$pkg"
else
echo "$pkg已经安装"
fi
done
fi
echo "configure Nginx"
sudo ./configure --prefix=/usr/local/nginx --with-http_ssl_module
status_ok "Configure Nginx"
echo "编译和安装"
sudo make && sudo make install
status_ok "编译和安装"
echo "编辑systemd服务管理脚本"
cat > /tmp/nginx.service <<EOF
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP \$(/bin/cat /usr/local/nginx/logs/nginx.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM \$(/bin/cat /usr/local/nginx/logs/nginx.pid)"
[Install]
WantedBy=multi-user.target
EOF
sudo /bin/mv /tmp/nginx.service /lib/systemd/system/nginx.service
status_ok "编辑nginx.service"
echo "加载服务"
sudo systemctl unmask nginx.service
sudo systemctl daemon-reload
sudo systemctl enable nginx
echo "启动Nginx"
sudo systemctl start nginx
status_ok "启动Nginx"
}
download_ng
install_ng
其他服务根据相应的需求进行脚本编写修改就可以了
评论区