文章来源:https://qing.su/article/152.html
Memcached是高效的对象缓存插件。安装Memcached可以让您的PHP网站响应速度得到很大的提升。如果您使用的是LiteSpeed (OpenLiteSpeed)服务器,那么LiteSpeed Memcached具备了普通Memcached全部的功能,并提供了更高的可用性。如果您在一开始安装LiteSpeed的时候没有选择安装Memcached, 那么之后再安装的时候就需要手动编译安装各个组件了。今天我们就介绍一下如何手工安装LiteSpeed Memcached.
1. 系统环境
我们这里使用Ubuntu 18.04 LTS 64 bit操作系统,采用最新版的OpenLiteSpeed, PHP版本是LsPHP 7.3.
2. 安装LSMCD
LSMCD是LiteSpeed Memcached的守护进程,我们从Litespeed官方github下载安装。
apt-get install git build-essential zlib1g-dev libexpat1-dev openssl libssl-dev libsasl2-dev libpcre3-dev -y
git clone https://github.com/litespeedtech/lsmcd.git
cd lsmcd
./fixtimestamp.sh
./configure CFLAGS=" -O3" CXXFLAGS=" -O3"
make
make install
安装完毕后,需要配置lsmcd. 首先,我们设定lsmcd的用户组,这里需要和lsphp的运行用户设定一致。如果您安装lsphp时没有指定过,那么这里应该是nobody.
chown -R nobody /usr/local/lsmcd
lsmcd的配置文件位置为/usr/local/lsmcd/conf/node.conf 如果需要,您可以编辑这个文件,并设定为符合您需求的值。具体的配置选项说明可以参考这里。https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:lsmcd:configuration
最后,启动lsmcd.
service lsmcd start
如果需要监测lsmcd的运行状态,可以使用telnet. 比如,如果之前设定的lsmcd运行端口为11211, 则执行:
telnet 127.0.0.1 11211
stats
即可看到lsmcd的运行状态。
3. 安装libmemcached
Memcached在PHP网站中的使用依赖php-pecl-memcached拓展。很遗憾,由于我们使用的PHP不是常规版的PHP, 而是LsPHP, 因此这类拓展无法使用包管理器安装,必须手动编译安装。而php-memcached拓展的安装需要libmemcached库。
首先,去libmemcached网站下载libmemcached安装包。
wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
tar zxvf *.gz
cd libmemcached-1.0.18
然后编译安装
./configure
make
make的时候可能会遇到下列报错:
clients/memflush.cc:42:22: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
if (opt_servers == false)
^~~~~
clients/memflush.cc:51:24: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
if (opt_servers == false)
^~~~~
这是由于编译器版本问题导致的,我们编辑文件clients/memflush.cc, 将下面这行(两次出现):
if (opt_servers == false)
改成
if (! opt_servers)
即可。(https://src.fedoraproject.org/rpms/libmemcached/raw/HEAD/f/libmemcached-build.patch)
然后,重新安装:
make
make install
如果没有其他报错,则安装完毕。libmemcached默认安装位置为/usr/local/lib/libmemcached.
4. 安装php-memcached拓展
按照上述步骤装好libmemcached之后,就可以安装php-memcached拓展了。这里使用pecl安装。
默认的lsphp不包含pecl, 我们先安装pecl管理器。
cd /usr/local/lsws/lsphp73/bin/
wget http://pear.php.net/go-pear.phar
./lsphp go-pear.phar
这里,我们执行ls, 应该能看到新安装的pecl运行文件了。我们顺便检查一下该目录下是否有phpize, 如果没有phpize, 需要使用下面的命令安装。
apt-get install lsphp73-dev
接下来执行下面的命令安装php-memcached拓展。
./pecl install memcached
在配置步骤,系统会提示询问libmemcached directory, 其默认值为no, 我们需要指明libmemcached安装目录/usr/local/include/libmemcached. (如果这里一直出问题可以尝试改成yes)
如果安装成功,系统会自动生成memcached.so文件。这时需要编辑php.ini文件(/usr/local/lsws/lsphp73/etc/php/7.3/litespeed/php.ini), 添加下面的行。
extension = memcached.so
最后,重启lsws:
/usr/local/lsws/bin/lswsctrl restart
这时,我们新建一个phpinfo.php文件,内容为:
<?php
phpinfo();
?>
并在shell中执行:
/usr/local/lsws/lsphp73/bin/lsphp phpinfo.php | grep memcached
如果能看到类似于下面的输出,则说明memcached安装成功了。