首页 > 其他分享 >28、项目实战:利用 LNMP 实现可道云私有云盘和会话保持

28、项目实战:利用 LNMP 实现可道云私有云盘和会话保持

时间:2023-05-17 21:07:53浏览次数:41  
标签:云盘 28 LNMP data nginx conf ubunt php root

可道云,原名芒果云,是基于Web技术的私有云在线文档管理解决方案.Kod,读音通code,意为“代码,编码”,中文名为“可道”

环境说明

部署规划:
10.0.0.200:Ubuntu20.04,Nginx,php-fpm,kodbox
10.0.0.8:CentOS8,MySQL8.0,redis5.0

28、项目实战:利用 LNMP 实现可道云私有云盘和会话保持_LNMP实现可道云私有云盘


10.0.0.200:安装相关包

[root@ubunt ~]# apt -y install php7.4-fpm php7.4-mysql php7.4-json php7.4-xml php7.4-mbstring php7.4-zip php7.4-gd php7.4-curl php-redis 
安装nginx:脚本安装,内存不小于3G
安装脚本如下:
#!/bin/bash
NGINX_FILE=nginx-1.22.0
#NGINX_FILE=nginx-1.20.2
#NGINX_FILE=nginx-1.18.0
NGINX_URL=http://nginx.org/download/
TAR=.tar.gz
SRC_DIR=/usr/local/src
NGINX_INSTALL_DIR=/apps/nginx
CPUS=`lscpu |awk '/^CPU\(s\)/{print $2}'`
. /etc/os-release


color () {
    RES_COL=60
    MOVE_TO_COL="echo -en \\033[${RES_COL}G"
    SETCOLOR_SUCCESS="echo -en \\033[1;32m"
    SETCOLOR_FAILURE="echo -en \\033[1;31m"
    SETCOLOR_WARNING="echo -en \\033[1;33m"
    SETCOLOR_NORMAL="echo -en \E[0m"
    echo -n "$1" && $MOVE_TO_COL
    echo -n "["
    if [ $2 = "success" -o $2 = "0" ] ;then
        ${SETCOLOR_SUCCESS}
        echo -n $"  OK  "    
    elif [ $2 = "failure" -o $2 = "1"  ] ;then 
        ${SETCOLOR_FAILURE}
        echo -n $"FAILED"
    else
        ${SETCOLOR_WARNING}
        echo -n $"WARNING"
    fi
    ${SETCOLOR_NORMAL}
    echo -n "]"
    echo 
}


check () {
    [ -e ${NGINX_INSTALL_DIR} ] && { color "nginx 已安装,请卸载后再安装" 1; exit; }
    cd  ${SRC_DIR}
    if [  -e ${NGINX_FILE}${TAR} ];then
        color "相关文件已准备好" 0
    else
        color '开始下载 nginx 源码包' 0
        wget ${NGINX_URL}${NGINX_FILE}${TAR} 
        [ $? -ne 0 ] && { color "下载 ${NGINX_FILE}${TAR}文件失败" 1; exit; } 
    fi
} 

install () {
    color "开始安装 nginx" 0
    if id nginx  &> /dev/null;then
        color "nginx 用户已存在" 1 
    else
        useradd -s /sbin/nologin -r  nginx
        color "创建 nginx 用户" 0 
    fi
    color "开始安装 nginx 依赖包" 0
    if [ $ID == "centos" ] ;then
        if [[ $VERSION_ID =~ ^7 ]];then
            yum -y  install  gcc  make pcre-devel openssl-devel zlib-devel perl-ExtUtils-Embed
        elif [[ $VERSION_ID =~ ^8 ]];then
            yum -y  install make gcc-c++ libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel perl-ExtUtils-Embed 
        else 
            color '不支持此系统!'  1
            exit
        fi
    elif [ $ID == "rocky"  ];then
        yum -y  install gcc make gcc-c++ libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel perl-ExtUtils-Embed 
    else
        apt update
        apt -y install gcc make  libpcre3 libpcre3-dev openssl libssl-dev zlib1g-dev
    fi
    cd $SRC_DIR
    tar xf ${NGINX_FILE}${TAR}
    NGINX_DIR=`echo ${NGINX_FILE}${TAR}| sed -nr 's/^(.*[0-9]).*/\1/p'`
    cd ${NGINX_DIR}
    ./configure --prefix=${NGINX_INSTALL_DIR} --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 
    make -j $CPUS && make install 
    [ $? -eq 0 ] && color "nginx 编译安装成功" 0 ||  { color "nginx 编译安装失败,退出!" 1 ;exit; }
    chown -R nginx.nginx ${NGINX_INSTALL_DIR}
    echo "PATH=${NGINX_INSTALL_DIR}/sbin:${PATH}" > /etc/profile.d/nginx.sh
    cat > /lib/systemd/system/nginx.service <<EOF
[Unit]
Descriptinotallow=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=${NGINX_INSTALL_DIR}/logs/nginx.pid
ExecStartPre=/bin/rm -f ${NGINX_INSTALL_DIR}/logs/nginx.pid
ExecStartPre=${NGINX_INSTALL_DIR}/sbin/nginx -t
ExecStart=${NGINX_INSTALL_DIR}/sbin/nginx
ExecReload=/bin/kill -s HUP \$MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
LimitNOFILE=100000

[Install]
WantedBy=multi-user.target
EOF
    systemctl daemon-reload
    systemctl enable --now nginx &> /dev/null 
    systemctl is-active nginx &> /dev/null ||  { color "nginx 启动失败,退出!" 1 ; exit; }
    color "nginx 安装完成" 0
}

