linux系统session与cookie

1.使用phpmyadmin实现cookie和session
2.使用自己理解的方式,解释一下cookie和session
3.使用代码的方式也可以(VScode 有兴趣的同学)

cookie和session个人理解:

首先他俩不一样的地方就是cookie是存储在浏览器,session存储在服务器

然后当一个用户第一次请求服务器的时候,服务器会返回浏览器一个session_id,然后浏览器把这个session_id存储在浏览器,就是cookie里面,然后当这个用户下次再请求服务器的时候,浏览器就会带着cookie里面的存储session_id,然后当服务器拿到这个session_id的时候就会知道是哪个用户发送过来的请求,这个用户在服务器里面都存储了什么东西,每个用户session_id都不一样,这也就相当于用户在服务器里面的身份证

使用phpmyadmin实现cookie和session

环境准备

服务器名 外网IP 内网IP 搭建服务 角色
web01 10.0.0.7 172.16.1.7 nginx,php-fpm,phpmyadmin web服务器
web02 10.0.0.8 172.16.1.8 nginx,php-fpm,phpmyadmin web服务器
nfs 10.0.0.31 172.16.1.31 redis redis服务器
lb01 10.0.0.5 172.16.1.5 nginx 负载均衡服务器
db01 10.0.0.51 172.16.1.51 mariadb 数据库服务器

web01配置

#### 上传nginx和php-fpm的压缩包
[root@web01 ~]# rz -E
#### 解压
[root@web01 ~]# tar xf php_nginx.tgz
#### 进入站点目录安装
[root@web01 ~]# cd root/nginx_php/
[root@web01 nginx_php]# rpm -Uvh *
#### 创建用户组和用户
[root@web01 nginx_php]# groupadd www -g 666
[root@web01 nginx_php]# useradd www -u 666 -g 666 -s /sbin/nologin -M
#### 修改nginx的主配置文件
[root@web01 ~]# cd /etc/nginx
[root@web01 nginx]# vim nginx.conf
user  www;
worker_processes  1;

#### 修改php-fpm的配置文件
[root@web01 nginx]# vim /etc/php-fpm.d/www.conf 
user = www
; RPM: Keep a group allowed to write in log dir.
group = www
#### 编辑nginx的配置文件
[root@web01 nginx]# vim zh.test.com
[root@web01 nginx]# vim blog.test.com
#### 检测语法
[root@web01 nginx]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
#### 启动nginx并加入开机自启
[root@web01 nginx]# systemctl start nginx
[root@web01 nginx]# systemctl enable nginx
#### 启动php-fpm并加入开机自启
[root@web01 nginx]# systemctl start php-fpm
[root@web01 nginx]# systemctl enable php-fpm
####  创建站点目录并进入站点目录上传服务的压缩包
[root@web01 nginx]# mkdir /code/zh -p
[root@web01 nginx]# mkdir /code/wordpress
[root@web01 nginx]# cd /code/zh
[root@web01 zh]# rz

[root@web01 zh]# cd ../wordpress/
[root@web01 wordpress]# rz
#### 解压并授权
[root@web01 wordpress]# tar xf wordpress-5.0.3-zh_CN.tar.gz 
[root@web01 wordpress]# mv wordpress/* ./
[root@web01 wordpress]# cd ../zh/
[root@web01 zh]# unzip WeCenter_3-2-1.zip 
[root@web01 zh]# mv WeCenter_3-2-1/* ./
#### 授权目录
[root@web01 ~]# chown www.www /code -R
#### 域名解析
#### 浏览器访问

web02配置

#### 上传nginx和php-fpm的压缩包
[root@web02 ~]# rz

[root@web02 ~]# 
#### 解压
[root@web02 ~]# tar xf php_nginx.tgz
#### 进入站点目录安装所有rpm
[root@web02 nginx_php]# rpm -Uvh *rpm

#### 创建用户和用户组
[root@web02 nginx_php]# groupadd www -g 666
[root@web02 nginx_php]# useradd www -u 666 -g 666 -s /sbin/nologin -M 
#### 把web01的nginx配置文件传到web02
[root@web01 ~]# rsync -avz /etc/nginx/conf.d/ 172.16.1.8:/etc/nginx/conf.d/

#### 把web01的/code目录传到web02的/目录下
[root@web01 ~]# rsync -avz /code 172.16.1.8:/
#### 修改用户
[root@web02 conf.d]# !v
vim /etc/nginx/nginx.conf 


user  www;
worker_processes  1;
[root@web02 conf.d]# vim /etc/php-fpm.d/www.conf 
user = www
; RPM: Keep a group allowed to write in log dir.
group = www

