linux自动化脚本安装php,shell脚本实现源码LAMP自动化安装

shell脚本实现源码LAMP自动化安装代码如下,写了好久,在CentOS 6.3实践中用过,分享给大家。

运行此脚本的前提有gcc/gcc-c++的编译环境,此脚本用到一些源码包(apr-1.2.7,apr-util-1.2.7,autoconf-2.59,cmake-2.6.4,curl-7.15.1,freetds-2.2.2,gd-2.0.33,httpd-2.2.31,jpegsrc-v7,libmcrypt-2.5.7,libpng-1.2.10,libxml2-2.6.26,MySQL-5.0.77,openssh-4.3p2,pcre-6.6,php-5.3.29,zlib-1.2.3),需要自行下载,这些包放在脚本同级目录下的Centos.pkg目录下。

#!/bin/sh

#################################

##LAMP AUTOMATIC SOURCE INSTALL##

#################################

##Check the user(root)##

[ $ID -ne 0 ] && echo "The script must root can run ! " && echo  "Please switch user to root ! " && exit 1

##1. Platform

echo "**System Information**"

echo "RedHat-release : $(cat /etc/redhat-release)"

echo "hostname : $HOSTNAME"

echo "operating system:$(uname -o)"

echo "kernel version:$(uname -v)"

echo "hardware platform:$(uname -i)"

echo

##2. Environment Variable

IPADDR=$(ifconfig eth0 | awk -F"[: ]+" 'NR==2 {print $4}')

CENTOS_VER=$(cat /etc/redhat-release |awk -F"[ .]+" '{print $3}')

SYSTEM_BIT=$(getconf LONG_BIT)

INSTALL_PATH="/usr/local"

SOURCEPKG_PATH="$PWD/Centos.pkg"

RPM_PAHT="$PWD/rpm"

RPM=$(ls -r $RPM_PATH)

PACKAGE=$(ls -1 $SOURCEPKG_PATH | awk -F"-" '{print $1}')

[ ! -d extract.pkg ] && mkdir extract.pkg

EXTRACT_PATH="$PWD/extract.pkg"

##3. Package

#3.1 Download Rpm Package

# cd $RPM_PATH

# wget http://centos.mirror.fr.planethoster.net/5/os/x86_64/CentOS/kernel-headers-2.6.18-398.el5.x86_64.rpm

# wget http://centos.mirror.fr.planethoster.net/5/os/x86_64/CentOS/glibc-common-2.5-123.x86_64.rpm

# wget http://centos.mirror.fr.planethoster.net/5/os/x86_64/CentOS/glibc-2.5-123.x86_64.rpm

# wget http://centos.mirror.fr.planethoster.net/5/os/x86_64/CentOS/glibc-headers-2.5-123.x86_64.rpm

# wget http://centos.mirror.fr.planethoster.net/5/os/x86_64/CentOS/glibc-devel-2.5-123.x86_64.rpm

# wget http://centos.mirror.fr.planethoster.net/5/os/x86_64/CentOS/gcc-4.1.2-55.el5.x86_64.rpm

# wget ftp://rpmfind.net/linux/centos/5.11/os/i386/CentOS/ncurses-devel-5.5-24.20060715.i386.rpm

# wget ftp://rpmfind.net/linux/centos/5.11/os/x86_64/CentOS/ncurses-devel-5.5-24.20060715.x86_64.rpm

# echo

#3.2 Download Source Package

# cd $SOURCEPKG_PATH

# wget http://ftp.gnu.org/gnu/ncurses/ncurses-5.5.tar.gz

# wget http://apache.dataguru.cn//apr/apr-1.5.2.tar.gz

# wget http://apache.dataguru.cn//apr/apr-util-1.5.4.tar.gz

# wget http://exim.mirror.fr/pcre/pcre-8.32.tar.gz

# wget http://down1.chinaunix.net/distfiles/libxml2-2.7.2.tar.gz

# wget http://down1.chinaunix.net/distfiles/libmcrypt-2.5.7.tar.gz

# wget http://down1.chinaunix.net/distfiles/gd-2.0.33.tar.gz

# wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz

