Linux中Web环境memcached和redis安装(FOR PHP)

2023-05-16

目录

  • 目录
  • 前言
  • php memcached扩展安装
    • 服务器端安装
    • 客户端安装
    • 设置memcached开机自启脚本
      • 创建脚本
      • 设置服务
      • 服务命令
  • php redis扩展安装
    • redis安装
    • 服务命令
    • 开放redis端口
    • redis手动安装
      • 修改redis配置文件
      • 设置redis开机自启脚本
        • 创建脚本
        • 设置服务
        • 服务命令
    • 安装php的redis扩展

前言

  继上文《Linux中Web环境的搭建LNMP》,在上文的环境下,安装memcachedredis,以及对应的PHP扩展。

php memcached扩展安装

(参考:linux php安装memcached扩展)
(使用root用户进行安装)

服务器端安装

  • 安装libevent 库
cd /home/app/pkg/memcached
tar zxvf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable
./configure --prefix=/usr/local/libevent
make && make install
  • 安装memcached服务器版
cd /home/app/pkg/memcached
tar zxvf memcached-1.4.33.tar.gz
cd memcached-1.4.33
./configure --prefix=/app/env/memcached --with-libevent=/usr/local/libevent
  • 运行
/app/env/memcached/bin/memcached -m 64 -p 11211 -u app -d
ps aux | grep memcached # 查看是否运行成功

客户端安装

  • 安装libmemcached库
cd /home/app/pkg/memcached
tar zxvf libmemcached-1.0.18.tar.gz 
cd libmemcached-1.0.18
./configure --prefix=/app/env/libmemcached
make && make install
  • 安装php-fpm的memcached扩展
cd /home/app/pkg/memcached
tar zxvf phpmemcached-2.2.0.tar.gz
cd phpmemcached-2.2.0
/app/env/php/bin/phpize --with-php-config=/app/env/php/bin/php-config
./configure --with-php-config=/app/env/php/bin/php-config  --with-libmemcached-dir=/app/env/libmemcached --disable-memcached-sasl
make && make install

安装成功提示:

Installing shared extensions:     /app/env/php/lib/php/extensions/no-debug-non-zts-20100525/
  • 为php添加扩展
cd /app/env/php/lib
sudo vim php.ini

php.ini中添加,如下内容:

extension=memcached.so
  • 重启php-fpm
service php-fpm restart
  • 写一个php文件测试一下 test_memcached.php
<?php

    $mem=new Memcached();    //实例化Memcached类
    $server=array(
        array('127.0.0.1',11211),
    );
    $mem->addServers($server);

    $mem->set('name','DreamBoy',15);    设置缓存值,有效时间15秒,如果有效时间设置为0,则表示该缓存值永久存在的(系统重启前)
    // 如果失效值被设置为0(默认),此元素永不过期(但是它可能由于服务端为了给其他新的元素分配空间而被删除)
    echo $mem->get('name');

?>

设置memcached开机自启脚本

创建脚本

cd /etc/init.d/
vim memcached
#! /bin/sh
#
# chkconfig: - 55 45
# description:  The memcached daemon is a network memory cache service.
# processname: memcached
# config: /etc/sysconfig/memcached

# Source function library.
. /etc/rc.d/init.d/functions

PORT=11211
USER=root
MAXCONN=1024
CACHESIZE=128
OPTIONS=""

if [ -f /etc/sysconfig/memcached ];then
    . /etc/sysconfig/memcached
fi

# Check that networking is up.
if [ "$NETWORKING" = "no" ]
then
    exit 0
fi

RETVAL=0
prog="memcached"

start () {
    echo -n $"Starting $prog: "
    # insure that /var/run/memcached has proper permissions
    # chown $USER /var/run/memcached
    daemon /app/env/memcached/bin/memcached -d -p $PORT -u $USER  -m $CACHESIZE -c $MAXCONN -P /var/run/memcached/memcached.pid $OPTIONS
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/memcached
}
stop () {
    echo -n $"Stopping $prog: "
    killproc memcached
    RETVAL=$?
    echo
    if [ $RETVAL -eq 0 ] ; then
        rm -f /var/lock/subsys/memcached
        rm -f /var/run/memcached/memcached.pid
    fi
}

