使用oneinstack安装的环境,但memcached默认没有启动。不知道是不是我什么地方操作出现问题了,不过当前还是要启动memcached,是否是操作问题待以后使用新的vps时再看。

1、查看memcached是否启动:

ps -ef |grep memcached

如果没有返回进程则没有启动。

telnet 127.0.0.1 11211

显示连接被拒绝也是没有启动的表现。

2、启动memcached

执行:

systemctl start memcached

没有生效。

查看状态:

systemctl status memcached.service -l

输出:

[/usr/lib/systemd/system/memcached.service:21] Invalid environment assignment, ignoring: OPTIONS="-l 127.0.0.1"

提示的是环境变量OPTIONS无效:

编辑/usr/lib/systemd/system/memcached.service文件:

vim /usr/lib/systemd/system/memcached.service

OPTIONS环境变量默认为:

Environment=OPTIONS="-l 127.0.0.1"

修改为:

Environment="OPTIONS=-l 127.0.0.1"

继续启动:

systemctl daemon-reload
systemctl start memcached

这次可以了。

更新:官方不建议直接修改 memcached.service 配置文件,因为升级软件包时可能会被覆盖。官方建议使用 systemctl edit 命令创建一个自定义的配置文件来覆盖默认配置。可以按照以下步骤操作:

运行以下命令创建一个覆盖文件:

systemctl edit memcached.service

在编辑器中添加以下内容:

[Service]
Environment="OPTIONS=-l 127.0.0.1"

3、测试缓存

创建一个test.php

<?php
$m = new Memcached();
$m->addServer( '127.0.0.1', 11211 );
$m->set( 'foo', 100 );
echo $m->get( 'foo' ) . "\n";

执行:

php -f test.php

如果能输出 100 表示缓存正常。

3、其他:

3.1 查看是否开机自启动:

systemctl is-enabled memcached
# 输出:enabled,说明已经设置了开机自启

3.2 手动启动(重启失效)。

执行:

/usr/local/memcached/bin/memcached -d -l 127.0.0.1 -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached.pid

这个生效了。

  • -d 以daemon方式运行,将程序放入后台
  • -l 监听的ip地址,127.0.0.1是本机,当然也可以写上你的服务器IP,如:10.0.0.10,这是我服务器的IP地址,如果你需要多个服务器都能够读取这台memcached的缓存数据,那么就必须设定这个ip
  • -p 监听的TCP端口
  • -u memcached的运行用户,我设定的是memcached
  • -m memcached可以使用的最大内存数量
  • -c memcached同时可以接受的最大的连接数
  • -P memcached的pid文件路径