本文主要包含cenots,cenots6.5,lamp shell,shell脚本,shell脚本编程等服务器相关知识,网友希望可以进行参考
LAMP指的Linux操作系统)、ApacheHTTP 服务器),MySQL数据库软件)和PHP构建的web服务器。该网站架构是目前国际流行和通用的Web架构,LAMP跨平台、高性能等优势,是很多企业和公司搭建WEB服务的首选平台。
1)系统环境介绍
Centos 5.8 64位
Apache:httpd-2.4.4.tar.gz
PHP: php-5.4.17.tar.gz
Mysql: mysql-5.6.12.tar.gz
2)安装脚本
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH
#INFO函数定义输出字体颜色,echo -e 表示保持字符串的特殊含义,$1表示字体颜色编号,$2表示等待程序执行时间,$3表示echo输出内容。
function INFO()
{
echo -e "\e[$1;49;1m: $3 \033[39;49;0m"
sleep "$2"
echo ""
}
#非root用户不能执行该脚本
if [ "$UID" != 0 ];
then
echo " "
INFO 35 "0" "Must be root ro run this script."
exit 1
fi
#USAGE函数定义脚本用法,可反复调用,basename其实就是脚本名,\n表示换行。
function USAGE()
{
INFO 35 "0.1" "Please see the script of the usage:"
basename=$(basename "$0")
INFO \
36 "0" \
"$(echo -e "Usage: \n\n./$basename (apache|mysql|php) install \n./$basename apache (start|stop|restart) \n./$basename mysql (start|stop|restart)\n")"
}
#YUM_INSTALL函数安装依赖包,可反复调用,$@表示所有参数都分别被双引号引住"$1","$2",而$*表示所有这些参数都被双引号引住"$1$2"
function YUM_INSTALL()
{
for a in $@; do
INFO 32 1 "Install depend on the [ $a ]"
yum -y install $a || exit 1
if [ $a = "libXpm-devel" ]; then
ln -s /usr/lib/x86_64-linux-gnu/libXpm.so /usr/lib/libXpm.so
#elif [ $a = "libsasl2-dev" ]; then
# cp /usr/lib/x86_64-linux-gnu/libldap* /usr/lib/
fi
done
}
#INSTALL函数定义安装程序,可一反复调用,安装apache程序的时候要先安装3个依赖包,在安装mysql的时候要用cmake编译。$1表示要安装的程序,$2表示yum安装对应的依赖包,$3表示程序解压后的目录,$4表示程序源码包。
function INSTALL()
{
YUM_INSTALL "$2" && cd $SOURCE_PATH
[ -d $3 ] && rm -r $3; INFO 31 4 "Unpack the $4 installation package......"
tar zxvf $4; cd $3 ; pwd ; INFO 32 4 "Configure the $1......"
if [ $1 = apache ];
then
cp -rf ../apr-1.4.8 srclib/apr
cp -rf ../apr-util-1.5.2 srclib/apr-util
./configure $5 || exit 1
elif [ $1 = mysql ];
then
cmake $5 || exit 1
elif [ $1 = openssl ];
then
./config $5 || exit 1
elif [ $1 = libpng ];
then
cp scripts/makefile.linux makefile
elif [ $1 = jpegsrc.v6b.tar.gz ];
then
cp /usr/share/libtool/config.guess ./
cp /usr/share/libtool/config.sub ./
./configure $5 || exit 1
mkdir -p /usr/local/env/jpeg/bin
mkdir -p /usr/local/env/jpeg/lib
mkdir -p /usr/local/env/jpeg/include
mkdir -p /usr/local/env/jpeg/man/man1
else
./configure $5 || exit 1
fi
INFO 36 3 "Compile $1......"
make || exit 1 && INFO 34 4 "Install $1......" ; make install && INFO 33 4 "$1 installation is successful......"
if [ $1 = mysql ];
then
echo $INSTALL_PATH/mysql/lib/mysql >> /etc/ld.so.conf
/sbin/ldconfig && INFO 33 4 "Add $1 library file to ld.so.conf......"
fi
if [ $1 = libiconv ];
then
echo "/usr/local/env/libiconv/lib" >> /etc/ld.so.conf
/sbin/ldconfig && INFO 33 4 "Add $1 library file to ld.so.conf......"
fi
if [ $1 = libxml2 ];
then
echo "/usr/local/env/libxml2/lib" >> /etc/ld.so.conf
/sbin/ldconfig && INFO 33 4 "Add $1 library file to ld.so.conf......"
fi
if [ $1 = libmcrypt ];
then
echo "/usr/local/env/libmcrypt/lib" >> /etc/ld.so.conf
/sbin/ldconfig && INFO 33 4 "Add $1 library file to ld.so.conf......"
fi
if [ $1 = mhash ];
then
echo "/usr/local/lib" >> /etc/ld.so.conf
echo "/usr/local/lib64" >> /etc/ld.so.conf
/sbin/ldconfig && INFO 33 4 "Add $1 library file to ld.so.conf......"
fi
if [ $1 = gettext ];
then
echo "/usr/local/env/gettext/lib" >> /etc/ld.so.conf
/sbin/ldconfig && INFO 33 4 "Add $1 library file to ld.so.conf......"
fi
if [ $1 = gd ];
then
sed -i '27 a void (*data);' /usr/local/env/gd/include/gd_io.h
echo "/usr/local/env/gd/lib" >> /etc/ld.so.conf
/sbin/ldconfig && INFO 33 4 "Add $1 library file to ld.so.conf......"
fi
if [ $1 = freetype ];
then
echo "/usr/local/env/freetype/lib" >> /etc/ld.so.conf
/sbin/ldconfig && INFO 33 4 "Add $1 library file to ld.so.conf......"
fi
if [ $1 = jpegsrc.v6b.tar.gz ];
then
echo "/usr/local/env/jpeg/lib" >> /etc/ld.so.conf
/sbin/ldconfig && INFO 33 4 "Add jpeg library file to ld.so.conf......"
fi
}
#SERVICE函数定义程序启动,关闭,重启。
function SERVICE()
{
if [ $1 = apache -a $2 = start ]; then
$INSTALL_PATH/$1/bin/apachectl -k start && \
INFO 33 "2.5" "Apache startup success......"
exit
elif [ $1 = apache -a $2 = stop ]; then
$INSTALL_PATH/$1/bin/apachectl -k stop && \
INFO 31 "2.5" "Apache has stopped......"
exit
elif [ $1 = apache -a $2 = restart ]; then
$INSTALL_PATH/$1/bin/apachectl -k stop ; sleep 2
INFO 31 "2.5" "Apache has stopped......"
$INSTALL_PATH/$1/bin/apachectl -k start && \
INFO 34 "2.5" "Apache has restarted......"
exit
elif [ $1 = mysql -a $2 = start ]; then
/bin/bash $INSTALL_PATH/$1/bin/mysqld_safe --defaults-file=$INSTALL_PATH/$1/my.cnf 2>&1 > /dev/null &
INFO 33 "2.5" "Mysql startup success......"
echo -e "$(netstat -ntpl|grep "/:::3306")"
exit
elif [ $1 = mysql -a $2 = stop ]; then
kill $(netstat -ntpl|awk '/:::3306/{print $NF}'|awk -F '/' '{print $1}') && \
INFO 31 "2.5" "Mysql has stopped......"
exit
elif [ $1 = mysql -a $2 = restart ]; then
kill $(netstat -ntpl|awk '/:::3306/{print $NF}'|awk -F '/' '{print $1}') && \
INFO 31 "3" "Mysql has stopped......"
/bin/bash $INSTALL_PATH/$1/bin/mysqld_safe --defaults-file=$INSTALL_PATH/$1/my.cnf 2>&1 > /dev/null &
INFO 34 "2.5" "Mysql has restarted......"
exit
fi
}
#CONFIG_MYSQL函数用来定义mysql的配置。
function CONFIG_MYSQL()
{
INFO 32 3 "Configure the mysql......"
groups mysql || groupadd mysql && id mysql || useradd -g mysql mysql
cd $INSTALL_PATH/mysql ; pwd
./scripts/mysql_install_db \
--user=mysql \

