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

 更新时间:2018年12月25日 14:36:13   作者:陈乃栾   我要评论

这篇文章主要介绍了使用shell安装lnmp的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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 确认执行安装,需要安装的安装包会自己检查,本人在自己的几台服务器都测试过,安装正常。

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

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

相关文章

  • Linux中 sed 和 awk的用法详解

    Linux中 sed 和 awk的用法详解

    sed是一个很好的文件处理工具,本身是一个管道命令,awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大 ,本文重点给大家介绍Linux中 sed 和 awk的用法,一起看看吧
    2017-07-07
  • Linux消息队列实现进程间通信实例详解

    Linux消息队列实现进程间通信实例详解

    这篇文章主要介绍了Linux消息队列实现进程间通信实例详解的相关资料,需要的朋友可以参考下
    2017-07-07
  • shell脚本实现文件锁功能

    shell脚本实现文件锁功能

    这篇文章主要介绍了shell脚本实现文件锁功能,本文实现了一个排它锁,从而实现避免脚本重复执行,需要的朋友可以参考下
    2014-12-12
  • Linux 中的 Install命令

    Linux 中的 Install命令

    install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户。 本文重点给大家介绍Linux 中的 Install命令,感兴趣的朋友一起看看吧
    2017-09-09
  • Shell脚本一次读取文件中一行的2种写法

    Shell脚本一次读取文件中一行的2种写法

    这篇文章主要介绍了Shell脚本一次读取文件中一行的2种写法,本文还同时讲解了Shell读取文本文件的2种方法,需要的朋友可以参考下
    2015-04-04
  • shell脚本实现linux系统文件完整性检测

    shell脚本实现linux系统文件完整性检测

    这篇文章主要介绍了shell脚本实现linux系统文件完整性检测,本文给出的脚本使用对比MD5的方法,检测linux系统文件是否被替换等问题,需要的朋友可以参考下
    2014-12-12
  • 详解Linux中两个查找命令locate和find教程

    详解Linux中两个查找命令locate和find教程

    在linux中有很多查找命令,今天小编抽空给大家讲解find和locate两个命令,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-11-11
  • 执行Shell脚本的4种方法及区别介绍

    执行Shell脚本的4种方法及区别介绍

    这篇文章主要介绍了执行Shell脚本的4种方法及区别介绍,本文讲解了相对路径方式、绝对路径方式、bash命令调用、相对或绝对方式以及说下几种方式的区别,需要的朋友可以参考下
    2015-05-05
  • linux中shell脚本实现下载完关机

    linux中shell脚本实现下载完关机

    本文给大家分享的是个人在实际应用中制作的一个小程序,十分的实用,推荐给大家,有需要的小伙伴可以参考下。
    2015-03-03
  • Shell脚本实现从文件夹中递归复制文件

    Shell脚本实现从文件夹中递归复制文件

    这篇文章主要介绍了Shell脚本实现从文件夹中递归复制文件,本文脚本实现从十层左右的文件夹中复制所有文件到一目录中,需要的朋友可以参考下
    2015-02-02

最新评论