MENU

lnmp架构脚本

May 3, 2018 • Read: 4074 • bash脚本

这是我整理的安装脚本,配置文件的参数和优化不在其中

#!/bin/env bash

#================================================================
#   
#   
#   #this is lnmp(lemp) script    n=tengine
#   Author:GH    thank you!!!
#   Date:2018.4.10
#   Description:install tengine,mysql,php 
#   looaon@163.com
#================================================================

dir=/data
nginx_download_path="http://tengine.taobao.org/download/tengine-2.1.2.tar.gz"
nginx_install_dir="/usr/local/nginx"
mysql_download_path="http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz"
mysql_install_dir="/usr/local/mysql"
php_download_path="http://cn2.php.net/distributions/php-5.6.30.tar.gz"
php_install_path="/usr/local/php"
nginx_name="tengine-2.1.2.tar.gz"
mysql_name="mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz"
php_name="php-5.6.30.tar.gz"
libiconv_name="libiconv-1.14.tar.gz"
libiconv_install_path="http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz"



#Initialization system 

install_Initialization(){
mkdir -p /data /usr/local/nginx /usr/local/php /usr/local/mysql
[ -e $dir ] && cd $dir
if [ ! -f $libiconv_name ];then
wget -c $libiconv_install_path
fi
tar zxvf $libiconv_name
cd $dir/libiconv-1.14
./configure --prefix=/usr/local/libiconv
make && make install
/etc/init.d/iptables stop && chkconfig iptables off
setenforce 0 && sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
yum install -y epel-release
yum install -y libmcrypt-devel
 . /etc/init.d/functions


}

# install tengine-2.1.2.tar.gz
install_nginx(){
  # yum install something
  wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
  yum install -y pcre pcre-devel openssl openssl-devel gcc make gcc-c++
  # download nginx
  [ -e $dir ] && cd $dir
  wget $nginx_download_path
  if [ -f $nginx_name ]
    then
      echo 'nginx download success'
      # tar tengine-2.1.2.tar.gz
      tar zxf $nginx_name && cd tengine-2.1.2
      # add user nginx
      useradd nginx -s /sbin/nologin -M
      # install nginx
      ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_gzip_static_module --with-pcre --with-http_flv_module --with-http_mp4_module --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_realip_module

      [ $(echo $?) -eq 0 ] && make && make install
      [ $(echo $?) -eq 0 ] && echo "nginx install success"    
  fi
}
# start nginx
start_nginx(){
 # check syntax
   /usr/local/nginx/sbin/nginx -t
 # start
 if [ $(echo $?) -eq 0 ]
   then
   /usr/local/nginx/sbin/nginx
     if [ $(netstat -lutnp|grep 80|wc -l) -eq 1 ]
       then
         action "nginx starting success..."  /bin/true
     else
         echo "nginx starting fail,plaese check the service!"
     fi
 fi
}
# install mysql-5.6.35
install_mysql(){
  # yum install something
  yum install -y ncurses-devel automake autoconf bison libtool-ltdl-devel
  # download mysql
  [ -e $dir ] && cd $dir
  wget $mysql_download_path
  if [ -f $mysql_name ]
    then
      echo 'mysql download success'
      # tar mysql
      echo "just wait a moment,mysql is Extracting..."
      tar zxf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
      # rename
      mv mysql-5.6.35-linux-glibc2.5-x86_64 mysql-5.6.35
      # mkdir dir mysql
      if [ ! -d $mysql_install_dir ]
        then
          mkdir -p $mysql_install_dir
      fi
      # move file to mysql_install_dir
      mv mysql-5.6.35/* /usr/local/mysql/
      # add user mysql
      useradd mysql -s /sbin/nologin -M
      # chown
      chown -R mysql.mysql /usr/local/mysql
      # change dir
      cd $mysql_install_dir
      # install mysql
      ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data
      # mv my.cnf
      [ $(echo $?) -eq 0 ] && \cp support-files/my-default.cnf /etc/my.cnf
      # mv mysql.server
      cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
      # chmod +x
      chmod +x /etc/init.d/mysqld
      # add to boot auto launch
      chkconfig --add mysqld
      chkconfig mysqld on
      # add to PATH
      PATH=$PATH:/usr/local/mysql/bin/
      echo "export PATH=$PATH:/usr/local/mysql/bin/" >>/etc/profile
      source /etc/profile
  fi   
}

# start mysql_server
start_mysql(){
  # start
  /etc/init.d/mysqld start   
  if [ $(netstat -lutnp|grep 3306|wc -l) -eq 1 ]
    then
      action "mysql starting success..." /bin/true
  else
      echo "mysql starting fail,plaese check the service!"
  fi
}

# install php-5.6.30.tar.gz
install_php(){
  # yum install something
  useradd www -M -s /sbin/nologin
  yum install zlib-devel openssl-devel openssl libxml2-devel libjpeg-devel libjpeg-turbo-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel libmcrypt-devel mcrypt mhash -y
  # download php
  [ -e $dir ] && cd $dir
  wget $php_download_path
  if [ -f $php_name ]
    then
      echo 'php download success'
      # tar file
      tar zxf $php_name  && cd php-5.6.30
      # install php
      echo "Please hold on!The configure output message is so large so that I hide the output message!..."
      ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath  --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --disable-fileinfo --enable-maintainer-zts

      [ $(echo $?) -eq 0 ] && ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/ && touch ext/phar/phar.phar
      make && make install
      
      # copy php.ini
      cp php.ini-development /etc/php.ini
      # copy php-fpm
      cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
      cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm    
      # chmod +x
      chmod +x /etc/init.d/php-fpm  
      # add to PATH
      PATH=$PATH:/usr/local/php/bin/
      echo "export PATH=$PATH:/usr/local/php/bin/" >>/etc/profile
      source /etc/profile
      # add to boot auto launch
      chkconfig --add php-fpm
      chkconfig php-fpm  on
 fi
}

# start php-fpm
start_phpfpm(){
  # start
  /etc/init.d/php-fpm start
  if [ $(netstat -lutnp|grep 9000|wc -l) -eq 1 ]
    then
      action "php-fpm starting success... "/bin/true
  else
      echo "php-fpm starting fail,plaese check the service!"
  fi

}

# main function
main(){
 
   # install 
   install_Initialization
   sleep 3
   # install
   install_nginx
   sleep 3
   install_mysql
   sleep 3
   install_php
   # start
   start_nginx
   sleep 2
   start_mysql
   sleep 2
   start_phpfpm
}
main

兼总条贯 知至知终

无标签
最后编辑于: May 4, 2018