该脚本纯属个人兴趣爱好
脚本依赖包如下:
链接: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