Session:存储在服务器端,保存用户名、登陆状态等信息。
Cookies:由服务器下发给客户端,保存在客户端的一个文件里。
1,在web1与web2主机部署lnmp环境:
yum -y install mariadb mariadb-server mariadb-devel
yum -y install php php-mysql php-fpm
[root@web1 ~]# systemctl start php-fpm
[root@web1 ~]# systemctl start mariadb
ss -ntulp | grep 3306
ss -ntulp | grep 9000
[root@proxy ~]# scp lnmp_soft.tar.gz 192.168.2.100: //在proxy主机拷贝文件到web1
[root@web1 ~]# tar -xf lnmp_soft.tar.gz //回web1释放文件
[root@web1 ~]# cd lnmp_soft/
[root@web1 lnmp_soft]# tar -xf nginx-1.17.6.tar.gz //之后进行nginx部署工作
[root@web1 lnmp_soft]# cd nginx-1.17.6/
yum -y install gcc pcre-devel openssl-devel //安装依赖包
./configure
make
make install
2,修改nginx配置文件65~71行,实现动静分离,即可以解析php后缀名的文件
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
3,在proxy主机配置集群,注意该主机不能有动静分离的配置
upstream web {
server 192.168.2.100:80;
server 192.168.2.200:80;
}
location / {
proxy_pass http://web;
root html;
}
http://192.168.2.5/index.php //之后测试效果,不断刷新页面,会看到web1与web2的登录界面(需要提前在web1与web2的index.php与home.php页面进行标记)
然后将web1与web2的/var/lib/php/session目录中的所有session文件删除,然后再删除浏览器的历史记录(Cookies),再次登录,发现必须登录两次才能成功。
考虑到企业级的访问量比较大,读取session的速度要跟得上。硬件的读取速度一般为 内存>缓存>磁盘,所以我们使用mem擦车高速缓存。
上述实验由于web1与web2都是在各自的/var/lib/php/session目录中存储session,所以造成客户需要重复登录,为了统一session存储的位置(该存储方式通常被称为session共享),需要安装专门的数据库工具(在另外一台机器上安装数据库,可以不是在proxy和web上)
1,安装memcache数据库
yum -y install memcached //安装数据库工具
systemctl start memcached //启动服务
yum -y install telnet //安装远程登录工具,为了测试memcache
2,连接测试
telnet 127.0.0.1 11211 //使用远程工具连接到本机的11211端口,该端口就是memcached服务
set abc 0 100 3 //测试创建或者覆盖abc变量,0是不压缩数据,数据存储时间是100秒,存储3个字符
get abc //获取变量abc的值
add abc 0 100 3 //仅仅创建,如果已经有abc变量则
无法覆盖
replace abc 0 100 3 //覆盖现有变量的数据
delete abc //删除变量
flush_all //清空所有数据
quit //退出,通过以上命令可以证明memcached服务一切正常
3,在web1与web2主机修改session存储的位置,实现session共享
yum -y install php-pecl-memcache //安装php与memcached服务关联的软件包
vim /etc/php-fpm.d/www.conf //修改配置
php_value[session.save_handler] = memcache //这里改成memcache
php_value[session.save_path] = tcp://192.168.2.5:11211 //session存储位置
systemctl restart php-fpm //重启fpm服务,让上述配置生效
所有服务器关闭selinux
最后清空浏览器的历史记录,再访问http://192.168.2.5/index.php仅仅登录一次即可成功