Using shell scripts to implement LANMP one-click Installation

Source: Internet
Author: User
Tags bz2 fpm install php soap pear phpinfo sapi epel repo



Use shell scripts to implement a one-click installation of the LANMP system. The operating system used is CentOS 6, which does not differentiate between 32-bit and 64-bit, requiring the machine to connect to the Internet. Supports both LAMP and LNMP, MySQL supports 5.1 and 5.6 two versions, PHP supports 5.3 and 5.6 two versions, Apache 2.2, Nginx 1.8.



The code is as follows:





#! / bin / bash
echo "It will install lamp or lnmp."
sleep 1

# get the archive of the system: i686 or x86_64.
ar = `arch`

# check last command is OK or Not.
function check_ok ()
{
    if [$?! = 0]; then
        echo "Error, Check the error log."
        exit 1
    fi
}

# close seliux
function close_selinux ()
{
    sed -i ‘s / SELINUX = enforcing / SELINUX = disabled /‘ / etc / selinux / config
    selinux_s = `getenforce`
    if [$ selinux_s == "Enforcing" -o $ selinux_s == "enforcing"]; then
        setenforce 0
    fi
}

# close iptables
function clear_iptables ()
{
    iptables-save> / etc / sysconfig / iptables_`date +% s`
    iptables -F
    service iptables save
}

# if the packge installed, then omit.
function myum () {
    if! rpm -qa | grep -q "^ $ 1"; then
        yum install -y $ 1
        check_ok
    else
        echo $ 1 already installed.
    fi
}

## install some packges.
function install_pre_packages
{
    for p in gcc wget perl perl-devel libaio libaio-devel pcre-devel zlib-devel; do
        myum $ p
    done
}
install_pre_packages

# install epel repo.
function install_epel ()
{
    if rpm -qa epel-release> / dev / null; then
        rpm -e epel-release
    fi
    if ls /etc/yum.repos.d/epel-6.repo*> / dev / null 2> & 1; then
        / bin / rm -f /etc/yum.repos.d/epel-6.repo*
    fi
    wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-6.repo
}
install_epel


# function of installing mysqld.
function install_mysqld () {
    echo "Chose 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
                tar zxf mysql-5.1.72-linux- $ ar-glibc23.tar.gz
                check_ok
                [-d / usr / local / mysql] && / bin / mv / usr / local / mysql / usr / local / mysql_`date +% s`
                / bin / mv mysql-5.1.72-linux- $ ar-glibc23 / usr / local / mysql
                check_ok
                if! grep ‘^ mysql:‘ / etc / passwd; then
                    useradd -M mysql -s / sbin / nologin
                    check_ok
                fi
                myum compat-libstdc ++-33
                [-d / data / mysql] && / bin / mv / data / mysql / data / mysql_`date +% s`
                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-huge.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
                ;;
            5.6)
                cd / usr / local / src
                [-f mysql-5.6.35-linux-glibc2.5- $ ar.tar.gz] || wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2 .5- $ ar.tar.gz
                tar zxf mysql-5.6.35-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.35-linux-glibc2.5- $ ar / usr / local / mysql
                if! grep ‘^ mysql:‘ / etc / passwd
                then
                    useradd -M mysql -s / sbin / nologin
                fi
                myum 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
}

# function of install httpd.
function install_httpd () {
    echo "Install apache version 2.2."
    cd / usr / local / src
    [-f httpd-2.2.31.tar.gz] || wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.31.tar.gz
    tar zxf httpd-2.2.31.tar.gz && cd httpd-2.2.31
    check_ok
    ./configure --prefix = / usr / local / apache2--with-included-apr --enable-so --enable-deflate = shared --enable-expires = shared --enable-rewrite = shared --with-pcre
    check_ok
    make && make install
    check_ok
}
# function of install lamp ‘s php.
function install_php () {
    echo -e "Install php. \ nPlease chose 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
                tar jxf php-5.4.45.tar.bz2 && 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
                [-f /usr/local/php/etc/php.ini] || / bin / cp php.ini-production /usr/local/php/etc/php.ini
                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
                tar zxf php-5.6.6.tar.gz && 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
                ./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
                [-f /usr/local/php/etc/php.ini] || / bin / cp php.ini-production /usr/local/php/etc/php.ini
                break
                ;;
            *)
                echo "only 1 (5.4) or 2 (5.6)"
                ;;
        esac
    done
}
## function of apache and php configue.
function 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 / DirectoryIndex index.html / DirectoryIndex index.php index.html index.htm /‘ /usr/local/apache2/conf/httpd.conf
    check_ok
    echo -e "<? php \ n phpinfo (); \ n?>"> /usr/local/apache2/htdocs/index.php
    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
    / usr / local / apache2 / bin / apachectl restart
    check_ok
}

# function of check service is running or not, example nginx, httpd, php-fpm.
function 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
}

# function of install lamp
function lamp () {
    check_service mysqld
    check_service httpd
    install_php
    join_apa_php
    echo "LAMP done, Please use‘ http: // your ip / index.php ’to access."
}

