[关闭]
@Great-Chinese 2016-09-13T11:47:34.000000Z 字数 5235 阅读 934

Shell编程实战 自动安装LNMP

linux


共用函数脚本funs.sh

  1. #!/usr/bin/env bash
  2. ## 检查上一步命令释放执行成功
  3. check_ok() {
  4. if [ $? != 0 ]
  5. then
  6. echo "Error,check the error log"
  7. exit 1
  8. fi
  9. }
  10. ## 获取用户输入
  11. read_input(){
  12. read -p "$1" val
  13. echo $val >> /dev/null
  14. }
  15. ## 使用yum安装工具
  16. yum_install(){
  17. echo "checking....$1"
  18. if ! rpm -qa|grep -q "^$1" ; then
  19. echo "installing... $1"
  20. yum install -y $1
  21. check_ok
  22. fi
  23. }
  24. ar=`arch`
  25. select_soft(){
  26. #clear
  27. print_info
  28. echo "请选择安装的软件:"
  29. select item in MySql PHP Nginx EXIT
  30. do
  31. case $item in
  32. MySql)
  33. install_mysql
  34. break ;
  35. ;;
  36. PHP)
  37. install_php
  38. break;
  39. ;;
  40. Nginx)
  41. install_nginx
  42. break;
  43. ;;
  44. Apache)
  45. break;
  46. ;;
  47. EXIT)
  48. exit 0
  49. ;;
  50. *)
  51. echo "选择错误,请重新选择"
  52. ;;
  53. esac
  54. done
  55. select_soft
  56. }
  57. print_info(){
  58. echo "
  59. *****************************************************
  60. * 1 安装Mysql *
  61. * 2 安装PHP *
  62. * 3 安装Nginx *
  63. * 4 退出 *
  64. *****************************************************
  65. "
  66. }

安装mysql函数脚本 mysql.sh

  1. #!/usr/bin/env bash
  2. ## 安装mysql的函数
  3. install_mysql(){
  4. mysql_data_dir=/data/mysql
  5. passwd=123456
  6. ## 新增mysql账号
  7. if ! grep '^mysql:' /etc/passwd ; then
  8. useradd -M mysql -s /sbin/nologin
  9. fi
  10. if [ -d $install_dir/mysql ] ; then
  11. echo -e "\e[31m 已经安装Mysql,请移除 \e[m"
  12. else
  13. ## 安装插件
  14. yum_install compat-libstdc++-33
  15. [ -d $mysql_data_dir ] || mkdir -p $mysql_data_dir
  16. ## 把文件夹的目录授权给mysql
  17. chown -R mysql:mysql $mysql_data_dir
  18. echo "选择安装mysql的版本"
  19. select mysql_version in 5.1 5.6
  20. do
  21. case $mysql_version in
  22. 5.1)
  23. [ -f $src_dir/mysql-5.1.72-linux-$ar-glibc23.tar.gz ] || wget -P $src_dir http://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.72-linux-$ar-glibc23.tar.gz
  24. check_ok
  25. tar -xvf $src_dir/mysql-5.1.72-linux-$ar-glibc23.tar.gz -C $src_dir
  26. check_ok
  27. mv $src_dir/mysql-5.1.72-linux-$ar-glibc23 $install_dir/mysql
  28. sed -i '/^\[mysqld\]$/a\datadir = /data/mysql' $install_dir/mysql/support-files/my-huge.cnf
  29. cp $install_dir/mysql/support-files/my-huge.cnf /etc/my.cnf
  30. break ;
  31. ;;
  32. 5.6)
  33. [ -f $src_dir/mysql-5.6.32-linux-glibc2.5-$ar.tar.gz ] || wget -P $src_dir http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.32-linux-glibc2.5-$ar.tar.gz
  34. check_ok
  35. tar -xvf $src_dir/mysql-5.6.32-linux-glibc2.5-$ar.tar.gz -C $src_dir
  36. check_ok
  37. mv $src_dir/mysql-5.6.32-linux-glibc2.5-$ar $install_dir/mysql
  38. check_ok
  39. sed -i '/^\[mysqld\]$/a\datadir = /data/mysql' $install_dir/mysql/support-files/my-default.cnf
  40. cp $install_dir/mysql/support-files/my-default.cnf /etc/my.cnf
  41. break;
  42. ;;
  43. *)
  44. echo "选择错误"
  45. ;;
  46. esac
  47. done
  48. $install_dir/mysql/scripts/mysql_install_db --user=mysql --datadir=$mysql_data_dir --basedir=$install_dir/mysql
  49. check_ok
  50. sed -i 's#^basedir=$#basedir='$install_dir'/mysql#g' $install_dir/mysql/support-files/mysql.server
  51. check_ok
  52. sed -i 's#^datadir=$#datadir=/data/mysql#g' $install_dir/mysql/support-files/mysql.server
  53. cp -f $install_dir/mysql/support-files/mysql.server /etc/init.d/mysqld
  54. chmod 755 /etc/init.d/mysqld
  55. chkconfig --add mysqld
  56. service mysqld start
  57. check_ok
  58. $install_dir/mysql/bin/mysqladmin -u root password $passwd ;
  59. $install_dir/mysql/bin/mysql -u root -p$passwd -e "delete from mysql.user where host != 'localhost'; delete from mysql.user where user=''; update mysql.user set host = '%' ; flush privileges;"
  60. fi
  61. }

