sql >> Databáze >  >> NoSQL >> Redis

Nastavení Redis na Webfaction

Úvod

Kvůli speciálním omezením prostředí serverů Webfaction nejsou pokyny k instalaci tak jednoduché, jak by byly. Nicméně na konci budete mít plně funkční Redis server, který zůstane v provozu i po restartu. Osobně jsem Redis nainstaloval následujícím postupem asi před půl rokem a od té doby běží bezchybně. Ale malé varování, půl roku není dlouhá doba, zejména proto, že server nebyl příliš využíván.

Pokyny se skládají z pěti částí:Instalace, Testování, Spuštění serveru, Správa serveru a Udržování serveru v chodu.

Instalace

Přihlaste se do svého prostředí Webfaction

ssh [email protected]

Stáhněte si nejnovější Redis ze stránky pro stahování 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/

Před provedením se podívejte, zda je váš server Linux 32 nebo 64 bit. Instalační skript nezvládá dobře 32bitová prostředí, alespoň na počítačích CentOS 5 od Webfaction. Příkaz pro bity je uname -m . Pokud je Linux 32bitový, výsledkem bude i686, pokud je 64bitový, pak x86_64. Podrobnosti naleznete v této odpovědi.

> uname -m
i686

Pokud je váš server 64bitový (x86_64), pak jednoduše vytvořte.

> make

Ale pokud je váš server 32bitový (i686), musíte udělat něco málo navíc. Existuje příkaz make 32bit ale způsobí to chybu. Upravte řádek v instalačním skriptu tak, aby byl make 32bit do práce.

> nano ~/src/redis-2.6.16/src/Makefile

Změňte řádek 214 z tohoto

$(MAKE) CFLAGS="-m32" LDFLAGS="-m32"

k tomuto

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

a uložit. Poté spusťte make s 32bitovým příznakem.

> cd ~/src/redis-2.6.16/  ## Note the dir, no trailing src/
> make 32bit

Spustitelné soubory byly vytvořeny do adresáře ~/src/redis-2.6.16/src/ . Mezi spustitelné soubory patří redis-cli , redis-server , redis-benchmark a redis-sentinel .

Testování (volitelné)

Jak naznačuje výstup instalace, bylo by hezké zajistit, aby vše fungovalo podle očekávání spuštěním testů.

Hint: To run 'make test' is a good idea ;)

Bohužel testování vyžaduje instalaci tlc8.6.0, což není výchozí nastavení alespoň na stroji web223. Nejprve jej tedy musíte nainstalovat ze zdroje. Viz poznámky k instalaci Tcl/Tk a poznámky ke kompilaci.

> 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

Testování Tcl pomocí make test bude nějakou dobu trvat a také selže kvůli omezením prostředí WebFaction. Doporučuji toto přeskočit.

Nyní, když máme nainstalovaný Tlc, můžeme spustit testy Redis. Testy budou trvat dlouho a také dočasně využívají poměrně velké množství paměti.

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

Po testech jste připraveni pokračovat.

Spuštění serveru

Nejprve vytvořte vlastní aplikaci prostřednictvím ovládacího panelu Webfaction (Vlastní aplikace (naslouchání na portu)). Pojmenujte to například fooredis . Upozorňujeme, že pokud se Redis používá pouze lokálně, tj. ze stejného hostitele, nemusíte pro aplikaci vytvářet doménu nebo web.

Za druhé, poznamenejte si číslo portu zásuvky, které bylo dané aplikaci. Nechť je příklad 23015 .

Zkopírujte dříve zkompilované spustitelné soubory do adresáře aplikace. Můžete se rozhodnout zkopírovat všechny nebo pouze ty, které potřebujete.

> cd ~/webapps/fooredis/
> cp ~/src/redis-2.6.16/src/redis-server .
> cp ~/src/redis-2.6.16/src/redis-cli .

Zkopírujte také vzorový konfigurační soubor. Brzy to změníte.

> cp ~/src/redis-2.6.16/redis.conf .

