2025年4月18日 星期五 乙巳(蛇)年 正月十九 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 服务器 > 网络服务

通过Memcached 服务实现 Session 共享

时间:02-20来源:作者:点击数:18
主机名 IP地址
proxy 192.168.99.5
web1 192.168.99.100
web2 192.168.99.200

1 配置 proxy ,关闭防火墙和 selinux

1.1 设置防火墙永久关闭

  • [root@proxy ~]$ systemctl disable firewalld --now
  • Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
  • Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
  • [root@proxy ~]$ systemctl status firewalld
  • ● firewalld.service - firewalld - dynamic firewall daemon
  • Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
  • Active: inactive (dead)
  • Docs: man:firewalld(1)

1.2 设置 selinux 为宽容模式,并修改配置文件为禁用

  • [root@proxy ~]$ setenforce 0
  • [root@proxy ~]$ getenforce
  • Permissive
  • [root@proxy ~]$ sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

2 配置本地 yum 源

2.1 挂载光盘到 /dvd 目录

  • [root@proxy ~]$ mkdir /dvd
  • [root@proxy ~]$ mount /dev/cdrom /dvd/
  • mount: /dev/sr0 写保护,将以只读方式挂载
  • [root@proxy ~]$ ls /dvd/
  • AppStream BaseOS EFI images isolinux LICENSE media.repo TRANS.TBL

2.2 将光盘设置为开机自动挂载

  • [root@proxy ~]$ vim /etc/fstab
  • /dev/cdrom /dvd iso9660 defaults 0 0
  • [root@proxy ~]$ mount -a
  • [root@proxy ~]$ df -h /dvd/
  • 文件系统 容量 已用 可用 已用% 挂载点
  • /dev/sr0 4.4G 4.4G 0 100% /dvd

