myphpadmin项目理解cookie和session 当我们平时上网的时候,在刷新之后或者退出浏览器再次打开浏览器不需要登陆网页了,这就是利用了cookie和session; 环境配置 hostname wanIP lanIP 角色 web01 10.0.0.7 172.16.1.7 网站服务器



myphpadmin项目理解cookie和session

当我们平时上网的时候,在刷新之后或者退出浏览器再次打开浏览器不需要登陆网页了,这就是利用了cookie和session;


环境配置

hostnamewanIPlanIP角色
web0110.0.0.7172.16.1.7网站服务器1
web0210.0.0.8172.16.1.8网站服务器2
db0110.0.0.51172.16.1.51数据库服务器
lb0110.0.0.5172.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.confserver {        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 httpduser = 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.confupstream 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_paramsproxy_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.inisession.save_handler = redissession.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 别人叫我晓东

©著作权归作者所有:来自51CTO博客作者80民工的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 异步编程|五分钟让你学会局部刷新Ajax技术
  2. 【方法】Oracle用户密码含特殊字符时的登陆问题
  3. 「小破站」真顶流,CMU语言技术研究所登陆B站:这是学术圈的新时尚?
  4. 物化视图快速刷新报 ORA-12008 & ORA-01031
  5. 什么!FPS难道不是越高越好吗?
  6. php+jquery实现无刷新分页和前端端交互操作数据库
  7. 员工管理系统完整版(登录验证功能+网址过滤白名单)
  8. Excel动态提取1万条不重复值,只需0.01秒
  9. 动态合并工作表,放到哪里也能刷新

随机推荐

  1. listView 多值显示
  2. android 键盘显示与隐藏
  3. [摘]android:windowSoftInputMode属性使
  4. Android(安卓)MediaPlayer类详解
  5. Android中对于Bitmap的处理
  6. Android编译系统中的Kconfig,Makefile,.co
  7. Android NDK: Your APP_BUILD_SCRIPT poi
  8. android gallery的使用
  9. Android 7.1.2(Android N) Activity启动
  10. android 学习笔记(四)