lamp环境搭建,安装过程中出现的一些错误,绝大部分应该是下载软件的网址过期了,可以再换一个,选择的软件版本尽量选择脚本中所用的版本或者比较接近的,避免在搭建过程中发生错误!

#!/bin/bash
echo " it will install lamp"
sleep 1
##check last command is ok or not
check_ok(){
if [ $? != 0 ];then
echo "ERROR ,please check it now "
exit 1
fi
}
#用arch命令获得系统的平台信息
ar=`arch`
#关闭防火墙selinux和iptables
selinux1=`getenforce`
if [ $selinux1 != 0 ];then
setenforce 0
fi
check_ok
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
check_ok
#关闭iptables防火墙
iptables-save > /etc/sysconfig/iptables_`date +%s`
iptables -F
service iptables save
####定义一个函数myum,如果rpm包已经提示安装过,则不再尝试yum install 为了节省
###时间
myum(){
if ! rpm -qa |grep -q "^$1";then
yum install -y  $1
check_ok
else
echo "$1 has been installed"
fi
}
#先前需要经安装的一些包
for p in wget gcc  perl perl-devel libaio libaio-devel pcre-devel zlib-devel
do
myum $p
done
#安装epel源~
if rpm -qa epel-release >/dev/null
then
rpm -e epel-release
fi
#删除用yum安装的epel源
if ls /etc/yum.repos.d/epel-6.repo* >/dev/null 2>&1
then
rm -f /etc/yum.repos.d/epel-6.repo
fi
#安装阿里的epel源
wget  www.lishiming.net/data/p_w_upload/forum/epel-release-6-8_32.noarch.rpm
rpm -ivh epel-release-6-8_32.noarch.rpm
#########################
#安装mysql
ar=`arch`           /获取系统的版本号,以便选择合适的mysql版本
install_mysql(){
echo "choose the version of mysql"
select mysql_v in 5.1 5.6
do
case $mysql_v in
5.1)
cd /usr/local/src
[ -f mysql-5.1.72-linux-$ar-glibc23.tar.gz ]||wget http://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.72-linux-$ar-glibc23.tar.gz
check_ok
tar zxf mysql-5.1.72-linux-$ar-glibc23.tar.gz
check_ok
mv mysql-5.1.72-linux-$ar-glibc23 /usr/local/mysql
check_ok
##创建mysql账户
if ! grep -q  "^mysql" /etc/passwd ;then        /创建mysql账户前,先检查系统是否存在该账户,若存在则删除再创建!
        useradd mysql
        check_ok
else
        userdel -r mysql
        useradd mysql -s /sbin/nologin
        check_ok
fi
#####
yum install -y compat-libstdc++-33
cd /usr/local/mysql
if [ -d /data/mysql ];then
        rm -rf /data/mysql
        mkdir /data/mysql
else
        mkdir /data/mysql
fi

chown -R mysql:mysql /data/mysql
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
check_ok
/bin/cp support-files/my-large.cnf /etc/my.cnf
sed -i '/^\[mysqld\]$/a\datadir = /data/mysql' /etc/my.cnf
check_ok
/bin/cp support-files/mysql.server /etc/init.d/mysqld
sed -i 's#^datadir=#datadir=/data/mysql#' /etc/init.d/mysqld
check_ok
chmod 755 /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
service mysqld start
check_ok
break
;;
5.6)
  cd /usr/local/src
            [ -f mysql-5.6.26-linux-glibc2.5-$ar.tar.gz ] || wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.26-linux-glibc2.5-$ar.tar.gz
            tar zxf mysql-5.6.26-linux-glibc2.5-$ar.tar.gz
            check_ok
            [ -d /usr/local/mysql ] && /bin/mv /usr/local/mysql /usr/local/mysql_bak
            mv mysql-5.6.26-linux-glibc2.5-$ar /usr/local/mysql
            if ! grep '^mysql:' /etc/passwd
            then
            useradd -M mysql -s /sbin/nologin
            fi
            yum install -y compat-libstdc++-33
            [ -d /data/mysql ] && /bin/mv /data/mysql /data/mysql_bak
            mkdir -p /data/mysql
            chown -R mysql:mysql /data/mysql
            cd /usr/local/mysql
            ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
            check_ok
            /bin/cp support-files/my-default.cnf /etc/my.cnf
            check_ok
            sed -i '/^\[mysqld\]$/a\datadir = /data/mysql' /etc/my.cnf
            /bin/cp support-files/mysql.server /etc/init.d/mysqld
            sed -i 's#^datadir=#datadir=/data/mysql#' /etc/init.d/mysqld
            chmod 755 /etc/init.d/mysqld
            chkconfig --add mysqld
            chkconfig mysqld on
            service mysqld start
            check_ok
            break
            ;;

         *)
            echo "only 1(5.1) or 2(5.6)"
                       exit 1
            ;;
    esac
done
}

  #########################
  #安装apache
  install_httpd(){
          echo "install apache version 2.2"
          check_ok
          cd /usr/local/src
          [ -f  httpd-2.2.31.tar.gz  ] || wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.2.31.tar.gz

          check_ok
          tar zxvf  httpd-2.2.31.tar.gz
          check_ok
          cd httpd-2.2.31
          ./configure \
          --prefix=/usr/local/apache2 \
          --with-included-apr \
          --enable-so \
          --enable-deflate=shared \
          --enable-expires=shared \
          --enable-rewrite=shared \
          --with-pcre
          check_ok
          make
          check_ok
          make install
          check_ok
          /usr/local/apache2/bin/apachectl restart
          check_ok
  }