restart () {
    stop
    start
}


# See how we were called.
case "$1" in
    start)
        start
        ;;
    stop)
    stop
    ;;
    status)
    status memcached
    ;;
    restart|reload)
    restart
    ;;
    condrestart)
    [ -f /var/lock/subsys/memcached ] && restart || :
    ;;
    *)
    echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}"
    exit 1
esac

exit $?
chmod +x /etc/init.d/memcached

设置服务

chkconfig memcached on

查看服务是否开启成功

chkconfig --list memcached
# memcached         0:off   1:off   2:on    3:on    4:on    5:on    6:off

服务命令

service memcached start  
service memcached stop  
service memcached restart  
service memcached reload  

/etc/init.d/memcached start  
/etc/init.d/memcached stop  
/etc/init.d/memcached restart  
/etc/init.d/memcached reload

php redis扩展安装

(参考:Linux下redis安装与使用、linux 添加开机自启动脚本)
(使用root用户进行安装)

redis安装

cd /app/env/
mkdir redis
cd /home/app/pkg/redis
tar zxf redis-3.2.9.tar.gz
cd redis-stable/
make
cd src/
make PREFIX=/app/env/redis/ install
cd /home/app/pkg/redis/redis-stable/utils
./install_server.sh
# 选择默认端口
6379
# 为端口6379设置配置文件的位置(此时配置文件中daemonize为yes,即以以守护进程的方式运行)
/app/env/redis/redis_6379.conf
# 为端口6379设置redis日志路径
/app/log/redis/redis_6379.log
# 设置配置文件中dir值,默认为redis-server启动时会在当前目录生成或读取dump.rdb,这里设置为绝对路径
/app/env/redis/lib/6379
# 设置redis-server服务的路径
/app/env/redis/bin/redis-server

在这种安装方式的情况下,redis_6379脚本将自动生成在/etc/init.d/目录下,作为服务存在,并且设置为系统开启自动运行的脚本。

chkconfig --list redis_6379
redis_6379      0:off   1:off   2:on    3:on    4:on    5:on    6:off

服务命令

service redis_6379 start
service redis_6379 stop
service redis_6379 restart
service redis_6379 status

/etc/init.d/redis_6379 start  
/etc/init.d/redis_6379 stop  
/etc/init.d/redis_6379 restart  
/etc/init.d/redis_6379 status

开放redis端口

如果redis需要作为远程服务进行使用时,需要开放redis服务的端口(默认端口为:6379),如下:

vim /etc/sysconfig/iptables

在文件中添加:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 6379 -j ACCEPT

重启防火墙:

service iptables restart

redis手动安装

这一部分可以跳过,这里当做额外学习进行记录而已!!!
另一种安装方式:

cd /home/app/pkg/redis
tar zxf redis-3.2.9.tar.gz
cd redis-stable/
make
cd /app/env/
mkdir redis
cp /home/app/pkg/redis/redis-stable/src/redis-server redis/
cp /home/app/pkg/redis/redis-stable/src/redis-benchmark redis/
cp /home/app/pkg/redis/redis-stable/src/redis-cli redis/
cp /home/app/pkg/redis/redis-stable/redis.conf redis/
cd redis/

启动redis服务:

./redis-server redis.conf

测试redis服务:

./redis-cli
> set name test
> get name

修改redis配置文件

在这种情况下,建议修改下配置文件的内容:

cd /app/env/redis
sudo vim redis.conf
# 以守护进程的方式运行
daemonize yes
# 默认的话redis-server启动时会在当前目录生成或读取dump.rdb,这里修改为绝对路径
dir /app/env/redis

设置redis开机自启脚本

创建脚本

cd /etc/init.d/
vim redis
#! /bin/sh
#
# chkconfig: - 55 45
# description: Starts,stops and restart the redis-server
# Ver:1.1  
# Write by ND chengh(200808)
# usage: ./script_name -p [port] {start|stop|status|restart}
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check networking is up.

