自动化部署LNMP

1、简介

PHP版本5.6.6
MYSQL版本5.6.48
NGINX版本1.15.6

2、环境说明

 CentOS 7.4 64位

3、shell脚本

3.1 function.sh

#!/bin/bash
#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 install_lnmp_init.sh

#!/bin/bash
source ./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 install_lnmp.sh

#!/bin/bash
source ./ function.sh
source ./install_lnmp_init.sh

#function of installing mysqld
install_mysqld(){
cd /usr/local/src
tar -zxf mysql-5.6.48-linux-glibc2.5.tar.gz
check_ok
[ -d /usr/local/mysql ] && mv /usr/local/mysql /usr/local/mysql_date +%s
check_ok
if ! grep ‘^mysql:’ /etc/passwd
then
useradd -M mysql -s /sbin/nologin
fi
[ -d /data/mysql ] && mv /data/mysql /data/mysql_date +%s
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql
cd /usr/src/mysql-5.6.48
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all
check_ok
make && make install
cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql – basedir=/usr/local/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
check_ok
ln -s /usr/local/nginx/sbin/nginx /etc/init.d
chkconfig --add nginx
chkconfig nginx on
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
cd php-5.6.6
check_ok
./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=/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
cd /usr/local/php/etc && cp php-fpm.conf.default php.fpm.conf && cd /usr/src/php-5.6.6
[ -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

猜你喜欢

转载自blog.csdn.net/weixin_45537987/article/details/106714369
今日推荐