多机LNMP部署环境脚本

脚本分析:

初始化
存放各种变量参数
nginx安装脚本
php安装脚本
mysql安装脚本
lnmp.sh
init_os.sh
installsr
nginx_install.sh
php_install.sh
mysql_install.sh

目录结构

lnmp
include各个安装脚本
installrc参数设置
lnmp.sh入口
src安装包

include目录:含有mysql_install.sh,init_os.sh,php_install.sh nginx_install.sh
src目录:php包,nginx包,依赖包,mysql源,以下缺一不可
nginx1.16.1下载:http://nginx.org/download/nginx-1.16.1.tar.gz
php7.3下载: https://www.php.net/distributions/php-7.3.16.tar.gz
依赖包:https://libzip.org/download/libzip-1.2.0.tar.gz
mysql源:http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
建立目录:

[root@localhost ~]# mkdir lnmp
[root@localhost ~]# cd lnmp
[root@localhost lnmp]# mkdir src include 
[root@localhost lnmp]# ll
total 0
drwxr-xr-x. 2 root root 6 Mar 31 13:48 include
drwxr-xr-x. 2 root root 6 Mar 31 13:48 src

将下载的nginx,php,依赖包放到src目录

[root@localhost src]# ll
total 21672
-rw-r--r--  1 root root  1514966 Apr 10 00:05 libzip-1.2.0.tar.gz
-rw-r--r--. 1 root root  1032630 Apr  9 07:17 nginx-1.16.1.tar.gz
-rw-r--r--. 1 root root 19636389 Apr  9 07:17 php-7.3.16.tar.gz

建立文件

[root@localhost lnmp]# touch lnmp.sh
[root@localhost lnmp]# touch installrc
[root@localhost lnmp]# cd include
[root@localhost include]# touch php_install.sh nginx_install.sh init_os.sh mysql_install.sh
[root@localhost include]# ll 
total 0
-rw-r--r--. 1 root root 0 Mar 31 13:49 mysql_install.sh
-rw-r--r--. 1 root root 0 Mar 31 13:49 init_os.sh
-rw-r--r--. 1 root root 0 Mar 31 13:49 nginx_install.sh
-rw-r--r--. 1 root root 0 Mar 31 13:49 php_install.sh

nginx脚本 vim nginx_install.sh

#!/bin/bash
#by Lining
nginx_install(){
        yum install -y gcc openssl-devel pcre-devel
        useradd nginx

        tar zxf $work_dir/src/$nginx_version  -C $work_dir/src/
        cd $work_dir/src/${nginx_version%.tar.gz}
        ./configure --prefix=$nginx_prefix_dir
        make -j $cpus
        make install  
        echo  "export NGINX_HOME=$nginx_prefix_dir" >>/etc/profile
        echo  'PATH=$PATH:$NGINX_HOME/sbin' >>/etc/profile
        source /etc/profile
        echo "$nginx_prefix_dir/sbin/nginx" >> /etc/rc.local
        chmod a+x /etc/rc.d/rc.local
        nginx
}

php脚本vim php_install.sh