check
install
[root@ubunt ~]#bush nginx_install.sh
[root@ubuntu2004 ~]#ln -s /apps/nginx/sbin/nginx /usr/sbin/
10.0.0.200:php环境准备
修改nginx配置文件用户与php配置文件用户为统一用户
[root@ubunt ~]# vim /apps/nginx/conf/nginx.conf
user  www-data;
nginx -s reload
ps aux 可查看nginx  worker进程用户被修改成www-data

php配置文件修改:
修改php配置文件监听端口
vim /etc/php/7.4/fpm/pool.d/www.conf 
#;listen = /run/php/php7.4-fpm.sock     #在这一行下面添加
listen = 127.0.0.1:9000                 #此为php在本机上,如果不在一个机器上,就得写php在的ip
修改php配置文件状态页
pm.status_path = /php-status
开启ping命令,探测php是否健康 
ping.path = /ping 
ping.response = pang(可改)
开启访问日志并配置路径
access.log = /var/log/$pool.access.log  (不指定路径,服务起不来)
开启慢查询
slowlog = log/$pool.log.slow

创建静态页面目录并写入:[root@ubunt ~]# mkdir /data/html/ -p   
vim /data/html/index.html
www.meng.orgc'd
创建动态页面目录并写入:[root@ubunt ~]# mkdir /data/php/
vim /data/php/test.php
<?php
phpinfo();
?>

重启php
[root@ubunt ~]# systemctl restart php7.4-fpm.service

