Debian 9源码编译安装memcached以及集成php7扩展

文章目录

Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。Memcached官网:https://memcached.org

一、Memcached服务安装

(1)、Linux系统安装memcached,首先要先安装libevent库。(如果已经安装过了的话请忽略这一部)

  • wget https://github.com/libevent/libevent/releases/download/release-2.1.11-stable/libevent-2.1.11-stable.tar.gz
  • tar -zxvf libevent-2.1.11-stable.tar.gz
  • cd libevent-2.1.11-stable
  • ./configure --prefix=/usr/local/libevent#libevent安装的位置
  • make
  • make install

(2)、编译安装Memcached

  • wget http://www.memcached.org/files/memcached-1.6.6.tar.gz
  • tar -zxvf memcached-1.6.6.tar.gz
  • cd memcached-1.6.6
  • ./configure --with-libevent=/usr/local/libevent/ --prefix=/usr/local/memcached#libevent 如果是apt install 安装的就不需要在此指定,如果是编译安装的必需要指定libevent位置
  • make
  • make install
  • ln -s /usr/local/memcached/bin/memcached /usr/bin/memcached

(3)、设置开机启动

首先从刚解压的源码目录下的scripts目录里面找到memcached.service文件,然后复制到/etc/systemd/system/目录里。我们查看一下这个文件里的内容,注意这两条代码:
1.启动参数:ExecStart=/usr/bin/memcached -p ${PORT} -u ${USER} -m ${CACHESIZE} -c ${MAXCONN} $OPTIONS
可以通过 memcached -h 查看相关说明:
-d选项是启动一个守护进程
-p是设置Memcache监听的端口,默认是11211
-u是运行Memcache的用户
-m是分配给Memcache使用的内存数量,单位是MB,默认值是1024MB
-c选项是最大运行的并发连接数,默认是64,这里按照你服务器的负载量来设定
-P是设置保存Memcache的pid文件
-l是监听的服务器IP地址
-vv 用very verbose模式启动,调试信息和错误输出到控制台
2.EnvironmentFile=/etc/sysconfig/memcached 这个是那个配置文件,这里记录一下这个文件路径和名称。接下来在/etc文件夹中创建sysconfig文件夹 然后在解压的源码目录下的scripts目录里面找memcached.sysconfig,将这个文件复制到/etc/sysconfig/目录里,将文件名称该为memcached。然后我们根据实际情况编辑其中的参数。默认的参数如下:
# These defaults will be used by every memcached instance, unless overridden
# by values in /etc/sysconfig/memcached.
USER=”nobody” ##启动用户,为了安全起见不建议用root账户,我们可以创建一个普通用户(不可登录的用户),例如:useradd memcached -M -s/sbin/nologin 然后将nobody修改为memcached
MAXCONN=”1024″ ##最大连接数
CACHESIZE=”64″##注意这个参数,是分配给Memcache使用的内存数量,单位是MB他的大小不能超过服务器实际内存大小的1/2 超过就会报错,启动不起来。默认参数是64,根据实际情况修改
OPTIONS=”” ##如果只是本机运行不需要远程连接调用的话可以在双引号里加上-l 127.0.0.1参数。若为远程服务调用那个默认不用管了。
# The PORT variable will only be used by memcached.service, not by
# [email protected] services, which will use the xxxxx
PORT=”11211″

设置好后就可以用
systemctl start memcached 启动
systemctl enable memcached 开机启动
systemctl status memcached 查看状态
systemctl stop memcached 停止

二、PHP Memcache 扩展安装

这里说一下pecl中的php的memcache扩展有两个:一个是memcached,另一个是memcache,两者的名称一个有d一个没有。不过memcached的功能更强大一些。
memcached地址:https://pecl.php.net/package/memcached
memcache地址:https://pecl.php.net/package/memcache
那么我这里主要说一下memcached扩展的安装

memcached扩展安装之前的说明

安装依赖

1、memcached扩展需要 libmemcached 客户端库,否则会出现如下错误
checking for libmemcached location… configure: error: memcached support requires libmemcached. Use –with-libmemcached-dir=<DIR> to specify the prefix where libmemcached headers and library are located
ERROR: `/var/tmp/memcached/configure –with-libmemcached-dir=no’ failed
安装libmemcached之前我们还要安装libsasl2-dev build-essential,否则会出现一下报错:
configure: error: no, sasl.h is not available. Run configure with –disable-memcached-sasl to disable this check
直接apt install libsasl2-dev build-essential
接下来编译安装libmemcached

  • wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
  • tar -zxvf libmemcached-1.0.18.tar.gz
  • cd libmemcached-1.0.18
  • ./configure --enable-sasl --with-memcached=/usr/local/memcached --prefix=/usr/local/libmemcached
  • make && make install

2、memcached扩展还需要安装pkg-config,如果没有装的话,编译的时候也会报错
直接:apt install pkg-config

开始编译安装php的memcached扩展

开始安装之前我们要确定自己php版本以及安装路径,可以用whereis php 查询,我这里php版本7.0以上的
安装路径是/usr/bin/ 这里记录一下,后面要用到。所以用的是3.1.5版本的memcached扩展,如果是以下的,可以看一下pecl官网版本的详细说明。
1、开始编译安装

  • https://pecl.php.net/get/memcached-3.1.5.tgz
  • tar -zxvf memcached-3.1.5.tgz
  • cd memcached-3.1.5
  • /usr/bin/phpize
  • ./configure --enable-memcached --with-php-config=/usr/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached --with-zlib-dir=/usr/local/zlib
  • make && make install

成功后会出现Installing shared extensions: /usr/local/php/lib/php/extensions/20090626/
说明就安装成功了
2、最后我们需要把这个扩展添加到php中,打开你的php.ini文件在最后添加以下内容:
extension=memcached.so
如果不知道php.ini文件的位置,可以用php --ini查看
完了之后可以下代码保存到test.php中,代码:
<?php
echo phpinfo();
?>
然后将test.php放到网站根目录里,然后通过浏览器访问如图:

或者直接输入:php -m | grep memcached如果输出memcached怎说明好了。
3、测试php连接memcached
connect(‘localhost’, 11211) or die (“Could not connect”); //连接Memcached服务器
$memcache->set(‘key’, ‘test’); //设置一个变量到内存中,名称是key 值是test
$get_value = $memcache->get(‘key’); //从内存中取出key的值
echo $get_value;
?>
保存成.php文件。名称随便取 让后放到网站根目录。用浏览器访问这个文件如果成功输出test 说明连接成功了。

相关资料:
Memcached 教程|菜鸟教程 https://www.runoob.com/memcached/memcached-tutorial.html
WordPress启用memcached动态缓存,弄了好久终于弄好了 https://www.suanliutudousi.com/2017/09/11/wordpress%E5%90%AF%E7%94%A8memcached%E5%8A%A8%E6%80%81%E7%BC%93%E5%AD%98%EF%BC%8C%E5%BC%84%E4%BA%86%E5%A5%BD%E4%B9%85%E7%BB%88%E4%BA%8E%E5%BC%84%E5%A5%BD%E4%BA%86/
Ubuntu 14.04, libmemcached and SASL support https://blog.memcachier.com/2014/11/05/ubuntu-libmemcached-and-sasl-support/
Memcached及Memcached安全配置——从github被大规模DDos说起 https://www.freebuf.com/column/164643.html