一键编译安装LAMP环境

 

说明:请把所需要的软件包放在文件夹中,把文件夹重命名为packages,然后压缩成packages.zip的包,上传到linux系统上任何目录都可以,然后在上传packages.zip包的当前目录(例如:/media )运行lamp_install.sh脚本即可,若lamp_install.sh脚本和packages.zip包不在同一目录,需使用绝对该脚本所在绝对路径来运行。

需要的包,以下软件包都是稳定版本:

httpd-2.2.22.tar.gz

mysql-5.1.58.tar.gz

php-5.3.15.tar.gz

 

[root@localhost media]# vim /root/lamp_install.sh

#!/bin/bash

# Write date: 2012.07.14

date > /root/install_lamp_time.txt

 

# LAMP install directory and configuration files...

echo "Do you want to install the LAMP in what directory?"

read -p "Please input a diretory,For Example:/opt :" directory

#directory=/opt

apache_base_dir=$directory/app/apache

mysql_base_dir=$directory/app/mysql

php_base_dir=$directory/app/php

data_dir=$directory/data/mysql

packages=$directory/packages

IN_PATH=`pwd`

 

#--------------------------------------------------------------------------------

cat << EOF

+--------------------------------------------------------------+

|              === Welcome to install LAMP ===                 |

+--------------------------------------------------------------+

EOF

#---------------------------------------------------------------------------------

sleep 3

unzip $IN_PATH/packages.zip -d $directory > /dev/null

 

 

################################## Apache install ##################################

#--------------------------------------------------------------------------------

cat << EOF

+--------------------------------------------------------------+

|             === Welcome to install apache ===                |

+--------------------------------------------------------------+

EOF

#---------------------------------------------------------------------------------

 

# Confirm the source code compilation environment...

gcc --2.2.22

if [ $? -eq 0 ]

 then

  echo "gcc installed!!"

 else

  yum -y install gcc*

fi

g++ --2.2.22

if [ $? -eq 0 ]

 then

  echo "g++ installed!!"

 else

  yum -y install g++*

fi

 

# Check the httpd rpm packages installed...

rpm -qa | grep httpd

if [ $? -eq 0 ]

 then

  echo "The httpd rpm packages already installed!!"

  echo "# yum -y remove httpd"

  service httpd stop

  sleep 5

  yum -y remove httpd

 else

  echo "The httpd rpm packages not installed!!"

fi

 

echo "show $packages apache install package."

if [ -e "$packages/httpd-2.2.22.tar.gz" ]

 then

  # Create the installation directory...

  if [ -d "$apache_base_dir" ]

   then

    echo "This $apache_base_dir is already existed!"

   else

    echo "The $apache_base_dir is create now."

    mkdir -p $apache_base_dir

   fi

  echo "Please wait..."

# Unpack, configure, compile, install apache

  echo "Unpack, configure, compile, install apache."

  tar -zxf $packages/httpd-2.2.22.tar.gz -C $packages

  cd $packages/httpd-2.2.22

  sh configure \

     --prefix=$apache_base_dir \

     --enable-so \

     --enable-rewrite \

     --enable-ssl \

     --with-ssl=/usr/lib \

     --enable-auth-digest \

     --enable-cgi \

     --enable-suexec \

     --with-suexec-caller=daemon \

     --with-suexec-docroot=$apache_base_dir/htdocs

  make && make install

  cd /root

  $apache_base_dir/bin/apachectl start

  echo $apache_base_dir/bin/apachectl start >> /etc/rc.local

  echo "Show Apache used port!!"

  netstat -antupl | grep httpd

  echo "The apache install Success!!!"

  cat << EOF

   +--------------------------------------------------------------+

|               === The apache install Success!!! ===                |

   +--------------------------------------------------------------+

EOF

 else

  echo "The apache install Failed!!!"

  rm -fr $apache_base_dir

  rm -fr $packages

  rm -f /root/install_apache_time.txt

fi

 

 

################################## MySQL database install ##################################

#--------------------------------------------------------------------------------

cat << EOF

+--------------------------------------------------------------+

|           === Welcome to install MySQL database ===          |

+--------------------------------------------------------------+

EOF

#---------------------------------------------------------------------------------

 

# Check the mysqld rpm packages installed, if installed on uninstall...

rpm -qa | grep mysql

