installation - 在Webfaction上设置Redis

标签 installation redis webfaction

Redis共享托管帐户上设置Webfaction数据库需要执行哪些步骤?

最佳答案

介绍

由于Webfaction服务器的特殊环境限制,安装说明并不像它们那样简单。不过,最后您将拥有一个功能齐全的Redis服务器,即使重新启动后它也可以保持运行状态。大约半年前,我通过以下过程亲自安装了Redis,此后一直运行良好。只是警告一下,半年不是很长的时间,尤其是因为服务器没有被大量使用。

这些说明包括五个部分:安装,测试,启动服务器,管理服务器和保持服务器运行。

安装

登录到您的Webfaction Shell

ssh foouser@foouser.webfactional.com

Redis download site下载最新的Redis。
> mkdir -p ~/src/
> cd ~/src/
> wget http://download.redis.io/releases/redis-2.6.16.tar.gz
> tar -xzf redis-2.6.16.tar.gz
> cd redis-2.6.16/

在制作之前,请先查看您的服务器Linux 32或64位。安装脚本at least on Webfaction's CentOS 5 machines不能很好地处理32位环境。位命令是uname -m。如果Linux是32位,则结果为i686,如果是64位,则结果为x86_64。有关详细信息,请参见此answer
> uname -m
i686

如果您的服务器是64位(x86_64),则只需简单地进行即可。
> make

但是,如果您的服务器是32位(i686),则您必须做一点额外的工作。有一个make 32bit命令,但是会产生一个错误。在安装脚本中编辑一行以使make 32bit起作用。
> nano ~/src/redis-2.6.16/src/Makefile

从这里更改线214
$(MAKE) CFLAGS="-m32" LDFLAGS="-m32"

对此
$(MAKE) CFLAGS="-m32 -march=i686" LDFLAGS="-m32 -march=i686"

并保存。然后运行带有32位标志的make。
> cd ~/src/redis-2.6.16/  ## Note the dir, no trailing src/
> make 32bit

可执行文件已创建到目录~/src/redis-2.6.16/src/中。可执行文件包括redis-cliredis-serverredis-benchmarkredis-sentinel

测试(可选)

如安装输出所示,最好通过运行测试来确保一切正常。
Hint: To run 'make test' is a good idea ;)

不幸的是,测试要求安装tlc8.6.0,这至少在机器web223上不是默认设置。因此,您必须首先从源代码安装它。参见Tcl/Tk installation notescompiling notes
> cd ~/src/
> wget http://prdownloads.sourceforge.net/tcl/tcl8.6.0-src.tar.gz
> tar -xzf tcl8.6.0-src.tar.gz
> cd tcl8.6.0-src/unix/
> ./configure --prefix=$HOME
> make
> make test # Optional, see notes below
> make install

使用make test测试Tcl将花费时间,并且由于WebFaction的环境限制而将失败。我建议你跳过这个。

现在我们已经安装了Tlc,我们可以运行Redis测试了。测试将花费很长时间,并且会暂时使用大量内存。
> cd ~/src/redis-2.6.16/
> make test

测试完成后,您就可以继续了。

启动服务器

首先,通过Webfaction Control Panel(自定义应用程序(在端口上监听))创建自定义应用程序。将其命名为fooredis。请注意,如果Redis仅在本地使用(即从同一主机使用),则无需为该应用程序创建域或网站。

其次,记下为该应用程序提供的套接字端口号。假设示例为23015。

将先前编译的可执行文件复制到应用程序的目录中。您可以选择复制全部或仅复制所需的内容。
> cd ~/webapps/fooredis/
> cp ~/src/redis-2.6.16/src/redis-server .
> cp ~/src/redis-2.6.16/src/redis-cli .

也复制示例配置文件。您将很快对其进行修改。
> cp ~/src/redis-2.6.16/redis.conf .

现在Redis已经可以运行了。虽然有几个问题。首先,默认的Redis端口6379可能已在使用中。其次,即使端口是空闲的,是的,您也可以启动服务器,但是在退出 shell 程序的同时它将停止运行。对于第一个,必须编辑redis.conf,对于第二个,您需要一个守护程序,该守护程序也可以通过编辑redis.conf来解决。

Redis可以在the daemon mode中运行。为此,您需要设置一个守护程序存储其进程ID,PID的位置。通常,pidfiles存储在/ var / run /中,但是由于环境限制,您必须在主目录中为其选择一个位置。因为稍后在“管理服务器”部分中说明了一个原因,所以一个不错的选择是将pidfile与可执行文件放在同一目录下。您不必自己创建文件,Redis会自动为您创建文件。