#### 授权目录
[root@web02 conf.d]# chown -R www.www /code
#### 检测语法
[root@web02 nginx]# nginx -t
#### 域名解析
window+r 打开运行框,输入drivers,然后点开etc目录用管理员身份打开hosts文件做域名解析
#### 启动nginx加入开机自启
[root@web02 nginx]# systemctl start nginx
[root@web02nginx]# systemctl enable nginx
#### 启动php-fpm并加入开机自启
[root@web02 nginx]# systemctl start php-fpm
[root@web02 nginx]# systemctl enable php-fpm

db01配置

#### 下载mariadb-server
[root@db01 ~]# yum install -y mariadb-server
#### 启动并加入开机自启
[root@db01 ~]# systemctl start mariadb.service
[root@db01 ~]# systemctl enable mariadb.service
#### 给root用户添加密码
[root@db01 ~]# mysqladmin -uroot password '123'
#### 登录
[root@db01 ~]# mysql -uroot -p123
#### 创建库
MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> create database zh ;
Query OK, 1 row affected (0.00 sec)
#### 创建用户和密码
MariaDB [(none)]> grant all on *.* to wzh_user@'%' identified by '111'
    -> ;
Query OK, 0 rows affected (0.00 sec)

nfs配置

####  下载
[root@nfs ~]#  yum install redis -y
#### 配置redis监听的网段
[root@nfs ~]# sed  -i '/^bind/c bind 127.0.0.1 172.16.1.31' /etc/redis.conf
#### 启动并添加开机自启redis
[root@nfs ~]# systemctl start redis
[root@nfs ~]# systemctl enable redis

#### 检查端口
[root@nfs ~]# netstat -lntup|grep redis
tcp        0      0 172.16.1.31:6379        0.0.0.0:*               LISTEN      7654/redis-server 1 
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      7654/redis-server 1 
#### 修改web服务器的php.ini配置文件
[root@web01 ~]# vim /etc/php.ini
session.save_handler = redis
session.save_path = "tcp://172.16.1.31:6379"
session.auto_start = 1
#### 注释/etc/php.fpm.d/www.conf配置文件的内容
[root@web01 ~]# vim /etc/php-fpm.d/www.conf
;php_value[session.save_handler] = files
;php_value[session.save_path]    = /var/lib/php/session
;php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache
#### 重新启动php-fpm
[root@web01 ~]# systemctl restart php-fpm
#### 将修改之后的文传送到web02
[root@web01 ~]# scp /etc/php.ini root@172.16.1.8:/etc/php.ini
root@172.16.1.8's password: 
#### 重启web02的php-fpm
[root@web02 phpmyadmin]# systemctl restart 

web01配置phpmyadmin