if [ $? -eq 0 ]

 then

  echo "The mysql rpm packages already installed!!"

  echo "# yum -y remove mysql"

  service mysqld stop

  sleep 3

  yum -y remove mysql

 else

  echo "The mysql rpm packages not installed!!"

fi

 

# Install the mysql database need development tools and libraries!

echo "Install the mysql database need development tools and libraries.Please wating..."

sleep 3

yum -y install gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libmcrypt* ibtool*

 

if [ -e "$packages/mysql-5.1.58.tar.gz" ]

 then

  echo "Please wait..."

# Create a system user runing the mysql database.

  echo "Create a system user runing the mysql database."

  groupadd mysql

  useradd -M -g mysql -s /sbin/nologin mysql

# Create the installation directory and data store directory

   if [ -d "$mysql_base_dir" ]

    then

     echo "This $mysql_base_dir is already existed!"

    else

     mkdir -p $mysql_base_dir

   fi

   if [ -d "$data_dir" ]

    then

     echo "This $data_dir is already existed!"

    else

     mkdir -p $data_dir

   fi

# Modify the installation directory and data storage directory permissions.

  chown -R root:mysql $mysql_base_dir

  chown -R mysql:mysql $data_dir

  chmod -R 755 $data_dir

# Unpack, configure, compile, install mysql

  echo "Unpack, configure, compile, install mysql"

  tar -zxf $packages/mysql-5.1.58.tar.gz -C $packages

  cd $packages/mysql-5.1.58

  echo "Configure, compile and install, please wait... Mabey take 20 minutes!"

  sleep 3

  sh configure \

  --prefix=$mysql_base_dir \

  --localstatedir=$data_dir \

  --enable-assembler \

  --with-unix-socket-path=/tmp/mysql.sock \

  --with-plugins=partition,innobase \

  --with-charset=utf8 \

  --with-collation=utf8_general_ci \

  --with-extra-charsets=all \

  --with-big-tables \

  --without-debug \

  --with-client-ldflags=-all-static \

  --with-mysqld-ldflags=-all-static \

  --enable-thread-safe-client

  make && make install

  cd

 

# Mysql master configuration file.

  cp -p $packages/mysql-5.1.58/support-files/my-medium.cnf /etc/my.cnf

# Initialize the database using the mysql user.

  $mysql_base_dir/bin/mysql_install_db --user=mysql --basedir=$mysql_base_dir --datadir=$data_dir

# Adjust the lib library path.

  echo "$mysql_base_dir/lib/mysql" >> /etc/ld.so.conf

  ldconfig

# Start mysqld_safe script safe to start the service!

  $mysql_base_dir/bin/mysqld_safe --user=mysql &

  echo "Show Mysql used port!!"

  netstat -antupl | grep mysqld

  export PATH=$PATH:$mysql_base_dir/bin

  echo "PATH=$PATH:$mysql_base_dir/bin" >> /etc/profile

  source /etc/profile

# Mysql add as a system service, start with the system and start

  cp -p $packages/mysql-5.1.58/support-files/mysql.server /etc/init.d/mysqld

  chmod 755 /etc/init.d/mysqld

  chkconfig mysqld on

  mysqladmin -u root password ${mysql_password}

  echo "Mysql install Success!!!"

  sleep 3

  source /etc/profile

  date >> /root/install_mysql_time.txt

  cat << EOF

   +--------------------------------------------------------------+

|           === The MySQL database install Success!!! ===            |

   +--------------------------------------------------------------+

EOF

  echo "Show mysql used port!!"

  netstat -antupl | grep mysqld

  # Show the /tmp directory is mysql.sock this file?

  echo "Show the /tmp directory is mysql.sock this file?"

  ls -lh /tmp

 else

  echo "Mysql install Failed!!!"

  rm -fr $mysql_base_dir

  rm -fr $data_dir

  rm -fr $packages

  userdel  mysql

  groupdel mysql

  rm -fr /etc/init.d/mysqld

  rm -f /root/install_mysql_time.txt

  exit 1

fi

source /etc/profile

 

 

################################## PHP install ##################################

#--------------------------------------------------------------------------------

cat << EOF

+--------------------------------------------------------------+

|               === Welcome to install PHP ===                 |

+--------------------------------------------------------------+

EOF

