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是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器,是一种在客户端保持状态的方案。

FBI WARNING

QQ:1402122292 认准原创sheldon 别人叫我晓东

最新文章

  1. 【WP8.1】类似“IT之家” 自定义消息 的实现
  2. SQL Server中事务、锁定和阻塞
  3. java中jdk和jre的区别
  4. PHP延迟静态绑定 static关键字
  5. 主机+虚拟机ubuntu+mini2440开发板互相ping通
  6. Changing SharePoint Default port ( 80 ) to another port ( 79 ).
  7. 编写高质量JS代码的68个有效方法(十二)
  8. IIFE(立即执行函数表达式)
  9. Linux显示使用者将不能利用交谈式指令来对行程
  10. C语言第五次博客作业
  11. 一套代码小程序&Web&Native运行的探索04——数据更新
  12. 树莓派与Linux系统之间文件传输
  13. 服务器搭建lamp环境
  14. js小方法积累,将一个数组按照n个一份,分成若干数组
  15. spring rest 容易被忽视的后端服务 chunked 性能问题
  16. 微软Office Online服务安装部署(三)
  17. Tomat和JDK安装配置
  18. ACM STEPS——Chapter Two——Section One
  19. ifdef等宏的妙用
  20. 常用的vue辅助工具vue-devtools

热门文章

  1. Python基础(二十):面向对象“类”第三课——类成员
  2. C语言-字符串函数的实现(一)之strlen
  3. 直接跑day07中现成的代码可能出现的问题
  4. C/C++中的字符串相关姿势
  5. 代码安全丨第六期:XPath注入漏洞样例
  6. Python 极速入门指南
  7. 官宣 MAUI 在.NET Preview 3的最新进展
  8. Salesforce 集成篇零基础学习(一)Connected App
  9. php图片合成【png图片】
  10. $.ajax()——超时设置