nginx负载均衡搭建phpmyadmin加入redis了解session会话原理
myphpadmin项目理解cookie和session
当我们平时上网的时候,在刷新之后或者退出浏览器再次打开浏览器不需要登陆网页了,这就是利用了cookie和session;
环境配置
hostname | wanIP | lanIP | 角色 |
---|---|---|---|
web01 | 10.0.0.7 | 172.16.1.7 | 网站服务器1 |
web02 | 10.0.0.8 | 172.16.1.8 | 网站服务器2 |
db01 | 10.0.0.51 | 172.16.1.51 | 数据库服务器 |
lb01 | 10.0.0.5 | 172.16.1.5 | 负载均衡器 |
配置过程
1、web01和web02安装nginx和php
# 1、上传文件
# 2、解压安装
[root@web01 ~]# tar -xf nginx_and_php.tar.gz
[root@web01 ~]# cd nginx_php/
[root@web01 ~/nginx_php]# yum -y localinstall *.rpm
# 3、更改配置文件
[root@web01 ~]# vi /etc/nginx/conf.d/phpadmin.conf
server {
listen 80;
server_name php.gong.com;
root /website/phpadmin;
index index.php;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# 4、创建管理用户
[root@web01 ~]# groupadd www -g 666
[root@web01 ~]# useradd www -g666 -u666
# 5、更改启动用户
[root@web01 ~]# vi /etc/nginx/nginx.conf
user www;
[root@web01 ~]# vi /etc/php-fpm.d/www.conf
; Start a new pool named 'www'.
[www]
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache Choosed to be able to access some dir as httpd
user = www
; RPM: Keep a group allowed to write in log dir.
group = www
# 6、创建站点目录
[root@web01 ~]# mkdir -p /website/phpadmin/
[root@web01 ~]# cd /website/phpadmin/
## 上传php源码,解压
[root@web01 ~]# unzip phpMyAdmin-4.9.0.1-all-languages.zip
[root@web01 /website/phpadmin]# mv phpMyAdmin-4.9.0.1-all-languages/* ./
# 6、授权
[root@web01 ~]# chown -R www.www /website/phpadmin/
# 7、启动;开机自启
[root@web01 ~]# nginx
[root@web01 ~]# systemctl start php-fpm
[root@web01 ~]# systemctl enable nginx php-fpm
# 7、授权session目录
[root@web01 ~]# chown -R www.www /var/lib/php/session
# 访问测试
2、安装数据库
# 1、安装数据库
[root@db01 ~]# yum -y install mariadb-server
# 7、启动;开机自启
[root@db01 ~]# systemctl start mariadb
[root@db01 ~]# systemctl enable mariadb
# 7、创建root密码
[root@db01 ~]# mysqladmin -uroot password '123'
# 8、登陆
[root@db01 ~]# mysql -uroot -p123
# 7、创建数据库
MariaDB [(none)]> create database php_db;
Query OK, 1 row affected (0.00 sec)
# 7、创建管理数据库用户和密码
MariaDB [(none)]> grant all on php_db.* to php_user@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
# 1、更改php代码,数据库的连接地址
[root@web01 ~]# cd /website/phpadmin/
[root@web01 /website/phpadmin]# cp config.sample.inc.php config.inc.php
[root@web01 /website/phpadmin]# vi config.inc.php
/* Server parameters */
$cfg['Servers'][$i]['host'] = '172.16.1.51';
登陆之后本地的cookie和服务器端的session
把服务器端的session删除之后,刷新页面;会被要求重新登陆。
3、把web01上的配置复制到web02上去
# 1、使用rsync发送到web02
[root@web01 ~]# rsync -avz /etc/nginx/conf.d/phpadmin.conf root@10.0.0.8:/etc/nginx/conf.d/
[root@web01 ~]# rsync -avz /website root@10.0.0.8:/
# 2、启动
[root@web02 ~]# systemctl start nginx php-fpm
[root@web02 ~]# systemctl enable nginx php-fpm
# 3、授权
[root@web02 ~]# chown -R www.www /var/lib/php/session
3、加入负载均衡
# 编辑配置文件
[root@lb01 ~]# vi /etc/nginx/conf.d/upstream.conf
upstream phpadmin {
server 172.16.1.7;
server 172.16.1.8;
}
server {
listen 80;
server_name php.gong.com;
location / {
proxy_pass http://phpadmin;
include proxy_params;
}
}
[root@lb01 /etc/nginx]# vi proxy_params
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_next_upstream error timeout http_500 http_502 http_503 http_504;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
# 2、启动
[root@lb01 /etc/nginx]# nginx
[root@lb01 /etc/nginx]# systemctl enable nginx
在加入负载均衡之后,会出现下面的情况,刷新要求重新登陆,或者登陆补上的情况,那是因为,如果在web01上存储了session那么客户端通过负载均衡访问到web01的时候cookie的key和session的value是能够匹配的该用户访问合法,但是轮询到wen02的时候,没有session或者是存储了不同的session,就造成了刷新要重新认证或者,登陆不上的情况。
配置redis
4、加入redis
[root@db01 ~]# yum -y install redis
[root@db01 ~]# sed -i '/^bind/c bind 127.0.0.1 172.16.1.51' /etc/redis.conf
[root@db01 ~]# systemctl start redis
[root@db01 ~]# systemctl enable redis
[root@web01 ~]# vim /etc/php.ini
session.save_handler = redis
session.save_path = "tcp://172.16.1.51:6379"
# 可以不加试试
session.auto_start = 1
[root@web01 ~]# vi /etc/php-fpm.d/www.conf
;php_value[session.save_handler] = files
;php_value[session.save_path] = /var/lib/php/session
[root@web01 ~]# systemctl restart php-fpm
[root@web01 ~]# scp /etc/php.ini root@172.16.1.8:/etc/php.ini
[root@web01 ~]# scp /etc/php-fpm.d/www.conf root@172.16.1.8:/etc/php-fpm.d/www.conf
[root@web02 ~]# systemctl restart php-fpm
当有了共享存储的时候,同一域名下的网站的cookie
都是一样的,所以无论几台服务器,无论请求分配到哪一台服务器上同一用户的cookie
是不变的。也就是说cookie
对应的session
也是唯一的。所以,这里保证了多台业务服务器访问同一个网站,而刷新不会出现重新登陆或者出现网页报错的情况。
Cookie是访问某些网站以后在本地存储的一些网站相关的信息,下次再访问的时候减少一些步骤。另外一个更准确的说法是:Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器,是一种在客户端保持状态的方案。
nginx负载均衡搭建phpmyadmin加入redis了解session会话原理的更多相关文章
- 使用Nginx负载均衡搭建高性能.NETweb应用程序二
在文章<使用Nginx负载均衡搭建高性能.NETweb应用程序一>中,让我们对Nginx有了一个初步认识,下面我们将在windows平台下面使用Nginx演示集群部署我们的web应用. 一 ...
- 使用Nginx负载均衡搭建高性能.NETweb应用程序(转)
一.遇到的问题 当我们用IIS服务器部署了一个web应用以后,当很多用户高并发访问的时候,客户端响应就会很慢,客户的体验就会很差,由于IIS接受到客户端请求的时候,就会创建一个线程,当线程达到几千个时 ...
- Nginx负载均衡搭建(Window与Linux)
windows上搭建nginx负载均衡 1.准备几台http服务器软件,这里选用一台apache一台tomcat apache(windows)下载链接:https://www.apachehaus. ...
- [例子] nginx负载均衡搭建及测试
一.Nginx + Tomcat 负载均衡测试(负载均衡+部分静态图片处理) 环境说明: nginx+tomcat @ubuntu ok 首先你得有一个Ubuntu或者什么其他的linux. 安装j ...
- Nginx 负载均衡搭建
配置文件Nginx/conf/nginx.conf 什么是负载均衡呢? 由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设 ...
- 使用Nginx负载均衡搭建高性能.NETweb应用程序一
一.遇到的问题 当我们用IIS服务器部署了一个web应用以后,当很多用户高并发访问的时候,客户端响应就会很慢,客户的体验就会很差,由于IIS接受到客户端请求的 时候,就会创建一个线程,当线程达到几千个 ...
- linux下nginx负载均衡搭建
[一.Nginx能做什么] 1.http服务器.Nginx是一个http服务可以独立提供http服务.可以做网页静态服务器. 2.虚拟主机.可以实现在一台服务器虚拟出多个网站.例如个人网路使用的虚拟主 ...
- 负载均衡,最理想使用 redis实现session共享
负载均衡在多台php服务器负载均衡的情况下,第一秒请求是a服务器,第二秒请求是b服务器, session必须放在一个公共的服务器,最理想是使用 redis实现session共享.内存的速度比磁盘访问快 ...
- Centos7 minimal 系列之Nginx负载均衡搭建(四)
一.Nginx搭建请参考我的上篇文章 http://www.cnblogs.com/WJ--NET/p/8143899.html 二.在IIS上搭建2个网站 三.配置nginx 虚拟机和主机网络互通请 ...
随机推荐
- JProfiler使用说明及常用案例分析
1 配置远程连接 (1)启动JProfiler,选择Attach to a running JVM (2)选择Quick Attach,然后选择On another computer,然后选择Edit ...
- [Fundamental of Power Electronics]-PART II-7. 交流等效电路建模-7.2 基本交流建模方法
7.2 基本交流建模方法 在本节中,PWM变换器的交流小信号模型导出步骤将被推导和解释.关键步骤是:(a)利用小纹波近似的动态版本,建立了与电感和电容波形的低频平均值相关的方程式,(b)平均方程的扰动 ...
- SQLserver数据库安装教程
大家好,这期给大家带来一期SQL server的安装教程 下载SQL Server 2019 Developer 官方网址: https://www.microsoft.com/zh-cn/sql-s ...
- 数据库MySQL一
P252 1.MySQL 最为主要使用的数据库 my sequel 不容易查找数据 DB数据库 存储数据的仓库,它保存了一系列有组织的数据 DBMS数据库管理系统,数据库是通过DBMS创建和操作的容器 ...
- .NET WebSockets 核心原理初体验
上个月我写了<.NET gRPC核心功能初体验>, 里面使用gRPC双向流做了一个打乒乓球的Demo, 实时双向这两个标签是不是很熟悉,对, WebSockets也可以做实时双向通信. 本 ...
- 所谓 ICMP,不过将军与士卒而已
什么是 ICMP 协议 关于这点我们在 IP 协议那篇文章中提过一嘴,IP 协议作为一种提供不可靠数据交付的网络层协议,在传输的过程中,其 IP 数据报可能会发生丢失.重复.延迟和乱序等各种情况, 但 ...
- 你好,FFMPEG 可视化
你好,FFMPEG 可视化 给大家看看我现在的玩具: 它有哪些功能呢?如你所见,不止于此 1. 视频录制 暂时只能录制视频,音频无法录制 FFMPEG.exe 暂时只支持视频,音频录制需要下载额外的工 ...
- hdu1530 最大团简单题目
题意: 给你一个无向图,让你找到这个图里面的最大团是多少. 思路: 最大图案是NP问题,直接暴力搜索,如果当前的这个点可以加入当前最大团,那么就选择加入或者舍去,如果不能加入, ...
- hdu4784 不错的搜索( 买卖盐,要求整钱最多)
题意: 给你一个有向图,每个节点上都有一个盐价,然后给你k个空间,么个空间上节点与节点的距离不变,但盐价不同,对于每一个节点,有三种操作,卖一袋盐,买一袋盐 ,不交易,每一个节点可以跳掉( ...
- Win64 驱动内核编程-30.枚举与删除线程回调
枚举与删除线程回调 进程回调可以监视进程的创建和退出,这个在前面的章节已经总结过了.某些游戏保护的驱动喜欢用这个函数来监视有没有黑名单中的程序运行,如果运行则阻止运行或者把游戏退出.而线程回调则通常用 ...