Linux--session&cookis以及memcached服务器搭建

一. session与cookies
Session:存储在服务器端,保存用户名、登陆状态等信息。
Cookies:由服务器下发给客户端,保存在客户端的一个文件里。
保存的内容主要包括:SessionID。
session与cookies相当于服务器与用户之间的通信凭证,session保存在服务器端记录用户的登录信息,cookies保存在用户端.这样的好处就是用户登录服务器提供的服务后,在给定的时间内就不用重复登录,用以提高效率.服务端session的信息保存有一定时限,当然这是为了保证用户信息的安全.由于服务端存在服务器集群,以及Nginx反向代理的轮询制度,使得每一次为用户提供服务的服务器不可能是同一台服务器,所以需要建立一个数据库来记录用户的session信息,并且共享给后端所有集群服务器,保证用户不需要每一次使用服务时,而重复的认证ID信息,有利于提高用户的工作效率.
在这里插入图片描述
步骤
1.PHP的本地Session信息

1.1部署后端LNMP服务器相关软件
注意:以下部署LNMP服务器的操作,需要在两台后端服务器做相同的操作,下面我们以一台Web2服务器(192.168.2.200)为例,对Web1服务器执行相同操作即可。
1.1.1—使用yum安装基础依赖包
yum -y install gcc openssl-devel pcre-devel
1.1.2–源码安装Nginx
tar -xf nginx-1.12.2.tar.gz
cd nginx-1.12.2
./configure \

–with-http_ssl_module
make && make install

1.1.3—安装MariaDB数据库
yum -y install mariadb mariadb-server mariadb-devel
1.1.4—安装PHP
yum -y install php php-mysql php-fpm
1.1.5修改Nginx配置文件(修改默认首页与动静分离)
vim /usr/local/nginx/conf/nginx.conf
location / {
root html;
index index.php index.html index.htm;
}
location ~ .php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME d o c u m e n t r o o t document_root documentrootfastcgi_script_name;
include fastcgi.conf;
2.启动LNMP服务器相关的服务
2.1—启动Nginx服务
这里需要注意的是,如果服务器上已经启动了其他监听80端口的服务软件(如httpd),则需要先关闭该服务,否则会出现冲突。
systemctl stop httpd //如果该服务存在,则关闭该服务
/usr/local/nginx/sbin/nginx
ss -utnlp | grep :80
2.2—启动MySQL服务
systemctl start mariadb
systemctl status mariadb
2.3—启动PHP-FPM服务
systemctl start php-fpm
systemctl status php-fpm
3.部署前端Nginx调度服务器
3.1—使用源码安装nginx软件(如果Nginx软件包已安装可以忽略此步骤)
3.1.1—使用yum安装基础依赖包
yum -y install gcc openssl-devel pcre-devel
3.1.2–源码安装Nginx
tar -xf nginx-1.12.2.tar.gz
cd nginx-1.12.2
./configure \

–with-http_ssl_module
make && make install

3.2—修改Nginx配置文件,实现代理服务器
vim /usr/local/nginx/conf/nginx.conf
… …
upstream webs {
server 192.168.2.100:80;
server 192.168.2.200:80;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://webs;
root html;
index index.php index.html index.htm;
}
}
3.3—重新加载配置文件
/usr/local/nginx/sbin/nginx -s reload(#请先确保nginx是启动状态,否则运行该命令会报错)
3.4—测试环境是否配置成功
浏览器访问测试页面验证。
curl http://192.168.4.5/index.html //查看是否有数据
4.部署测试页面
4.1—部署测试页面(Web1服务器)。
测试页面可以参考lnmp_soft/php_scripts/php-memcached-demo.tar.gz。
cd lnmp_soft/php_scripts/
tar -xf php-memcached-demo.tar.gz
cd php-memcached-demo
cp -r * /usr/local/nginx/html/
4.2—浏览器直接访问后端服务器的测试页面(Web1服务器)。
firefox http://192.168.2.100 //填写账户信息
cd /var/lib/php/session/ //查看服务器本地的Session信息
ls
sess_ahilcq9bguot0vqsjtd84k7244 //注意这里的ID是随机的
cat sess_ahilcq9bguot0vqsjtd84k7244
注意:可用修改index.php和home.php两个文件的内容,添加页面颜色属性,以区别后端两台不同的服务器:。
4.3-部署测试页面(Web2务器)。
测试页面可以参考lnmp_soft/php_scripts/php-memcached-demo.tar.gz。
cd lnmp_soft/php_scripts/
tar -xf php-memcached-demo.tar.gz
cd php-memcached-demo
cp -r * /usr/local/nginx/html/
4.4–浏览器直接访问后端服务器的测试页面(Web2服务器)
firefox http://192.168.2.100 //填写账户信息
cd /var/lib/php/session/ //查看服务器本地的Session信息
ls
sess_ahilcq9bguot0vqsjtd84k7244 //注意这里的ID是随机的
cat sess_ahilcq9bguot0vqsjtd84k7244
注意:可用修改index.php和home.php两个文件的内容,添加页面颜色属性,以区别后端两台不同的服务器:。
4.5–5)浏览器访问前端调度器测试(不同后端服务器Session不一致)。
真实主机使用google浏览器测试。
google-chrome http://192.168.4.5/index.php
//填写注册信息后,刷新,还需要再次注册,说明两台计算机使用的是本地Session
//第二台主机并不知道你再第一台主机已经登录,第一台主机的登录信息也没有传递给第二台主机

