当前位置 博文首页 > 使用shell脚本安装lnmp的方法步骤

    使用shell脚本安装lnmp的方法步骤

    作者:陈乃栾 时间:2021-02-12 12:03

    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、开始安装

    上面上个文件放在同一目录

      

    在shell目录执行 sh cnl_install_lnmp.sh

      

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

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

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持站长博客。

    js