«

使用shell安装lnmp

时间:2024-2-19 17:25     作者:韩俊     分类: Linux


1、简介
      使用shell脚本安装lnmp,纯粹是偷懒,平时安装一些东西都写成脚本了,方便以后在其他机器安装的时候不用再去查找文档。

PHP版本5.6.6

MYSQL版本5.6.26

NGINX版本1.15.6

2、环境说明
  阿里云ECS(1G1核)CentOS 7.4 64位

3、shell脚本

3.1   cnl_function.sh

#!/bin/bash
#chennailuan's function

#check last command id Ok or not.
check_ok(){
    if [ $? != 0 ]
    then
        echo Error,Check the error log.
        exit 1
    fi
}

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

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

3.2   cnl_install_lnmp_init.sh

#!/bin/bash
source ./cnl_function.sh

echo "It will install lamp=========================================================================================begin"
#sleep 2

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

#close selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
selinux_s=`getenforce`
if [ $selinux_s == "enforcing" ]
then
    setenforce 0
fi

#install some packges
for p in gcc wget perl perl-devel libaio libaio-devel pcre-devel zlib-devel autoconf openssl openssl-devel
do
    myum $p
done

#install epel.
if rpm -qa epel-release > /dev/null
then
    rpm -e epel-release
fi
if ls /etc/yum.repos.d/epel-7.repo* > /dev/null 2>&1
then
    rm -f /etc/yum.repos.d/epel-7.repo*
fi
wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo

3.3   cnl_install_lnmp.sh

#!/bin/bash
source ./cnl_function.sh
source ./cnl_install_lnmp_init.sh

#function of installing mysqld
install_mysqld(){
    cd /usr/local/src
    [ -f mysql-5.6.26-linux-glibc2.5-$ar.tar.gz ] || wget http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.26-linux-glibc2.5-$ar.tar.gz
    check_ok
    tar -zxf mysql-5.6.26-linux-glibc2.5-$ar.tar.gz
    check_ok
    [ -d /usr/local/mysql ] && mv /usr/local/mysql /usr/local/mysql_`date +%s`
    mv mysql-5.6.26-linux-glibc2.5-$ar /usr/local/mysql
    check_ok
    if ! grep '^mysql:' /etc/passwd
    then
        useradd -M mysql -s /sbin/nologin
    fi
    myum compat-libstdc++-33
    check_ok
    [ -d /data/mysql ] && 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
    cp support-files/my-default.cnf /etc/my.cnf
    check_ok
    sed -i '/^\[mysqld\]$/a\datadir = /data/mysql' /etc/my.cnf
    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
}

#function of install nginx
install_nginx(){
    cd /usr/local/src
    [ -f nginx-1.15.6.tar.gz ] || wget http://nginx.org/download/nginx-1.15.6.tar.gz
    tar -zxf nginx-1.15.6.tar.gz
    cd nginx-1.15.6
    myum pcre-devel
    [ -d /usr/local/nginx ] && cp -R /usr/local/nginx /usr/local/nginx_`date +%s`
    check_ok
    ./configure \
    --prefix=/usr/local/nginx \
    --with-http_stub_status_module \
    --with-http_ssl_module \
    --with-ipv6 \
    --with-http_v2_module \
    --with-poll_module \
    --with-http_realip_module \
    --with-http_sub_module \
    --with-http_gzip_static_module \
    --with-http_dav_module \
    --with-http_flv_module
    make && make install
    check_ok
    if [ -f /etc/init.d/nginx ]
    then
        mv /etc/init.d/nginx /etc/init.d/nginx_`date +%s`
    fi
    curl https://cnlpublic.nl166.com/cnlfile/nginx/.nginx_init -o /etc/init.d/nginx
    check_ok
    chmod 755 /etc/init.d/nginx
    chkconfig --add nginx
    chkconfig nginx on
    curl https://cnlpublic.nl166.com/cnlfile/nginx/.nginx_conf -o /usr/local/nginx/conf/nginx.conf
    check_ok
    if ! grep -q '^www:' /etc/passwd
    then
        useradd -M -s /sbin/nologin www
    fi

    service nginx start
    check_ok
    echo -e "<?php  \n phpinfo(); \n ?>" > /usr/local/nginx/html/index.php
    check_ok
}

#function of install php-fpm  version 5.6
install_phpfpm(){
    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 '^www:' /etc/passwd
    then
        useradd -M -s /sbin/nologin www
    fi
    check_ok
    ./configure \
    --prefix=/usr/local/php-fpm \
    --with-config-file-path=/usr/local/php-fpm/etc \
    --enable-fpm \
    --with-fpm-user=www \
    --with-fpm-group=www \
    --with-mysql=/usr/local/mysql \
    --with-mysql-sock=/tmp/mysql.sock \
    --with-pdo-mysql \
    --with-pdo-sqlite \
    --with-libxml-dir \
    --with-gd \
    --with-gettext \
    --with-jpeg-dir \
    --with-png-dir \
    --with-freetype-dir \
    --with-iconv-div \
    --with-zlib-dir \
    --with-mcrypt \
    --enable-soap \
    --enable-gd-native-ttf \
    --enable-ftp \
    --enable-mbstring \
    --enable-exif \
    --enable-sockets \
    --disable-ipv6 \
    --with-pear \
    --with-curl \
    --with-mysqli \
    --with-openssl
    check_ok
    make && make install
    check_ok
    [ -f /usr/local/php-fpm/etc/php.ini ] || 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 = "PRC"' /usr/local/php-fpm/etc/php.ini
        check_ok
    fi
    [ -f /usr/local/php-fpm/etc/php-fpm.conf ] || curl https://cnlpublic.nl166.com/cnlfile/php/.phpfpm_conf -o /usr/local/php-fpm/etc/php-fpm.conf
    [ -f /etc/init.d/phpfpm ] || cp sapi/fpm/init.d.php-fpm /etc/init.d/phpfpm

    chmod 755 /etc/init.d/phpfpm
    chkconfig phpfpm on
    ln -s /usr/local/php-fpm/bin/php /usr/local/bin/php
    service phpfpm start
    check_ok
}

#function of install lnmp
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 "Initialization completion, Enter  (Y) to start installation LNMP :" n
if [ $n == 'Y' ]
then
    echo "Start installation==============================================================================================================================>"
    lnmp
else
    echo "Cancel the installation."
fi

4、开始安装

上面上个文件放在同一目录并都给予执行(x)权限

在shell目录执行 sh cnl_install_lnmp.sh

输入 Y 确认执行安装,需要安装的安装包会自己检查,本人在自己的几台服务器都测试过,安装正常。

安装完会自己加到系统服务 ,并启动。

写的文章仅供自己参考,仅供自己参考,仅供自己参考,免得太久没有使用忘记了。

标签: linux

热门推荐