#---------------------------------------------------------------------------------

 

# Check the PHP rpm package is installed, if installed on uninstall...

rpm -qa | grep php

if [ $? -eq 0 ]

 then

  echo "The PHP rpm packages already installed!!"

  echo "yum -y remove php"

  sleep 3

  yum -y remove php

 else

  echo "The PHP rpm packages not installed!!"

fi

 

if [ -e $php_base_dir ]

 then

  echo "The $php_base_dir already!"

 else

  echo "Create $php_base_dir directory!"

  mkdir -p $php_base_dir

fi

 

#if [ -e $packages/php-5.3.15.tar.bz2 ]

## High 5.3.15 of the PHP .tar package using the following command.

if [ -e $packages/php-5.3.15.tar.gz ]

 then

  echo "Please wait..."

#  tar -jxf $packages/php-5.3.15.tar.bz2 -C $packages

## High 5.3.15 of the PHP.tar package using the following command.

  tar -zxf $packages/php-5.3.15.tar.gz -C $packages

  cd $packages/php-5.3.15

  sh configure \

     --prefix=$php_base_dir \

     --enable-mbstring \

     --with-apxs2=${apache_base_dir}/bin/apxs \

     --with-config-file-path=$php_base_dir/etc \

     --with-mysql=${mysql_base_dir} \

     --with-mysqli=${mysql_base_dir}/bin/mysql_config \

     --enable-safe-mode \

     --enable-ftp \

     --enable-zip \

     --with-bz2 \

     --with-jpeg-dir \

     --with-png-dir \

     --with-freetype-dir \

     --without-iconv \

     --with-libXML-dir \

     --with-xmlrpc \

     --with-zlib-dir \

     --with-gd \

     --enable-gd-native-ttf \

     --with-curl

  make && make install

  cd /root

# Copy PHP master configure  php.ini file...

#  cp $packages/php-5.3.15/php.ini-dist $php_base_dir/etc/php.ini

### High 5.3.15 of the PHP .tar package using the following command.

  cp $packages/php-5.3.15/php.ini-production $php_base_dir/etc/php.ini

  grep "LoadModule php5_module        modules/libphp5.so" ${apache_base_dir}/conf/httpd.conf

   if [ $? -eq 0 ] ; then

     sed -i 's/^    DirectoryIndex index.html/    DirectoryIndex index.php index.html/' ${apache_base_dir}/conf/httpd.conf

     sed -i 's#AddType application/x-compress \.Z#&\n\    AddType application/x-httpd-php .php#' ${apache_base_dir}/conf/httpd.conf

     ${apache_base_dir}/bin/apachectl restart

     echo '<?php

phpinfo ();

?>' > ${apache_base_dir}/htdocs/test.php

     echo '<?php

$link=mysql_connect(`localhost`,`test`,``);

if (!link) echo "Fail !!";

else echo "Success !!";

mysql_close();

?>' > ${apache_base_dir}/htdocs/testdb.php

     echo "PHP install Success!!"

    cat << EOF

   +--------------------------------------------------------------+

|                === The PHP install Success!!! ===                |

   +--------------------------------------------------------------+

EOF

    else

     echo "Install error,PHP does not support Apache service"

    fi

 

  echo "Show Apache used port!!"

  ${apache_base_dir}/bin/apachectl restart

  netstat -antupl | grep httpd

  echo "Show time to install php!!"

 else

  echo "PHP install Fail!!"

  rm -fr $php_base_dir

  rm -fr $packages

fi

 

 

cat << EOF

   +--------------------------------------------------------------+

|                 === The LAMP install Success!!! ===                |

   +--------------------------------------------------------------+

EOF

 

echo "Show MySQL used port!!"

netstat -antupl | grep mysqld

# Show the /tmp directory is mysql.sock this file?

echo "# ls -lh /tmp!! Show the /tmp directory is mysql.sock this file?"

ls -lh /tmp

echo "Show Apache used port!!"

${apache_base_dir}/bin/apachectl restart

echo "Show Apache used port!!"

netstat -antupl | grep httpd

 

date >> /root/install_lamp_time.txt

cat /root/install_lamp_time.txt | awk '{ print $4 }'

 

[root@localhost media]# chmod 755 /root/lamp_install.sh

[root@localhost media]# /root/lamp_install.sh