2.3 编写本地 yum 源文件

  • [root@proxy ~]$ ls /etc/yum.repos.d/
  • CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
  • CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo CentOS-x86_64-kernel.repo
  • [root@proxy ~]$ rm -rf /etc/yum.repos.d/*
  • [root@proxy ~]$ vim /etc/yum.repos.d/dvd.repo
  • [App]
  • name=AppStream
  • baseurl=file:///dvd/AppStream
  • enabled=1
  • gpgcheck=0
  • [Base]
  • name=BaseOS
  • baseurl=file:///dvd/BaseOS
  • enabled=1
  • gpgcheck=0

2.4 验证 yum 是否可用

  • [root@web1 ~]$ yum makecache
  • AppStream 64 MB/s | 7.8 MB 00:00
  • BaseOS 49 MB/s | 2.6 MB 00:00
  • 上次元数据过期检查:0:00:02 前,执行于 20240325日 星期一 105743秒。
  • 元数据缓存已建立。

3 安装 Memcached 服务

3.1 安装 gcc 编译器

  • [root@proxy ~]$ yum -y install gcc
  • 已加载插件:fastestmirror, langpacks
  • Loading mirror speeds from cached hostfile
  • 软件包 gcc-4.8.5-44.el7.x86_64 已安装并且是最新版本
  • 无须任何处理
  • [root@proxy ~]$ rpm -qa gcc
  • gcc-4.8.5-44.el7.x86_64

3.2 安装 Memcached 服务

  • [root@proxy ~]$ yum -y install memcached
  • [root@proxy ~]$ rpm -qa memcached
  • memcached-1.4.15-10.el7_3.1.x86_64

3.3 查看 Memcached 服务的服务单元文件

  • [root@proxy ~]$ cat /usr/lib/systemd/system/memcached.service
  • [Unit]
  • Description=Memcached #描述了该服务单元的简要描述,即 Memcached
  • Before=httpd.service #指定在启动 httpd.service 之前启动 Memcached 服务
  • After=network.target #指定在网络服务加载完成后再启动 Memcached 服务
  • [Service]
  • Type=simple #指定服务的类型为简单类型,即服务不会进入后台,直到服务运行完成
  • EnvironmentFile=-/etc/sysconfig/memcached #指定从 /etc/sysconfig/memcached 文件中读取环境变量
  • ExecStart=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS #指定启动 Memcached 服务时要执行的命令,其中 $USER、$PORT、$CACHESIZE、$MAXCONN 和 $OPTIONS 是从 /etc/sysconfig/memcached 文件中读取的环境变量
  • [Install]
  • WantedBy=multi-user.target #指定将该服务添加到 multi-user.target,表示在多用户模式下启用该服务

3.4 查看 Memcached 服务的配置文件

  • [root@proxy ~]$ cat /etc/sysconfig/memcached
  • PORT="11211" #指定 Memcached 服务监听的端口为 11211
  • USER="memcached" #指定 Memcached 服务以 memcached 用户的身份运行
  • MAXCONN="1024" #设置 Memcached 服务的最大连接数为 1024
  • CACHESIZE="64" #将 Memcached 分配的内存缓存大小设置为 64MB
  • OPTIONS="" #未提供其他特定选项的额外参数

3.5 启动 Memcached 服务

  • [root@proxy ~]$ systemctl enable memcached.service --now
  • Created symlink from /etc/systemd/system/multi-user.target.wants/memcached.service to /usr/lib/systemd/system/memcached.service.
  • [root@proxy ~]$ systemctl status memcached.service
  • ● memcached.service - Memcached
  • Loaded: loaded (/usr/lib/systemd/system/memcached.service; enabled; vendor preset: disabled)
  • Active: active (running) since 五 2024-03-22 15:53:04 CST; 8s ago

3.6 查看 Memcached 服务使用的端口信息

  • [root@proxy ~]$ ss -anput | grep memcached
  • udp UNCONN 0 0 *:11211 *:* users:(("memcached",pid=61363,fd=28))
  • udp UNCONN 0 0 [::]:11211 [::]:* users:(("memcached",pid=61363,fd=29))
  • tcp LISTEN 0 128 *:11211 *:* users:(("memcached",pid=61363,fd=26))
  • tcp LISTEN 0 128 [::]:11211 [::]:* users:(("memcached",pid=61363,fd=27))

3.7 下载 telnet 远程登录服务

  • [root@proxy ~]$ yum -y install telnet
  • [root@proxy ~]$ rpm -qa telnet
  • telnet-0.17-65.el7_8.x86_64

3.8 使用 telnet 远程登录连接 Memcached 服务的端口进行增删改查等功能测试

  • [root@proxy ~]$ telnet 192.168.99.5 11211
  • Trying 192.168.99.5...
  • Connected to 192.168.99.5.
  • Escape character is '^]'.
  • #3.8.1 设置数据(增加/更新)
  • #set key flags exptime bytes
  • #value
  • #key: 要设置的键名。
  • #flags: 自定义标记,可用于存储额外信息。
  • #exptime: 数据的过期时间,以秒为单位。
  • #bytes: 数据的字节数。
  • #value: 要存储的值。
  • set name 0 60 3
  • zdr
  • STORED
  • #3.8.2 获取数据(查询)
  • #get key
  • #key: 要获取值的键名。
  • get name
  • VALUE name 0 3
  • zdr
  • END
  • #3.8.3 替换数据
  • #replace key flags exptime bytes
  • #value
  • #与 set 命令类似,但只有在键存在时才会替换
  • replace name 0 60 5
  • zdrnb
  • STORED
  • get name
  • VALUE name 0 5
  • zdrnb
  • END
  • #3.8.4 删除数据
  • #delete key
  • #key: 要删除的键名
  • delete name
  • DELETED
  • get name
  • END
  • #3.8.5 自增
  • #incr key value
  • #incr: 将键对应的值递增
  • set num 0 500 1
  • 1
  • STORED
  • get num
  • VALUE num 0 1
  • 1
  • END
  • incr num 1
  • 2
  • get num
  • VALUE num 0 1
  • 2
  • END
  • #3.8.6 自减
  • #decr key value
  • #decr: 将键对应的值递减。
  • decr num 2
  • 0
  • get num
  • VALUE num 0 1
  • 0
  • END
  • #3.8.7 删除所有数据
  • #flush_all
  • #OK
  • flush_all
  • OK
  • get num
  • END
  • get name
  • END

4 安装 Nginx

4.1 下载安装 Nginx 会用到的依赖

  • [root@proxy ~]$ yum -y install make pcre-devel openssl-devel
  • [root@proxy ~]$ rpm -qa make pcre-devel openssl-devel
  • make-3.82-24.el7.x86_64
  • pcre-devel-8.32-17.el7.x86_64
  • openssl-devel-1.0.2k-19.el7.x86_64

4.2 解压准备好的压缩包,并解压其中的 Nginx 压缩包

压缩包自行提取

链接:https://pan.baidu.com/s/16RQj0ueO7woF5ZExwIZhlg?pwd=iosx

提取码:iosx

  • [root@proxy ~]$ ls
  • lnmp_soft.tar.gz
  • [root@proxy ~]$ tar -zxf lnmp_soft.tar.gz
  • [root@proxy ~]$ cd lnmp_soft/
  • [root@proxy lnmp_soft]$ tar -zxf nginx-1.17.6.tar.gz

4.3 进入 Nginx 目录,源码编译安装 Nginx

  • [root@proxy lnmp_soft]$ cd nginx-1.23.2/
  • [root@proxy nginx-1.23.2]$ ./configure && make && make install

4.4 启动 Nginx 查看 Nginx 端口信息

  • [root@proxy nginx-1.23.2]$ /usr/local/nginx/sbin/nginx
  • [root@proxy nginx-1.23.2]$ netstat -nplt | grep nginx
  • tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 59474/nginx: master

4.5 修改 Nginx 配置文件,使 Nginx 能处理 php 脚本

  • [root@proxy nginx-1.23.2]$ vim /usr/local/nginx/conf/nginx.conf
  • 45 index index.php index.html index.htm; #指定了在该 location 下的默认索引文件顺序,即当访问一个目录时,Nginx 会按照 index.php -> index.html -> index.htm 的顺序寻找默认文件进行展示
  • 65 location ~ \.php$ { #使用正则表达式匹配以 .php 结尾的 URL
  • 66 root html; #指定 PHP 文件所在的根目录为 html
  • 67 fastcgi_pass 127.0.0.1:9000; #定义请求转发给 127.0.0.1:9000 服务器处理
  • 68 fastcgi_index index.php; #指定 FastCGI 服务器应该执行的 PHP 脚本的名称,默认是 index.php
  • 69 # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  • 70 include fastcgi.conf; #使用 include 指令引入 fastcgi.conf 文件,这个文件包含了关于 FastCGI 的一些常用配置
  • 71 }

5 配置 web1 ,关闭防火墙和 selinux

5.1 设置防火墙永久关闭

  • [root@web1 ~]$ systemctl disable firewalld --now
  • Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
  • Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
  • [root@proxy ~]$ systemctl status firewalld
  • ● firewalld.service - firewalld - dynamic firewall daemon
  • Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
  • Active: inactive (dead)
  • Docs: man:firewalld(1)

5.2 设置 selinux 为宽容模式,并修改配置文件为禁用

  • [root@web1 ~]$ setenforce 0
  • [root@web1 ~]$ getenforce
  • Permissive
  • [root@web1 ~]$ sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

6 配置本地 yum 源

6.1 挂载光盘到 /dvd 目录

  • [root@web1 ~]$ mkdir /dvd
  • [root@web1 ~]$ mount /dev/cdrom /dvd/
  • mount: /dvd: WARNING: device write-protected, mounted read-only.

6.2 将光盘设置为开机自动挂载

  • [root@web1 ~]$ vim /etc/fstab
  • /dev/cdrom /dvd iso9660 defaults 0 0
  • [root@web1 ~]$ mount -a
  • [root@web1 ~]$ df -h /dvd/
  • 文件系统 容量 已用 可用 已用% 挂载点
  • /dev/sr0 11G 11G 0 100% /dvd

6.3 将 proxy 主机的 yum 源文件拷贝到本地

  • [root@web1 ~]$ rm -rf /etc/yum.repos.d/*
  • [root@web1 ~]$ scp root@192.168.99.5:/etc/yum.repos.d/dvd.repo /etc/yum.repos.d/dvd.repo

6.4 验证 yum 是否可用

  • [root@web1 ~]$ yum makecache
  • AppStream 64 MB/s | 7.8 MB 00:00
  • BaseOS 49 MB/s | 2.6 MB 00:00
  • 上次元数据过期检查:0:00:02 前,执行于 20240325日 星期一 155743秒。
  • 元数据缓存已建立。

7 部署 LNMP

7.1 安装 Nginx

7.1.1 安装后续操作所需要的依赖环境

  • [root@web1 ~]$ yum -y install gcc make pcre-devel openssl-devel
  • [root@web1 ~]$ rpm -qa gcc make pcre-devel openssl-devel
  • openssl-devel-1.1.1k-6.el8_5.x86_64
  • gcc-8.5.0-10.el8.x86_64
  • make-4.2.1-11.el8.x86_64
  • pcre-devel-8.42-6.el8.x86_64

7.1.2 将 proxy 主机上解压好的文件夹拷贝到本机,源码编译安装 Nginx

  • [root@web1 ~]$ scp -r root@192.168.99.5:/root/lnmp_soft lnmp_soft
  • [root@web1 ~]$ cd lnmp_soft/nginx-1.23.2/
  • [root@web1 nginx-1.23.2]$ ./configure && make && make install

7.1.3 启动 Nginx 查看 Nginx 端口信息

  • [root@web1 nginx-1.23.2]$ /usr/local/nginx/sbin/nginx
  • [root@web1 nginx-1.23.2]$ netstat -anplut | grep nginx
  • tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 45057/nginx: master

7.1.4 将 proxy 主机的 Nginx 配置文件拷贝至本机,替换原本的 Nginx 配置文件

  • [root@web1 nginx-1.23.2]$ scp root@192.168.99.5:/usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf

7.1.5 重启 Nginx 重新加载配置文件

  • [root@web1 nginx-1.23.2]$ /usr/local/nginx/sbin/nginx -s reload

7.2 安装 Mariadb

7.2.1 安装 Mariadb 及相关所需服务环境

  • [root@web1 nginx-1.23.2]$ yum -y install mariadb mariadb-server mariadb-devel
  • [root@web1 nginx-1.23.2]$ rpm -qa install mariadb mariadb-server mariadb-devel
  • mariadb-server-10.3.32-2.module+el8.5.0+777+18007c86.x86_64
  • mariadb-10.3.32-2.module+el8.5.0+777+18007c86.x86_64
  • mariadb-devel-10.3.32-2.module+el8.5.0+777+18007c86.x86_64

7.2.2 设置 Mariadb 开机自启动,并启动服务

  • [root@web1 nginx-1.23.2]$ systemctl enable mariadb --now
  • Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
  • Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
  • Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.
  • [root@web1 nginx-1.23.2]$ systemctl status mariadb.service
  • ● mariadb.service - MariaDB 10.3 database server
  • Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  • Active: active (running) since Mon 2024-03-25 16:15:56 CST; 23s ago

7.3 安装 PHP

7.3.1 安装 PHP 及相关所需服务

  • [root@web1 nginx-1.23.2]$ yum -y install php php-mysqlnd php-fpm
  • [root@web1 nginx-1.23.2]$ rpm -qa install php php-mysqlnd php-fpm
  • php-fpm-7.2.24-1.module+el8.4.0+413+c9202dda.x86_64
  • php-mysqlnd-7.2.24-1.module+el8.4.0+413+c9202dda.x86_64
  • php-7.2.24-1.module+el8.4.0+413+c9202dda.x86_64

7.3.2 修改 php-fpm 的配置文件,使 php-fom 监听本地9000端口,可以接收来自 Web 服务器的请求,并处理 php 脚本的执行

  • [root@web1 nginx-1.23.2]$ vim /etc/php-fpm.d/www.conf
  • 38 listen = 127.0.0.1:9000

7.3.3 设置 php-fpm 开机自启动,并启动服务

  • [root@web1 nginx-1.23.2]$ systemctl enable php-fpm.service --now
  • Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.
  • [root@web1 nginx-1.23.2]$ systemctl status php-fpm.service
  • ● php-fpm.service - The PHP FastCGI Process Manager
  • Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
  • Active: active (running) since Mon 2024-03-25 16:18:42 CST; 20s ago

7.4 编写 Nginx 测试页面,检验 Nginnx 是否能处理 php 脚本

  • [root@web1 nginx-1.23.2]$ vim /usr/local/nginx/html/test.php
  • <html>
  • <body>
  • This is web1
  • </body>
  • </html>
在这里插入图片描述

8 部署 web2,关闭防火墙和 selinux

8.1 设置防火墙永久关闭

  • [root@web2 ~]$ systemctl disable firewalld --now
  • Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
  • Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
  • [root@proxy ~]$ systemctl status firewalld
  • ● firewalld.service - firewalld - dynamic firewall daemon
  • Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
  • Active: inactive (dead)
  • Docs: man:firewalld(1)

8.2 设置 selinux 为宽容模式,并修改配置文件为禁用

  • [root@web1 ~]$ setenforce 0
  • [root@web1 ~]$ getenforce
  • Permissive
  • [root@web2 ~]$ sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

9 配置本地 yum 源

9.1 挂载光盘到 /dvd 目录

  • [root@web2 ~]$ mkdir /dvd
  • [root@web2 ~]$ mount /dev/cdrom /dvd/
  • mount: /dvd: WARNING: device write-protected, mounted read-only.

9.2 将光盘设置为开机自动挂载

  • [root@web2 ~]$ vim /etc/fstab
  • /dev/cdrom /dvd iso9660 defaults 0 0
  • [root@web2 ~]$ mount -a
  • [root@web2 ~]$ df -h /dvd/
  • 文件系统 容量 已用 可用 已用% 挂载点
  • /dev/sr0 11G 11G 0 100% /dvd

9.3 将 proxy 主机的 yum 源文件拷贝到本地

  • [root@web2 ~]$ rm -rf /etc/yum.repos.d/*
  • [root@web2 ~]$ scp root@192.168.99.5:/etc/yum.repos.d/dvd.repo /etc/yum.repos.d/dvd.repo

9.4 验证 yum 是否可用

  • [root@web2 ~]$ yum makecache
  • AppStream 64 MB/s | 7.8 MB 00:00
  • BaseOS 49 MB/s | 2.6 MB 00:00
  • 上次元数据过期检查:0:00:02 前,执行于 20240325日 星期一 165743秒。
  • 元数据缓存已建立。

10 部署 LNMP

10.1 安装 Nginx

10.1.1 安装后续操作所需要的依赖环境

  • [root@web2 ~]$ yum -y install gcc make pcre-devel openssl-devel
  • [root@web2 ~]$ rpm -qa gcc make pcre-devel openssl-devel
  • openssl-devel-1.1.1k-6.el8_5.x86_64
  • gcc-8.5.0-10.el8.x86_64
  • make-4.2.1-11.el8.x86_64
  • pcre-devel-8.42-6.el8.x86_64

10.1.2 将 proxy 主机上解压好的文件夹拷贝到本机,源码编译安装 Nginx

  • [root@web2 ~]$ scp -r root@192.168.99.5:/root/lnmp_soft lnmp_soft
  • [root@web2 ~]$ cd lnmp_soft/nginx-1.23.2/
  • [root@web2 nginx-1.23.2]$ ./configure && make && make install

10.1.3 启动 Nginx 查看 Nginx 端口信息

  • [root@web2 nginx-1.23.2]$ /usr/local/nginx/sbin/nginx
  • [root@web2 nginx-1.23.2]$ netstat -anplut | grep nginx
  • tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 45057/nginx: master

10.1.4 将 proxy 主机的 Nginx 配置文件拷贝至本机,替换原本的 Nginx 配置文件

  • [root@web2 nginx-1.23.2]$ scp root@192.168.99.5:/usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf

10.1.5 重启 Nginx 重新加载配置文件

  • [root@web2 nginx-1.23.2]$ /usr/local/nginx/sbin/nginx -s reload

10.2 安装 Mariadb

10.2.1 安装 Mariadb 及相关所需服务环境

  • [root@web2 nginx-1.23.2]$ yum -y install mariadb mariadb-server mariadb-devel
  • [root@web2 nginx-1.23.2]$ rpm -qa install mariadb mariadb-server mariadb-devel
  • mariadb-server-10.3.32-2.module+el8.5.0+777+18007c86.x86_64
  • mariadb-10.3.32-2.module+el8.5.0+777+18007c86.x86_64
  • mariadb-devel-10.3.32-2.module+el8.5.0+777+18007c86.x86_64

10.2.2 设置 Mariadb 开机自启动,并启动服务

  • [root@web2 nginx-1.23.2]$ systemctl enable mariadb --now
  • Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
  • Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
  • Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.
  • [root@web2 nginx-1.23.2]$ systemctl status mariadb.service
  • ● mariadb.service - MariaDB 10.3 database server
  • Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  • Active: active (running) since Mon 2024-03-25 16:15:56 CST; 23s ago

10.3 安装 PHP

10.3.1 安装 PHP 及相关所需服务

  • [root@web2 nginx-1.23.2]$ yum -y install php php-mysqlnd php-fpm
  • [root@web2 nginx-1.23.2]$ rpm -qa install php php-mysqlnd php-fpm
  • php-fpm-7.2.24-1.module+el8.4.0+413+c9202dda.x86_64
  • php-mysqlnd-7.2.24-1.module+el8.4.0+413+c9202dda.x86_64
  • php-7.2.24-1.module+el8.4.0+413+c9202dda.x86_64

10.3.2 修改 php-fpm 的配置文件,使 php-fom 监听本地9000端口,可以接收来自 Web 服务器的请求,并处理 php 脚本的执行

  • [root@web2 nginx-1.23.2]$ vim /etc/php-fpm.d/www.conf
  • 38 listen = 127.0.0.1:9000

10.3.3 设置 php-fpm 开机自启动,并启动服务

  • [root@web2 nginx-1.23.2]$ systemctl enable php-fpm.service --now
  • Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.
  • [root@web2 nginx-1.23.2]$ systemctl status php-fpm.service
  • ● php-fpm.service - The PHP FastCGI Process Manager
  • Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
  • Active: active (running) since Mon 2024-03-25 16:18:42 CST; 20s ago

10.4 编写 Nginx 测试页面,检验 Nginnx 是否能处理 php 脚本

  • [root@web2 nginx-1.23.2]$ vim /usr/local/nginx/html/test.php
  • <html>
  • <body>
  • This is web2
  • </body>
  • </html>
在这里插入图片描述

11 在 proxy 上配置 Nginx 反向代理

11.1 修改 Nginx 的配置文件实现反向代理功能

  • [root@proxy ~]$ vim /usr/local/nginx/conf/nginx.conf
  • 22 upstream webservers{ #定义了一个名为"webservers"的upstream组,Nginx会将请求负载均衡地分发给这群组中的服务器
  • 23 server 192.168.99.100:80; #定义了第一台后端服务器的IP地址和端口
  • 24 server 192.168.99.200:80; #定义了第二台后端服务器的IP地址和端口
  • 25 }
  • 51 proxy_pass http://webservers; #指定了请求应该被代理到的upstream组,即"webservers"

11.2 重启 Nginx 重新加载配置文件

  • [root@proxy ~]$ /usr/local/nginx/sbin/nginx -s reload

12 在 web1 上部署带登录功能的页面

12.1 解压压缩包,将解压后文件夹中的内容拷贝到本机 Nginx 网页目录下

  • [root@web1 ~]$ cd lnmp_soft/php_scripts/
  • [root@web1 php_scripts]$ tar -zxf php-memcached-demo.tar.gz
  • [root@web1 php_scripts]$ cp -r php-memcached-demo/* /usr/local/nginx/html/

12.2 使用客户端浏览器搜索 web1 进行检验

在这里插入图片描述

12.3 登录后可以看到网页中的 Session ID 与 /var/lib/php/session/ 下的相同

在这里插入图片描述
  • [root@web1 php_scripts]$ cd /var/lib/php/session/
  • [root@web1 session]$ ls
  • sess_rfbab61nkj653jbiunfnv64b09

12.4 将 web1 的页面颜色修改为橙色,方便之后与 web2 区分

  • [root@web1 session]$ vim /usr/local/nginx/html/index.php
  • 10 <body bgcolor=orange>
  • [root@web1 session]$ vim /usr/local/nginx/html/home.php
  • 15 <body bgcolor=orange>

13 在 web2上部署带登录功能的页面

13.1 解压压缩包,将解压后文件夹中的内容拷贝到本机 Nginx 网页目录下

  • [root@web2 ~]$ cd lnmp_soft/php_scripts/
  • [root@web2 php_scripts]$ tar -xf php-memcached-demo.tar.gz
  • [root@web2 php_scripts]$ cp -r php-memcached-demo/* /usr/local/nginx/html/

13.2 使用客户端浏览器搜索 web2 进行检验

在这里插入图片描述

13.3 登录后可以看到网页中的 Session ID 与 /var/lib/php/session/ 下的相同

在这里插入图片描述
  • [root@web2 php_scripts]$ cd /var/lib/php/session/
  • [root@web2 session]$ ls
  • sess_r7jdpa1ja7na75vq5dq1e41559

13.4 将 web2 的页面颜色修改为粉色,方便之后与 web1 区分

  • [root@web2 session]$ vim /usr/local/nginx/html/index.php
  • 10 <body bgcolor=pink>
  • [root@web2 session]$ vim /usr/local/nginx/html/home.php
  • 15 <body bgcolor=pink>

14 检验 Nginx 反向代理是否成功

​ 在客户端浏览器上访问 proxy(192.168.99.5),先不输入账号密码,点击刷新页面可以看到 web1 、web2 的橙色、粉色页面交替出现;输入账号密码登录时发现需要输入两次账号密码(先在 web1 橙色页面输入一次账号密码,点击登录后需要再在 web2 粉色页面输入一次账号密码)才能跳转到 home.php 页面。

​ 到目前为止上述情况属于正常,是因为没有配置 Session 共享。

15 在 web1 上安装 memcahce 扩展,实现 Session 共享

15.1 解压 memcache 扩展文件包

  • [root@web1 ~]$ cd lnmp_soft/php_scripts/
  • [root@web1 php_scripts]$ tar -zxf memcache-4.0.5.2.tar.gz

15.2 使用 phpize 命令为 php 模块编译和安装过程准备环境

  • [root@web1 php_scripts]$ cd memcache-4.0.5.2/
  • [root@web1 memcache-4.0.5.2]$ /usr/bin/phpize
  • Configuring for:
  • PHP Api Version: 20170718
  • Zend Module Api No: 20170718
  • Zend Extension Api No: 320170718
  • [root@web1 memcache-4.0.5.2]$ ls
  • acinclude.m4 cloudbuild.yaml config.h.in config.status config.w32 example.php LICENSE Makefile.global missing README
  • aclocal.m4 config9.m4 config.log config.sub CREDITS include ltmain.sh Makefile.objects mkinstalldirs run-tests.php
  • autom4te.cache config.guess config.m4 configure docker install-sh Makefile memcache.la modules tests
  • build config.h config.nice configure.ac Dockerfile libtool Makefile.fragments memcache.php php7

15.3 源码编译安装 memcache 扩展,记住安装完成后给出的扩展路径

  • [root@web1 memcache-4.0.5.2]$ ./configure && make && make install
  • ......
  • Installing shared extensions: /usr/lib64/php/modules/
  • [root@web1 memcache-4.0.5.2]$ ll /usr/lib64/php/modules/ | grep memcache.so
  • -rwxr-xr-x 1 root root 790120 327 15:47 memcache.so

15.4 修改 php 配置文件在 php 中加载 memcache 扩展模块

  • [root@web1 memcache-4.0.5.2]$ vim /etc/php.ini
  • 870 extension=/usr/lib64/php/modules/memcache.so

15.5 修改 php 的会话 Session 存储方式,并重启 php-fpm 重新加载配置

  • [root@web1 memcache-4.0.5.2]$ vim /etc/php-fpm.d/www.conf
  • 431 php_value[session.save_handler] = memcache #使用 memcache 来存储会话数据
  • 432 php_value[session.save_path] = "tcp://192.168.99.5:11211" #指定了 memcache 服务器的地址和端口
  • [root@web1 memcache-4.0.5.2]$ systemctl restart php-fpm.service

15.6 修改 Nginx 配置文件,使 Nginx 能从 Memcached 中获取相应内容,并重启 Nginx 加载配置

  • [root@web1 memcache-4.0.5.2]$ vim /usr/local/nginx/conf/nginx.conf
  • 43 location / { #表示针对所有请求路径为 / 的请求进行配置
  • 44 root html; #指定了根目录为 html,即指定了静态文件资源的根目录
  • 45 index index.php index.html index.htm; # 指定了当访问目录时默认展示的文件,按照指定的顺序查找并显示第一个找到的文件
  • 46 set $memcached_key "$uri"; #将 URI 赋值给变量 $memcached_key,用于在后续的 memcached_pass 中作为键名
  • 47 memcached_pass 192.168.99.5:11211; #将请求转发到 Memcached 服务器 192.168.99.5 的 11211 端口,并使用之前设置的 $memcached_key 作为键名
  • 48 error_page 404 /home.php; #指定当出现 404 错误时,将请求重定向到 /home.php 这个页面
  • 49 }
  • [root@web1 php-memcached-demo]$ /usr/local/nginx/sbin/nginx -s reload

16 在 web2 上安装 memcahce 扩展,实现 Session 共享

16.1 解压 memcache 扩展文件包

  • [root@web2 ~]$ cd lnmp_soft/php_scripts/
  • [root@web2 php_scripts]$ tar -zxf memcache-4.0.5.2.tar.gz

16.2 使用 phpize 命令为 php 模块编译和安装过程准备环境

  • [root@web2 php_scripts]$ cd memcache-4.0.5.2/
  • [root@web2 memcache-4.0.5.2]$ /usr/bin/phpize
  • Configuring for:
  • PHP Api Version: 20170718
  • Zend Module Api No: 20170718
  • Zend Extension Api No: 320170718
  • [root@web2 memcache-4.0.5.2]$ ls
  • acinclude.m4 cloudbuild.yaml config.h.in config.status config.w32 example.php LICENSE Makefile.global missing README
  • aclocal.m4 config9.m4 config.log config.sub CREDITS include ltmain.sh Makefile.objects mkinstalldirs run-tests.php
  • autom4te.cache config.guess config.m4 configure docker install-sh Makefile memcache.la modules tests
  • build config.h config.nice configure.ac Dockerfile libtool Makefile.fragments memcache.php php7

16.3 源码编译安装 memcache 扩展,记住安装完成后给出的扩展路径

  • [root@web2 memcache-4.0.5.2]$ ./configure && make && make install
  • ......
  • Installing shared extensions: /usr/lib64/php/modules/
  • [root@web2 memcache-4.0.5.2]$ ll /usr/lib64/php/modules/ | grep memcache.so
  • -rwxr-xr-x 1 root root 790120 327 15:47 memcache.so

16.4 修改 php 配置文件在 php 中加载 memcache 扩展模块

  • [root@web2 memcache-4.0.5.2]$ vim /etc/php.ini
  • 870 extension=/usr/lib64/php/modules/memcache.so

16.5 修改 php 的会话 Session 存储方式,并重启 php-fpm 重新加载配置

  • [root@web2 memcache-4.0.5.2]$ vim /etc/php-fpm.d/www.conf
  • 431 php_value[session.save_handler] = memcache #使用 memcache 来存储会话数据
  • 432 php_value[session.save_path] = "tcp://192.168.99.5:11211" #指定了 memcache 服务器的地址和端口
  • [root@web2 memcache-4.0.5.2]$ systemctl restart php-fpm.service

16.6 修改 Nginx 配置文件,使 Nginx 能从 Memcached 中获取相应内容,并重启 Nginx 加载配置

  • [root@web2 memcache-4.0.5.2]$ vim /usr/local/nginx/conf/nginx.conf
  • 43 location / { #表示针对所有请求路径为 / 的请求进行配置
  • 44 root html; #指定了根目录为 html,即指定了静态文件资源的根目录
  • 45 index index.php index.html index.htm; # 指定了当访问目录时默认展示的文件,按照指定的顺序查找并显示第一个找到的文件
  • 46 set $memcached_key "$uri"; #将 URI 赋值给变量 $memcached_key,用于在后续的 memcached_pass 中作为键名
  • 47 memcached_pass 192.168.99.5:11211; #将请求转发到 Memcached 服务器 192.168.99.5 的 11211 端口,并使用之前设置的 $memcached_key 作为键名
  • 48 error_page 404 /home.php; #指定当出现 404 错误时,将请求重定向到 /home.php 这个页面
  • 49 }
  • [root@web2 php-memcached-demo]$ /usr/local/nginx/sbin/nginx -s reload

17 检验 Session 共享是否成功

使用客户端的浏览器访问 proxy(192.168.99.5)可以看到是 web1 的橙色页面

在这里插入图片描述

不输入账号密码点击刷新可以看到页面切换为 web2 的粉色页面

在这里插入图片描述

在任意颜色页面的用户名输入 “ root ” 密码输入 “ 123456 ” ,只需登录一次就能够查看到 Session 信息,点击刷新页面能够看到 web1 、web2 页面交替出现,并且 Session ID 不变

在这里插入图片描述
在这里插入图片描述
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