# wget http://ftp.twaren.net/Unix/NonGNU//freetype/freetype-2.4.9.tar.gz

# wget ftp://ftp.simplesystems.org/pub/png/src/libpng15/libpng-1.5.23.tar.gz

# wget http://ijg.org/files/jpegsrc.v8b.tar.gz

# wget http://curl.haxx.se/download/curl-7.20.1.tar.gz

# wget http://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.5/mysql-5.5.45.tar.gz

# wget http://www.apache.org/dist/httpd/httpd-2.4.17.tar.gz

# wget wget http://cn2.php.net/distributions/php-5.5.30.tar.gz

##4. Base Environmet Optimize

/bin/sh $PWD/optimize.sh

##5. Extract Package

echo "Start Extract Package ,Please wait for several minutes ..."

cd $SOURCEPKG_PATH

for i in `ls -1` ;do

tar xf $i -C $EXTRACT_PATH;

[ $(echo $?) -ne 0 ] && exit 1

done

echo "Complete Extract Package !"

echo

##6. Install Source Code

#Apache,Mysql,PHP version

echo "Apache_Version=$(ls $SOURCEPKG_PATH/httpd* |awk -F"[-t]+" '{print $5}')"

echo "Mysql_Version=$(ls $SOURCEPKG_PATH/mysql* |awk -F"[-t]+" '{print $4}')"

echo "Php_Version=$(ls $SOURCEPKG_PATH/mysql* |awk -F"[-t]+" '{print $4}')"

echo "Start Install All Source Code , The process will take a long time , When complete will print:"

echo "Please Wait ... !!!"

echo

#6.1 Install gcc

#GCC_VALUE=$(gcc -v >/dev/null 2>&1)

# for i in $(ls -1 /etc/yum.repos.d);do

#    mv $i $i.bak;

#    [ $(echo $?) -ne 0 ] && exit 1

#done

#wget --directory-prefix=/etc/yum.repos.d http://mirrors.163.com/.help/CentOS"$CENTOS_VER"-Base-163.repo

#if [[ $GCC_VALUE -ne 0 ]] ;then

#    echo "Install gcc ..."

#    #Install gcc

#    yum clean all >/dev/null 2>&1

#    yum makecache>/dev/null 2>&1

#    yum install gcc gcc-c++ >/dev/null 2>&1

#    echo "Gcc Install Complete."

#    done

#fi

#6.2 Install libxml2

echo "Install libxml2 ..."

cd $EXTRACT_PATH/libxml2*

./configure --prefix=$INSTALL_PATH/libxml2 >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make install >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

echo "Libxml2 Install Completed ."

echo

#6.3 Install libmcrypt

echo "Install libmcrypt ..."

cd $EXTRACT_PATH/libmcrypt*

./configure --with-mcrypt-dir=$INSTALL_PATH/libmcrypt > /dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make install >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

echo "Libcrypt Install Completed."

echo

#6.4 Install libltdl

echo "Install libltdl ..."

cd $EXTRACT_PATH/libmcrypt*/libltdl*

./configure --enable-ltdl-install >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make install >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

echo "Libltdl Install Completed."

echo

#6.5 Install zlib

echo "Install zlib ..."

cd $EXTRACT_PATH/zlib*

if [[ $SYSTEM_BIT -eq 32 ]]; then

./configure >/dev/null 2>&1

else

CFLAGS="-O3 -fPIC" ./configure >/dev/null 2>&1

fi

[ $(echo $?) -ne 0 ] && exit 1

make >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make install >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

echo "Zlib Install Complete."

echo

#6.6 Install libpng

echo "Install libpng ..."

cd $EXTRACT_PATH/libpng*

./configure --prefix=$INSTALL_PATH/libpng >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make install >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

echo "Libpng Install Complete."

echo

#6.7 Install jpeg

echo "Install jpegsrc ..."

mkdir $INSTALL_PATH/jpeg/{bin,lib,include,man/man1} -p

cd $EXTRACT_PATH/jpeg*

[ $(echo $?) -ne 0 ] && exit 1

./configure  --prefix=$INSTALL_PATH/jpeg/ --enable-shared --enable-static >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make install >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

echo "Jpegsrc Install Complete."

echo

