在Webfaction共享主机帐户上设置Redis数据库需要执行哪些步骤?
由于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
> uname -m i686
如果您的服务器是64位(x86_64),则只需简单地进行即可。
> make
但是,如果您的服务器是32位(i686),则您必须做一点额外的工作。有一个命令,make 32bit但是会产生错误。在安装脚本中编辑一行以使其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-cli,redis- server,redis-benchmark和redis-sentinel。
~/src/redis-2.6.16/src/
redis-cli
redis- server
redis-benchmark
redis-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的环境限制而将失败。我建议你跳过这个。
make test
现在我们已经安装了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社区线程以获取有关该主题的更多信息。
现在您拥有了。许多事情已经完成,但可能还会更多。您将来可能想做的未在此处做的事情包括以下内容。
有任何想法,评论或更正吗?