阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

155次阅读
没有评论

共计 12475 个字符,预计需要花费 32 分钟才能阅读完成。

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 相关 的内容你可能也喜欢

LAMP 平台安装 Xcache 和 Memcached 加速网站运行  http://www.linuxidc.com/Linux/2015-06/118835.htm 

CentOS 7 下搭建 LAMP 平台环境  http://www.linuxidc.com/Linux/2015-06/118818.htm

CentOS 6.5 系统安装配置 LAMP(Apache+PHP5+MySQL)服务器环境 http://www.linuxidc.com/Linux/2014-12/111030.htm

Ubuntu 14.04 配置 LAMP+phpMyAdmin PHP(5.5.9)开发环境  http://www.linuxidc.com/Linux/2014-10/107924.htm

Ubuntu 14.10 下安装 LAMP 服务图文详解  http://www.linuxidc.com/Linux/2014-12/110082.htm

LAMP 结合 NFS 构建小型博客站点  http://www.linuxidc.com/Linux/2015-08/121029.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-04/129979.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计12475字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中