#!/bin/bash LANG=en_US.UTF-8 name=Nginx ver=1.0 LockFile=/tmp/.$(basename $0).lock LogFile=/tmp/.$(basename $0).log BaseDir=/usr/local/src # declare -A 定义关联数组 类似字典 键值对 # 所需文件及版本号 declare -A Files Files=([nginx]="nginx-1.14.2" [pcre]="pcre-8.42" [openssl]="openssl-1.1.1a" [zlib]="zlib-1.2.11") # 安装所需目录 declare -A Dirs Dirs=([NginxInstallDir]="/usr/local/nginx" [WwwrootDir]="/home/wwwroot" [WwwlogsDir]="/home/wwwlogs" [DefaultDir]="/home/wwwroot/default" [VhostDir]="/home/panel/vhost") # 扩展模块及功能配置 NginxModulesOptions="" RunUser=www thread=$(grep 'processor' /proc/cpuinfo | sort -u | wc -l) MirrorLink=http://xxx.com/panel/lnmp declare -A Colors Colors=([success]="32m" [failure]="31m" [warning]="33m" [msg]="34m") Echo() { [ ! $1 ] && flag="34m" || flag=$1 echo -e "\033[1;${Colors[${flag}]}${2}\033[0m" #写日志 #echo "$(date "+%Y-%m-%d") $(date "+%H-%M-%S"):${name}:[$1] $2" >> $LogFile } ShellLock(){ touch $LockFile } ShellUnlock(){ rm -f $LockFile } Exit(){ ShellUnlock exit } CheckOS() { # 获取系统及版本 if [ -e /etc/redhat-release ]; then OS=CentOS [ -n "$(grep ' 7\.' /etc/redhat-release 2> /dev/null)" ] && CentOSVer=7 [ -n "$(grep ' 6\.' /etc/redhat-release 2> /dev/null)" ] && CentOSVer=6 elif [ -n "$(grep -i 'Debian' /etc/issue 2> /dev/null)" ]; then OS=Debian elif [ -n "$(grep -i 'Ubuntu' /etc/issue 2> /dev/null)" ]; then OS=Ubuntu else OS=UnknownOS fi } Download() { url=$1 [ -s "${url##*/}" ] && Echo "msg" "[${url##*/}] 已存在" || { wget --tries=6 -c --no-check-certificate $url; sleep 1; } #判断下载是否已存在 if [ ! -e "${url##*/}" ]; then Echo "failure" "${url##*/}下载失败" Exit fi } InstallNginx() { pushd $BaseDir # 批量下载并解压所需包 for key in ${!Files[*]};do [ ! -f ${Files[$key]}.tar.gz ] && Download(${MirrorLink}/${Files[$key]}.tar.gz) [ $? -eq 0 ] && tar xzf ${Files[$key]}.tar.gz done # 批量检测并创建所需目录 for key in ${!Dirs[*]};do [ ! -d "${Dirs[$key]}" ] && mkdir -p ${Dirs[$key]} done id -u $RunUser >/dev/null 2>&1 [ $? -ne 0 ] && useradd -M -s /sbin/nologin $RunUser pushd ${Files[nginx]} ./configure --prefix=${Dirs[NginxInstallDir]} --user=$run_user --group=$run_user --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module \ --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-pcre=../${Files[pcre]} \ --with-openssl=../${Files[openssl]} --with-zlib=../${Files[zlib]} --with-pcre-jit $NginxModulesOptions make -j ${THREAD} && make install if [ -f "${Dirs[NginxInstallDir]}/conf/nginx.conf" ]; then popd # 批量清理下载文件及解压后文件夹 for key in ${!Files[*]};do rm -rf ${Files[$key]}.tar.gz ${Files[$key]} done Echo "success" "Nginx${Files[nginx]}安装成功" else rm -rf ${Dirs[NginxInstallDir]} Echo "failure" "${Files[nginx]}安装失败" && Exit fi # 判断加path [ -z "`grep ^'export PATH=' /etc/profile`" ] && echo "export PATH=${Dirs[NginxInstallDir]}/sbin:\$PATH" >> /etc/profile [ -n "`grep ^'export PATH=' /etc/profile`" -a -z "`grep ${Dirs[NginxInstallDir]} /etc/profile`" ] && sed -i "s@^export PATH=\(.*\)@export PATH=${Dirs[NginxInstallDir]}/sbin:\1@" /etc/profile sleep 1 . /etc/profile [ "$OS" == "CentOS" ] && { wget -O /etc/init.d/nginxd http://xxx.com/shell/lnmp/init.d/nginxd.txt; chkconfig --add nginxd; chkconfig nginxd on; chmod +x /etc/init.d/nginxd; } sed -i "s@/usr/local/nginx@${Dirs[NginxInstallDir]}@g" /etc/init.d/nginxd cp ${Dirs[NginxInstallDir]}/conf/nginx.conf{,_bk} wget -O ${Dirs[NginxInstallDir]}/conf/nginx.conf http://xxx.com/shell/lnmp/config/nginx.txt sed -i "s@/data/wwwroot/default@${Dirs[DefaultDir]}@" ${Dirs[NginxInstallDir]}/conf/nginx.conf sed -i "s@/data/wwwlogs@${Dirs[WwwlogsDir]}@g" ${Dirs[NginxInstallDir]}/conf/nginx.conf sed -i "s@^user www www@user $RunUser $RunUser@" ${Dirs[NginxInstallDir]}/conf/nginx.conf ln -sf ${Dirs[VhostDir]} ${Dirs[NginxInstallDir]}/conf/vhost wget -O ${Dirs[DefaultDir]}/index.html http://xxx.com/shell/lnmp/config/index.txt sleep 1 wget -O ${Dirs[DefaultDir]}/phpinfo.php http://xxx.com/shell/lnmp/config/phpinfo.txt chown $RunUser $RunUser -R ${Dirs[WwwrootDir]} chmod 744 -R ${Dirs[WwwrootDir]} popd ldconfig service nginxd start } Main() { [ -f "$LockFile" ] && Echo "warning" "请勿重复运行或删除锁文件$LockFile" && Exit ShellLock CheckOS yum install -y gcc-c++ perl pcre-devel openssl openssl-devel InstallNginx ShellUnlock } Main
Nginx 一键安装shell脚本
声明:本站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,若涉及侵权请及时告知,将会在第一时间删除,联系邮箱:contact@3yyy.top。文章观点不代表本站立场。本站原创内容未经允许不得转载:三叶运维 » Nginx 一键安装shell脚本