Centos7安装LAMP的Shell脚本

该脚本纯属个人兴趣爱好
脚本依赖包如下:
链接:https://pan.baidu.com/s/1PNigG-vocYuGLf1zHBOV0g
提取码:30gq
脚本内容:

#!/bin/bash

##################################################################################################
####################################[定义文件变量名称]############################################
##################################################################################################
ALI_YUM="http://mirrors.aliyun.com/repo/Centos-7.repo"

HTTP_TAG="httpd-2.4.34.tar.gz"
HTTP="httpd-2.4.34"

CMAKE_TAG="cmake-3.12.0.tar.gz"
CMAKE="cmake-3.12.0"

MYSQL_TAG="mysql-5.6.36.tar.gz"
MYSQL="mysql-5.6.36"

LIBMCRYPT_TAG="libmcrypt-2.5.8.tar.gz"
LIBMCRYPT="libmcrypt-2.5.8"

MHASH_TAG="mhash-0.9.9.9.tar.gz"
MHASH="mhash-0.9.9.9"

MCRYPT_TAG="mcrypt-2.6.8.tar.gz"
MCRYPT="mcrypt-2.6.8"

ZendGuardLoade_TAG="zend-loader-php5.5-linux-x86_64_update1.tar.gz"
ZendGuardLoade="zend-loader-php5.5-linux-x86_64"

PHP_TAG="php-5.5.38.tar.gz"
PHP="php-5.5.38"

PHP_MYADMIN_TAG="phpMyAdmin-4.7.2-all-languages.tar.gz"
PHP_MYADMIN="phpMyAdmin-4.7.2-all-languages"