# function of install nginx
function install_nginx ()
{
    cd / usr / local / src
    [-f nginx-1.8.0.tar.gz] || wget http://mirrors.sohu.com/nginx/nginx-1.8.0.tar.gz
    tar zxf nginx-1.8.0.tar.gz
    cd nginx-1.8.0
    myum pcre-devel
    ./configure --prefix = / usr / local / nginx
    check_ok
    make && make install
    check_ok
    if [-f /etc/init.d/nginx]; then
        / bin / mv /etc/init.d/nginx /etc/init.d/nginx_`date +% s`
    fi
    curl http://www.apelearn.com/study_v2/.nginx_init -o /etc/init.d/nginx
    check_ok
    chmod 755 /etc/init.d/nginx
    chkconfig --add nginx
    chkconfig nginx on
    curl http://www.apelearn.com/study_v2/.nginx_conf -o /usr/local/nginx/conf/nginx.conf
    check_ok
    service nginx start
    check_ok
    echo -e "<? php \ n phpinfo (); \ n?>"> /usr/local/nginx/html/index.php
    check_ok
}

# function of install php-fpm
function install_phpfpm () {
    echo -e "Install php. \ nPlease chose 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
                tar jxf php-5.4.45.tar.bz2 && 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
                if! grep -q ‘^ php-fpm:‘ / etc / passwd; then
                    useradd -M -s / sbin / nologin php-fpm
                    check_ok
                fi
                ./configure --prefix = / usr / local / php-fpm --with-config-file-path = / usr / local / php-fpm / etc --enable-fpm --with-fpm-user = php- fpm --with-fpm-group = php-fpm --with-mysql = / usr / local / mysql --with-mysql-sock = / tmp / mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd -native-ttf --enable-ftp --enable-mbstring --enable-exif --enable-zend-multibyte --disable-ipv6 --with-pear --with-curl --with-openssl
                check_ok
                make && make install
                check_ok
                [-f /usr/local/php-fpm/etc/php.ini] || / bin / cp php.ini-production /usr/local/php-fpm/etc/php.ini
                if / usr / local / php-fpm / bin / php -i | grep -iq ‘date.timezone => no value’
                then
                    sed -i ‘/;date.timezone = $ / a \ date.timezone =" Asia \ / Chongqing "‘ /usr/local/php-fpm/etc/php.ini
                    check_ok
                fi
                [-f /usr/local/php-fpm/etc/php-fpm.conf] || curl http://www.apelearn.com/study_v2/.phpfpm_conf -o / usr / local / php-fpm / etc / php-fpm.conf
                [-f /etc/init.d/phpfpm] || / bin / cp sapi / fpm / init.d.php-fpm /etc/init.d/phpfpm
                chmod 755 /etc/init.d/phpfpm
                chkconfig phpfpm on
                service phpfpm start
                check_ok
                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
                tar zxf php-5.6.6.tar.gz && 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
                if! grep -q ‘^ php-fpm:‘ / etc / passwd
                then
                    useradd -M -s / sbin / nologin php-fpm
                fi
                check_ok
                ./configure --prefix = / usr / local / php-fpm --with-config-file-path = / usr / local / php-fpm / etc --enable-fpm --with-fpm-user = php- fpm --with-fpm-group = php-fpm --with-mysql = / usr / local / mysql --with-mysql-sock = / tmp / mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd -native-ttf --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 --with-pear --with-curl --with-openssl
                check_ok
                make && make install
                check_ok
                [-f /usr/local/php-fpm/etc/php.ini] || / bin / cp php.ini-production /usr/local/php-fpm/etc/php.ini
                if / usr / local / php-fpm / bin / php -i | grep -iq ‘date.timezone => no value’
                then
                    sed -i ‘/;date.timezone = $ / a \ date.timezone =" Asia \ / Chongqing "‘ /usr/local/php-fpm/etc/php.ini
                    check_ok
                fi
                [-f /usr/local/php-fpm/etc/php-fpm.conf] || curl http://www.apelearn.com/study_v2/.phpfpm_conf -o / usr / local / php-fpm / etc / php-fpm.conf
                check_ok
                [-f /etc/init.d/phpfpm] || / bin / cp sapi / fpm / init.d.php-fpm /etc/init.d/phpfpm
                chmod 755 /etc/init.d/phpfpm
                chkconfig phpfpm on
                service phpfpm start
                check_ok
                break
                ;;
            *)
                echo ‘only 1 (5.4) or 2 (5.6)’
                ;;
        esac
    done
}

## function of install lnmp
function lnmp ()
{
    check_service mysqld
    check_service nginx
    check_service phpfpm
    echo "The lnmp done, Please use‘ http: // your ip / index.php ’to access."
}

read -p "Please chose which type env you install, (lamp | lnmp)?" t
case $ t in
    lamp)
        lamp
        ;;
    lnmp)
        lnmp
        ;;
    *)
        echo "Only‘ lamp ‘or‘ lnmp ‘your can input."
        ;;
esac





Using shell scripts to implement LANMP one-click Installation


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.