#6.8 Install freetype

echo "Install freetype ..."

cd $EXTRACT_PATH/freetype*

./configure --prefix=$INSTALL_PATH/freetype >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make install >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

echo "Freetype Install Complete."

echo

#6.9 Install autoconf

echo "Install autoconf ..."

cd $EXTRACT_PATH/autoconf*

./configure >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make install >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

echo "Autoconf Install Complete."

echo

#6.10 Install ncurses

#echo "Install ncurses ..."

#cd $EXTRACT_PATH/ncurses*

#./configure --prefix=$INSTALL_PATH/ncurses --with-shared >/dev/null 2>&1

#[ $(echo $?) -ne 0 ] && exit 1

#make >/dev/null 2>&1

#[ $(echo $?) -ne 0 ] && exit 1

#make install >/dev/null 2>&1

#[ $(echo $?) -ne 0 ] && exit 1

#echo "Ncurses Install Complete."

#echo

#6.11 Install gd

echo "Install GD ..."

cd $EXTRACT_PATH/gd*

sed -i 15s#png.h#$INSTALL_PATH/libpng/include/png.h# gd_png.c

[ $(echo $?) -ne 0 ] && exit 1

./configure --prefix=$INSTALL_PATH/gd --with-jpeg=$INSTALL_PATH/jpeg/ --with-png=$INSTALL_PATH/libpng/ --with-freetype=$INSTALL_PATH/freetype/ >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make install >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

echo "GD Install Complete."

echo

#6.12 Install apr

echo "Install apr ..."

cd $EXTRACT_PATH/apr*

./configure --prefix=$INSTALL_PATH/apr >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make install >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

echo "Apr Install Complete."

echo

#6.13 Install apr-util

echo "Install apr-util ..."

cd $EXTRACT_PATH/apr-util*

./configure --prefix=$INSTALL_PATH/apr-util --with-apr=$INSTALL_PATH/apr >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make install >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

echo "Apr-util Install Complete."

echo

#6.14 Install pcre

echo "Install pcre ..."

cd $EXTRACT_PATH/pcre*

./configure --prefix=$INSTALL_PATH/pcre >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make install >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

echo "Pcre Install Complete."

echo

#6.15 Install freetds

echo "Install freetds ..."

cd $EXTRACT_PATH/freetds*

./configure --prefix=$INSTALL_PATH/freetds \

--enable-shared \

--enable-static \

--with-tdsver \

--enable-msdblib >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make install >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

echo "freetds Install Complete."

echo

#6.16 Install apache

echo "Install apache ..."

cd $EXTRACT_PATH/httpd*

./configure --prefix=$INSTALL_PATH/apache \

--enable-mods-shared=all \

--enable-deflate \

--enable-speling \

--enable-cache \

--enable-file-cache \

--enable-disk-cache \

--enable-mem-cache \

--enable-so \

--enable-expires=shared \

--enable-rewrite=shared \

--enable-static-support \

--sysconfdir=/etc/httpd \

--with-apr=$INSTALL_PATH/apr \

--with-apr-util=$INSTALL_PATH/apr-util \

--with-pcre=$INSTALL_PATH/pcre \

--disable-userdir >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make install >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

echo "Apache Install Complete."

echo

#6.17 Install mysql

echo "Install mysql ..."

#6.17.1 Check Mysql user

id mysql >/dev/null 2>&1

MYSQL_USER="$(echo $?)"

if [[ $MYSQL_USER -ne 0 ]] ;then

groupadd mysql

useradd -g mysql mysql

[ $(echo $?) -ne 0 ] && exit 1

fi

#6.17.2 Install necessary dependice rpm package

rpm -ivh $RPM_PAHT/ncurses*.rpm >/dev/null 2>&1

#6.17.3 Install mysql server

cd $EXTRACT_PATH/mysql*

./configure --prefix=$INSTALL_PATH/mysql \

--enable-thread-safe-client \

--with-extra-charsets=all >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make install >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

echo "Mysql Install Complete."

echo

#6.18 Install php

echo "Install php"

cd $EXTRACT_PATH/php*

./configure --prefix=$INSTALL_PATH/php \

--with-config-file-path=$INSTALL_PATH/php/etc \