现在打开redis.conf进行编辑。
> cd ~/webapps/fooredis/
> nano redis.conf

按照以下方式更改配置。
  • daemonize no-> daemonize yes
  • pidfile /var/run/redis.pid-> pidfile /home/foouser/webapps/fooredis/redis.pid
  • port 6379-> port 23015

  • 现在终于启动Redis服务器。指定conf文件,以便Redis侦听正确的端口并作为守护程序运行。
    > cd ~/webapps/fooredis/
    > ./redis-server redis.conf
    > 
    

    看到它运行。
    > cd ~/webapps/fooredis/
    > ./redis-cli -p 23015
    redis 127.0.0.1:23015> SET myfeeling Phew.
    OK
    redis 127.0.0.1:23015> GET myfeeling
    "Phew."
    redis 127.0.0.1:23015> (ctrl-d)
    >
    

    如果需要,请停止服务器。
    > ps -u $USER -o pid,command | grep redis
      718 grep redis
    10735 ./redis-server redis.conf
    > kill 10735
    

    要么
    > cat redis.pid | xargs kill
    

    管理服务器

    为了便于使用并作为下一部分的准备工作,请编写一个脚本来帮助打开客户端以及启动,重新启动和停止服务器。一个简单的解决方案是编写一个makefile。编写makefile时,请记住使用制表符而不是空格。
    > cd ~/webapps/fooredis/
    > nano Makefile
    
    # Redis Makefile
    client cli:
        ./redis-cli -p 23015
    
    start restart:
        ./redis-server redis.conf
    
    stop:
        cat redis.pid | xargs kill
    

    这些规则是不言自明的。关于第二条规则的特殊之处在于,在守护程序模式下,如果已经运行一个进程,则调用./redis-server不会创建新进程。

    第三条规则中有一些悄悄的智慧。如果redis.pid没有存储在fooredis目录下,而是存储在/var/run/redis.pid下,那么停止服务器并不是那么容易。如果同时运行多个Redis实例,则尤其如此。

    执行规则:
    > make start
    

    保持服务器运行

    现在,您有一个在守护程序模式下运行的Redis实例,该实例使您无需停止即可退出Shell。这还不够。如果进程崩溃怎么办?如果服务器计算机重新启动怎么办?要覆盖这些内容,您必须创建两个cronjobs
    > export EDITOR=nano
    > crontab -e
    

    添加以下两行并保存。
    */5 * * * * make -C ~/webapps/fooredis/ -f ~/webapps/fooredis/Makefile start
    @reboot make -C ~/webapps/fooredis/ -f ~/webapps/fooredis/Makefile start
    

    第一个确保每五分钟运行一次fooredis。如上所述,如果已在运行,则不会启动新进程。第二个确保fooredis在服务器计算机重新启动后立即启动,并且在第一个规则生效之前很长时间启动。

    可以使用一些更专门的方法,例如forever。有关该主题的更多信息,请参见Webfaction Community thread

    结论

    现在您拥有了。许多事情已经完成,但可能还会更多。您将来可能想做的未在此处介绍的事情包括以下内容。
  • 设置密码,防止其他用户刷新您的数据库。 (请参阅redis.conf)
  • 限制内存使用(请参阅redis.conf)
  • 记录用法和错误(请参见redis.conf)
  • 偶尔备份一次数据。

  • 有任何想法,评论或更正吗?

    关于installation - 在Webfaction上设置Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18622630/

    相关文章:

    mysql - 如何使用 Peewee ORM 连接到 WebFaction 上的 MySQL 数据库?

    node.js - 使用 Forever 运行的 NodeJS 应用程序在浏览器中出现 502 错误

    apache - 如何在我的电脑中分别安装 tomcat 服务器和 xampp 服务器?

    c++ - Visual C++ 2015 Tools for Windows 桌面安装程序无法打开

    node.js - 使用 ioredis 在单个原子操作中发送多个 BITOP

    python - 如何用aioredis pub/sub实现单生产者多消费者

    perl - 在 MacOSX 10.6 上安装 Perl 的 GD 库

    java - Install4j:将服务图标添加到系统托盘

    ruby-on-rails - Redis::TimeoutError: 连接超时错误-Rails 缓存

    mongodb - webfaction 自动启动 mongodb