sql >> Database teknologi >  >> NoSQL >> Redis

Opsætning af Redis på Webfaction

Introduktion

På grund af de særlige miljøbegrænsninger for Webfaction-servere er installationsinstruktionerne ikke så ligetil, som de ville være. Ikke desto mindre vil du til sidst have en fuldt fungerende Redis-server, der forbliver oppe selv efter en genstart. Jeg installerede personligt Redis ved følgende procedure for omkring et halvt år siden, og det har kørt fejlfrit siden. Et lille advarselsord dog, et halvt år er ikke lang tid, især fordi serveren ikke har været meget brugt.

Instruktionerne består af fem dele:Installation, Test, Start af serveren, Administrering af serveren og Hold serveren kørende.

Installation

Log ind på din Webfaction shell

ssh [email protected] 

Download seneste Redis fra Redis downloadside.

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

Før fabrikatet, se er din server Linux 32 eller 64 bit. Installationsscriptet håndterer ikke 32 bit-miljøer godt, i hvert fald på Webfactions CentOS 5-maskiner. Kommandoen for bits er uname -m . Hvis Linux er 32 bit, vil resultatet være i686, hvis 64 bit så x86_64. Se dette svar for detaljer.

> uname -mi686 

Hvis din server er 64 bit (x86_64), skal du bare lave.

> make 

Men hvis din server er 32 bit (i686), så skal du lave lidt ekstra ting. Der er en kommando make 32bit men det giver en fejl. Rediger en linje i installationsscriptet for at gøre lave 32bit at arbejde.

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

Skift linje 214 fra denne

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

til dette

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

og gem. Kør derefter mærket med 32-bit flag.

> cd ~/src/redis-2.6.16/ ## Bemærk dir, no trailing src/> lav 32bit 

De eksekverbare filer blev oprettet i mappen ~/src/redis-2.6.16/src/ . De eksekverbare filer inkluderer redis-cli , redis-server , redis-benchmark og redis-sentinel .

Test (valgfrit)

Som outputtet af installationen antyder, ville det være rart at sikre, at alt fungerer som forventet ved at køre test.

Tip:At køre 'make test' er en god idé;) 

Desværre kræver testen, at tlc8.6.0 er installeret, hvilket ikke er standard i det mindste på maskinen web223. Så du skal installere det først, fra kilden. Se Tcl/Tk-installationsnoter og kompileringsnoter.

> 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> lav test # Valgfrit, se bemærkninger nedenfor> lav install 

Test af Tcl med make test vil tage tid og vil også mislykkes på grund af WebFactions miljørestriktioner. Jeg foreslår, at du springer dette over.

Nu hvor vi har Tlc installeret, kan vi køre Redis-tests. Testene vil tage lang tid og bruger også midlertidigt en ret stor mængde hukommelse.

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

Efter testene er du klar til at fortsætte.

Start af serveren

Først skal du oprette en brugerdefineret applikation via Webfaction Kontrolpanel (Brugerdefineret app (lytter på port)). Navngiv den for eksempel foredis . Bemærk, at du ikke behøver at oprette et domæne eller en hjemmeside til appen, hvis Redis kun bruges lokalt, dvs. fra den samme vært.

For det andet skal du skrive en note om socket-portnummeret, der blev givet til appen. Lad eksemplet være 23015 .

Kopier de tidligere kompilerede eksekverbare filer til appens bibliotek. Du kan vælge at kopiere alle eller kun dem, du har brug for.

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

Kopier også eksempelkonfigurationsfilen. Det vil du snart ændre.

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

Nu kan Redis allerede køres. Der er dog par problemer. Først er standard Redis-port 6379 muligvis allerede i brug. For det andet, selv hvis porten var ledig, ja, du kunne starte serveren, men den stopper med at køre i samme øjeblik, du forlader skallen. For det første skal redis.conf redigeres, og til det andet skal du bruge en dæmon, som også løses ved at redigere redis.conf.

