IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 老板!为啥他工资更高!因为他的LNMP脚本比你牛! -> 正文阅读

[PHP知识库]老板!为啥他工资更高!因为他的LNMP脚本比你牛!

在这里插入图片描述

目标一:

提示:为什么要用它?
LNMP是一套由Linux + Nginx + MySQL + PHP组成的动态网站系统解决方案,具有免费、高效、扩展性强且资源消耗低等优良特性。


目标二:

提示:LNMP是什么?
L:表示Linux系统,提高操作系统
N:表示Nginx服务,提供web网站服务
M:表示Mysql数据库,为平台架构提供数据存储
P:表示PHP、python、perl等等编程语言,是在服务器端执行的脚本语言


目标三:

提示:如何搭建LNMP

1、 手工搭建(此方法,适合新手,不常用,省略)
2、 脚本自动搭建(可以有好多种形式的脚本,给大家介绍一个相对复杂,但功能更完善的脚本)

分析:LNMP是这个架构的基础,保障能更好的运行,加入keepalived,实现高可用。比如:一台Nginx服务器故障,keepalived可以自动切换到另一台Nginx服务器,保障业务不中断;expect是实现免交互的一个服务,调用expect做免密登录,同时部署多台服务器,WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站;当然,好比造一辆高端的车,比造一台普通的车,难度高,我的另一个教程没这两个服务,部署相对简单,需要可看玩转Linux系统之shell脚本轻松搭建LNMP平台架构
脚本及注释如下图:

#!/bin/bash
echo "关闭防火墙,关闭SELinux,开启ens33"
systemctl stop firewalld && setenforce 0 && ifup ens33
echo " = = = = = = = = = = = = = = = = 免密交互 = = = = = = = = = = = = = = = = "
  cat > /root/ip.txt << E
192.168.2.2 root 123456
192.168.2.3 root 123456
E
  echo " = = = = = = = = = = = = = = = = expect正在安装 = = = = = = = = = = = = = = = = "
  rm -rf /var/run/yum.pid && yum -y install expect  &> /dev/null     //删除yum的进程id文件,并安装expect
  echo " = = = = = = = = = = = = = = = = expect已安装 = = = = = = = = = = = = = = = = "
  if [ ! -f /root/.ssh/id_rsa ];then   //如果id_rsa文件不存在,则生成文件
  ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa  
mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys  //重命名为authorized_keys
 echo "id_rsa已创建成功"
  else
mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
 echo "id_rsa已存在"
  fi
while read line      //依次读取ip.txt文件的值赋给变量line
 do
   user=`echo $line | cut -d " " -f 2`    
   ip=`echo $line | cut -d " " -f 1`
   passwd=`echo $line | cut -d " " -f 3`
expect  <<EOF
        set     timeout 10
        spawn   scp     -r /root/.ssh $ip:/root
        expect  {
        "yes/no" { send "yes\n";exp_continue }
        "password" { send "$passwd\n" }
        }
        expect "password" { send "$passwd\n" }
EOF
        done < ip.txt
echo " = = = = = = = = = = = = = = = = 所有节点正在安装nginx = = = = = = = = = = = = = = = = "
while read -r line
  do
  nip1=`echo $line | cut -d " " -f 1`
scp -rp /root/qrl/nginx-rpm root@${nip1}:/root
ssh $nip1 << hhh
rm -rf /var/run/yum.pid
cd nginx-rpm/
yum -y localinstall *.rpm
hhh
done < ip.txt
echo " = = = = = = = = = = = = = = = = 所有配置web节点 = = = = = = = = = = = = = = = = "
cat ip.txt | cut -d " " -f 1 |awk ' NR==1 { print $1 }' >> aa.txt //截取ip.txt文件,以空格分隔第一列,第一行,重定向到aa.txt文件
cat ip.txt | cut -d " " -f 1 |awk ' NR==2 { print $1 }' >> aa.txt
ccip=`cat ip.txt | cut -d " " -f 1 |awk ' NR==1 { print $1 }'` //定义变量ccip,并赋值为
hostip=`ifconfig ens33 | awk ' NR==2 { print $2 }'`  //定义变量ccip,并赋值为查看网卡信息,过滤出的第二行
while read -r line
  do