5.构建memcached服务
5.1–构建memcached服务
5.1.1—使用yum安装软件包memcached
yum -y install memcached telnet
5.1.2—memcached配置文件(查看即可,不需要修改)
vim /usr/lib/systemd/system/memcached.service
ExecStart=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS
[root@proxy ~]# vim /etc/sysconfig/memcached
PORT=“11211”
USER=“memcached”
MAXCONN=“1024”
CACHESIZE=“64”
OPTIONS=""
5.1.3—启动服务并查看网络连接状态验证是否开启成功:
systemctl start memcached
systemctl status memcached
ss -anptu | grep Memcached
5.2—使用telnet访问memcached服务器
5.2.1—使用telnet连接服务器测试memcached服务器功能,包括增、删、改、查等操作。
telnet 192.168.4.5 11211
Trying 192.168.4.5…
……
##提示:0表示不压缩,180为数据缓存时间,3为需要存储的数据字节数量。
set name 0 180 3 //定义变量,变量名称为name
plj //输入变量的值,值为plj
STORED
get name //获取变量的值
VALUE name 0 3 //输出结果
plj
END
##提示:0表示不压缩,180为数据缓存时间,3为需要存储的数据字节数量。
add myname 0 180 10 //新建,myname不存在则添加,存在则报错
set myname 0 180 10 //添加或替换变量
replace myname 0 180 10 //替换,如果myname不存在则报错
get myname //读取变量
append myname 0 180 10 //向变量中追加数据
delete myname //删除变量
flush_all //清空所有
quit //退出登录

6.PHP实现session共享
配置PHP使用memcached服务器共享Session信息
客户端访问两台不同的后端Web服务器时,Session 信息一致
6.1—为Web服务器安装PHP扩展
6.1.1—为web1主机的PHP添加memcache扩展
yum -y install php-pecl-memcache
systemctl restart php-fpm
6.1.2—为web2主机的PHP添加memcache扩展
yum -y install php-pecl-memcache
systemctl restart php-fpm
6.2—在后端LNMP服务器上部署Session共享
注意:这些操作在两台后端Web服务器上均需要执行,以下操作以Web1(192.168.2.100)服务器为例。
6.2.1—修改PHP-FPM配置文件,并重启服务
注意,因为后端两台web服务器(web1,web2)都需要修改配置文件(下面也web1为例)
vim /etc/php-fpm.d/www.conf //修改该配置文件的两个参数
//文件的最后2行
修改前效果如下:
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
//原始文件,默认定义Sessoin会话信息本地计算机(默认在/var/lib/php/session)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
修改后效果如下:
php_value[session.save_handler] = memcache
php_value[session.save_path] = “tcp://192.168.2.5:11211”
//定义Session信息存储在公共的memcached服务器上,主机参数中为memcache(没有d)
//通过path参数定义公共的memcached服务器在哪(服务器的IP和端口)
11211是memcached的服务端口号,192.168.2.5是反向代理服务器的IP
systemctl restart php-fpm
6.3--------客户端测试
客户端使用浏览器访问两台不同的Web服务器。
操作步骤参考练习一,最终可以获得相关的Session ID信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值