#### 编辑nginx配置文件
[root@web01 conf.d]# cat phpmyadmin.com.conf 
server {
        listen 80;
        server_name phpmyadmin.com;
        root /code/phpmyadmin;
        index index.php index.html;

        location ~ \.php$ {
            root /code/phpmyadmin;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
    }
}
#### 检测语法
[root@web01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
#### 重新加载nginx
[root@web01 conf.d]# systemctl reload nginx
#### 创建站点目录
[root@web01 conf.d]# mkdir /code/phpmyadmin
#### 上传安装包
[root@web01 conf.d]# cd /code/phpmyadmin/
[root@web01 phpmyadmin]# rz

[root@web01 phpmyadmin]# ll
total 10804
-rw-r--r-- 1 root root 11060845 May 26 19:59 phpMyAdmin-4.9.0.1-all-languages_(1).zip
#### 解压
[root@web01 phpmyadmin]# unzip phpMyAdmin-4.9.0.1-all-languages_\(1\).zip 
#### 将解压的东西移动到phpmyadmin目录
[root@web01 phpmyadmin]# mv phpMyAdmin-4.9.0.1-all-languages/* ./
#### 授权
[root@web01 phpmyadmin]# chown -R www.www /code
#### 域名解析
window+r 打开运行框,输入drivers,然后点开etc目录用管理员身份打开hosts文件做域名解析
#### 配置文件授权
[root@web01 code]# chown www.www -R /var/lib/php/
#### 访问

#### 

web02配置phpmyadmin**

#### 从web01上面导数据
[root@web01 ~]# scp -r /code/phpmyadmin 172.16.1.8:/code
#### phpmyadmin的配置文件发送到web02
[root@web01 ~]# scp /etc/nginx/conf.d/phpmyadmin.com.conf  172.16.1.8:/etc/nginx/conf.d/
#### 授权
[root@web02 ~]# chown -R www.www /code
#### 修改配置
[root@web02 code]#  cp config.sample.inc.php config.inc.php
[root@web02 phpmyadmin]# vim config.inc.php
/server 找到localhost改成10.0.0.31的ip
#### 域名解析


lb01负载均衡配置

#### 安装nginx,上传nginx的压缩包到服务器
[root@lb01 ~]# rz
#### 解压
-rw-r--r--  1 root root 20453237 May 22 15:20 php_nginx.tgz
[root@lb01 ~]# tar xf php_nginx.tgz 
#### 安装nginx
[root@lb01 ~]# cd root/nginx_php/
[root@lb01 nginx_php]# yum localinstall nginx-1.18.0-1.el7.ngx.x86_64.rpm
#### 编辑nginx的proxy的优化文件,以后可以直接调用参数
[root@lb01 nginx]# vim /etc/nginx/proxy_params         
        proxy_set_header HOST $host; 
        proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;    
        proxy_connect_timeout 60s; 
        proxy_read_timeout 60s; 
        proxy_send_timeout 60s;
        proxy_buffering on; 
        proxy_buffers 8 4k;
        proxy_buffer_size 4k;
#### 编辑nginx的代理文件
#### 需要用到 ngx_http_upstream_module模块
#### 官网写法
upstream backend {
    server backend1.example.com       weight=5;
    server backend2.example.com:8080;
    server unix:/tmp/backend3;

    server backup1.example.com:8080   backup;
    server backup2.example.com:8080   backup;
}

server {
    location / {
        proxy_pass http://backend;
    }
}
####  实际编辑配置文件写法
[root@lb01 ~]# vim /etc/nginx/conf.d/blog.wzh.com.conf 
upstream blog {
	server 172.16.1.7;
	server 172.16.1.8;
	server 172.16.1.9;
}
server {
        listen  80;
        server_name blog.test.com
                proxy_pass http://blog;
			   include proxy_params;
        }
}
[root@lb01 ~]# vim /etc/nginx/conf.d/zh.wzh.com.conf 
upstream zh {
	server 172.16.1.7;
	server 172.16.1.8;
	server 172.16.1.9;
}
server {
        listen  80;
        server_name zh.test.com;
        location / {
                proxy_pass http://zh;
                include proxy_params;
        }
}
[root@lb01 conf.d]# cat phpmyadmin.com.conf 
upstream phpmyadmin {
        server 172.16.1.7:80;
        server 172.16.1.8:80;
}

server {
        listen  80;
        server_name phpmyadmin.com;
        location / {
                proxy_pass http://phpmyadmin;
                           include proxy_params;
        }
}

####  检查语法
[root@lb01 ~]# nginx -t
#### 开启nginx并加入开机自启
[root@lb01 ~]# systemctl start nginx 
[root@lb01 ~]# systemctl enable nginx 

#### 根据权重分配请求,默认都是1,根据不同的服务器的核数处理能力分配
#### 编辑配置文件
[root@lb01 ~]# vim /etc/nginx/conf.d/zh.wzh.com.conf 
upstream zh {
	server 172.16.1.7 weight=4;
	server 172.16.1.8 weight=2;
	server 172.16.1.9 weight=3;
}
server {
        listen  80;
        server_name zh.test.com;
        location / {
                proxy_pass http://zh;
                include proxy_params;
        }
}
#### 做域名解析,把域名解析在这台代理的ip
window+r 打开运行框,输入drivers,然后点开etc目录用管理员身份打开hosts文件做域名解析
#### 完成后浏览器访问

#### 清空session数据
[root@nfs ~]# redis-cli
127.0.0.1:6379> keys *
 1) "PHPREDIS_SESSION:43f2d9324fda2ecadf50972d66446a37"
 2) "PHPREDIS_SESSION:e374ae84c13c6bef36c98e1e2357a5a7"
 3) "PHPREDIS_SESSION:b61816a8929f3e0fa750d17c2260b844"
 4) "PHPREDIS_SESSION:60d14e7d171cbca65dc3a4c7888ebe8c"
 5) "PHPREDIS_SESSION:97e4df906fe471d672eaa0529df627cc"
 6) "PHPREDIS_SESSION:96140b67cc78661152ea916c826a0b1e"
 7) "PHPREDIS_SESSION:f8276441f31e7570282b83ad79555d58"
 8) "PHPREDIS_SESSION:f827c699cbf62480ed439e7de831e25f"
 9) "PHPREDIS_SESSION:f785b4ba2d385eeb96b31514134a809f"
10) "PHPREDIS_SESSION:ef377e9662c4de189f48291cd8221a48"
127.0.0.1:6379> FLUSHALL
OK
####  再次刷新页面
![](https://img2020.cnblogs.com/blog/2082997/202007/2082997-20200723161646283-634912637.png)


#### 登录之后点记住密码再退出重登录

posted @ 2020-07-23 16:23  王顺子  阅读(838)  评论(0编辑  收藏  举报