编译安装LiteSpeed Memcached

Memcached是高效的对象缓存插件。安装Memcached可以让您的PHP网站响应速度得到很大的提升。如果您使用的是LiteSpeed (OpenLiteSpeed)服务器,那么LiteSpeed Memcached具备了普通Memcached全部的功能,并提供了更高的可用性。如果您在一开始安装LiteSpeed的时候没有选择安装Memcached, 那么之后再安装的时候就需要手动编译安装各个组件了。今天我们就介绍一下如何手工安装LiteSpeed Memcached.  本文作者为香菇肥牛,原文链接为https://qing.su/article/152.html, 转载请注明原文链接。谢谢!

1. 系统环境

我们这里使用Ubuntu 18.04 LTS 64 bit操作系统,采用最新版的OpenLiteSpeed, PHP版本是LsPHP 7.3.

2. 安装LSMCD

LSMCD是LiteSpeed Memcached的守护进程,我们从Litespeed官方github下载安装。

1
2
3
4
5
6
7
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.

1
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.

1
service lsmcd start

如果需要监测lsmcd的运行状态,可以使用telnet.  比如,如果之前设定的lsmcd运行端口为11211, 则执行:

1
2
telnet 127.0.0.1 11211
stats

即可看到lsmcd的运行状态。

3. 安装libmemcached

Memcached在PHP网站中的使用依赖php-pecl-memcached拓展。很遗憾,由于我们使用的PHP不是常规版的PHP, 而是LsPHP, 因此这类拓展无法使用包管理器安装,必须手动编译安装。而php-memcached拓展的安装需要libmemcached库。

首先,去libmemcached网站下载libmemcached安装包。

1
2
3
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

然后编译安装

1
2
./configure
make

make的时候可能会遇到下列报错:

1
2
3
4
5
6
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, 将下面这行(两次出现):

1
if (opt_servers == false)

改成

1
if (! opt_servers)

即可。(https://src.fedoraproject.org/rpms/libmemcached/raw/HEAD/f/libmemcached-build.patch)

然后,重新安装:

1
2
make
make install

如果没有其他报错,则安装完毕。libmemcached默认安装位置为/usr/local/lib/libmemcached.

4. 安装php-memcached拓展

按照上述步骤装好libmemcached之后,就可以安装php-memcached拓展了。这里使用pecl安装。

默认的lsphp不包含pecl, 我们先安装pecl管理器。

1
2
3
cd /usr/local/lsws/lsphp73/bin/
wget http://pear.php.net/go-pear.phar
./lsphp go-pear.phar

这里,我们执行ls, 应该能看到新安装的pecl运行文件了。我们顺便检查一下该目录下是否有phpize, 如果没有phpize, 需要使用下面的命令安装。

1
apt-get install lsphp73-dev

接下来执行下面的命令安装php-memcached拓展。

1
./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), 添加下面的行。

1
extension = memcached.so

最后,重启lsws:

1
/usr/local/lsws/bin/lswsctrl restart

这时,我们新建一个phpinfo.php文件,内容为:

1
2
3
<?php
phpinfo();
?>

并在shell中执行:

1
/usr/local/lsws/lsphp73/bin/lsphp phpinfo.php | grep memcached

如果能看到类似于下面的输出,则说明memcached安装成功了。

 

关于LiteSpeed Memcached的安装就介绍到这里。如果您有任何疑问,欢迎在这里留言,我将尽力解答。本文作者为香菇肥牛,原文链接为https://qing.su/article/152.html, 转载请注明原文链接。谢谢!

13 thoughts on “编译安装LiteSpeed Memcached”

  1. Thanks for another excellent post. Where else could anyone get that
    type of information in such a perfect means of writing?
    I’ve a presentation next week, and I am at the look for such information. 0mniartist asmr

    Reply
  2. It’s remarkable to pay a quick visit this web site and reading
    the views of all friends concerning this post, while I am
    also zealous of getting experience.

    Reply
  3. Hello everyone, it’s my first pay a quick visit at this web page, and article is genuinely fruitful
    in support of me, keep up posting such articles.

    Reply
  4. I’ve learn several just right stuff here. Definitely worth bookmarking
    for revisiting. I surprise how a lot attempt you set to make any such excellent informative
    site.

    Reply
  5. I was curious if you ever thought of changing the structure of your blog?
    Its very well written; I love what youve got to say. But maybe you could a little more
    in the way of content so people could connect with it better.

    Youve got an awful lot of text for only having 1 or 2 pictures.

    Maybe you could space it out better?

    Reply

Leave a Comment