kaywang 发表于 2018-11-4 11:26:02

如何在Ubuntu 16.04上将Redis服务器设置为PHP的会话处理程序

介绍
  Redis是一个开源的键值缓存和存储系统,也称为数据结构服务器,因为它对几种数据类型(如散列,列表,集合和位图等)提供高级支持。它还支持集群,使其在高可用性和可扩展的环境中非常有用。
  在本教程中,我们将看到如何安装和配置一个外部Redis服务器,用作在Ubuntu 16.04上运行的PHP应用程序的会话处理程序。
  会话处理程序负责存储和检索保存到会话中的数据。默认情况下,PHP使用文件这一点。这对于单个服务器工作得很好,但是由于会话信息被绑定到单个服务器,所以具有一些显着的性能和可扩展性限制。
  外部会话处理程序提供了可由多个应用程序服务器使用的共享会话数据的中央位置。创建时,这是重要的可扩展的PHP环境背后负载平衡器 ,因为相同的会话数据将可不管哪个应用服务器提供一个单独的请求。
先决条件
  本教程将使用两个服务器配置会话处理。要跟进,您将需要:

[*]  一个PHP Web服务器正在运行LAMP或LEMP在Ubuntu 16.04。 我们将把此服务器作为网络 。
[*]  第二个,干净的Ubuntu 16.04服务器,其中将安装Redis。我们将把此服务器作为Redis的 。
  你需要有一个非root用户sudo对每台服务器的配置权限。 我们还假设每个服务器都有一个基本的防火墙运行。 您可以按照我们设立这两个要求的Ubuntu 16.04服务器初始设置指南两台服务器上。
第1步:安装Redis服务器和客户端软件
  我们的第一步是在我们的两台机器上安装必要的软件。我们Redis的机器需要一个Redis的服务器。 在我们的网络设备,我们将安装Redis的PHP扩展的会话处理和检测Redis的命令行客户端。
安装Redis服务器
  我们需要做的第一件事就是让我们的Redis的机器上运行Redis的服务器。
  我们将使用由Chris Lea提供的可信PPA存储库的常规Ubuntu软件包管理器。这是必要的,以确保我们得到最新的稳定版本的Redis。
  注:由于安全建议的一般一块,你应该只使用从可信来源的PPA。
  首先,通过运行以下命令来添加PPA存储库:
sudo apt-add-repository ppa:chris-lea/redis-server  按ENTER确认。
  接下来,更新软件包索引并通过键入以下命令安装Redis服务器:
sudo apt-get update  
sudo apt-get install redis-server
  Redis现在应该在您的服务器上安装并运行。通过键入以下内容测试服务正在运行并接受连接:
redis-cli pingRedis server outputPONG  这将连接到端口6379上的本地主机上运行Redis的实例。 你应该得到PONG作为响应。
安装Redis客户端和PHP扩展
  接下来,安装Redis的命令行客户端和Web服务器上的Redis的PHP扩展。我们将使用命令行客户端轻松测试连接和身份验证。我们将使用PHP扩展来存储会话数据。
  更新本地包指数,并通过键入安装在Web服务器上的软件:
sudo apt-get update  
sudo apt-get install redis-tools php-redis
  你现在应该有访问redis-cli工具,虽然你还没有访问服务器进行测试。
第2步:配置Redis接受外部连接
  默认情况下,Redis的只允许连接localhost ,这基本上意味着你只有从安装Redis的服务器内部的访问。我们需要更改此配置以允许来自其他服务器的连接。
  Redis不提供本机加密选项,并假设它已部署到可信对等体的隔离网络。这意味着为了安全地允许外部连接,两个服务器都必须位于隔离网络上,或者您需要以另一种方式保护它们之间的流量。
如果Redis部署到隔离网络…
  如果您的服务器在隔离网络中运行,您可能只需要调整Redis的配置文件以绑定到您的隔离网络IP地址。
  在Redis的服务器,备份和打开Redis的配置文件:
sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.bak  
sudo nano /etc/redis/redis.conf
  查找bind线和追加Redis的服务器的隔离网络IP地址:
  /etc/redis/redis.conf
bind 127.0.0.1 isolated_IP_address  保存并关闭文件。键入以下命令重新启动服务:
sudo systemctl restart redis-server.service  打开对Redis端口的访问:
sudo ufw allow 6379  Redis现在能够接受来自您的隔离网络的连接。
如果Redis未部署到隔离网络…
  对于不孤立或不控制的网络,务必通过其他方式确保流量。有许多选项可确保流量到Redis服务器,包括:

[*]  隧道与安全通道 :您将需要设置来电隧道Redis的服务器和Web服务器上的传出通道上。 Web服务器将连接到本地端口,以便与远程Redis服务进行通信。
[*]  隧道与spiped :Web服务器应该充当spiped客户机。您将需要在每个服务器上创建一个systemd单元文件。 Web服务器将连接到本地端口,以便与远程Redis服务进行通信。
[*]  设置了一个Peer*** *** :两个服务器都将需要对***访问。 Web服务器将能够访问使用其私网IP地址的redis的服务器。
  使用的方法之一以上,配置为您的Redis服务器从您的Web服务器的安全访问。 你需要知道IP地址和您的网络设备将使用连接到的Redis服务的远程计算机上的端口。
  此时,您应该能够安全地从Web服务器访问Redis服务器。
第3步:设置Redis服务器的密码
  要为Redis安装添加额外的安全性层次,建议您设置访问服务器数据的密码。我们将在编辑Redis的配置文件/etc/redis/redis.conf :
sudo nano /etc/redis/redis.conf  找到requirepass指令并将其设置为一个强大的密码。虽然您的Redis流量应该是安全的从外部方,这提供了认证Redis本身。由于Redis速度快,并且不会限制密码尝试,请选择一个强大的复杂密码,以防止强力尝试:
  /etc/redis/redis.conf
requirepass yourverycomplexpasswordhere  保存并在完成后关闭文件。
  重新启动Redis服务以实现更改:
sudo systemctl restart redis-server.service  您的Redis服务器现在应拒绝未经身份验证的请求。
第4步:测试Redis连接和验证
  要测试你的变化预期的工作,连接到从网络机器Redis的服务。
  默认情况下,Redis服务器在本地接口上监听6379,但是上面介绍的每个网络安全选项都以某种方式为外部方修改默认值。我们可以使用redis-cli客户端与-h选项来指定IP地址和-p选项来指定连接到远程服务所需的端口。如果他们使用默认选项(分别为127.0.0.1和6379),则可以省略其中任何一个。
  您使用的值取决于您用于保护网络流量的方法:

[*]  独立的网络 :使用Redis的服务器的隔离网络IP地址。 默认端口Redis的(6379)被使用,所以我们并不需要提到它: redis-cli -h redis_isolated_IP
[*]  安全通道或spiped:使用本地端口隧道远程的Redis服务: redis-cli -p 8000
[*]  Peer***:使用Redis的服务器的*** IP地址: redis-cli -h 10.8.0. 1
  一般形式是:
redis-cli -h ip_to_contact_redis -p port_to_contact_redis  你应该能够从web服务器连接到远程的Redis实例。
  如果您定义了密码,现在尝试访问数据,您应该得到一个AUTH错误:
keys *Web server output(error) NOAUTH Authentication required.  要验证,你只需要运行AUTH命令,为您提供的定义相同的密码/etc/redis/redis.conf文件:
AUTH yourverycomplexpasswordhere  你应该得到一个确定的答复,表明您的凭据被接受。
Web server outputOK  接下来,列出在Redis中设置的键:
keys *  如果这是一个新鲜的Redis服务器,输出应类似于:
Web server output(empty list or set)  这个输出只是意味着你的Redis服务器是空的,这正是我们所期望的。Web服务器尚未配置为使用此服务器的Redis作为会话处理程序。
  通过键入以下命令返回到命令shell:
exit  现在我们已经验证了我们可以成功连接身份验证,我们可以使Redis成为默认会话处理程序。
第5步:将Redis设置为Web服务器上的默认会话处理程序
  现在,我们需要编辑php.ini文件中的Web服务器上修改PHP的默认会话处理程序。此文件的位置将取决于您当前的。
  从默认库安装在Ubuntu 16.04一的LAMP,这通常是/etc/php/7.0/apache2/php.ini 。 对于LEMP在Ubuntu 16.04,该路径通常是/etc/php/7.0/fpm/php.ini 。如果您已验证其中一个位置是正确的,请随时跳过下一部分。
(可选)查找正确的php.ini文件
  如果你不确定你的主要位置php.ini文件,您可以通过使用发现phpinfo()函数。 你所谓的Web服务器上打开一个文件info.php在你的文档根目录,默认情况下会/var/www/html为LAMP和LEMP:
sudo nano /var/www/html/info.php  将以下代码放在文件中:
  /var/www/html/info.php
页: [1]
查看完整版本: 如何在Ubuntu 16.04上将Redis服务器设置为PHP的会话处理程序