标签:phpmyadmin www redis nginx session web01 php root
myphpadmin项目理解cookie和session 当我们平时上网的时候,在刷新之后或者退出浏览器再次打开浏览器不需要登陆网页了,这就是利用了cookie和session; 环境配置 hostname wanIP lanIP 角色 web01 10.0.0.7 172.16.1.7 网站服务器
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 别人叫我晓东
标签:phpmyadmin,www,redis,nginx,session,web01,php,root 来源: https://blog.51cto.com/u_10272167/2711374
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。