#/bin/bash
#定义nginx源码包版本,脚本会根据版本名称和后缀检查文件是否在当前目录如果你需要安装不同版本的nginx可以修改这两个变量 
nginx_version=nginx-1.8.0
format1=tar.gz
#定义php-fpm安装包的文件名,如果你需要安装其他版本可以更改这个变量
php_fpm_package_name=php-fpm-5.4.16-36.el7_1.x86_64.rpm
#判断系统语言是不是中文是返回0不是返回1
language(){
	echo $LANG |grep -q zh
	[ $? -eq 0 ] && return 0 || return 1
}
#yum仓库的错误输出函数
error_yum(){
	#根据系统默认语言输出错误提示
	language
	if [ $? -eq 0 ];then
		clear
		echo
		echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
		echo "错误:本机YUM不可用,请正确配置YUM后重试."
		echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
		echo
		exit
	else
		clear
		echo
		echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
		echo "ERROR:Yum is disable,please modify yum repo file then try again."
		echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
		echo
		exit
	fi
}
#yum仓库检查函数
yumcheck(){
	#清空yum缓存
	yum clean all &>/dev/null
	#得到yum仓库中可用rpm包个数
	repolist=$(yum repolist 2>/dev/null |awk '/repolist:/{print $2}'|sed 's/,//')
	if [ $repolist -le 0 ];then
		#如果可用软件包数是0则调用报错函数error_yum提示yum错误
		error_yum  
	fi
}
#解决nginx依赖关系
solve_depend(){
	language
	if [ $? -eq 0 ];then
		echo -en "\033[1;34m正在安装依赖包,请稍后...\033[0m"
	else
		echo -e "\033[1;34mInstalling dependent software,please wait a moment...\033[0m"
	fi
		rpmlist="gcc pcre-devel openssl-devel zlib-devel make"
	#循环安装nginx所有依赖包
	for i in $rpmlist
	  do
		#查看该包是否安装如果每有安装则安装否则跳过
		rpm -q $i &>/dev/null || yum -y install $i 
	  done
}
#当前目录找不到源码包提示错误函数
error_nofile(){
	language
        if [ $? -eq 0 ];then
               clear
               echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
               echo -e "\033[1;34m错误:未找到[ ${1} ]软件包,请下载软件包至当前目录.\033[0m"
               echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
               exit
        else
               clear
               echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
               echo -e "\033[1;34mERROR:Not found [ ${1} ] package in current directory, please download it.\033[0m"
               echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
               exit
        fi
}
#安装nginx函数
install_nginx(){
	#调用yum仓库检查
	yumcheck
	#安装nginx依赖包
	solve_depend
	grep -q nginx /etc/passwd
	#如果系统中不存在nginx这个用户则添加一个nginx用户
	[ $? -ne 0 ] && useradd -s /sbin/nologin nginx
	if [ -f ${nginx_version}.${format1} ];then
		tar -xf ${nginx_version}.${format1}
		cd $nginx_version
		./configure --prefix=/usr/local/nginx --with-http_ssl_module
		make
		make install
		ln -s /usr/local/nginx/sbin/nginx /usr/sbin/
		cd ..
	else
		#如果找不到nginx安装文件则报错
		error_nofile Nginx
	fi
}
#yum安装错误提示函数
error_yum(){
	language
        if [ $? -eq 0 ];then
		   clear
               echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
               echo -e "\033[1;34m错误: ${1}安装失败.\033[0m"
               echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
               exit
	else
		   clear
               echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
               echo -e "\033[1;34merror: ${1}install error.\033[0m"
               echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
               exit
	
	fi
}

#安装PHP Mariadb 相关组件函数
yum_install(){
	yum_list="php php-mysql mariadb mariadb-server mariadb-devel"
	for i in $yum_list
	do
		 #查看该包是否安装如果每有安装则安装否则跳过
                rpm -q $i &>/dev/null || yum -y install $i
		[ $? -nq 0 ] && error_yum $i
	done
}
#安装php后台程序函数
install_php_fpm(){
	if [ -f ${php_fpm_package_name} ]
	then
	rpm -q $php_fpm_package_name &>/dev/null || rpm -hiv $php_fpm_package_name
	else
	error_yum  ${php_fpm_package_name}
	fi
}
#启动提示
start_message(){
	language
      if [ $? -eq 0 ];then
		if [ $2 -eq 0 ];then
             	echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
            	echo -e "\033[1;34m启动: ${1}启动成功.\033[0m"
            	echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
		else
			echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
            	echo -e "\033[1;34m启动: ${1}启动失败.\033[0m"
            	echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
		fi
	else
		 if [ $2 -eq 0 ];then
             	echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
            	echo -e "\033[1;34mstart: ${1}start is successful.\033[0m"
            	echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
		else
			echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
            	echo -e "\033[1;34mstart: ${1}start is error.\033[0m"
            	echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
		fi
	
	fi
}


#启动lnmp环境函数
start_lnmp(){
	systemctl start php-fpm.service &>/dev/null
	netstat -tupan |grep php-fpm
	[ $? -eq 0 ] && start_message php-fpm 0 || start_message php-fpm 1
	/usr/local/nginx/sbin/nginx &>/dev/null
	netstat -tupan |grep nginx &>/dev/null
	[ $? -eq 0 ] && echo start_message nginx 0 || start_message nginx 1
	systemctl start mariadb &>/dev/null
	[ $? -eq 0 ] && start_message mariadb 0 || start_message mariadb 1
	#启动环境结束后暂停5秒;退出程序
	sleep 5
	exit 
}
#脚本菜单函数
menu(){
	clear
	language
	if [ $? -eq 0 ];then
	   echo "  ##############----Menu----##############"
	   echo "# 1. 安装lump环境"
	   echo "# 2. 启动lump环境"
	   echo "# 9. 退出程序"
	   echo "  ########################################"
	else
	   echo "  ##############----Menu----##############"
	   echo "# 1. Install lnmp"
	   echo "# 2. Start lnmp"
	   echo "# 9. Exit Program"
	   echo "  ########################################"
	fi
}
#功能选择函数
choice(){
	language
	if [ $? -eq 0 ];then
		read -p "请选择一个菜单[1 2 9]:" select
	else
		read -p "Please choice a menu[1 2 9]:" select
	fi
}
#主程序开始
while :
do
	menu
	choice
	case $select in 
	1)
	install_nginx
  	yum_install
	install_php_fpm;;
	2)
	start_lnmp;;
	9)
	exit;;
	*)
	echo "choice error"
	esac
done
本脚本基于CentOS7.x平台编写;如有错误请留言;谢谢!