Redis er i stand til at køre sig selv i dæmontilstanden. Til det skal du oprette et sted, hvor dæmonen gemmer sine proces-id'er, PID'er. Normalt er pid-filer gemt i /var/run/, men på grund af miljørestriktioner skal du vælge et sted for dem i din hjemmemappe. Fordi en grund forklaret senere i delen Managing the Server, er et godt valg at placere pid-filen i samme mappe som de eksekverbare filer. Du behøver ikke selv at oprette filen, Redis opretter den automatisk for dig.

Åbn nu redis.conf for redigering.

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

Skift konfigurationerne på følgende måde.

  • dæmoniser nej -> dæmoniser ja
  • pidfil /var/run/redis.pid -> pidfile /home/foouser/webapps/fooredis/redis.pid
  • port 6379 -> port 23015

Nu endelig, start Redis server. Angiv conf-filen, så Redis lytter til den rigtige port og kører som en dæmon.

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

Se den køre.

> cd ~/webapps/fooredis/> ./redis-cli -p 23015redis 127.0.0.1:23015> SET myfeeling Phew.OKredis 127.0.0.1:23015> GET myfeeling"Phew.127.0.0." :23015> (ctrl-d)> 

Stop serveren, hvis du vil.

> ps -u $USER -o pid,kommando | grep redis 718 grep redis10735 ./redis-server redis.conf> dræb 10735 

eller

> kat redis.pid | xargs dræber

Administration af serveren

For nemhedens skyld og som et forberedende arbejde til næste del, lav et script, der hjælper med at åbne klienten og starte, genstarte og stoppe serveren. En nem løsning er at skrive en makefile. Når du skriver en make-fil, skal du huske at bruge tabs i stedet for mellemrum.

> cd ~/webapps/fooredis/> nano Makefile# Redis Makefileclient cli:./redis-cli -p 23015start genstart:./redis-server redis.confstop:cat redis.pid | xargs dræber 

Reglerne er ret selvforklarende. Det særlige ved den anden regel er, at mens du er i dæmontilstand, opretter kald af ./redis-serveren ikke en ny proces, hvis der allerede er en, der kører.

Den tredje regel har en stille visdom i sig. Hvis redis.pid ikke blev gemt under fooredis bibliotek, men for eksempel i /var/run/redis.pid, ville det ikke være så nemt at stoppe serveren. Dette gælder især, hvis du kører flere Redis-forekomster samtidigt.

Sådan udføres en regel:

> start 

Sådan holdes serveren kørende

Du har nu en forekomst af Redis, der kører i dæmontilstand, som giver dig mulighed for at afslutte skallen uden at stoppe den. Dette er stadig ikke nok. Hvad hvis processen går ned? Hvad hvis servermaskinen genstartes? For at dække disse skal du oprette to cronjobs.

> eksport EDITOR=nano> crontab -e 

Tilføj de følgende to linjer og gem.

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

Den første sikrer hvert femte minut, at foredis kører. Som nævnt ovenfor starter dette ikke en ny proces, hvis en allerede kører. Den anden sikrer, at fooredis startes umiddelbart efter genstart af servermaskinen og længe før den første regel træder i kraft.

Nogle mere deligate metoder til dette kunne bruges, for eksempel for evigt. Se også denne Webfaction Community-tråd for mere om emnet.

Konklusion

Nu har du det. Mange ting er gjort, men måske kommer der flere. Ting, du måske kunne tænke dig at gøre i fremtiden, som ikke blev dækket her, omfatter følgende.

  • Indstilling af en adgangskode, der forhindrer andre brugere i at tømme dine databaser. (Se redis.conf)
  • Begrænsning af hukommelsesforbruget (se redis.conf)
  • Logføring af brug og fejl (Se redis.conf)
  • Sikkerhedskopiering af data en gang imellem.

Nogle ideer, kommentarer eller rettelser?



  1. Sådan får du alle nøgler i Redis

  2. Hvordan udfører jeg SQL Join-ækvivalenten i MongoDB?

  3. Implementer ScaleGrid DBaaS for Redis™ i AWS Virtual Private Cloud (VPC)

  4. Serialiser en klasse på to forskellige måder med Jackson