我有基于LAMP的PHP&MySql web应用程序托管在新加坡地区的digitalocean独立服务器上。一个PHP服务器+一个远程MySql DB服务器,两者都运行良好。因为应用程序需要读取的内容多于写入的内容,所以我想添加一个memcache服务器。
到目前为止,我已经尝试过:-使用本教程中的这些步骤在2gb液滴上。
现在我有一个带有公共ip:129.x.x.x
和私有ip:10.x.x.x
的单内存缓存服务器,
1-p 11211
2.-m 2048
3.-c 1024
4.-l 127.0.0.1
memcached服务器成功安装并将测试数据缓存在localhost上。但我想在其他远程网络服务器上使用这个
所以我在memcached.conf
文件-l 127.0.0.1
中更改为THIS memcached服务器私有IP -l 10.x.x.x
。
现在,当我检查memcached服务器并键入ps aux | grep memcached
时,它显示:
tcp 0 0 10.x.x.x:11211 *:* LISTEN 3742/memcached
当我检查统计echo "stats settings" | nc 10.x.x.x 11211
时,它显示了memcached服务器的所有内容,并且它正在运行。
出于测试目的,我制作了一个文件test.php
,并保存在PHP服务器上,然后尝试连接。
<?php
$mc = new Memcached();
$mc->addServer("**10.x.x.x**", 11211);
$result = $mc->get("test_key");
if($result) {
echo $result;
} else {
echo "No data on Cache. Please refresh.";
$mc->set("test_key", "test data from Cache!") or die ("Failed to save data at Memcached server");
}
?>
但它总是显示一个HTTP ERROR 500
错误页面,一个"页面在PHP服务器192.x.x.x is currently unable to handle this request
上没有工作错误,但我的其他PHP和MySql应用程序在同一服务器上运行
相同的代码在memcached服务器上成功运行和缓存数据,但在远程PHP服务器上不起作用。
当我尝试telnet 10.x.x.x 11211
时,它正在成功连接,sudo iptables -L
会在任何位置输出INPUT策略ACCEPT。
我试过很多谷歌搜索,但对我没有任何帮助。
检查web服务器错误日志后Class 'Memcached' not found
。为了连接到远程memcached实例,我必须在web服务器中安装memcached php模块。通过键入
apt-get install php5-memcached
并通过添加更改php.ini
extension = memcached.so
,
比phpweb服务器开始连接到远程memcached服务器。如果要将memcached用于会话,请打开php.ini文件并添加
session.save_handler = memcache
session.save_path = 'tcp://10.x.x.x:11211'
最后,重新启动服务器。