[ "$NETWORKING" = "no" ] && exit 0
RETVAL=0
REDIS_PORT=6379
PID=
if [ "$1" = "-p" ]; then
    REDIS_PORT=$2
    shift 2
fi
REDIS_DIR="/app/env/redis"
REDIS="${REDIS_DIR}/redis-server"
PROG=$(basename $REDIS)
CONF="${REDIS_DIR}/redis-${REDIS_PORT}.conf"
if [ ! -f $CONF ]; then
   if [ -f "${REDIS_DIR}/redis.conf" ];then
      CONF="${REDIS_DIR}/redis.conf"
   else
      echo -n $"$CONF not exist.";warning;echo
      exit 1
   fi
fi
PID_FILE=`grep "pidfile" ${CONF}|cut -d ' ' -f2`
PID_FILE=${PID_FILE:=/var/run/redis.pid}
LOCKFILE="/var/lock/subsys/redis-${REDIS_PORT}"
if [ ! -x $REDIS ]; then
    echo -n $"$REDIS not exist.";warning;echo
    exit 0
fi

start() {
    echo -n $"Starting $PROG: "
    $REDIS $CONF
    RETVAL=$?
    if [ $RETVAL -eq 0 ]; then
        success;echo;touch $LOCKFILE
    else
        failure;echo
    fi
    return $RETVAL
}
stop() {
    echo -n $"Stopping $PROG: "
    if [ -f $PID_FILE ] ;then
       read PID <  "$PID_FILE"
    else
       failure;echo;
       echo -n $"$PID_FILE not found.";failure;echo
       return 1;
    fi
    if checkpid $PID; then
     kill -TERM $PID >/dev/null 2>&1
        RETVAL=$?
        if [ $RETVAL -eq 0 ] ;then
                success;echo 
                echo -n "Waiting for Redis to shutdown .."
         while checkpid $PID;do
                 echo -n "."
                 sleep 1;
                done
                success;echo;rm -f $LOCKFILE
        else
                failure;echo
        fi
    else
        echo -n $"Redis is dead and $PID_FILE exists.";failure;echo
        RETVAL=7
    fi
    return $RETVAL
}
restart() {
    stop
    start
}
rhstatus() {
    status -p ${PID_FILE} $PROG
}
hid_status() {
    rhstatus >/dev/null 2>&1
}
case "$1" in
    start)
        hid_status && exit 0
        start
        ;;
    stop)
        rhstatus || exit 0
        stop
        ;;
    restart)
        restart
        ;;
    status)
        rhstatus
        RETVAL=$?
        ;;
    *)
        echo $"Usage: $0 -p [port] {start|stop|status|restart}"
        RETVAL=1
esac
exit $RETVAL
chmod +x /etc/init.d/redis

设置服务

chkconfig redis on

查看服务是否开启成功

chkconfig --list redis
# redis             0:off   1:off   2:on    3:on    4:on    5:on    6:off

服务命令

service redis start
service redis stop
service redis restart
service redis status

/etc/init.d/redis start  
/etc/init.d/redis stop  
/etc/init.d/redis restart  
/etc/init.d/redis status

安装php的redis扩展

cd /home/app/pkg/redis
tar zxf phpredis-2.2.4.tar.gz
cd phpredis-2.2.4
/app/env/php/bin/phpize --with-php-config=/app/env/php/bin/php-config
./configure --with-php-config=/app/env/php/bin/php-config
make && make install

安装成功提示:

Installing shared extensions:     /app/env/php/lib/php/extensions/no-debug-non-zts-20100525/

为php添加扩展

cd /app/env/php/lib
sudo vim php.ini

在php.ini中添加,如下内容:

extension=redis.so

重启php-fpm

service php-fpm restart

写一个php文件测试一下 test_redis.php

<?php  
    $redis = new redis();
    $redis->connect('127.0.0.1', 6379);  
    $result = $redis->set('test',"11111111111");
    var_dump($result);    //结果:bool(true)
    $result = $redis->get('test');
    var_dump($result);   //结果:string(11) "11111111111"