#!/bin/bash
#by Lining
php_install(){
        yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses curl gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel expat-devel xmlrpc-c xmlrpc-c-devel libicu-devel libmcrypt-devel libmemcached-devel libzip gcc-c++
        ##libzip
        yum remove libzip -y
        tar zxf $work_dir/src/$libzip_version -C $work_dir/src/
        cd $work_dir/src/${libzip_version%.tar.gz}
        ./configure
        make -j $cpus && make install
        #解决报错zipconf.h: No such file or dire...
        cp /usr/local/lib/libzip/include/zipconf.h  /usr/local/include/zipconf.h
        ##解决off_t undefined
        echo -e '/usr/local/lib64\n/usr/local/lib\n/usr/lib\n/usr/lib64' >>/etc/ld.so.conf
        ldconfig -v 
        #编译
        tar zxf $work_dir/src/$php_version  -C $work_dir/src/
        cd $work_dir/src/${php_version%.tar.gz}
        groupadd www
        useradd -g www www
        ./configure \
         --prefix=$php_prefix_dir\
         --enable-fpm\
         --with-fpm-user=www\
         --with-fpm-group=www\
         --with-config-file-path=$php_prefix_dir/conf\
         --disable-rpath\
         --enable-soap\
         --with-libxml-dir\
         --with-xmlrpc\
         --with-openssl\
         --with-mhash\
         --with-pcre-regex\
         --with-zlib\
         --enable-bcmath\
         --with-bz2\
         --enable-calendar\
         --with-curl\
         --enable-exif\
         --with-pcre-dir\
         --enable-ftp\
         --with-gd\
         --with-openssl-dir\
         --with-jpeg-dir\
         --with-png-dir\
         --with-zlib-dir\
         --with-freetype-dir\
         --enable-gd-jis-conv\
         --with-gettext\
         --with-gmp\
         --with-mhash\
         --enable-mbstring\
         --with-onig\
         --with-mysqli=mysqlnd\
         --with-pdo-mysql=mysqlnd\
         --with-zlib-dir\
         --with-readline\
         --enable-shmop\
         --enable-sockets\
         --enable-sysvmsg\
         --enable-sysvsem \
         --enable-sysvshm \
         --enable-wddx\
         --with-libxml-dir\
         --with-xsl\
         --enable-zip\
         --with-pear
        make -j $cpus && make install   
        echo  "export PHP_HOME=$php_prefix_dir" >>/etc/profile
        echo 'PATH=$PATH:$PHP_HOME/bin'  >>/etc/profile
        source /etc/profile
        cp $work_dir/src/${php_version%.tar.gz}/php.ini-production $php_prefix_dir/conf/php.ini
        cp $php_prefix_dir/etc/php-fpm.conf.default $php_prefix_dir/etc/php-fpm.conf
        cp $php_prefix_dir/etc/php-fpm.d/www.conf.default $php_prefix_dir/etc/php-fpm.d/www.conf
        cp $work_dir/src/${php_version%.tar.gz}/sapi/fpm/php-fpm.service /usr/lib/systemd/system/php-fpm.service
        systemctl start php-fpm.service
        systemctl enable php-fpm.service

} 

installrc配置文件vim installrc(这里面自定义参数)

#!/bin/bash
#by Lining
nginx_version=nginx-1.16.1.tar.gz
php_version=php-7.3.16.tar.gz
libzip_version=libzip-1.2.0.tar.gz
cpus=`lscpu |grep '^CPU(s)'| awk '{print $NF}'`
nginx_prefix_dir=/usr/local/nginx
php_prefix_dir=/usr/local/php
new_password=Qwe123..   #mysql_password,必须符合长度8,且必须含有数字,小写或大写字母,特殊字符,否则密码改不成功

编辑mysql_install.sh

#!/bin/bash
#by Lining
mysql_install(){
        rpm -ivh $work_dir/src/mysql57-community-release-el7-10.noarch.rpm
        yum -y install mysql-community-server
        systemctl start  mysqld.service
        systemctl enable mysqld.service
        old_password=`grep "temporary password" /var/log/mysqld.log |awk '{print $NF}'`
        mysql --connect-expired-password -uroot -p"$old_password" -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$new_password';"
        if [ $? -eq 0 ];then
                echo "mysql_password is $new_password"
        else 
                new_password=$old_password
        fi
}

编辑init_os.sh

#!/bin/bash
#by Lining
init_os(){
        systemctl stop firewalld;systemctl disable firewalld;
        sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
        rm -rvf /etc/yum.repos.d/*
        #配置阿里源
        curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
        yum install -y wget
        wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
        yum install -y vim bash-completion lftp
        echo "初始化完成"
}

编辑主程序 vim lnmp.sh

#!/bin/bash
#by Lining
ping -c2 www.baidu.com >/dev/null
if [ $? -eq 0 ];then
        work_dir=$(cd $(dirname $0);pwd)
        . $work_dir/include/init_os.sh
        . $work_dir/include/nginx_install.sh
        . $work_dir/include/php_install.sh
        . $work_dir/include/mysql_install.sh
        . $work_dir/installrc
        init_os
        nginx_install
        php_install
        mysql_install
        echo "nginx安装目录:$nginx_prefix_dir"
        echo "php安装目录:$php_prefix_dir"
        echo "mysql密码:$new_password"
else 
        echo "网络有问题!"
fi

到此,脚本就写完了。只需执行lnmp.sh脚本就行了

[root@localhost ~]# chmod +x lnmp/*
[root@localhost ~]# ./lnmp/lnmp.sh 

本脚本只是写来自己学习的,大佬勿喷

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值