shell脚本一键部署LNMP架构
admin
2023-02-22 14:20:04
0

shell脚本一键部署LNMP架构

详细过程请看上篇文章:LNMP搭建过程
软件包:链接:https://pan.baidu.com/s/1smqzl0usPj6rqsFUQCUAnA
提取码:tbvt

下面给出脚本(适用于尚未搭建过的服务器):

软件包路径:

[root@localhost ~]# ls tar/LNMP-C7/
Discuz_X3.4_SC_UTF8.zip php-7.1.10.tar.bz2
mysql-boost-5.7.20.tar.gz php-7.1.20.tar.bz2
ncurses-5.6.tar.gz php-7.1.20.tar.gz
nginx-1.12.2.tar.gz zend-loader-php5.6-linux-x86_64_update1.tar.gz
php-5.6.11.tar.bz2

1.main.sh(将三个脚本放入main.sh中逐一执行)

#!/bin/bash
./nginx.sh
./mysql.sh 123456  //mysqladmin 免交互时所需的密码可以自己设置
./php.sh

2.nginx.sh

#!/bin/bash
#该脚本是实现Nginx的手工编译安装
pkgpath=~/tar/LNMP-C7/
nginxpath=/usr/local/nginx/
nginx_serpath=/lib/systemd/system/nginx.service

systemctl stop firewalld.service 
setenforce 0
echo "正在安装所需环境相关软件包"
yum install -y gcc gcc-c++ make pcre pcre-devel zlib-devel &> /dev/null 
if test $? != 0
then 
    echo "环境安装有误,准备退出..."
    sleep 1
    exit 
fi

cd $pkgpath 
tar zxf nginx-1.12.2.tar.gz -C /opt/
#指定用户但不创建家目录
egrep "^nginx" /etc/passwd >& /dev/null
if [ $? -ne 0 ]
then
    useradd -M -s /sbin/nologin nginx
fi
#参数配置
echo "正在配置相关参数..."
sleep 2
cd /opt/nginx-1.12.2/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module &> /dev/null
if test $? == 0
then 
    echo "配置参数正确!"
else
    echo "配置参数有误!"
    exit 1
fi

echo "正在编译..."

make &> /dev/null 
if test $? == 0
then 
    echo "编译成功!"
else
    echo "编译有误!"
    exit 1
fi

echo "正在安装..."
make install &> /dev/null
if test $? == 0
then 
    echo "安装成功!"
else
    echo "安装失败!"
    exit 1
fi
ln -s $nginxpathsbin/nginx /usr/local/sbin/

cat  >$nginx_serpath <

3.mysql.sh

#!/bin/bash
if test $# != 1
then 
    echo "error!"
    exit
fi
#手工编译安装MySQL脚本
pkgpath=~/tar/LNMP-C7/
mysqlpath=/usr/local/mysql 

#安装所需环境软件包
echo "安装所需环境软件包..."
yum install -y ncurses ncurses-devel bison cmake  expect &> /dev/null
if test $? != 0
then 
    echo "环境安装有误,准备退出..."
    sleep 1
    exit 
fi
#ncurses 字符终端包 bison 函数库 cmake 编译工具

#创建非登录用户
egrep "^mysql" /etc/passwd &> /dev/null
if [ $? -ne 0 ]
then
    useradd -s /sbin/nologin mysql
fi

#解压缩mysql软件包
cd  $pkgpath
tar zxf mysql-boost-5.7.20.tar.gz -C /opt/

#配置参数设置
echo "正在执行配置参数设置..."
sleep 2
cd /opt/mysql-5.7.20/
cmake \
-DCMKAE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1 &> /dev/null
if test $? == 0
then 
    echo "配置参数正确!"
else
    echo "配置参数有误!"
    exit 1
fi
echo "正在编译..."
echo "编译所需时间较长,请耐心等待(20-45min)..."
sleep 3
make &> /dev/null
if test $? == 0
then 
    echo "编译成功!"
else
    echo "编译失败!"
    exit 1
fi
echo "正在安装..."
make install &> /dev/null 
if test $? == 0
then 
    echo "安装成功!"
else
    echo "安装失败!"
    exit 1