###############安装php

   #############
   #安装php
  install_php(){
  echo -e "Install php. \nPlease choose the version of php"
  select php_v in 5.4 5.6
  do
  case $php_v in
  5.4)
  cd /usr/local/src
  [ -f php-5.4.45.tar.bz2 ] || wget 'http://cn2.php.net/get/php-5.4.45.tar.bz2/from/this/mirror' -O     php-5.4.45.tar.bz2
  check_ok
  tar jxvf php-5.4.45.tar.bz2
  check_ok
  cd php-5.4.45
              for p in openssl-devel bzip2-devel \
              libxml2-devel curl-devel libpng-devel \
              libjpeg-devel freetype-devel libmcrypt-devel\
              libtool-ltdl-devel perl-devel
              do
                 myum $p
              done
              check_ok
              ./configure \
              --prefix=/usr/local/php \
              --with-apxs2=/usr/local/apache2/bin/apxs \
              --with-config-file-path=/usr/local/php/etc  \
              --with-mysql=/usr/local/mysql \
              --with-libxml-dir \
              --with-gd \
              --with-jpeg-dir \
              --with-png-dir \
              --with-freetype-dir \
              --with-iconv-dir \
              --with-zlib-dir \
              --with-bz2 \
              --with-openssl \
              --with-mcrypt \
              --enable-soap \
              --enable-gd-native-ttf \
              --enable-mbstring \
              --enable-sockets \
              --enable-exif \
              --disable-ipv6
  check_ok
  make && make install
  check_ok
  if [ -f /usr/local/php/etc/php.ini ];then
          rm -f /usr/local/php/etc/php.ini
          cp php.ini-production /usr/local/php/etc/php.ini
  else
          cp php.ini-production /usr/local/php/etc/php.ini

 fi
  break
  ;;

  5.6)
  cd /usr/local/src
  [ -f php-5.6.6.tar.gz ] || wget http://mirrors.sohu.com/php/php-5.6.6.tar.gz
  check_ok
  tar zxvf php-5.6.6.tar.gz
  check_ok
  cd php-5.6.6
              for p in openssl-devel bzip2-devel \
              libxml2-devel curl-devel libpng-devel \
              libjpeg-devel freetype-devel libmcrypt-devel\
              libtool-ltdl-devel perl-devel
              do
                 myum $p
              done
              check_ok
              ./configure \
              --prefix=/usr/local/php \
              --with-apxs2=/usr/local/apache2/bin/apxs \
              --with-config-file-path=/usr/local/php/etc  \
              --with-mysql=/usr/local/mysql \
              --with-libxml-dir \
              --with-gd \
              --with-jpeg-dir \
              --with-png-dir \
              --with-freetype-dir \
              --with-iconv-dir \
              --with-zlib-dir \
              --with-bz2 \
              --with-openssl \
              --with-mcrypt \
              --enable-soap \
              --enable-gd-native-ttf \
              --enable-mbstring \
              --enable-sockets \
              --enable-exif \
              --disable-ipv6
 check_ok
 make && make install
  check_ok
   if [ -f /usr/local/php/etc/php.ini ];then
           rm -f /usr/local/php/etc/php.ini
           cp php.ini-production /usr/local/php/etc/php.ini
   else
           cp php.ini-production /usr/local/php/etc/php.ini

   fi
   break
   ;;

  *)
             echo "only 1(5.4) or 2(5.6)"
             ;;
     esac
 done
 }
###############把php和apache结合在一起
   join_apa_php() {
sed -i '/AddType .*.gz .tgz$/a\AddType application\/x-httpd-php .php' /usr/local/apache2/conf/httpd.conf
check_ok
sed -i 's/#ServerName www.example.com:80/ServerName localhost:80/' /usr/local/apache2/conf/httpd.conf
check_ok
sed -i 's/DirectoryIndex index.html/DirectoryIndex index.php index.html index.htm/' /usr/local/apache2/conf/httpd.conf
check_ok
cat > /usr/local/apache2/htdocs/index.php <<EOF
<?php
   phpinfo();
?>
EOF

if /usr/local/php/bin/php -i |grep -iq 'date.timezone => no value'
then
    sed -i '/;date.timezone =$/a\date.timezone = "Asia\/Chongqing"'  /usr/local/php/etc/php.ini
fi
}
#######################i
check_service() {
if [ "$1" == "phpfpm" ]
then
    s="php-fpm"
else
    s=$1
fi
n=`ps aux |grep "$s"|wc -l`
if [ $n -gt 1 ]
then
    echo "$1 service is already started."
else
    if [ -f /etc/init.d/$1 ]
    then
        /etc/init.d/$1 start
        check_ok
    else
        install_$1
    fi
fi
}
#check_service(){
#if [ "$l" == phpfpm ];then
#s="php-fpm"
#else
#s=$l
#fi
#n=`ps aux |grep "$s" |wc -l`
#if [ $n -gt 1 ];then
#echo "$l service is already started"
#else
#if [ -f /etc/init.d/$l ];then
#/etc/init.d/$l start
#check_ok
#else
#install_$l
#fi
#fi
#}
##function of install lamp
lamp() {
check_service mysql
check_service httpd
install_php
join_apa_php
echo "LAMP done,Please use 'http://your ip/index.php' to access."
}
lamp