1、简介
使用shell脚本安装lnmp,纯粹是偷懒,平时安装一些东西都写成脚本了,方便以后在其他机器安装的时候不用再去查找文档。
PHP版本5.6.6
MYSQL版本5.6.26
NGINX版本1.15.6
2、环境说明
阿里云ECS(1G1核)CentOS 7.4 64位
3、shell脚本
2.1 cnl_function.sh ↓↓↓
1 #!/bin/bash 2 #chennailuan's function 3 4 5 #check last command id Ok or not. 6 check_ok(){ 7 if [ $? != 0 ] 8 then 9 echo Error,Check the error log. 10 exit 1 11 fi 12 } 13 14 #if the packge installed ,then omit 15 myum(){ 16 if ! rpm -qa|grep -q "^$1" 17 then 18 yum install -y $1 19 check_ok 20 else 21 echo $1 already installed. 22 fi 23 } 24 25 #check service is running or not ,example nginx ,httpd ,php-fpm 26 check_service(){ 27 if [ $1 == "phpfpm" ] 28 then 29 s="php-fpm" 30 else 31 s=$1 32 fi 33 34 n=`ps aux | grep $s | wc -l` 35 if [ $n -gt 1 ] 36 then 37 echo "$1 service is already started." 38 else 39 if [ -f /etc/init.d/$1 ] 40 then 41 /etc/init.d/$1 start 42 check_ok 43 else 44 install_$1 45 fi 46 fi 47 }
2.2 cnl_install_lnmp_init.sh ↓↓↓
1 #!/bin/bash 2 source ./cnl_function.sh 3 4 echo "It will install lamp=========================================================================================begin" 5 #sleep 2 6 7 #get the archive of the system ,i686 or x86_64 8 ar=`arch` 9 10 #close selinux 11 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 12 selinux_s=`getenforce` 13 if [ $selinux_s == "enforcing" ] 14 then 15 setenforce 0 16 fi 17 18 #install some packges 19 for p in gcc wget perl perl-devel libaio libaio-devel pcre-devel zlib-devel autoconf openssl openssl-devel 20 do 21 myum $p 22 done 23 24 #install epel. 25 if rpm -qa epel-release > /dev/null 26 then 27 rpm -e epel-release 28 fi 29 if ls /etc/yum.repos.d/epel-7.repo* > /dev/null 2>&1 30 then 31 rm -f /etc/yum.repos.d/epel-7.repo* 32 fi 33 wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo
2.3 cnl_install_lnmp.sh ↓↓↓
1 #!/bin/bash 2 source ./cnl_function.sh 3 source ./cnl_install_lnmp_init.sh 4 5 #function of installing mysqld 6 install_mysqld(){ 7 cd /usr/local/src 8 [ -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 9 check_ok 10 tar -zxf mysql-5.6.26-linux-glibc2.5-$ar.tar.gz 11 check_ok 12 [ -d /usr/local/mysql ] && mv /usr/local/mysql /usr/local/mysql_`date +%s` 13 mv mysql-5.6.26-linux-glibc2.5-$ar /usr/local/mysql 14 check_ok 15 if ! grep '^mysql:' /etc/passwd 16 then 17 useradd -M mysql -s /sbin/nologin 18 fi 19 myum compat-libstdc++-33 20 check_ok 21 [ -d /data/mysql ] && mv /data/mysql /data/mysql_`date +%s` 22 mkdir -p /data/mysql 23 chown -R mysql:mysql /data/mysql 24 cd /usr/local/mysql 25 ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql 26 check_ok 27 cp support-files/my-default.cnf /etc/my.cnf 28 check_ok 29 sed -i '/^[mysqld]$/adatadir = /data/mysql' /etc/my.cnf 30 cp support-files/mysql.server /etc/init.d/mysqld 31 sed -i 's#^datadir=#datadir=/data/mysql#' /etc/init.d/mysqld 32 chmod 755 /etc/init.d/mysqld 33 chkconfig --add mysqld 34 chkconfig mysqld on 35 service mysqld start 36 check_ok 37 } 38 39 40 #function of install nginx 41 install_nginx(){ 42 cd /usr/local/src 43 [ -f nginx-1.15.6.tar.gz ] || wget http://nginx.org/download/nginx-1.15.6.tar.gz 44 tar -zxf nginx-1.15.6.tar.gz 45 cd nginx-1.15.6 46 myum pcre-devel 47 [ -d /usr/local/nginx ] && cp -R /usr/local/nginx /usr/local/nginx_`date +%s` 48 check_ok 49 ./configure 50 --prefix=/usr/local/nginx 51 --with-http_stub_status_module 52 --with-http_ssl_module 53 --with-ipv6 54 --with-http_v2_module 55 --with-poll_module 56 --with-http_realip_module 57 --with-http_sub_module 58 --with-http_gzip_static_module 59 --with-http_dav_module 60 --with-http_flv_module 61 make && make install 62 check_ok 63 if [ -f /etc/init.d/nginx ] 64 then 65 mv /etc/init.d/nginx /etc/init.d/nginx_`date +%s` 66 fi 67 curl https://cnlpublic.nl166.com/cnlfile/nginx/.nginx_init -o /etc/init.d/nginx 68 check_ok 69 chmod 755 /etc/init.d/nginx 70 chkconfig --add nginx 71 chkconfig nginx on 72 curl https://cnlpublic.nl166.com/cnlfile/nginx/.nginx_conf -o /usr/local/nginx/conf/nginx.conf 73 check_ok 74 if ! grep -q '^www:' /etc/passwd 75 then 76 useradd -M -s /sbin/nologin www 77 fi 78 79 service nginx start 80 check_ok 81 echo -e "<?php phpinfo(); ?>" > /usr/local/nginx/html/index.php 82 check_ok 83 } 84 85 86 #function of install php-fpm version 5.6 87 install_phpfpm(){ 88 cd /usr/local/src/ 89 [ -f php-5.6.6.tar.gz ] || wget http://mirrors.sohu.com/php/php-5.6.6.tar.gz 90 tar -zxf php-5.6.6.tar.gz && cd php-5.6.6 91 for p in openssl-devel bzip2-devel 92 libxml2-devel curl-devel libpng-devel libjpeg-devel 93 freetype-devel libmcrypt-devel libtool-ltdl-devel perl-devel 94 do 95 myum $p 96 done 97 98 if ! grep -q '^www:' /etc/passwd 99 then 100 useradd -M -s /sbin/nologin www 101 fi 102 check_ok 103 ./configure 104 --prefix=/usr/local/php-fpm 105 --with-config-file-path=/usr/local/php-fpm/etc 106 --enable-fpm 107 --with-fpm-user=www 108 --with-fpm-group=www 109 --with-mysql=/usr/local/mysql 110 --with-mysql-sock=/tmp/mysql.sock 111 --with-pdo-mysql 112 --with-pdo-sqlite 113 --with-libxml-dir 114 --with-gd 115 --with-gettext 116 --with-jpeg-dir 117 --with-png-dir 118 --with-freetype-dir 119 --with-iconv-div 120 --with-zlib-dir 121 --with-mcrypt 122 --enable-soap 123 --enable-gd-native-ttf 124 --enable-ftp 125 --enable-mbstring 126 --enable-exif 127 --enable-sockets 128 --disable-ipv6 129 --with-pear 130 --with-curl 131 --with-mysqli 132 --with-openssl 133 check_ok 134 make && make install 135 check_ok 136 [ -f /usr/local/php-fpm/etc/php.ini ] || cp php.ini-production /usr/local/php-fpm/etc/php.ini 137 if /usr/local/php-fpm/bin/php -i || grep -iq 'date.timezone => no value' 138 then 139 sed -i '/;date.timezone =$/adate.timezone = "PRC"' /usr/local/php-fpm/etc/php.ini 140 check_ok 141 fi 142 [ -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 143 [ -f /etc/init.d/phpfpm ] || cp sapi/fpm/init.d.php-fpm /etc/init.d/phpfpm 144 145 chmod 755 /etc/init.d/phpfpm 146 chkconfig phpfpm on 147 ln -s /usr/local/php-fpm/bin/php /usr/local/bin/php 148 service phpfpm start 149 check_ok 150 151 152 } 153 154 #function of install lnmp 155 lnmp(){ 156 check_service mysqld 157 check_service nginx 158 check_service phpfpm 159 echo "The lnmp done,Please use 'http://your ip/index.php' to access" 160 } 161 162 163 read -p "Initialization completion, Enter (Y) to start installation LNMP :" n 164 if [ $n == 'Y' ] 165 then 166 echo "Start installation==============================================================================================================================>" 167 lnmp 168 else 169 echo "Cancel the installation." 170 fi
4、开始安装
上面上个文件放在同一目录
在shell目录执行 sh cnl_install_lnmp.sh
输入 Y 确认执行安装,需要安装的安装包会自己检查,本人在自己的几台服务器都测试过,安装正常。
安装完会自己加到系统服务 ,并启动。