--with-apxs2=$INSTALL_PATH/apache/bin/apxs \

--with-mysql=$INSTALL_PATH/mysql \

--with-libxml-dir=$INSTALL_PATH/libxml2 \

--with-png-dir=$INSTALL_PATH/libpng \

--with-jpeg-dir=$INSTALL_PATH/jpeg \

--with-freetype-dir=$INSTALL_PATH/freetype \

--with-gd=$INSTALL_PATH/gd \

--with-zlib-dir=$INSTALL_PATH/zlib \

--with-mcrypt=$INSTALL_PATH/libmcrypt \

--with-mysqli=$INSTALL_PATH/mysql/bin/mysql_config \

--enable-soap \

--enable-mbstring=all \

--with-mssql=$INSTALL_PATH/freetds \

--enable-sockets >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

make install >/dev/null 2>&1

[ $(echo $?) -ne 0 ] && exit 1

echo "Php Install Complete."

echo

##7. Configure LAMP Configuation Files

#7.1 Configure Apache Configuation Files

#7.1.1 Set apache configuation file

sed -i 203aServerName\ $HOSTNAME:80 /etc/httpd/httpd.conf

[ $(echo $?) -ne 0 ] && exit 1

#7.1.2 Make apache server can read ".php" file

sed -i 386aAddType\ application\/x-httpd-php\ \.php /etc/httpd/httpd.conf

[ $(echo $?) -ne 0 ] && exit 1

sed -i 386aAddType\ application\/x-httpd-php-source\ \.phps /etc/httpd/httpd.conf

[ $(echo $?) -ne 0 ] && exit 1

sed -i 386aAddType\ application\/x-httpd-php\ \.php\ \.phtml\ \.php3 /etc/httpd/httpd.conf

[ $(echo $?) -ne 0 ] && exit 1

#7.1.3 Set apache server start runing when system start-up

cp $INSTALL_PATH/apache/bin/apachectl /etc/init.d/httpd

sed -i -e 2a#\ chkconfig:\ 234\ 71\ 29 /etc/init.d/httpd -e 2a#\ description:\ Apache\ is\ a\ World\ Wide\ Web\ server. /etc/init.d/httpd

[ $(echo $?) -ne 0 ] && exit 1

chkconfig --add httpd >/dev/null 2>&1

#7.2.4 Set Envirment variable

sed -i "10s%$%&:$INSTALL_PATH/apache/bin%" /root/.bash_profile

source /root/.bash_profile

#7.2 Configure Mysql Configuation Files

#7.2.1 Set mysql configuation file

cp $EXTRACT_PATH/mysql*/support-files/my-medium.cnf /etc/my.cnf

#7.2.2 Init mysql dababase

$INSTALL_PATH/mysql/bin/mysql_install_db --user=mysql >/dev/null 2>&1

#7.2.3 Set privileges for mysql server file

chmod +x $INSTALL_PATH/mysql/bin/* >/dev/null 2>&1

chown -R root $INSTALL_PATH/mysql >/dev/null 2>&1

chown -R mysql $INSTALL_PATH/mysql/var >/dev/null 2>&1

chgrp -R mysql $INSTALL_PATH/mysql >/dev/null 2>&1

#7.2.4 Set mysql server password (default 123456)

$INSTALL_PATH/mysql/bin/mysqladmin -u root password 123456 >/dev/null 2>&1

#7.2.5 Set mysql server start runing when system start-up

cp $EXTRACT_PATH/mysql*/support-files/mysql.server /etc/init.d/mysqld

chkconfig --add mysqld >/dev/null 2>&1

#7.2.6 Set Envirment variable

sed -i "10s%$%&:$INSTALL_PATH/mysql/bin%" /root/.bash_profile

source /root/.bash_profile

##8. Start LAMP Server

service httpd start

service mysqld start

##9. Clean Useless File Or Directory

rm -fr $EXTRACT_PATH

#10. LAMP Enviromnet Is Complete

echo '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'

echo '@@@@!Thank You Use The script! Now You Can Enjoy Your LAMP Server!@@@@'

echo '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'

下面关于LAMP相关的内容你可能也喜欢:

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值