nip2=`echo $line | cut -d " " -f 1`
scp -rp /root/qrl/wordpress-4.9.4-zh_CN.zip root@$nip2:/ 
ssh $nip2 << nnn
rm -f /etc/nginx/conf.d/*
cat > /etc/nginx/conf.d/blog.conf << aaa
server {
        listen 80;
        server_name blog.benet.com;
        root /wordpress;
        index index.php index.html;

        location ~ \.php$ {
                root /wordpress;
                fastcgi_pass ${hostip}:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME ?document_root?fastcgi_script_name;
                include fastcgi_params;
        }
    }

aaa
sed -i 's/?/$/g' /etc/nginx/conf.d/blog.conf
cd /
unzip wordpress-4.9.4-zh_CN.zip
chmod -R 777 /wordpress
chown -R nginx:nginx /wordpress
cd
systemctl start nginx
if [ $? -eq 0 ];then
echo " = = = = = = = = = = = = = web节点nginx启动成功 = = = = = = = = = = = = = "
else
echo " = = = = = = = = = = = = = web节点nginx启动失败 = = = = = = = = = = = = = "
fi
nnn
done < aa.txt
echo " = = = = = = = = = = = = = = = = 正在配置lb节点 = = = = = = = = = = = = = = = = "
scp -rp /wordpress/ root@$ccip:/
cat ip.txt | cut -d " " -f 1 |awk ' NR==3 { print $1 }' >> bb.txt  //截取ip.txt文件,以空格分隔第一列,第一行,重定向到bb.txt文件
cat ip.txt | cut -d " " -f 1 |awk ' NR==4 { print $1 }' >> bb.txt
ngip1=`cat aa.txt | cut -d " " -f 1 |awk ' NR==1 { print $1 }'`   //截取aa.txt文件,以空格分隔第一列,第一行
ngip2=`cat aa.txt | cut -d " " -f 1 |awk ' NR==2 { print $1 }'`
read -p "请输入你当前属于几网段" wd
while read  line
  do
nip3=`echo $line | cut -d " " -f 1`
ssh $nip3 << ggg
rm -f rm -f /etc/nginx/conf.d/*
cat > /etc/nginx/conf.d/lb${nip3}.conf << aaa  //自动修改配置文件
upstream web_cluster {
        server ${ngip1}:80;
        server ${ngip2}:80;
}

server {
        listen 80;
        server_name blog.benet.com;

        location / {
                proxy_pass http://web_cluster;
                include nginx_params;
        }

}
aaa
cat > /etc/nginx/nginx_params << yyy
proxy_set_header Host ?http_host;
proxy_set_header X-Real-IP ?remote_addr;
proxy_set_header X-Forwarded-For ?proxy_add_x_forwarded_for;

proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;

proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
yyy
sed -i 's/?/$/' /etc/nginx/nginx_params
systemctl start nginx 
rm -rf /etc/keepalived/keepalived.conf
rm -rf /var/run/yum.pid && yum -y install keepalived
cat > /etc/keepalived/keepalived.conf << kkk
global_defs {
   router_id lb$nip3
}
vrrp_script check_nginx_proxy {
        script “/sh/check_nginx_proxy.sh”
        interval 2
        weight 5
        }
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.${wd}.254
    }
}
  track_script {
        check_nginx_proxy
    }
}
kkk
systemctl start nginx   //启动nginx
if [ $? -eq 0 ];then
echo " = = = = = = = = = = = = = lb节点nginx启动成功 = = = = = = = = = = = = = "
else
echo " = = = = = = = = = = = = = lb节点nginx启动失败 = = = = = = = = = = = = = "
fi
mkdir /sh
cat > /sh/check_nginx_proxy.sh << sss    //编辑检查nginx脚本
#!/bin/bash
killall  -0  nginx
if  [ $? -ne 0 ];then
  systemctl stop keepalived
fi
sss
chmod +x /sh/check_nginx_proxy.sh
systemctl start keepalived
if [ $? -eq 0 ];then
echo " = = = = = = = = = = = = = keepalived启动成功 = = = = = = = = = = = = = "
else
echo " = = = = = = = = = = = = = keepalived启动失败 = = = = = = = = = = = = = "
fi
ggg
done < bb.txt
gpzip=`cat bb.txt |cut -d " " -f 1 | awk ' NR==2 { print $1 }'`
ssh $gpzip << ppp
sed -i 's/100/99/' /etc/keepalived/keepalived.conf
sed -i 's/MASTER/BACKUP/' /etc/keepalived/keepalived.conf  //把MASTER替换成BACKUP
systemctl restart keepalived
ppp
echo " = = = = = = = = = = = = = = = = 安装配置mysql,php = = = = = = = = = = = = = = = = "
cd mysql5.6-rpm/
yum -y localinstall *.rpm //安装以.rpm结尾的程序
cd /root/qrl/php-rpm/
yum -y localinstall *.rpm
systemctl start mysql
if [ $? -eq 0 ];then
echo " = = = = = = = = = = = = = mysql启动成功 = = = = = = = = = = = = = "
else
echo " = = = = = = = = = = = = = mysql启动失败 = = = = = = = = = = = = = "
fi
mysql -e "create database blog;"  //执行mysql命令,创建数据库blog
mysql -e "grant all on blog.* to lisi@'%' identified by '123456';"  //授权lisi用户以123456登录管理blog数据库,具有所有权限
echo "192.168.${wd}.254 blog.benet.com" >> /etc/hosts //将主机ip与域名重定向到hosts文件
sed -i "s/listen = 127.0.0.1:9000/listen = "$hostip":9000/" /etc/php-fpm.d/www.conf  //替换listen行内容
sed -i "s@listen.allowed_clients = 127.0.0.1@listen.allowed_clients = "$ngip1","$ngip2"@" /etc/php-fpm.d/www.conf
systemctl start php-fpm   //启动php-fpm守护进程
if [ $? -eq 0 ];then
echo " = = = = = = = = = = = = = php启动成功 = = = = = = = = = = = = = "
else
echo " = = = = = = = = = = = = = php启动失败 = = = = = = = = = = = = = "
fi

目标四:

提示:执行脚本前,必须先部署环境

部署环境
1、拷贝所需文件到master服务器,并为其设置权限
在这里插入图片描述
2、保障网络连通,(配置好yum仓库,略)
在这里插入图片描述
3、 执行脚本

#!/bin/bash
  echo " = = = = = = = = = = = = = = = = 免密交互 = = = = = = = = = = = = = = = = "
  cat > /root/ip.txt << E
192.168.2.2 root 123456
192.168.2.3 root 123456
E
  echo " = = = = = = = = = = = = = = = = expect正在安装 = = = = = = = = = = = = = = = = "
  yum -y install expect  &> /dev/null   
  echo " = = = = = = = = = = = = = = = = expect已安装 = = = = = = = = = = = = = = = = "
  if [ ! -f /root/.ssh/id_rsa ];then
  ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa  
mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
 echo "id_rsa已创建成功"
  else
mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
 echo "id_rsa已存在"
  fi
while read line
 do
   user=`echo $line | cut -d " " -f 2`    
   ip=`echo $line | cut -d " " -f 1`
   passwd=`echo $line | cut -d " " -f 3`
expect  <<EOF
        set     timeout 10
        spawn   scp     -r /root/.ssh $ip:/root
        expect  {
        "yes/no" { send "yes\n";exp_continue }
        "password" { send "$passwd\n" }
        }
        expect "password" { send "$passwd\n" }
EOF
        done < ip.txt
echo " = = = = = = = = = = = = = = = = 所有节点正在安装nginx = = = = = = = = = = = = = = = = "
while read -r line
  do
  nip1=`echo $line | cut -d " " -f 1`
scp -rp /root/qrl/nginx-rpm root@${nip1}:/root
ssh $nip1 << hhh
rm -rf /var/run/yum.pid
cd nginx-rpm/
yum -y localinstall *.rpm
hhh
done < ip.txt
echo " = = = = = = = = = = = = = = = = 所有配置web节点 = = = = = = = = = = = = = = = = "
cat ip.txt | cut -d " " -f 1 |awk ' NR==1 { print $1 }' >> aa.txt
cat ip.txt | cut -d " " -f 1 |awk ' NR==2 { print $1 }' >> aa.txt
ccip=`echo ip.txt | cut -d " " -f 1 |awk ' NR==1 { print $1 }'`
hostip=`ifconfig ens33 | awk ' NR==2 { print $2 }'`
while read -r line
  do
nip2=`echo $line | cut -d " " -f 1`
scp -rp /root/qrl/wordpress-4.9.4-zh_CN.zip root@$nip2:/
ssh $nip2 << nnn
rm -f /etc/nginx/conf.d/*
cat > /etc/nginx/conf.d/blog.conf << aaa
server {
        listen 80;
        server_name blog.benet.com;
        root /wordpress;
        index index.php index.html;

        location ~ \.php$ {
                root /wordpress;
                fastcgi_pass ${hostip}:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME ?document_root?fastcgi_script_name;
                include fastcgi_params;
        }
    }

aaa
sed -i 's/?/$/g' /etc/nginx/conf.d/blog.conf
cd /
unzip wordpress-4.9.4-zh_CN.zip
chmod -R 777 /wordpress
cd
systemctl start nginx
if [ $? -eq 0 ];then
echo " = = = = = = = = = = = = = web节点nginx启动成功 = = = = = = = = = = = = = "
else
echo " = = = = = = = = = = = = = web节点nginx启动失败 = = = = = = = = = = = = = "
fi
nnn
done < aa.txt
echo " = = = = = = = = = = = = = = = = 正在配置lb节点 = = = = = = = = = = = = = = = = "
scp -rp root@$ccip:/wordpress /
cat ip.txt | cut -d " " -f 1 |awk ' NR==3 { print $1 }' >> bb.txt
cat ip.txt | cut -d " " -f 1 |awk ' NR==4 { print $1 }' >> bb.txt
ngip1=`cat aa.txt | cut -d " " -f 1 |awk ' NR==1 { print $1 }'`
ngip2=`cat aa.txt | cut -d " " -f 1 |awk ' NR==2 { print $1 }'`
read -p "请输入你当前属于几网段" wd
while read  line
  do
nip3=`echo $line | cut -d " " -f 1`
ssh $nip3 << ggg
rm -f rm -f /etc/nginx/conf.d/*
cat > /etc/nginx/conf.d/lb${nip3}.conf << aaa
upstream web_cluster {
        server ${ngip1}:80;
        server ${ngip2}:80;
}

server {
        listen 80;
        server_name blog.benet.com;

        location / {
                proxy_pass http://web_cluster;
                include nginx_params;
        }

}
aaa
cat > /etc/nginx/nginx_params << yyy
proxy_set_header Host ?http_host;
proxy_set_header X-Real-IP ?remote_addr;
proxy_set_header X-Forwarded-For ?proxy_add_x_forwarded_for;

proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;

proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
yyy
sed -i 's/?/$/' /etc/nginx/nginx_params
systemctl start nginx 
rm -rf /etc/keepalived/keepalived.conf
rm -rf /var/run/yum.pid && yum -y install keepalived
cat > /etc/keepalived/keepalived.conf << kkk
global_defs {
   router_id lb$nip3
}
vrrp_script check_nginx_proxy {
        script “/sh/check_nginx_proxy.sh”
        interval 2
        weight 5
        }
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.${wd}.254
    }
}
  track_script {
        check_nginx_proxy
    }
}
kkk
systemctl start nginx
if [ $? -eq 0 ];then
echo " = = = = = = = = = = = = = lb节点nginx启动成功 = = = = = = = = = = = = = "
else
echo " = = = = = = = = = = = = = lb节点nginx启动失败 = = = = = = = = = = = = = "
fi
mkdir /sh
cat > /sh/check_nginx_proxy.sh << sss
#!/bin/bash
killall  -0  nginx
if  [ $? -ne 0 ];then
  systemctl stop keepalived
fi
sss
chmod +x /sh/check_nginx_proxy.sh
systemctl start keepalived
if [ $? -eq 0 ];then
echo " = = = = = = = = = = = = = keepalived启动成功 = = = = = = = = = = = = = "
else
echo " = = = = = = = = = = = = = keepalived启动失败 = = = = = = = = = = = = = "
fi
ggg
done < bb.txt
gpzip=`cat bb.txt |cut -d " " -f 1 | awk ' NR==2 { print $1 }'`
ssh $gpzip << ppp
sed -i 's/100/99/' /etc/keepalived/keepalived.conf
sed -i 's/MASTER/BACKUP/' /etc/keepalived/keepalived.conf
systemctl restart keepalived
ppp
echo " = = = = = = = = = = = = = = = = 安装配置mysql,php = = = = = = = = = = = = = = = = "
cd mysql5.6-rpm/
yum -y localinstall *.rpm
cd /root/qrl/php-rpm/
yum -y localinstall *.rpm
systemctl start mysql
if [ $? -eq 0 ];then
echo " = = = = = = = = = = = = = mysql启动成功 = = = = = = = = = = = = = "
else
echo " = = = = = = = = = = = = = mysql启动失败 = = = = = = = = = = = = = "
fi
mysql -e "create database blog;"
mysql -e "grant all on blog.* to lisi@'%' identified by '123456';"
echo "192.168.${wd}.254 blog.benet.com" >> /etc/hosts
sed -i "s/listen = 127.0.0.1:9000/listen = "$hostip":9000/" /etc/php-fpm.d/www.conf
sed -i "s@listen.allowed_clients = 127.0.0.1@listen.allowed_clients = "$ngip1","$ngip2"@" /etc/php-fpm.d/www.conf
systemctl start php-fpm
if [ $? -eq 0 ];then
echo " = = = = = = = = = = = = = php启动成功 = = = = = = = = = = = = = "
else
echo " = = = = = = = = = = = = = php启动失败 = = = = = = = = = = = = = "
fi

4、常见报错处理:
免密交互,报错:连接被拒绝
在这里插入图片描述
解决方案:
重启目标服务器sshd服务,等几秒钟测试
在这里插入图片描述
出现以下提示,证明已经解决此问题
在这里插入图片描述

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 14:52:17  更:2021-08-20 14:52:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/12 15:18:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码