fi
cd /usr/local
chown -R mysql.mysql mysql/
cat >/etc/my.cnf <> /etc/profile
#echo 'export PATH' >> /etc/profile
#source /etc/profile
ln -s $mysqlpath/bin/* /usr/local/bin/ 
ln -s $mysqlpath/lib/* /usr/local/bin/
cd $mysqlpath 
bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data >& /dev/null 

cp usr/lib/systemd/system/mysqld.service /lib/systemd/system/

systemctl start mysqld.service 

passwd=$1
/usr/bin/expect <<-EOF
spawn mysqladmin -u root -p password 
expect {
    "Enter password:"
    { send "\r";exp_continue }
    "New password:"
    { send "$1\r";exp_continue }
    "Confirm new password:"
    { send "$1\r"; }
}
expect eof
EOF

echo "数据库登录密码设置完成,请稍后手动创建自己的数据库..."

4.php.sh

#!/bin/bash
#手工编译安装php
pkgpath=~/tar/LNMP-C7/
php_inifile=/usr/local/php/lib/php.ini

echo "正在安装所需软件环境"
yum install -y \
libjpeg \
libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel &> /dev/null
if test $? != 0
then 
    echo "环境安装有误,准备退出..."
    sleep 1
    exit 
fi

echo "正在解压缩软件包(PHP)"
cd $pkgpath
tar jxf php-7.1.10.tar.bz2 -C /opt/
echo "正在配置相关参数..."
cd /opt/php-7.1.10/
./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip &> /dev/null
if test $? == 0
then 
    echo "配置参数正确!"
else 
    echo "配置参数有误!"
    exit 1
fi
echo "正在编译,请耐心等待...(8-20min)"
make &> /dev/null
if test $? == 0
then 
    echo "编译成功!"
else 
    echo "编译失败!"
    exit 1
fi
echo "正在安装,马上就好..."
make install &> /dev/null 
if test $? == 0
then 
    echo "安装成功!"
else 
    echo "安装失败!"
    exit 1
fi
#进行相关优化和必要配置
echo "php有三个配置文件 php.ini:核心配置文件 php-fpm.conf:进程服务配置文件 www.conf:扩展配置文件"
echo "进行核心文件配置..."
cp php.ini-development $php_inifile
sed -i '/mysqli.default_socket =/ s/$/ \/usr\/local\/mysql\/mysql.sock/p' $php_inifile
sed -i '/;date.timezone =/ s/^;//' $php_inifile
sed -i '/date.timezone =/ s/$/ Asia\/Shanghai/p' $php_inifile
echo "核心配置文件配置完毕!"
echo "进行进程服务配置文件设置..."
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
sed -i '/;pid/ s/^;//' /usr/local/php/etc/php-fpm.conf 
echo "进程服务配置文件配置完毕!"

echo "进行扩展配置文件配置..."
cd /usr/local/php/etc/php-fpm.d/ 
cp www.conf.default www.conf
echo "配置完成!"

echo "启动中..."
/usr/local/php/sbin/php-fpm -c $php_inifile
echo "初始化完成,创建命令软链接..."
ln -s /usr/local/php/bin/* /usr/local/bin/
echo "更改Nginx主配置文件,以支持PHP功能"
cat > b.txt <index.php <
EOF
echo "php测试文件写入完毕!"

5.创建自己的数据库

mysql -uroot -p (交互输入密码脚本给的密码是123456)
create database mydb;
grant all on mydb. to 'mydbuser'@'%' identified by '123123';
grant all on mydb.
to 'mydbuser'@'localhost' identified by '123123';
flush privileges;
quit

6.Discuz论坛搭建配置脚本discu.sh

#!/bin/bash
echo "discuz论坛设置..."
cd ~/tar/LNMP-C7/
unzip Discuz_X3.4_SC_UTF8.zip -d /opt/  &> /dev/null 
cd /opt/dir_SC_UTF8/

cp -r upload/ /usr/local/nginx/html/mydb
cd /usr/local/nginx/html/mydb/
chown -R root:nginx ./config/
chown -R root:nginx ./data/
chown -R root:nginx ./uc_client/
chown -R root:nginx ./uc_server/
chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/

之后的步骤操作参照上篇文章:手工编译搭建LNMP架构

相关内容

热门资讯

蒋万安借“725上凯道”成蓝营... 中国国民党25日将于台北凯道举办“我是人,我反毒台”集会,向民进党当局抗议中联毒油案。对此,资深媒体...
波轮式全自动洗衣机脱水时波轮转 波轮式全自动洗衣机脱水时波轮转1、衣物放置不平导致;2、排水系统发生阻塞。3、顶部的安全开关损坏;4...
洗衣机不出水怎么查原因 当洗衣机不出水时,一定是出了问题。下面就是一些可能的原因及其解决方法:1. 电源问题洗衣机不能正常工...
半自动洗衣机放不出水是什么原因... 1、检查过滤网是否堵塞。若堵塞了需要将脏东西取出来,然后再用清水将过滤网清洗干净。2、检查一下是不是...
全自动洗衣机不出水是什么原因 1、进水口的滤网被水中的杂质堵住。2、控制板上的进水继电器坏了。3、电路故障,进水电磁阀有故障或者插...
抽油烟机只通电不转怎么回事 只通电不转的故障原因和解决方法:1、电容量减小或损坏。解决方法:抽油烟机电机不转,还有嗡嗡声,一般是...
谷歌被罚9亿欧元后,特朗普称欧... 当地时间7月23日,欧盟委员会指控美国谷歌公司违反欧盟《数字市场法》,对其处以8.9亿欧元罚款。这一...
14对14,中国反击欧盟,干净... 对于欧盟的指手画脚,中国第一时间反击了。14:14。干净利落,来而不往非礼也。国际博弈,从来如此:没...
风未到,人已行!凌晨不眠!一场... 7月24日晚,台风“红霞”持续逼近,市应急管理局五楼会议室灯火通明,市应急管理局党委书记、局长李见秋...
省自然资源厅部署12号台风“红... 受今年第12号台风“红霞”影响,我省中部和南部地区有一轮强降雨过程,部分地区有较高的地质灾害风险。自...