在nginx配置文件下增加include /apps/nginx/conf/conf.d/*.conf; 
增加位置在:配置文件最下面  }内。
mkdir /apps/nginx/conf/conf.d/
vim /apps/nginx/conf/conf.d/php.conf  (必须以conf结尾)
server {
   listen 80;
   server_name www.meng.org;   
   root /data/php;         #如果程序包没有分开动静资源,需要动静资源放一个目录下,以免找不到静态资源
   index index.php;                           #指定默认页面
   location ~ \.php$|ping|php-status {
            root           /data/php;         #动态页面存放路径
            fastcgi_pass   127.0.0.1:9000;    #php放在本机上,指定本机
            fastcgi_index  index.php;         #默认页面
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
   }
}   
[root@ubunt conf.d]# nginx -s reload   重新加载
10.0.0.200:准备可道云程序
[root@ubunt ~]# wget https://static.kodcloud.com/update/download/kodbox.1.34.zip
[root@ubunt ~]# mv kodbox.1.34.zip /data/php/
[root@ubunt php]# unzip kodbox.1.34.zip
修改权限
[root@ubunt ~]# chown -R www-data. /data/php
10.0.0.8:MySQL创建可道云数据库、账户并授权
mysql> create database kodbox;
Query OK, 1 row affected (0.00 sec)

mysql> create user kodbox@'10.0.0.%' identified by '123456';
Query OK, 0 rows affected (0.01 sec)

mysql> grant all on kodbox.* to kodbox@'10.0.0.%';
Query OK, 0 rows affected (0.01 sec)
10.0.0.8:准备redis服务,安装并启动
[root@rocky8 ~]#yum -y install redis
[root@rocky8 ~]#vim /etc/redis.conf
bind 0.0.0.0
[root@rocky8 ~]#systemctl enable --now redis  端口号6379

DNS解析后去网页访问www.meng.org

利用 LNMP 实现 实现可道云私有云会话保持

28、项目实战:利用 LNMP 实现可道云私有云盘和会话保持_LNMP实现可道云私有云盘_02

后端服务器100、200机器安装nginx及php相关包
[root@ubunt ~]# apt -y install nginx
[root@ubuntu2004 ~]#ln -s /apps/nginx/sbin/nginx /usr/sbin/ (如果是编译安装,需执行此步)
[root@ubunt ~]# apt -y install php7.4-fpm php7.4-mysql php7.4-json php7.4-xml php7.4-mbstring php7.4-zip php7.4-gd php7.4-curl php-redis
后端服务器100、200php准备环境
修改nginx配置文件用户与php配置文件用户为统一用户并增加include
[root@ubunt ~]# vim /apps/nginx/conf/nginx.conf
user  www-data;
nginx -s reload
ps aux 可查看nginx  worker进程用户被修改成www-data
在nginx配置文件下增加include /apps/nginx/conf/conf.d/*.conf; 
增加位置在:配置文件最下面  }内。

mkdir /apps/nginx/conf/conf.d/
vim /apps/nginx/conf/conf.d/php.conf  (必须以conf结尾)
server {
   listen 80;
   server_name www.meng.org;   
   root /data/php;                           #静态页面存放路径
   index index.php;
   location ~ \.php$|ping|php-status {
            root           /data/php;         #动态页面存放路径
            fastcgi_pass   127.0.0.1:9000;    #php放在本机上,指定本机
            fastcgi_index  index.php;         #默认页面
            fastcgi_param  HTTPS on;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
   }
}   
[root@ubunt conf.d]# nginx -s reload   重新加载

php配置文件修改:
修改php配置文件监听端口
vim /etc/php/7.4/fpm/pool.d/www.conf 
#;listen = /run/php/php7.4-fpm.sock     #在这一行下面添加
listen = 127.0.0.1:9000                 #此为php在本机上,如果不在一个机器上,就得写php在的ip
修改php配置文件状态页
pm.status_path = /php-status  (取消注释)
开启ping命令,探测php是否健康 
ping.path = /ping             (取消注释)
ping.response = pang          (取消注释)
开启访问日志并配置路径
access.log = /var/log/$pool.access.log  (取消注释,并指定路径不指定路径,服务起不来)
开启慢查询
slowlog = log/$pool.log.slow  (取消注释)

创建静态页面目录并写入:[root@ubunt ~]# mkdir /data/html/ -p   
创建动态页面目录并写入:[root@ubunt ~]# mkdir /data/php/
后端服务器100.200:准备可道云程序
[root@ubunt ~]# wget https://static.kodcloud.com/update/download/kodbox.1.34.zip
[root@ubunt ~]# mv kodbox.1.34.zip /data/php/
[root@ubunt php]# unzip kodbox.1.34.zip
修改所有者
[root@ubunt ~]# chown -R www-data. /data/php
重启php
[root@ubunt ~]# systemctl restart php7.4-fpm.service
10.0.0.8:MySQL创建可道云数据库、账户并授权
mysql> create database kodbox;
Query OK, 1 row affected (0.00 sec)

mysql> create user kodbox@'10.0.0.%' identified by '123456';
Query OK, 0 rows affected (0.01 sec)

mysql> grant all on kodbox.* to kodbox@'10.0.0.%';
Query OK, 0 rows affected (0.01 sec)
10.0.0.8:准备redis服务,安装并启动
[root@rocky8 ~]#yum -y install redis
[root@rocky8 ~]#vim /etc/redis.conf
bind 0.0.0.0
[root@rocky8 ~]#systemctl enable --now redis  端口号6379

DNS解析200机器,访问www.meng.org,并设置相关信息。

设置好信息后,把200机器下/data/php目录全部内容传输给100机器,这样当100机器解析DNS去访问可道云数据就不会被覆盖

[root@ubunt ~]# rsync -a /data/php/ 10.0.0.100:/data/php
4把101机器设置反向代理
安装nginx
[root@ubunt ~]# apt -y install nginx
[root@ubuntu2004 ~]#ln -s /apps/nginx/sbin/nginx /usr/sbin/ (如果是编译安装,需执行此步)
修改反向代理nginx配置文件
在nginx配置文件下增加
[root@ubuntu2004 ~]#vim /apps/nginx/conf/nginx.conf
include /apps/nginx/conf/conf.d/*.conf; 
增加位置在:配置文件最下面  }内。
[root@ubuntu2004 ~]#nginx -s reload
mkdir /apps/nginx/conf/conf.d/
vim /apps/nginx/conf/conf.d/www.wamg.org.conf  (必须以conf结尾)
upstream webservers {
     server 10.0.0.100;
     server 10.0.0.200;
}
server {
     listen 80;
     server_name www.meng.org;
     root /data/nginx/html/pc;
     access_log /apps/nginx/logs/www.meng.org_access.log main;
     return 302 https://$server_name$request_uri;
}

server {
     listen 443 ssl http2;
      server_name www.meng.org;
      ssl_certificate  /apps/nginx/conf/conf.d/ssl/www.meng.org.pem;
      ssl_certificate_key /apps/nginx/conf/conf.d/ssl/www.meng.org.pem;
      ssl_session_timeout 10m;
      location / {
          proxy_pass http://webservers;
          proxy_set_header Host $http_host;
}
}
nginx -s reload
创建证书目录并存放在证书文件
mkdir /apps/nginx/conf/conf.d/ssl -p
ls /apps/nginx/conf/conf.d/ssl
[root@ubuntu2004 ssl]#ls
www.meng.org.pem  www.meng.org.pem (如果申请的证书与域名不匹配,访问时会提醒不安全)
安装共享服务器
[root@rocky8 ~]#yum -y install nfs-utils
[root@rocky8 ~]#systemctl status nfs-server.service
创建共享目录
[root@rocky8 ~]#mkdir /data/www -p            创建目录
[root@rocky8 ~]#uesradd -u 33 -g 33 www-data  创建用户
[root@rocky8 ~]#chown -R www-data. /data/www  指定用户
[root@rocky8 ~]#cat /etc/exports              设定共享目录存放规则
/data/www *(rw)
[root@rocky8 ~]#exportfs -r   生效
[root@rocky8 ~]#exportfs -v   查询
/data/www       <world>(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
挂载100web1、200web2
查看200和100机器的php数据,把数据多的拷贝到共享目录上
[root@ubunt data]# tree /data/php/data/files/
/data/php/data/files/
├── 202209
│   └── 24_af788b66
│       ├── 1d0957d7f2ae01a2.png
│       ├── dcd3119b99d51673646711258b624892.jpeg
│       ├── icloud.oexe
│       ├── index.html
│       └── 高德地图.oexe
└── index.html
2 directories, 6 files
[root@ubunt data]# rsync -av /data/php/data/files/ 10.0.0.18:/data/www/

200、100机器下载共享相关包
[root@ubunt data]# apt install nfs-common
[root@ubunt ~]# showmount -e 10.0.0.18  
Export list for 10.0.0.18:
/data/www *                              (可以挂载)

开始挂载:100web1
[root@ubunt ~]# vim /etc/fstab
nfs.meng.org:/data/www/ /data/php/data/files  nfs  _netdev 0 0(用域名可防止ip变化,需DNS解析)
DNS解析:
[root@ubunt ~]# cat /etc/hosts
10.0.0.18 nfs.meng.org
[root@ubunt ~]# mount -a

开始挂载:200web2
[root@ubunt ~]# vim /etc/fstab
nfs.meng.org:/data/www/ /data/php/data/files  nfs  _netdev 0 0(用域名可防止ip变化,需DNS解析)
[root@ubunt ~]# cat /etc/hosts
10.0.0.18 nfs.meng.org
[root@ubunt ~]# mount -a
挂在完成
打开可道云:上传一张图片,分别去200、100上去查看是否存在
[root@ubuntu2004 ~]#tree /data/php/data/files/202209/tree /data/php/data/files/202209/
两个机器都有这个图片,说明共享成功
8机器查看redis中保存的session信息
[root@rocky8 ~]#redis-cli
127.0.0.1:6379> key *
(error) ERR unknown command `key`, with args beginning with: `*`, 
127.0.0.1:6379> keys *
 1) "ef3a74a4b9201ef6fd97882d88e38d1b"
 2) "8b4ab164c5cab2f5225b973dc9498f96"
 3) "28c9e4738c3448a43c7ce041201e23e2"
 4) "ba9cb8a61c2290a6e7ac0f1b21dabef2"
 5) "483cde2b17f7a96281bc3a5c75ac390d"
redis数据已保存。如果删除这些缓存数据,用户需要重新登录

127.0.0.1:6379> flushall
OK
127.0.0.1:6379> keys *
1) "ba9cb8a61c2290a6e7ac0f1b21dabef2"
127.0.0.1:6379> 
重新登陆,缓存数据又有了


标签:云盘,28,LNMP,data,nginx,conf,ubunt,php,root
From: https://blog.51cto.com/mfc001/6293603

相关文章

  • 29、利用 LNMP 实现phpMyAdmin并利用redis会话保持,用页面管理数据库
    建设第二个网站,利用LNMP实现实现phpMyAdmin并利用redis会话保持,用页面管理数据库在100web1、200web2上创建网站数据存放目录[root@ubunt~]#mkdir/data/php2进入官网https://www.phpmyadmin.net/下载[root@ubuntphp2]#wgethttps://files.phpmyadmin.net/phpMyAdmin/5.......
  • 光伏逆变器总控板,TMS320F28335,2路CAN通讯,2路485通讯,1个EEROM,2路AD采样电路。
    光伏逆变器总控板,TMS320F28335,2路CAN通讯,2路485通讯,1个EEROM,2路AD采样电路。主要功能为采样光伏电池电压,MPPT最大功率跟踪,功率计算,系统开关机等。并且有对应的元器件明细表。提供程序代码。特产适合做此类项目的工程师参考,或者新手作为模板参考。备注:公司成熟产品,提供代码!ID:92566......
  • 量产20KW三相三电平光伏逆变器项目 主控平台:TMS320F28335+T
    量产20KW三相三电平光伏逆变器项目主控平台:TMS320F28335+TM320F28035逆变拓扑:双路光伏BOOST+三相三电平逆变功能:并网发电,双路高精度MPPT;描述:本方案适用于户用光伏系统,本方案主控采用主控TMS320F28335+TM320F28035ID:6168616129047088......
  • 【CF1012E】【LOJ2818】Cycle Sort(并查集)
    Description给定一个⻓为nn的数列,你可以多次进行如下操作:选定kk个不同的下标i1,i2…iki1,i2......
  • LNMP部署开源博客
    LNMP环境准备1.登录数据库创建用于存储数据库的wordpress库,存储博客数据mysql>createdatabasewordpress;QueryOK,1rowaffected(0.00sec)mysql>showdatabaseslike"wordpress";+----------------------+|Database(wordpress)|+----------------------+|wo......
  • SSM整合报错:errorCode 1045, state 28000 java.sql.SQLException: Access denied for
    SSM整合报错:errorCode1045,state28000java.sql.SQLException:Accessdeniedforuser简述SSM整合项目配置好环境后,当要对数据库进行操作,加载jdbc.properties数据库配置文件时,出现下面的报错createconnectionSQLException,url:jdbc:mysql://localhost:3306/furn_ssm,......
  • 主流原型设计工具 2152817孙施俊哲
    软件原型(softwareprototype)是软件的最初版本,以最少的费用、最短的时间开发出的、以反映最后软件的主要特征的系统。最早的软件原型需要通过编程一个小型系统来实现,而在软件工程发展愈发发达的现在,我们拥有了众多方便、快捷、更符合设计直觉的软件原型设计工具,减少了大量风险成......
  • DIY伺服驱动器方案,某成熟量产型号,基于TMS320F28 DIY伺服驱动器方案,某成熟量产型号,基于
    DIY伺服驱动器方案,某成熟量产型号,基于TMS320F28DIY伺服驱动器方案,某成熟量产型号,基于TMS320F28069设计开发。原理图和PCB源格式(AD打开)-控制板/驱动板/电源板/滤波板基于TMS320F28069的控制源代码产品资料,代码注释少,需要有一定基础,建议小白不要拿ID:27260669815636452......
  • SIEMENS/西门子TMS320F28335运动控制器 DSP28335驱动器 DSP28335运动控
    SIEMENS/西门子TMS320F28335运动控制器DSP28335驱动器DSP28335运动控制卡采用DSP28335作为主控支持有刷电机,无刷电机,伺服电机电机电机参数识别,运动控制支持速度环,位置环,编码器,模拟量接口支持CANOPEN,modbus总线包括原理图,源代码已移植量产使用,具有极高的参考价值ID:821896940360050......
  • 伺服驱动器方案,某成熟量产型号,基于TMS320F28069 设计开发。 ★原理图
    伺服驱动器方案,某成熟量产型号,基于TMS320F28069设计开发。★原理图和PCB源格式(AD打开)-控制板/驱动板/电源板/滤波板★基于TMS320F28069的控制源代码产品资料,代码注释少,需要有一定基础,建议小白不要购买。-控制板/驱动板/电源板/滤波板★基于TMS320F28069的控制源代码产品资料,代码......