Shell编写Nginx自动部署脚本
1、功能描述
1. 安装支持包,从软件源下载自定义的NGINX包,创建NGINX用户和用户组。
2. 安装并初始化NGINX配置。
3. 运行NGINX并检测运行状态。
2、实现
源码如下:
#!/bin/bash # eastmoney public tools # version: v1.0.1 # create by XuHoo, 2016-9-28 # function environment() { if [[ "$USER" != "root" ]]; then echo "Current user is not root" return 1 fi yum -y install wget curl pcre pcre-devel zlib zlib-devel gcc gcc-c++ &> /tmp/nginx_install.log # getUrl: Input download source address # getUrl='http://172.16.1.1\nginx-1.8.1.tar.gz' wget -P /tmp/ $getUrl/nginx.tar.gz grep "nginx" /etc/passwd > /dev/null if [[ $? -ne 0 ]]; then # check user and group groupadd nginx useradd -M -g nginx -s /sbin/nologin nginx fi cd /tmp; tar -zxf nginx.tar.gz; cd nginx return 0 }; environment; [ $? -ne 0 ] && exit 1function install() {
# Compile before installation configuration
./configure --prefix=/usr/local/nginx
--user=nginx --group=nginx
--with-http_stub_status_module
&> /tmp/nginx_install.log
if [[ $? -ne 0 ]]; then
return 1
else
# make && make install
make &> /tmp/nginx_install.log
make install &> /tmp/nginx_install.log
if [[ $? -ne 0 ]]; then
return 1
fi
return 0
fi
}; install; [ $? -ne 0 ] && exit 1function optimize() {
ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ > /dev/null
cp -f /tmp/nginx_control.sh /etc/init.d/nginx
cp -f /tmp/nginx.conf /usr/local/nginx/conf/nginx.conf
# The number of CPU cores current server,
# Amend the "worker_processes" field to the value of the processor
processor=cat /proc/cpuinfo | grep <span style="color: #800000;">"</span><span style="color: #800000;">processor</span><span style="color: #800000;">"</span> | wc -<span style="color: #000000;">l
sed -i "s/^w.*;$/worker_processes ${processor};/g" /usr/local/nginx/conf/nginx.conf
chmod +x /etc/init.d/nginx
chkconfig --add nginx
retval=chkconfig --level 3 nginx on
# Configure nginx open start service
return $retval
}; optimize; [ $? -ne 0 ] && exit 1function run() {
# Test nginx.conf file syntax is correct
/etc/init.d/nginx test &> /tmp/nginx_run.log
if [[ $? -ne 0 ]]; then
retval=$?
else # Start nginx server
/etc/init.d/nginx start &> /tmp/nginx_run.log
if [[ $? -ne 0 ]]; then
retval=$?
fi
fi
return 0
}; run; [ $? -ne 0 ] && exit 1function check() {
# Modified index.html page content
content=$"deployment on $(date "+%Y-%m-%d %H:%M:%S")"
echo $content > /usr/local/nginx/html/index.html
# View the index.html, and the output of the modified index.html page
/etc/init.d/nginx status
echo -n "Index.html: "; curl http://localhost
}; check