小编典典

在Webfaction上设置Redis

redis

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


阅读 355

收藏
2020-06-20

共1个答案

小编典典

介绍

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

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

安装

登录到您的Webfaction Shell

ssh foouser@foouser.webfactional.com

Redis下载站点下载最新的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位。至少在Webfaction的CentOS
5计算机上
,安装脚本不能很好地处理32位环境。位命令为uname -m。如果Linux是32位,则结果为i686,如果是64位,则结果为x86_64。。

> 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

可执行文件已创建到directory中~/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安装说明
编译说明

> 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

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

现在我们已经安装了Tlc,我们可以运行Redis测试了。测试将花费很长时间,并且会临时使用大量内存。

> cd ~/src/redis-2.6.16/
> make test

测试后,您可以继续。

启动服务器

首先,通过Webfaction控制面板(自定义应用程序(在端口上监听))创建自定义应用程序。将其命名为
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可能已经在使用中。其次,即使端口是空闲的,是的,您也可以启动服务器,但是在退出外壳程序的同时它将停止运行。对于第一个,必须编辑redis.conf;对于第二个,您需要一个守护程序,该守护程序也可以通过编辑redis.conf来解决。

Redis可以在守护程序模式下运行。为此,您需要设置一个守护程序在其中存储其进程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在服务器计算机重启后立即启动,并且在第一个规则生效之前很长时间启动。

为此,可以使用一些更严格的方法,例如,永远使用。另请参阅此Webfaction社区线程以获取有关该主题的更多信息。

结论

现在您拥有了。许多事情已经完成,但可能还会更多。您将来可能想做的未在此处做的事情包括以下内容。

  • 设置密码,防止其他用户刷新您的数据库。(请参阅redis.conf)
  • 限制内存使用(请参阅redis.conf)
  • 记录用法和错误(请参阅redis.conf)
  • 偶尔备份一次数据。

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

2020-06-20