一個自動安裝lnmp環境的shell腳本
阿新 • • 發佈:2018-02-06
package mysq success 更改 print nload eas rpm包 不可用
#/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
if [ $? -eq 0 ];then
return 0
else
return 1
fi
}
#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平臺編寫;如有錯誤請留言;謝謝!
一個自動安裝lnmp環境的shell腳本