One-click installation of LAMP environment using Shell scripts on Cenots

Source: Internet
Author: User
Tags ldap mcrypt php web server

LAMP refers to the Linux operating system), ApacheHTTP server), MySQL database software) and PHP web server. This website architecture is currently a popular and common Web architecture. It has advantages such as LAMP cross-platform and high performance. It is the preferred platform for many enterprises and companies to build WEB Services.

1) System Environment Introduction
Centos 5.8 64-bit
Apache: httpd-2.4.4.tar.gz
PHP: php-5.4.17.tar.gz
Mysql: mysql-5.6.12.tar.gz

2) installation script

#! /Bin/bashPATH =/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin: /binexport PATH # INFO function defines the color of the output font. echo-e indicates the special meaning of the string, $1 indicates the font color number, and $2 indicates the waiting time for the program to run, $3 indicates the echo output content. Function INFO () {echo-e "\ e [$1; 49; 1 m: $3 \ 033 [39; 49; 0 m "sleep" $2 "echo" "} # non-root users cannot execute this script if [" $ UID "! = 0]; then echo "" INFO 35 "0" "Must be root ro run this script. "exit 1fi # USAGE function defines the script USAGE, which can be called repeatedly. basename is actually the Script Name, and \ n indicates the line feed. Function USAGE () {INFO 35 "0.1" "Please see the script of the usage:" basename =$ (basename "$0 ") INFO \ 36 "0" \ "$ (echo-e" Usage: \ n. /$ basename (apache | mysql | php) install \ n. /$ basename apache (start | stop | restart) \ n. /$ basename mysql (start | stop | restart) \ n ")"} # Install the YUM_INSTALL function dependency package, which can be called repeatedly, $ @ indicates that all parameters are enclosed by double quotation marks "$1", "$2 ", $ * indicates that all these parameters are enclosed in double quotes "$1 $2" function YUM_INSTALL () {for a in $ @; do INFO 32 1 "Install dep End 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 Function Definition installer, it can be called repeatedly. Three dependency packages must be installed before the apache program is installed, and cmake must be used for compiling mysql. $1 indicates the program to be installed, $2 indicates that yum installs the corresponding dependent package, $3 indicates the directory after the program is decompressed, and $4 indicates the program source code package. 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 = javassrc.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 "Compi Le $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 librar Y 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. c Onf 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. co Nf/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 = export src.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 Definition programs start, close, and restart. 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 ...... & quot; exit elif [$1 = apache-a $2 = restart]; then $ INSTALL_PATH/$1/bin/apachectl-k stop; sleep 2 INFO 31 & quot; 2.5 & quot; 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-nt Pl | 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} # The CONFIG_MYSQL function is used to define the mysql configuration. Function CONFIG_MYSQL () {INFO 32 3 "Configure the mysql ...... "groups mysql | groupadd mysql & id mysql | useradd-g mysql cd $ INSTALL_PATH/mysql; pwd. /scripts/mysql_install_db \ -- user = mysql \ -- basedir = $ INSTALL_PATH/mysql/\ -- datadir = $ INSTALL_PATH/mysql/data/\ -- defaults-file = $ INSTALL_PATH/mysql/ my. cnf echo ""; sleep 3 cp $ (dirname $ SOURCE_PATH)/conf/my. cnf. /INFO 35 2 "Mysql config Uration is complete... "} # CONFIG_HTTPD function is used to configure apache. Function CONFIG_HTTPD () {INFO 32 3 "Configure the apache..." echo-e "<? Php \ nphpinfo (); \ n?> "> $ INSTALL_PATH/apache/htdocs/phpinfo. php sed-I's/^ \\\\ AddType application \/x-gzip. gz. tgz $/& \ n \\\\ AddType application \/x-httpd-php. php/'\ $ INSTALL_PATH/apache/conf/httpd. conf sed-I's/^ # ServerName www.example.com: 80 $/& \ nServerName 127.0.0.1: 80/'$ INSTALL_PATH/apache/conf/httpd. conf INFO 35 2 "Apache configuration is complete ...... "} # The CONFIG_PHP function is used to configure php. Function CONFIG_PHP () {INFO 32 3 "Configure the php ...... "cp $ SOURCE_PATH/$1/php. ini-development $ INSTALL_PATH/php5/etc/php. ini INFO 35 2 "Php configuration is complete ...... "} # INSTALL_BRANCH Function Definition program installation, $ {TAR_NAME [@]} is an array written in shell scripts, that is, all elements are taken, that is, all packages in TAR_NAME, SERVER_NAME indicates the package name, And COMPILE_DIR indicates the package name + version, that is, the decompressed directory name. Function INSTALL_BRANCH () {for I in $ {TAR_NAME [@]}; do SERVER_NAME = $ (echo $ I | awk-F "-[0-9]" '{print $1 }') COMPILE_DIR = $ (echo $ I | awk-F ".tar.gz" '{print $1}') if [$1 = $ SERVER_NAME-a $1 = apr]; then INSTALL apr "$ COMPILE_DIR" "$ I" "-- prefix =/usr/local/env/apr" elif [$1 = $ SERVER_NAME-a $1 = apr- util]; then INSTALL apr-util "$ COMPILE_DIR" "$ I" "-- prefix =/usr/local/env/apr-util -- with- Pr =/usr/local/env/apr "elif [$1 = $ SERVER_NAME-a $1 = pcre]; then INSTALL pcre "$ COMPILE_DIR" "$ I" "-- prefix =/usr/local/env/pcre" elif [$1 = $ SERVER_NAME-a $1 = httpd]; then INSTALL apache "$ HTTP_YUM" "$ COMPILE_DIR" "$ I" "$ HTTP_PARAMETERS" CONFIG_HTTPD elif [$1 = $ SERVER_NAME-a $1 = mysql]; then INSTALL mysql "$ MYSQL_YUM" "$ COMPILE_DIR" "$ I" "$ MYSQL_PARAMETERS" CONFIG_MYSQL elif [$1 = $ SERVER_NAME-a $1 = libiconv]; then INSTALL libiconv "$ COMPILE_DIR" "$ I" "-- prefix =/usr/local/env/libiconv" elif [$1 = $ SERVER_NAME-a $1 = libxml2]; then INSTALL libxml2 "$ COMPILE_DIR" "$ I" "-- prefix =/usr/local/env/libxml2 -- with-iconv =/usr/local/env/libiconv" elif [$1 = $ SERVER_NAME-a $1 = curl]; then INSTALL curl "$ COMPILE_DIR" "$ I" "-- prefix =/usr/local/env/curl -- enable-ut F8 "elif [$1 = $ SERVER_NAME-a $1 = libmcrypt]; then INSTALL libmcrypt "$ COMPILE_DIR" "$ I" "-- prefix =/usr/local/env/libmcrypt" elif [$1 = $ SERVER_NAME-a $1 = mhash]; then INSTALL mhash "$ COMPILE_DIR" "$ I" "elif [$1 = $ SERVER_NAME-a $1 = mcrypt]; then INSTALL mcrypt "$ COMPILE_DIR" "$ I" "-- prefix =/usr/local/env/mcrypt \ -- with-libmcrypt-prefix =/usr/local/env/ libmcrypt \ -- -Libiconv-prefix =/usr/local/env/libiconv "elif [$1 = $ SERVER_NAME-a $1 = gettext]; then INSTALL gettext "$ COMPILE_DIR" "$ I" "-- prefix =/usr/local/env/gettext \ -- with-libiconv-prefix =/usr/local/env/ libiconv \ -- with-libxml2-prefix =/usr/local/env/libxml2 "elif [$1 = $ SERVER_NAME-a $1 = freetype]; then INSTALL freetype "$ COMPILE_DIR" "$ I" "-- prefix =/usr/local/env/freetype" elif [$1 = $ SERVER_NAME-a $1 = datagsrc.v6b.tar.gz]; then COMPILE_DIR = "jpeg-6b" INSTALL unzip src.v6b.tar.gz "$ COMPILE_DIR" "$ I" "-- prefix =/usr/local/env/jpeg -- enable-shared -- enable-static" elif [$1 = $ SERVER_NAME-a $1 = libpng]; then INSTALL libpng "" $ COMPILE_DIR "" $ I "" elif [$1 = $ SERVER_NAME-a $1 = gd]; then INSTALL gd "$ COMPILE_DIR" "$ I" "-- prefix =/usr/local/env/gd -- with-png =/usr \- -With-freetype =/usr/local/env/freetype \ -- with-jpeg =/usr/local/env/jpeg -- with-fontconfig =/usr -- with-xpm =/ usr "elif [$1 = $ SERVER_NAME-a $1 = openssl]; then INSTALL openssl "$ COMPILE_DIR" "$ I" "-fPIC -- prefix =/usr/local/env/openssl shared" elif [$1 = $ SERVER_NAME-a $1 = php]; then INSTALL php5 "$ PHP5_YUM" "$ COMPILE_DIR" "$ I" "$ PHP5_PARAMETERS" CONFIG_PHP "$ COMPILE_DIR" break else conti Nue fi done} # The MOD_CASE function selects the installer with the KASE definition. Function MOD_CASE () {if [[$1 = ~ Apache | mysql | php] & [[$2 = ~ Install | start | stop | restart]; then INFO 32 "1.5" "Input the correct, according to the option to perform related operations ...... "echo" "if [$2 = install]; then case" $1 $2 "in" apache install ") INFO 35 "2.5" "Start to $1 the $2 ...... "INSTALL_BRANCH apr-util INSTALL_BRANCH pcre INSTALL_BRANCH httpd;" mysql install ") INFO 35" 2.5 "" Start to $1 the $2 ...... "INSTALL_BRANCH m Ysql; "php install") INFO 35 "2.5" "Start to $1 the $2 ...... "export LD_LIBRARY_PATH =/lib/:/usr/local/lib: /usr/local/lamp/mysql/lib INSTALL_BRANCH restart INSTALL_BRANCH libxml2 INSTALL_BRANCH curl uninstall INSTALL_BRANCH mhash encrypt mcrypt INSTALL_BRANCH gettext INSTALL_BRANCH freetype INSTALL_BRANCH uninstall INSTALL_BRANCH libpng INSTALL_BRANCH INSTALL_BRANCH openssl # INSTALL_BRANCH httpd & INSTALL_BRANCH mysql & INSTALL_BRANCH php; esac else SERVICE $1 $2 fi else INFO 31 1 "Input error, please try again! "INPUT fi} # LAMP installation directory INSTALL_PATH ="/usr/local/lamp "# source code package storage directory SOURCE_PATH =" $ (cd $ (dirname $0); pwd) /install_tar "character source code package character tar_name1_(httpd-2.4.tar.gz mysql-5.6.12.tar.gz php-5.4.17.tar.gz apr-1.4.8.tar.gz apr-util-1.5.2.tar.gz pcre-8.10.tar.gz freetype-2.4.0.tar.gz libxml2-2.7.2.tar.gz mhash-0.9.9.9.tar.gz mcrypt-2.6.8.tar.gz gd-2.0.35.tar.gz libiconv-1.14.tar.gz # Apache, Mysql, PHP yum install dependency package HTTP_YUM = "build-essential libapr1 libapr1-dev libaprutil1 libaprutil1-dev gettext-devel" plugin = "cmake libncurses5 libncurses5-dev bison" plugin = "libxml2 libxml2-devel openssl liblib- devel bzip2 libXpm- devel libmcrypt-devel "# HTTP_PARAMETERS =" \ -- prefix = $ INSTALL_PATH/Apache \ -- enable-module = so \ -- enable-module = rewrite \ -- enable-shard = rewrite \ -- enable-shared = max \ -- with-apr =/usr/local/env/apr \ -- with-apr-util =/usr/local/env/apr-util \ -- with-pcre =/usr/local/env/pcre \ -- with-encoded-apr \ "# mysql compilation parameter MYSQL_PARAMETERS =" \-DCMAKE_INSTALL_PREFIX = $ INSTALL_PATH/mysql \- DYSQL_TCP_PORT = 3306 \-DMYSQL_DATADIR = $ INSTALL_PATH/mysql/data \-DMYSQL_UNIX_ADDR = $ INSTALL_PAHT/mysql. sock \-keys = 1 \-keys = 1 \-DDEFAULT_CHARSET = utf8 \-DDEFAULT_COLLATION = utf8_general_ci \-DEXTRA_CHARSETS = all \-DWITH_DEBUG = 0 \ "# PHP compilation parameter PHP5_PARAMETERS =" \ -- prefix = $ INSTALL_PATH/php5 \ -- with-config-file-path = $ INSTALL_PATH/php5/etc \ -- with-mysql = $ INSTALL_PATH/mysql \ -- with-apxs2 = $ INSTALL_PATH /apache/bin/apxs \ -- with-mysqli = $ INSTALL_PATH/mysql/bin/mysql_config \ -- with-iconv =/usr/local/env/libiconv \ -- with-jpeg- dir =/usr/local/env/jpeg \ -- with-png-dir =/usr \ -- with-libxml-dir =/usr/local/env/libxml2 \ --- pdo-mysql \ -- with-zlib \ -- with-curl =/usr/local/env/curl \ -- with-curlwrappers \ -- with-mcrypt =/usr/local/env/ libmcrypt \ -- with-gd =/usr/local/env/gd \ -- with-openssl =/usr/local/env/openssl \ -- with-mhash =/usr \ -- -xmlrpc \ -- with-xpm-dir \ -- with-freetype-dir =/usr/local/env/freetype \ -- with-zlib-dir \ -- with-ldap \ -- -ldap-sasl \ -- with-pcre-regex \ -- with-gettext =/usr/local/env/gettext \ -- with-ncurses \ -- enable-shared \ -- enable-xml \ -- enable-safe-mode \ -- enable-track-vars \ -- enable-magic-quotes \ -- enable-bcmath \ -- enable-sysvsem \ -- enable-sysshm \ -- enable- inline-optimization \ -- enable-mbregex \ -- enable-mbstring \ -- enable-gd-native-ttf \ -- enable-pcntl \ -- enable-sockets \ -- enable-zip \ -- enable -soap \ -- enable-discard-path \ -- enable-force-cgi-redirect \ -- enable-pdo \ -- enable-calendar \ -- enable-exif \ -- enable-zend-multibyte \ "# -- disable-rpath # script call help program if [$ # = 2] then INFO 33" 1.5 "" please wait ...... "echo" "MOD_CASE" $1 "" $2 "else USAGE exit 1fi

3) script usage

# Download the installation script and source package wget https://sourceforge.net/projects/opensourcefile/files/Install_Centos_LAMP_v.0.1.zip/download -- no-check-certificateunzip Install_Centos_LAMP_v.0.1.zipchmod + x Install_Centos_LAMP_v.0.1.sh # view the script usage, you can install apache, mysql, php, start, shut down and restart apache and mysql .. /Install_Centos_LAMP_v.0.1.sh: Please see the script of the usage: Usage :. /Install_Centos_LAMP_v.0.1.sh (apache | mysql | php) install. /Install_Centos_LAMP_v.0.1.sh apache (start | stop | restart ). /Install_Centos_LAMP_v.0.1.sh mysql (start | stop | restart)


This script applies functions in Shell programming, such as functions, arrays, process control, variables, and font brightening. It is helpful to those who want to learn WEB and Shell programming, finally, I would like to thank my classmates for their support.






This article from the "simple dream catcher" blog, please be sure to keep this source http://sfzhang88.blog.51cto.com/4995876/1281640

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.