?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux中Web环境memcached和redis安装(FOR PHP) 的相关文章

  • linux下写入后崩溃

    如果我使用 write 将一些数据写入磁盘上的文件会发生什么 但我的应用程序在刷新之前崩溃了 如果没有系统故障 是否可以保证我的数据最终会刷新到磁盘 如果您正在使用write 并不是fwrite or std ostream write 那
  • 在 Spring 4 中干掉通用的 RedisTemplate

    我读到你可以拥有 Autowired从 Spring 4 开始泛型 这太棒了 我有一个摘要RedisService我想参加的课程 Autowired一个通用的 RestTemplate 如下所示 public abstract class
  • 如何使用 echo 写入非 ASCII 字符?

    如何写非ASCII http en wikipedia org wiki ASCII使用 echo 的字符 是否有转义序列 例如 012或类似的东西 我想使用以下方法将 ASCII 字符附加到文件中 echo gt gt file 如果您关
  • docker-compose:容器之间的 Redis 连接被拒绝

    我正在尝试设置一个 docker compose 文件 该文件旨在替换运行多个进程 RQ 工作线程 RQ 仪表板和 Flask 应用程序 的单个 Docker 容器解决方案导师 http supervisord org 主机系统是 Debi
  • 用于编辑 /etc/sudoers 文件的正则表达式模式

    我想删除 etc sudoers 文件中的 uncommnet 轮组 那么我应该使用什么正则表达式模式 cat etc sudoers Allows members of the sys group to run networking so
  • Fortran 中的共享库,最小示例不起作用

    我试图了解如何在 Linux 下的 Fortran 中动态创建和链接共享库 我有两个文件 第一个 liblol f90 看起来像这样 subroutine func print lol end subroutine func 我用它编译gf
  • 未找到 Gem 命令

    我已经在 Ubuntu 10 10 32 位上安装了 gem apt get install gem y 但当我尝试跑步时 gem install something gem 我收到未找到命令的错误 bash gem command not
  • 如何配置Lettuce Redis集群异步连接池

    我正在配置我的生菜重新分配池 当我按照官方文档配置时 连接池无法正常初始化 无法获取连接 官方文档指出 RedisClusterClient clusterClient RedisClusterClient create RedisURI
  • 如何在 Linux 中重新添加 unicode 字节顺序标记?

    我有一个相当大的 SQL 文件 它以 FFFE 的字节顺序标记开头 我使用 unicode 感知的 linux 分割工具将此文件分割成 100 000 行块 但是当将这些传递回窗口时 它确实not与第一个部分以外的任何部分一样 只是它具有
  • 如何从远程 ssh 连接上运行的 tmux(复制模式)复制到本地剪贴板

    我通过 OS X 上的 VirtualBox 运行 Linux 我通过在无头状态下运行虚拟机 然后使用端口转发 sshing 到 Linux 机器来实现这一点 现在 无论复制到我的虚拟机上的剪贴板 我都可以粘贴到我的远程 ssh 会话上 但
  • 运行此处编译的 C 程序会导致在另一台服务器上找不到 GLIBC 库错误 - 是我的错还是他们的错?

    此处编译的 C 程序在我们的 Ubuntu 服务器上运行良好 但是当其他人尝试在他们的特定 Linux 服务器上运行它时 他们会收到以下错误 myprog install lib tls libc so 6 version GLIBC 2
  • ubuntu 的 CSS 更少(并且自动编译)? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我尝试过 simples 但现在 l
  • Python将文件从Linux复制到WIndows

    我正在构建一个网站 该网站有一个表单 可以捕获用户数据并在用户数据上运行一些cgi cgi 的第一步是需要将文件从 Linux Web 服务器复制到 Windows 计算机 服务器将使用 Active Directory 角色帐户作为复制凭
  • 裸机交叉编译器输入

    裸机交叉编译器的输入限制是什么 比如它不编译带有指针或 malloc 的程序 或者任何需要比底层硬件更多的东西 以及如何才能找到这些限制 我还想问 我为目标 mips 构建了一个交叉编译器 我需要使用这个交叉编译器创建一个 mips 可执行
  • 如何列出 nginx 中的所有虚拟主机

    有没有一个命令可以列出 CentOS 上 nginx 下运行的所有虚拟主机或服务器 我想将结果通过管道传输到文本文件以用于报告目的 我正在寻找与我用于 Apache 的命令类似的命令 apachectl S 2 gt 1 grep 端口 8
  • 在 Spring Boot 中重新加载/刷新缓存

    我正在使用 Spring Boot 对于缓存 我使用 Ehcache 到目前为止一切正常 但现在我必须重新加载 刷新 那么我该如何执行此操作 以便我的应用程序不会出现任何停机时间 我在Spring Ehcache中尝试了很多方法 但它不起作
  • 如何在perl中使用O_ASYNC和fcntl?

    我想使用 O ASYNC 选项 当管道可以读取时 SIGIO 的处理程序将运行 但以下代码不起作用 任何人都可以帮助我吗 bin env perl use Fcntl SIG IO sub print catch SIGIO n my fl
  • 如何使用 go1.6.2 构建 linux 32 位

    有没有任何组合GOARCH and GOOS我可以设置哪些值来构建 ELF 32 位二进制文 件 GOOS linux and GOARCH 386 更多示例 架构 32 bit gt GOARCH 386 64 bit gt GOARCH
  • 在用户程序中使用 或在驱动程序模块代码中使用 ...这有关系吗?

    我正在开发一个设备驱动程序模块和关联的用户库来处理ioctl 来电 该库获取相关信息并将其放入一个结构中 该结构被传递到驱动程序模块中并在那里解压 然后进行处理 我省略了很多步骤 但这就是总体思路 一些数据通过结构体传递ioctl is u
  • 查找并删除超过 x 天的文件或文件夹

    我想删除超过 7 天的文件和文件夹 所以我尝试了 17 07 14 email protected cdn cgi l email protection find tmp mindepth 1 maxdepth 1 ctime 7 exec