安装PHP php.sh

  1. #!/bin/bash
  2. install_php(){
  3. for p in libxml2-devel openssl-devel bzip2-devel bzip2-devel freetype freetype-devel libmcrypt-devel libjpeg-turbo libjpeg-turbo-devel libpng-devel
  4. do
  5. yum_install $p
  6. done
  7. [ -f $src_dir/php-5.6.25.tar.gz ] || wget -P $src_dir http://101.110.118.75/am1.php.net/distributions/php-5.6.25.tar.gz
  8. tar -xvf $src_dir/php-5.6.25.tar.gz -C $src_dir
  9. current_pwd=`pwd`
  10. cd $src_dir/php-5.6.25
  11. $src_dir/php-5.6.25/configure --prefix=$install_dir/php --with-config-file-path=$install_dir/php/etc --with-mysql=$install_dir/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
  12. check_ok
  13. make && make install
  14. check_ok
  15. cd $current_pwd
  16. cp $src_dir/php-5.6.25/php.ini-production $install_dir/php/etc/php.ini
  17. }

安装nginx nginx.sh

  1. #!/usr/bin/env bash
  2. install_nginx(){
  3. [ -f $src_dir/nginx-1.11.3.tar.gz ] || wget -P $src_dir http://nginx.org/download/nginx-1.11.3.tar.gz
  4. cPwd=`pwd`
  5. cd $src_dir
  6. tar -xvf $src_dir/nginx-1.11.3.tar.gz -C $src_dir
  7. check_ok
  8. cd nginx-1.11.3
  9. ./configure --prefix=$install_dir/nginx --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre
  10. check_ok
  11. make && make install
  12. cd $cPwd
  13. cp -f conf/nginx /etc/init.d/nginx
  14. sed -i 's#nginx_home_dir#'$install_dir'/nginx#g' /etc/init.d/nginx
  15. chmod +x /etc/init.d/nginx
  16. chkconfig --add nginx
  17. }

安装脚本 install.sh

  1. #!/usr/bin/env bash
  2. . /etc/init.d/functions
  3. . funs.sh
  4. . mysql.sh
  5. . php.sh
  6. . nginx.sh
  7. # 需要使用的参数
  8. install_dir=/usr/local
  9. src_dir=$install_dir/src
  10. ## 关闭selinux
  11. sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  12. ## 获取当前setlinux状态,转换成为小写
  13. selinux_s=`getenforce | tr [A-Z] [a-z]`
  14. ##如果状态为 enforcing ,设设置成 Permissive
  15. if [ "$selinux_s" == "enforcing" ] ; then
  16. setenforce 0 ;
  17. fi
  18. ## 清空iptables防火墙规则
  19. iptables-save > /etc/sysconfig/iptables_`date +%s`
  20. iptables -F
  21. service iptables save
  22. ## 删除 epel-release
  23. if rpm -qa | grep epel-release > /dev/null ; then
  24. rpm -e epel-release > /dev/null
  25. fi
  26. ## 获取Centos的版本,如果是6.xx下载 epel-6.repo ,如果是7.xx 下载 epel-7.repo
  27. epel_file_v=`cat /etc/redhat-release | sed 's/[^0-9.]//g' | cut -d'.' -f1`
  28. epel_file_name=epel-"$epel_file_v".repo
  29. ## 删除 epel-6.repo 相关文件
  30. if ls /etc/yum.repos.d/$epel_file_name >/dev/null 2>&1
  31. then
  32. rm -f /etc/yum.repos.d/$epel_file_name
  33. fi
  34. if [ "7" == "$epel_file_v" ] ; then
  35. yum_install perl-Module-Install
  36. fi
  37. ## 检索是否安装了下列软件,没有就安
  38. yum_install wget
  39. wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/$epel_file_name
  40. #检查wget下载epel-6.rep文件是否下载成功
  41. check_ok
  42. select_soft
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注