Introduktion
På grund av de speciella miljöbegränsningarna för Webfaction-servrar är installationsinstruktionerna inte så enkla som de skulle vara. Ändå i slutet kommer du att ha en fullt fungerande Redis-server som stannar uppe även efter en omstart. Jag installerade personligen Redis genom följande procedur för ungefär ett halvt år sedan och det har fungerat felfritt sedan dess. Ett litet ord av en varning dock, ett halvt år är inte lång tid, särskilt för att servern inte har använts hårt.
Instruktionerna består av fem delar:Installation, Testning, Starta servern, Hantera servern och Hålla servern igång.
Installation
Logga in på ditt Webfaction-skal
ssh [email protected]
Ladda ner senaste Redis från Redis nedladdningssida.
> 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/
Innan du gör, se är din server Linux 32 eller 64 bitar. Installationsskriptet hanterar inte 32-bitarsmiljöer bra, åtminstone på Webfactions CentOS 5-maskiner. Kommandot för bitar är uname -m
. Om Linux är 32 bitar blir resultatet i686, om 64 bitar då x86_64. Se det här svaret för detaljer.
> uname -m
i686
Om din server är 64 bitar (x86_64) är det bara att göra.
> make
Men om din server är 32-bitars (i686) måste du göra lite extra saker. Det finns ett kommando make 32bit
men det ger ett fel. Redigera en rad i installationsskriptet för att make 32bit
att arbeta.
> nano ~/src/redis-2.6.16/src/Makefile
Ändra linje 214 från denna
$(MAKE) CFLAGS="-m32" LDFLAGS="-m32"
till detta
$(MAKE) CFLAGS="-m32 -march=i686" LDFLAGS="-m32 -march=i686"
och spara. Kör sedan märket med 32-bitars flagga.
> cd ~/src/redis-2.6.16/ ## Note the dir, no trailing src/
> make 32bit
De körbara filerna skapades i katalogen ~/src/redis-2.6.16/src/
. De körbara filerna inkluderar redis-cli
, redis-server
, redis-benchmark
och redis-sentinel
.
Testning (valfritt)
Som resultatet av installationen antyder skulle det vara trevligt att se till att allt fungerar som förväntat genom att köra tester.
Hint: To run 'make test' is a good idea ;)
Tyvärr kräver testningen att tlc8.6.0 är installerad vilket inte är standard åtminstone på maskinen web223. Så du måste installera det först, från källan. Se Tcl/Tk installationsanteckningar och kompileringsanteckningar.
> 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
Testar Tcl med make test
kommer att ta tid och kommer också att misslyckas på grund av WebFactions miljörestriktioner. Jag föreslår att du hoppar över detta.
Nu när vi har Tlc installerat kan vi köra Redis-tester. Testerna kommer att ta lång tid och använder också tillfälligt en ganska stor mängd minne.
> cd ~/src/redis-2.6.16/
> make test
Efter testerna är du redo att fortsätta.
Starta servern
Skapa först en anpassad applikation via Webfaction Kontrollpanel (Anpassad app (lyssnar på port)). Döp det till exempel foredis . Observera att du inte behöver skapa en domän eller webbplats för appen om Redis endast används lokalt, dvs från samma värd.
För det andra, anteckna socketportnumret som angavs för appen. Låt exemplet vara 23015 .
Kopiera de tidigare kompilerade körbara filerna till appens katalog. Du kan välja att kopiera alla eller bara de du behöver.
> cd ~/webapps/fooredis/
> cp ~/src/redis-2.6.16/src/redis-server .
> cp ~/src/redis-2.6.16/src/redis-cli .
Kopiera också exempel på konfigurationsfilen. Du kommer snart att ändra det.
> cp ~/src/redis-2.6.16/redis.conf .
Nu är Redis redan körbar. Det finns dock par problem. Först kan standard Redis-port 6379 redan vara i bruk. För det andra, även om porten var ledig, ja, du kunde starta servern men den slutar köra i samma ögonblick som du lämnar skalet. För den första måste redis.conf redigeras och för den andra behöver du en demon som också löses genom att redigera redis.conf.
Redis kan köra sig själv i demonläget. För det måste du ställa in en plats där demonen lagrar sina process-ID, PID. Vanligtvis lagras pidfiler i /var/run/ men på grund av miljörestriktioner måste du välja en plats för dem i din hemkatalog. Eftersom en anledning som förklaras senare i delen Hantera servern är ett bra val att placera pidfilen i samma katalog som de körbara filerna. Du behöver inte skapa filen själv, Redis skapar den åt dig automatiskt.
Öppna nu redis.conf för redigering.
> cd ~/webapps/fooredis/
> nano redis.conf
Ändra konfigurationerna på följande sätt.
daemonize no
->daemonize yes
pidfile /var/run/redis.pid
->pidfile /home/foouser/webapps/fooredis/redis.pid
port 6379
->port 23015
Nu äntligen, starta Redis server. Ange conf-filen så att Redis lyssnar på rätt port och körs som en demon.
> cd ~/webapps/fooredis/
> ./redis-server redis.conf
>
Se det köra.
> 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)
>
Stoppa servern om du vill.
> ps -u $USER -o pid,command | grep redis
718 grep redis
10735 ./redis-server redis.conf
> kill 10735
eller
> cat redis.pid | xargs kill
Hantera servern
För enkelhetens skull och som ett förarbete inför nästa del, gör ett script som hjälper till att öppna klienten och starta, starta om och stoppa servern. En enkel lösning är att skriva en makefile. När du skriver en makefil, kom ihåg att använda tabbar istället för blanksteg.
> 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
Reglerna är ganska självförklarande. Det speciella med den andra regeln är att när ./redis-servern anropas i demonläge skapas inte en ny process om det redan finns en som körs.
Den tredje regeln har lite tyst visdom i sig. Om redis.pid inte lagrades under fooredis katalog utan till exempel i /var/run/redis.pid så skulle det inte vara så lätt att stoppa servern. Detta gäller särskilt om du kör flera Redis-instanser samtidigt.
Så här kör du en regel:
> make start
Hålla servern igång
Du har nu en instans av Redis som körs i demonläge som låter dig avsluta skalet utan att stoppa det. Detta är fortfarande inte tillräckligt. Vad händer om processen kraschar? Vad händer om servermaskinen startas om? För att täcka dessa måste du skapa två cronjobs.
> export EDITOR=nano
> crontab -e
Lägg till följande två rader och spara.
*/5 * * * * make -C ~/webapps/fooredis/ -f ~/webapps/fooredis/Makefile start
@reboot make -C ~/webapps/fooredis/ -f ~/webapps/fooredis/Makefile start
Den första säkerställer var femte minut att foredis är igång. Som sagt ovan startar detta inte en ny process om en redan körs. Den andra säkerställer att fooredis startas omedelbart efter omstart av serverdatorn och långt innan den första regeln träder i kraft.
Några mer deligate metoder för detta skulle kunna användas, till exempel för alltid. Se även denna Webfaction Community-tråd för mer om ämnet.
Slutsats
Nu har du det. Massor av saker gjorda men kanske mer kommer. Saker du kan tänkas vilja göra i framtiden som inte täcktes här inkluderar följande.
- Ange ett lösenord, förhindrar att andra användare tömmer dina databaser. (Se redis.conf)
- Begränsa minnesanvändningen (Se redis.conf)
- Logga användningen och felen (Se redis.conf)
- Säkerhetskopierar data då och då.
Några idéer, kommentarer eller korrigeringar?