#######################################http的函数#######################################
########################################################################################
http_install () 
{
	echo -e "\033[32m #正在检测是否安装Http服务---------------------------\033[0m"
	sleep 3
	service httpd restart &> /dev/null && [ -e /usr/local/http ] 
	if [ $? -ne 0 ]
	then
		while true
		do
			read -p " #当前尚未安装\"httpd\"服务,是否安装\"httpd\"服务[YES/NO]:" httpd_install
			case "$httpd_install" in 
			YES|yes|Y|y)
				if [ -e /root/$HTTP_TAG ]
				then
					echo -e "\033[32m *\"$HTTP_TAG\"文件已存在于\"/root/\"目录下\033[0m"
					sleep 2
				else
					echo -e "\033[31m Error:\"/root/\"目录下没找到\"$HTTP_TAG\"文件!\033[0m"
					echo -e "\033[31m *请将\"$HTTP_TAG\"文件移动到\"/root/\"目录下\033[0m"
					echo -e "\033[34m ================================================\033[0m"
					exit
				fi
				echo -e "\033[32m #######################开始安装httpd服务##########################\033[0m"
				sleep 2
				yum -y install apr apr-devel cyrus-sasl-devel expat-devel libdb-devel openldap-devel apr-util-devel apr-util pcre-devel pcre
				cd
				tar -zxf $HTTP_TAG -C /usr/src/
				cd /usr/src/$HTTP
				./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --disable-proxy
				make && make install
				if [ $? -eq 0 ]
				then
					ln -s /usr/local/httpd/bin/* /usr/local/bin
					cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
					echo "#chkconfig: 35 85 21" >> /etc/init.d/httpd
					chkconfig --add httpd &> /dev/null
					cat << END >> /lib/systemd/system/httpd.service
 [Unit]
Description=The Apache HTTP Server
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart=/usr/local/bin/apachectl $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
END
					service httpd restart &> /dev/null
					netstat -tlunp | grep 80 &> /dev/null
					if [ $? -eq 0 ]
					then 
						echo -e "\033[32m *httpd服务已安装完成!\033[0m"
						break
					else
						echo -e "\033[31m Error:服务未安装成功 \033[0m"
					fi
				else
					echo -e "\033[31m Error:#########安装出错已中断####### \033[0m"
					exit
				fi
				;;
			NO|no|N|n)
				echo -e "\033[34m *已返回\033[0m"
				break
				;;
			*)
				echo -e "\033[31m *请输入正确的格式!\033[0m"
				;;
			esac 
		done
	else
		echo -e "\033[32m *您已经安装httpd服务!\033[0m"
		fi

}
###########################################mysql的函数##################################
########################################################################################

mysql_install () 
{
	echo -e "\033[32m #正在检测是否安装MySQL服务---------------------------\033[0m"
	sleep 2
	service mysqld restart &> /dev/null && [ -e /usr/local/mysql ] 
	if [ $? -eq 0 ]
	then 
		echo -e "\033[32m *您已安装MYSQL服务!\033[0m"
	
	else
		while true
		do
			read -p " #当前尚未安装\"MYSQL\"服务,是否安装\"MySQL\"服务[YES/NO]:" mysql_install
			case "$mysql_install" in
			YES|yes|y|Y)
				cd
				for MYSQL_ALL_TAG in  $CMAKE_TAG $MYSQL_TAG 
				do
	      				if [ -e /root/$MYSQL_ALL_TAG ]
					then
						echo -e "\033[32m *\"$MYSQL_ALL_TAG\"文件已存在与\"/root/\"目录\033[0m"
						sleep 2
					else
						echo -e "\033[31m Error:\"/root/\"目录下缺少\"$MYSQL_ALL_TAG\"文件\033[0m"
						echo -e "\033[31m *请将文件\"$MYSQL_ALL_TAG\"移动到\"/root/\"目录下\033[0m"
						echo -e "\033[34m ================================================\033[0m"
						exit 
        				fi
				done
				echo -e "\033[32m #######################开始安装MySQL服务##########################\033[0m"
				sleep 2
				yum -y install ncurses-devel
				tar -zxf $CMAKE_TAG
				cd $CMAKE
				./configure
				gmake && gmake install
				cd
				tar -zxf $MYSQL_TAG -C /usr/src/
				groupadd mysql
				useradd -M -s /sbin/nologin mysql -g mysql
				cd /usr/src/$MYSQL
				cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all
				make && make install
				if [ $? -eq 0 ]
				then 
					chown -R mysql:mysql /usr/local/mysql
					rm -rf /etc/my.cnf
					cp support-files/my-default.cnf /etc/my.cnf
					echo "pid-file=/usr/local/mysql/data/mysql.pid" >> /etc/my.cnf
					/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/
					ln -s /usr/local/mysql/bin/* /sbin/
					cp support-files/mysql.server /usr/local/mysql/bin/mysqld.sh 
					chmod +x /usr/local/mysql/bin/mysqld.sh
					cat << END >> /lib/systemd/system/mysqld.service
[Unit]
Description=The Apache HTTP Server
After=network.target

[Service]
User=mysql
Group=mysql
		
Type=forking
PIDFile=
ExecStart=/usr/local/mysql/bin/mysqld.sh start
ExecStop=/usr/local/mysql/bin/mysqld.sh stop

[Install]
WantedBy=multi-user.target
END
					systemctl enable mysqld.service
					systemctl restart mysqld.service
					netstat -tlunp | grep 3306
					if [ $? -eq 0 ]
					then
						echo -e "\033[32m *MYSQL服务安装完成!\033[0m"
						break
					else
						echo -e "\033[31m Error:MYSQL服务安装失败!\033[0m"
					fi
				else
					echo -e "\033[31m Error:###############安装出错已中断###############\033[0m"
					exit
				fi
				;;
			NO|no|N|n)
				echo -e "\033[34m *已返回\033[0m"
				break
				;;
			*)
				echo -e "\033[31m *请输入正确的格式!\033[0m"
				;;
			esac
		done	
	fi

}
##########################################php的函数#####################################
########################################################################################
php_install () 
{
	echo -e "\033[32m #正在检测是否安装PHP组件---------------------------\033[0m"
	sleep 2
	rpm -e php php-cli php-ldap php-common php-mysql &> /dev/null
	if [ -e /usr/local/php5 ]
	then
		echo -e "\033[32m *您已安装php组件!\033[0m"
	else
		while true
		do
			read -p " #当前尚未安装\"PHP组件\",是否安装php组件[YES/NO]:" php_install
			case "$php_install" in
			YES|yes|Y|y)
				cd
				for PHP_ALL_TAG in  $LIBMCRYPT_TAG $MHASH_TAG $MCRYPT_TAG $ZendGuardLoade_TAG
				do
					if [ -e /root/$PHP_ALL_TAG ]
					then
						echo -e "\033[32m *\"$PHP_ALL_TAG\"文件已存在与\"/root/\"目录下\033[0m"
						sleep 2
					else
						echo -e "\033[34m ================================================\033[0m"
						echo -e "\033[31m Error:\"/root/\"目录下缺少\"$PHP_ALL_TAG\"文件\033[0m"
						echo -e "\033[31m *请将文件\"$PHP_ALL_TAG\"移动到\"/root/\"目录下\033[0m"
						exit
					fi
				done
				echo -e "\033[32m #######################开始安装PHP##########################\033[0m"
				sleep 2
				mount /dev/cdrom /mnt
				yum -y install zlib-devel xz-devel libxml2-devel
				tar -zxf $LIBMCRYPT_TAG -C /usr/src/
				cd /usr/src/$LIBMCRYPT
				./configure
				make && make install
				ln -s /usr/local/lib/libcrypt.* /usr/lib
				cd
				tar -zxf $MHASH_TAG -C /usr/src/
				cd /usr/src/$MHASH
				./configure
				make && make install
				ln -s /usr/local/lib/libmhash.* /usr/lib
				cd
				tar -zxf $MCRYPT_TAG -C /usr/src
				cd /usr/src/$MCRYPT
				export LD_LIBRARY_PATH=/usr/local/lib
				./configure
				make && make install
				cd
				tar -zxf $PHP_TAG -C /usr/src/
				cd /usr/src/$PHP
				./configure --prefix=/usr/local/php5 --with-mcrypt --with-apxs2=/usr/local/httpd/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/usr/local/php5 --enable-mbstring
				make && make install
				if [ $? -eq 0 ] 
				then
					cp /usr/src/$PHP/php.ini-development /usr/local/php5/php.ini
					cd
					tar -zxf $ZendGuardLoade_TAG -C /usr/src/
					cd /usr/src/$ZendGuardLoade
					cp ZendGuardLoader.so /usr/local/php5/php
					cat << END >> /usr/local/php5/php.ini
default_charset = "utf-8"
file_uploads = On         
upload_max_filesize = 2M  
max_file_uploads = 20
post_max_size = 8M
short_open_tag = On       
extension=php_mysqli.dll
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1
END
					echo "AddType application/x-httpd-php .php" >> /usr/local/httpd/conf/httpd.conf
					sed -i '/^    DirectoryIndex/s/index.html/index.html index.php/g'  /usr/local/httpd/conf/httpd.conf
					systemctl restart httpd.service
					echo -e "\033[32m *php组件已安装完成!\033[0m"
					break
				else
					echo -e "\033[31m Error:################安装出错已中断################\033[0m"
					exit
				fi
				break
				;;
			no|NO|n|N)
				echo -e "\033[34m *已返回\033[0m"
				break
				;;
			*)
				echo -e "\033[31m *请输入正确的格式!\033[0m"
				;;
			esac
		done
	fi
}
######################################php_MyAdmin的函数#################################
########################################################################################
phpmyadmin_install () 
{
	echo -e "\033[32m #正在检测是否安安装PHP-My-Admin---------------------------\033[0m"	
	sleep 2
	service mysqld restart &> /dev/null
	if [ $? -eq 0 ]
	then
	if [ -e /usr/local/httpd/htdocs/phpMyAdmin ]
	then
		echo -e "\033[32m *您已安装PHP-MyAdmin!\033[0m"
	else
		while true
		do
			read -p " #当前尚未安装\"PHP-MyAdmin\",是否安装PHP-MYADMIN[YES/NO]:" myadmin_install
			case "$myadmin_install" in
			YES|yes|Y|y)
				cd
				if [ -e /root/$PHP_MYADMIN_TAG ]
				then
					echo -e "\033[32m *\"$PHP_MYADMIN_TAG\"文件已存在与\"/root\"目录下\033[0m"
					sleep 2
				else
					echo -e "\033[34m ================================================\033[0m"
					echo -e "\033[31m Error:\"/root/\"目录下缺少\"$PHP_MYADMIN_TAG\"文件\033[0m"	
					echo -e "\033[31m *请将文件\"$PHP_MYADMIN_TAG\"移动到\"root\"目录下\033[0m"
					exit
				fi
				echo -e "\033[32m #######################开始安装PHP-MyAdmin##########################\033[0m"
				sleep 2
				tar -zxf $PHP_MYADMIN_TAG
				mv $PHP_MYADMIN /usr/local/httpd/htdocs/phpMyAdmin
				cd /usr/local/httpd/htdocs/phpMyAdmin/
				cp config.sample.inc.php config.inc.php
				if [ $? -eq 0 ]
				then
					while true
					do
						read -s -p " #请您修改数据库root的登陆密码:" PASSWD
						echo ""
						read -s -p " #请您再次输入数据库root密码:" PASSWD_again
						if [ $PASSWD == $PASSWD_again ]
						then
							break
						else
							echo ""
							echo -e "\033[34m #两次密码不一致,请重新输入!\033[0m"	
						fi
					done
					/usr/local/mysql/bin/mysqladmin -uroot password $PASSWD &> /dev/null
					echo ""
					echo -e "\033[34m ================================================\033[0m"
					echo -e "\033[32m *php-MyAdmin已安装完成!\033[0m"
					echo -e "\033[32m *您可以通过访问网页\"http://服务器IP地址/phpMyAdmin\"访问MyAdmin管理端,登陆名\"root\"密码为您刚才设置!\033[0m"		
					echo -e "\033[34m ================================================\033[0m"
					break
				else
					echo -e "\033[31m Error:#############安装出错已中断###############\033[0m"
					exit
					
				fi
				;;
			NO|no|N|n)
				echo -e "\033[34m *已返回\033[0m"
				break
				;;
			*)
			echo -e "\033[31m *请输入正确的格式!\033[0m"
			;;
			esac
		done
	fi
	else
		echo -e "\033[31m Error:请先安装MYSQL服务!\033[0m"
	fi
}

#####################################安装软件函数##########################################
install () 
{
while true
do
	echo -e "\033[34m ================================================\033[0m"
	echo -e "\033[33m *[1.HTTP]|[2.MYSQL]|[3.PHP组件]|[4.PHP_MyAdmin]\033[0m"
	echo -e "\033[36m *若要退出输入\"exit\"\033[0m"
	read -p " #请您输入对应的序列号安装您想要安装的软件:" NUMBER
	case "$NUMBER" in
######################################[安装HTTP]#############################################
	1)
	sleep 1

	http_install
	;;
######################################[安装MYSQL]##############################################
	2)
	sleep 1
	mysql_install
	;;
#####################################[安装php组件]#############################################

	3)
	sleep 1
	php_install	
	;;
#####################################[PHP-MYADMIN安装]#########################################
	4)
	phpmyadmin_install
	sleep 1
	;;
########################################[退出选项]############################################
	exit|EXIT)
	sleep 1
		echo -e "\033[34m =======================BYE======================\033[0m"
		exit
	;;
#########################################[输入其他字符]###########################################
	*)
	sleep 1
	echo -e "\033[31m *请输入正确的格式!\033[0m"
	;;
	esac
done

}


###################################################################################################
######################################本地YUM函数##################################################
install_1 () 
{
echo -e "\033[32m #正在检测是否挂载磁盘---------------------------\033[0m"
sleep 1
mount /dev/cdrom /mnt &> /dev/null
cd /mnt/Packages/ &> /dev/null
if [ $? -eq 0 ]
then
	echo -e "\033[32m *您已挂载centos磁盘!\033[0m"
	sleep 1
	rm -rf /etc/yum.repos.d/*
cat <<END>> /etc/yum.repos.d/local.repo
[local]
name=local
enabled=1
gpgcheck=0
baseurl=file:///mnt
END
	yum -y install gcc gcc-c++ &> /dev/null
	install
else
	echo -e "\033[31m *请将centos磁盘插入到计算机中!\033[0m"
fi
}



#####################################网络YUM函数###################################################
###################################################################################################
install_2 ()
{
echo -e "\033[34m ##############正在检测是否接通外网###############\033[0m"
sleep 1
ping -c 2 www.baidu.com &> /dev/null
if [ $? -eq 0 ]
then
	yum -y install wget
	rm -rf /etc/yum.repos.d/*
	cd /etc/yum.repos.d/
	wget  $ALI_YUM
	yum clean all
	yum -y install gcc gcc-c++ &> /dev/null
	install
else
	echo -e "\033[31m Error:请先接通外网!\033[0m"
fi
}



###############################################################################################
#######################################[判断用户安装方式]######################################
###############################################################################################
name1=$(whoami)
echo -e "\033[34m ##############正在检测是否为root用户#############\033[0m"
sleep 1
if [ $name1 == root ]
then
	system_version=$(cat /etc/redhat-release | grep -o '[0-9.]*'|awk -F'.' '{print $1}')
	if [ $system_version == 7 ]
	then
		echo -e "\033[32m #当前系统版本为CentOS-7\033[0m"
		while true
		do
			echo -e "\033[34m ================================================\033[0m"
			echo -e "\033[33m *[1.本地YUM源]|[2.网络YUM源]|\033[0m"
			echo -e "\033[36m *若要退出输入\"exit\"\033[0m"
			read -p " *请输入你要安装的方式:" way
			case "$way" in
				1)
					install_1
					;;
				2)
					install_2
					;;
				exit|EXIT)
					echo -e "\033[34m =======================BYE======================\033[0m"
					exit
					;;
				*)
					echo -e "\033[31m *请输入正确的格式!\033[0m"
					;;
			esac
		done
	elif [ $system_version == 6 ]
	then
		echo -e "\033[31m #当前系统版本为CentOS-6,不适合此脚本!已退出\033[0m"
		exit
	fi
else
	echo -e "\033[31m *请以root用户执行!\033[0m"
	exit
fi
发布了62 篇原创文章 · 获赞 16 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41674452/article/details/89042038
今日推荐