Nyní je Redis již spustitelný. Existuje však několik problémů. Nejprve může být výchozí port Redis 6379 již používán. Zadruhé, i kdyby byl port volný, ano, můžete spustit server, ale zastaví se ve stejném okamžiku, kdy opustíte shell. Pro první je nutné upravit redis.conf a pro druhý potřebujete démona, který se také řeší úpravou redis.conf.

Redis je schopen běžet sám v režimu démona. K tomu musíte nastavit místo, kde démon ukládá svá ID procesů, PID. Obvykle jsou pidfily uloženy ve /var/run/, ale kvůli omezením prostředí pro ně musíte vybrat místo ve svém domovském adresáři. Protože důvod je vysvětlen později v části Správa serveru, je dobrou volbou umístit pidfile do stejného adresáře jako spustitelné soubory. Soubor nemusíte vytvářet sami, Redis ho za vás vytvoří automaticky.

Nyní otevřete redis.conf pro úpravy.

> cd ~/webapps/fooredis/
> nano redis.conf

Změňte konfigurace následujícím způsobem.

  • daemonize no -> daemonize yes
  • pidfile /var/run/redis.pid -> pidfile /home/foouser/webapps/fooredis/redis.pid
  • port 6379 -> port 23015

Nyní konečně spusťte server Redis. Zadejte soubor conf, aby Redis naslouchal správnému portu a běžel jako démon.

> cd ~/webapps/fooredis/
> ./redis-server redis.conf
> 

Podívejte se, jak běží.

> 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)
>

Pokud chcete, zastavte server.

> ps -u $USER -o pid,command | grep redis
  718 grep redis
10735 ./redis-server redis.conf
> kill 10735

nebo

> cat redis.pid | xargs kill

Správa serveru

Pro usnadnění použití a jako přípravnou práci na další část vytvořte skript, který pomůže otevřít klienta a spustit, restartovat a zastavit server. Snadným řešením je napsat makefile. Při psaní makefile nezapomeňte použít tabulátory místo mezer.

> 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

Pravidla jsou celkem samozřejmá. Zvláštní na druhém pravidle je, že v režimu démona volání ./redis-server nevytvoří nový proces, pokud již nějaký běží.

Třetí pravidlo má v sobě nějakou tichou moudrost. Pokud by redis.pid nebyl uložen pod adresářem fooredis, ale například do /var/run/redis.pid, nebylo by tak snadné server zastavit. To platí zejména v případě, že spouštíte více instancí Redis současně.

Chcete-li provést pravidlo:

> make start

Zachování provozu serveru

Nyní máte instanci Redis spuštěnou v režimu démona, který vám umožňuje ukončit shell bez jeho zastavení. To je stále málo. Co když se proces zhroutí? Co když se server restartuje? Chcete-li je pokrýt, musíte vytvořit dva cronjoby.

> export EDITOR=nano
> crontab -e

Přidejte následující dva řádky a uložte.

*/5 * * * * make -C ~/webapps/fooredis/ -f ~/webapps/fooredis/Makefile start
@reboot make -C ~/webapps/fooredis/ -f ~/webapps/fooredis/Makefile start

První zajišťuje každých pět minut, že fooredis běží. Jak bylo řečeno výše, nezahájí to nový proces, pokud již běží. Druhý zajišťuje, že se fooredis spustí okamžitě po restartu serveru a dlouho předtím, než se spustí první pravidlo.

K tomu by se daly použít nějaké delikátnější metody, třeba navždy. Další informace o tématu naleznete také v tomto vláknu komunity Webfaction.

Závěr

Teď to máš. Spousta věcí se udělala, ale možná přijde víc. Věci, které byste mohli chtít dělat v budoucnu a které zde nebyly popsány, zahrnují následující.

  • Nastavení hesla, které zabrání ostatním uživatelům vyprázdnit vaše databáze. (Viz redis.conf)
  • Omezení využití paměti (viz redis.conf)
  • Protokolování využití a chyb (viz redis.conf)
  • Zálohování dat jednou za čas.

Nějaké nápady, komentáře nebo opravy?



  1. Jak provádět základní operace dotazů v MongoDB

  2. MongoDB $push vs $addToSet:Jaký je rozdíl?

  3. Nelze spustit docker mongo image v systému Windows

  4. Použití Celery pro Realtime, Synchronní externí API dotazování s Gevent