随机推荐

  • Struts2框架自学之路——Action获取表单数据的方式以及表单数据的封装

    目录 目录Action获取表单数据的方式 通过ActionContext类获取使用ServletActionContext类获取通过特定接口访问在Action中操作域对象 Action中原始方式封装表单数据Struts2中表单数据的封装 属
  • Struts2框架自学之路——值栈

    目录 目录Servlet和Action的区别什么是值栈获取值栈对象值栈的内部结构向值栈存放数据 向值栈存放对象向值栈存放List集合 从值栈获取数据 获取字符串获取对象获取List集合其他操作 EL表达式获取值栈数据 Servlet和Act
  • Struts2框架自学之路——拦截器

    目录 目录Struts2拦截器概述重要知识点自定义拦截器 拦截器的结构自定义登录拦截器 创建登录访问的首页登录页面以及登录操作添加登录拦截器功能 Struts2拦截器概述 Struts2框架封装了很多功能 xff0c 而这些功能大多在拦截器
  • Linux简介及系统安装

    目录 目录Linux简介 Linux的应用Linux与Windows的不同字符界面的优势 Linux系统安装 VMware简介虚拟机的新建与设置注意点Linux的系统分区安装Linux系统Linux系统的安装日志 Linux简介 Linux
  • Linux常用命令

    目录 目录命令基本格式文件处理命令 目录或文件处理Linux中常见目录链接命令 搜索命令 文件搜索命令命令搜索命令字符串搜索命令find命令与grep命令的区别 帮助命令压缩与解压缩命令关机和重启命令其他常用命令 挂载命令用户登录查看和用户
  • 对php-fpm的理解重述

    目录 目录CGI的出现FastCGIphp fpm摘录 FPM的请求处理流程nginx转发请求给FPM 参考 CGI的出现 早期的Web服务器只能处理HTML等静态文件 xff0c 随着PHP等动态语言的出现 xff0c Web Serve
  • Shell编程——基础入门

    目录 目录Shell概述 Shell是什么Shell的分类 脚本执行方式 echo输出命令第一个脚本 Bash的基本功能 命令别名与快捷键历史命令 history命令历史命令的调用命令与文件补全 输入输出重定向 输出重定向输入重定向 多命令
  • Linux命令之<cp命令>

    cp命令用来复制文件或者目录 xff0c 是Linux系统中最常用的命令之一 一般情况下 xff0c shell会设置一个别名 xff0c 在命令行下复制文件时 xff0c 如果目标文件已经存在 xff0c 就会询问是否覆盖 xff0c 不
  • PHPer的进阶探索之旅

    目录 目录前言魔术常量PHP常量详解define和const的区别PHP中的闭包PSR 规范PHP命令空间Web性能优化与HTTP2 前言 作为一个PHPer xff0c 一直认为Java与PHP都 差不多 xff0c 尽管身边的人会说大型
  • Linux下的VIM编辑器

    目录 目录VIM编辑器的概述VIM编辑器的操作模式vim命令的使用操作模式的命令 底行模式的常用指令命令模式的常用指令VIM键位指令图 VIM编辑器的概述 VIM其实VI编辑器的升级版本 VIM相对于VI xff0c 增强的功能 xff1a
  • Linux中的磁盘管理

    目录 目录磁盘管理命令向服务器添加硬盘磁盘分区 分区模式之MBR分区分区模式之GPT分区 分区操作 Linux中的MBR分区Linux中的GPT分区 分区格式化操作挂载分区Linux中的swap分区 磁盘管理命令 xff08 1 xff09
  • Linux中的用户管理

    目录 目录概述关于用户组的配置文件关于用户的配置文件用户和用户组的基本命令 用户组操作用户操作 用户和用户组的进阶命令 主要组与附属组 其他命令 概述 使用操作系统的人 xff0c 我们称之为用户 在Linux中允许多个不同用户同时登录同一
  • Linux中的计划任务Crontab

    目录 目录介绍安装并检查Crontab服务入门栗子Crontab的基本组成 用户任务调度 crontab命令的使用及相关文件Crontab的任务配置格式 系统任务调度系统级任务调度与用户级任务调度 注意事项参考 介绍 Crontab是什么
  • MySQL易忘常用的知识点

    目录 目录前言WHEREDISTINCTGROUP BYSELECT语句完整的执行顺序NOT NULLNULL和default默认值MySQL中文字节问题关于MYSQL Incorrect string value参考 前言 这里介绍MyS
  • MySQL深度掌握之路

    目录 目录前言知识点 前言 知识点 MySQL要求AUTO INCREMENT列必须有某种索引 xff0c 如果没有索引 xff0c 那么表的定义就是不合法的 任何一个PRIMARY KEY列必须是NOT NULL的 如果定义没有设置为NO
  • Linux中Web环境的搭建LNMP

    目录 目录环境搭建准备 为Linux创建后续使用的用户XShell的上传下载上传安装包 Web服务器的搭建 目录的创建php fpm编译安装 安装GCC安装libxml2和libxml2 devel包安装BZip2包安装libcurl包安装
  • 微信第三方小程序授权开发之旅

    目录 目录开发准备开发流程注意事项 开发准备 授权方AppId第三方AppId 开发流程 注意事项 开发过程中 xff0c 处于测试阶段 xff08 未全网发布 xff09 xff0c 需要在微信第三方平台中设置授权测试公众号列表 xff0
  • Linux中的网络管理——计算机网络基础

    目录 目录OSI七层网络模型TCPIP协议四层模型OSI模型与TCPIP模型的比较IP地址 IP地址分类子网掩码 端口DNS DNS服务域名DNS查询 DNS查询过程DNS查询类型 网关 OSI七层网络模型 ISO OSI七层模型 需要说明
  • 在MySQL中使用MD5加密【入门体验】

    什么是MD5 xff1f MD5信息摘要算法 英语 MD5 Message Digest Agorithm xff0c 一种被广泛使用的密码散列函数 xff0c 可以产生出一个128位 16字节 的散列值 hash value xff0c
  • Linux中Web环境memcached和redis安装(FOR PHP)

    目录 目录前言php memcached扩展安装 服务器端安装客户端安装设置memcached开机自启脚本 创建脚本设置服务服务命令 php redis扩展安装 redis安装服务命令开放redis端口redis手动安装 修改redis配置