当前位置:   article > 正文

一键搭建LNMP架构脚本_一键搭架lnmp集群

一键搭架lnmp集群

一键搭建LNMP架构脚本


说明
  • 在 CentOS 7 已测试成功
  • 相关软件源码包下载较慢,需要在目录中准备好离线包
# 所需源码包:
mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
nginx-1.18.0.tar.gz
php-7.4.7.tar.bz2
wordpress-5.4.2-zh_CN.tar.gz
  • 1
  • 2
  • 3
  • 4
  • 5

注意:浏览器访问之前确保Windows主机已添加DNS解析记录(路径:C:\Windows\System32\drivers\etc\hosts

脚本内容
#!/bin/bash
#
#********************************************
#Author:       jacklee
#QQ:           122
#Time:         2020-11-28_19:14:57
#FileName:     mysql.sh
#Copyright:    2020 All rights reserved
#Description:   
#*********************************************
. /etc/init.d/functions
#——————————————————————————————————————————————————————————————————————————————————————————
install-nginx() {
yum -y install gcc git pcre pcre-devel openssl-devel zlib-devel unzip
[ id nginx ] || useradd -r -s /sbin/nologin nginx

NGINX=/root/nginx-1.18.0.tar.gz
[ -e $NGINX ] || wget http://nginx.org/download/nginx-1.18.0.tar.gz

cd /usr/local/src/
tar xvf $NGINX

cd nginx-1.18.0/
# 注意:编译安装指定的用户与 php 的配置文件使用同一用户!!!
./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module \
|| { echo -e "\e[1;32m<./configure执行失败>\e[0m"; exit; }

make && make install && echo -e "\e[1;32m<nginx编译安装成功>\e[0m"
chown -R nginx.nginx /apps/nginx 
ln -s /apps/nginx/sbin/nginx /usr/sbin/
nginx && ss -ntl | grep -q 80 && echo -e "\e[1;32m<nginx启动成功>\e[0m"

# 配置fastCGI
sed -ri \
-e '37s/(server_name ).*/\1 www.jacklee.org;/' \
-e '44s#(root ).*#\1 /data/nginx/wordpress;#' \
-e '45s/(index ).*/\1 index.php index.html index.htm;/' \
-e '/proxy the PHP/i location ~ \\.php$ {\nroot /data/nginx/wordpress;\nfastcgi_pass  127.0.0.1:9000;\nfastcgi_index index.php;\nfastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\ninclude fastcgi_params;\n}\nlocation ~ ^/(ping|pm_status)$ {\ninclude fastcgi_params;\nfastcgi_pass 127.0.0.1:9000;\nfastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;\n}\n' \
/apps/nginx/conf/nginx.conf

nginx -s reload

cd
}

#————————————————————————————————————————————————————————————————————————————————
install-mysql (){
# 准备环境与变量
DIR=`pwd`
NAME="mysql-5.7.29-linux-glibc2.12-x86_64"
PACKAGE="${NAME}.tar.gz"
FULL_NAME=${DIR}/${PACKAGE}
echo -e "\e[1;32m正在准备安装环境,请等待。。。\e[0m"
yum install -y libaio perl-Data-Dumper libncurses* ncurses* &> /dev/null
echo -e "\e[1;32m环境准备OK\e[0m"

# 安装环境检查
if [ ! -f ${FULL_NAME} ] ; then
    echo  "package not found"
    exit 1
fi

if [ -h /usr/local/mysql ] ; then
    echo  "MySQL is already installed"
    exit 2
fi

echo -e "\e[1;32m正在安装MySQL数据库,请等待。。。\e[0m"

# mysql用户检查
if id mysql &> /dev/null ; then
    userdel -f -r mysql &> /dev/null
fi
useradd -r -s /sbin/nologin mysql

# 解压
tar xf $PACKAGE -C /usr/local
cd /usr/local/
ln -s $NAME/ mysql &> /dev/null
chown -R root.root /usr/local/mysql/

# 设置PATH路径
ln -sv /usr/local/mysql/bin/* /usr/bin/ &> /dev/null

# 编辑配置文件
cat > /etc/my.cnf << EOF
[mysqld]
datadir=/data/mysql
skip_name_resolve=1
socket=/data/mysql/mysql.sock    
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
EOF

# 初始化数据库
mysqld --initialize --user=mysql --datadir=/data/mysql
PASSWD=`awk '/temporary password/{print $NF}' /data/mysql/mysql.log`

# 服务启动脚本与开机自启
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start

# 修改初始密码
mysqladmin -uroot -p"$PASSWD" password centos &> /dev/null

# 安全加固 【注意此处调用了expect语法】
yum -y install expect &> /dev/null
expect &> /dev/null <<EOF
spawn mysql_secure_installation
expect {
        "Enter password" { send "centos\n";exp_continue }
        "Press y" { send "n\n";exp_continue }
        "Change the password" { send "n\n";exp_continue }
        "Remove anonymous users" { send "y\n";exp_continue }
        "Disallow root login" { send "y\n";exp_continue }
        "Remove test database" { send "y\n";exp_continue }
        "Reload privilege" { send "y\n" }
}
EOF

echo -e "\e[1;32mMySQL数据库安装完成!\e[0m"

# 创建wordpress数据库和用户并授权
mysql -pcentos -e "create database wordpress;"
mysql -pcentos -e "create user wordpress@'10.0.0.%' identified by '123456';"
mysql -pcentos -e "grant all on wordpress.* to wordpress@'10.0.0.%';"

cd
}

#——————————————————————————————————————————————————————————————————————————————————————————
install-php-fpm (){
yum -y install gcc openssl-devel libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma-devel
[ -e php-7.4.7.tar.bz2 ] || wget https://www.php.net/distributions/php-7.4.7.tar.bz2
tar xvf php-7.4.7.tar.bz2 -C /usr/local/src/
cd /usr/local/src/php-7.4.7/
./configure \
--prefix=/apps/php74 \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl --with-zlib \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--enable-mbstring --enable-xml --enable-sockets \
--enable-fpm --enable-maintainer-zts --disable-fileinfo
make -j 8 && make install && action 'php编译成功,开始配置' || { action 'php编译失败!!!' false; exit; }

cd php-7.4.7/
cp /usr/local/src/php-7.4.7/php.ini-production  /etc/php.ini

cd /apps/php74/etc
cp php-fpm.conf.default php-fpm.conf

cd php-fpm.d/
cp www.conf.default www.conf

sed -ri \
-e 's/nobody/nginx/' \
-e '/pm.status_path/c pm.status_path = /pm_status' \
-e 's/.(ping\.path.*)/\1/' \
-e 's/.(ping\.response.*)/\1/' \
-e 's/.(access\.log = log.*)/\1/' \
-e 's/.(slowlog = log.*)/\1/' \
/apps/php74/etc/php-fpm.d/www.conf

mkdir /apps/php74/log
/apps/php74/sbin/php-fpm -t && action 'php编译配置OK'

# opcache缓存加速
sed -ri \
-e 's/(opcache.enable=1)/\1/' \
-e '/opcache.enable=1/a zend_extension=opcache.so' \
/etc/php.ini

# 启动
cp /usr/local/src/php-7.4.7/sapi/fpm/php-fpm.service  /usr/lib/systemd/system/
systemctl daemon-reload
systemctl enable --now php-fpm && action 'php启动成功'

# 测试页
mkdir -p /data/nginx/wordpress
cat > /data/nginx/wordpress/test.php << EOF
<?php
phpinfo();
?>
EOF

cd
}
#——————————————————————————————————————————————————————————————————————————————————————————
# 部署 WordPress
wordpress (){
tar xvf wordpress-5.4.2-zh_CN.tar.gz
cp -r wordpress/* /data/nginx/wordpress
chown -R nginx.nginx /data/nginx/wordpress/
}
[ -e /apps/nginx/conf/nginx.conf ] && echo -e "\e[1;36mnginx已安装\e[0m"
[ -e nginx-1.18.0.tar.gz ] && install-nginx || { echo -e "\e[1;31m缺少nginx包\e[0m"; exit; }

[ -e /usr/local/mysql ] && echo -e "\e[1;36mmysql已安装\e[0m"
[ -e mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz ] && install-mysql || { echo -e "\e[1;31m缺少mysql包\e[0m"; exit; }

[ -e /etc/php.ini ] && echo -e "\e[1;36mpfp-fpm已安装\e[0m"
[ -e php-7.4.7.tar.bz2 ] && install-php-fpm || { echo -e "\e[1;31m缺少php包\e[0m"; exit; }

[ -e wordpress-5.4.2-zh_CN.tar.gz ] && wordpress || { echo -e "\e[1;31m缺少wordpress包\e[0m"; exit; }

# 相关网页测试
echo "`hostname -I` www.jacklee.org" >> /etc/hosts

echo -e "\e[1;32m请使用浏览器访问 http://www.jacklee.org/ping 测试php是否接通\e[0m"
echo -e "\e[1;32m请使用浏览器访问 http://www.jacklee.org/pm_status 测试php状态页\e[0m"
echo -e "\e[1;32m请使用浏览器访问 http://www.jacklee.org 进行WordPress安装与初始化\e[0m"
echo -e "\e[1;33m注意:若Chrome访问失败,请清除缓存再试!\e[0m"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/884640
推荐阅读
相关标签
  

闽ICP备14008679号