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)
#### 登录之后点记住密码再退出重登录