Pengantar
Karena batasan lingkungan khusus dari server Webfaction, instruksi penginstalan tidak semudah yang diharapkan. Namun demikian pada akhirnya Anda akan memiliki server Redis yang berfungsi penuh yang tetap menyala bahkan setelah reboot. Saya pribadi menginstal Redis dengan prosedur berikut sekitar setengah tahun yang lalu dan sejak itu telah berjalan dengan sempurna. Sedikit peringatan, setengah tahun bukanlah waktu yang lama, terutama karena server belum banyak digunakan.
Instruksi terdiri dari lima bagian:Instalasi, Pengujian, Memulai Server, Mengelola Server, dan Menjaga Server Tetap Berjalan.
Pemasangan
Masuk ke shell Webfaction Anda
ssh [email protected]
Unduh Redis terbaru dari situs unduhan 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/
Sebelum membuat, lihat apakah server Anda Linux 32 atau 64 bit. Skrip instalasi tidak menangani lingkungan 32 bit dengan baik, setidaknya pada mesin CentOS 5 Webfaction. Perintah untuk bit adalah uname -m
. Jika Linux 32 bit hasilnya akan menjadi i686, jika 64 bit maka x86_64. Lihat jawaban ini untuk detailnya.
> uname -m
i686
Jika server Anda 64 bit (x86_64) maka cukup buat saja.
> make
Tetapi jika server Anda 32 bit (i686) maka Anda harus melakukan sedikit hal tambahan. Ada perintah make 32bit
tetapi menghasilkan kesalahan. Edit satu baris dalam skrip instalasi untuk membuat make 32bit
untuk bekerja.
> nano ~/src/redis-2.6.16/src/Makefile
Ubah baris 214 dari ini
$(MAKE) CFLAGS="-m32" LDFLAGS="-m32"
untuk ini
$(MAKE) CFLAGS="-m32 -march=i686" LDFLAGS="-m32 -march=i686"
dan simpan. Kemudian jalankan make dengan flag 32bit.
> cd ~/src/redis-2.6.16/ ## Note the dir, no trailing src/
> make 32bit
Eksekusi dibuat ke dalam direktori ~/src/redis-2.6.16/src/
. Yang dapat dieksekusi termasuk redis-cli
, redis-server
, redis-benchmark
dan redis-sentinel
.
Pengujian (opsional)
Seperti yang disarankan oleh keluaran penginstalan, alangkah baiknya untuk memastikan bahwa semuanya berfungsi seperti yang diharapkan dengan menjalankan pengujian.
Hint: To run 'make test' is a good idea ;)
Sayangnya pengujian membutuhkan tlc8.6.0 untuk diinstal yang bukan default setidaknya pada mesin web223. Jadi Anda harus menginstalnya terlebih dahulu, dari sumbernya. Lihat catatan instalasi Tcl/Tk dan kompilasi catatan.
> 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
Menguji Tcl dengan make test
akan memakan waktu dan juga akan gagal karena batasan lingkungan WebFaction. Saya sarankan Anda melewatkan ini.
Sekarang kami telah menginstal Tlc, kami dapat menjalankan tes Redis. Pengujian akan memakan waktu lama dan juga menggunakan memori yang cukup besar untuk sementara.
> cd ~/src/redis-2.6.16/
> make test
Setelah tes, Anda siap untuk melanjutkan.
Memulai Server
Pertama, buat aplikasi khusus melalui Panel Kontrol Webfaction (Aplikasi khusus (mendengarkan di port)). Beri nama misalnya foodedis . Perhatikan bahwa Anda tidak perlu membuat domain atau situs web untuk aplikasi jika Redis hanya digunakan secara lokal, yaitu dari host yang sama.
Kedua, buat catatan tentang nomor port soket yang diberikan untuk aplikasi. Biarkan contohnya menjadi 23015 .
Salin executable yang dikompilasi sebelumnya ke direktori aplikasi. Anda dapat memilih untuk menyalin semua atau hanya yang Anda butuhkan.
> cd ~/webapps/fooredis/
> cp ~/src/redis-2.6.16/src/redis-server .
> cp ~/src/redis-2.6.16/src/redis-cli .
Salin juga contoh file konfigurasi. Anda akan segera mengubahnya.
> cp ~/src/redis-2.6.16/redis.conf .
Sekarang Redis sudah bisa dijalankan. Ada masalah pasangan sekalipun. Pertama, port Redis default 6379 mungkin sudah digunakan. Kedua, bahkan jika portnya gratis, ya, Anda dapat memulai server tetapi berhenti berjalan pada saat yang sama saat Anda keluar dari shell. Untuk yang pertama redis.conf harus diedit dan yang kedua, Anda memerlukan daemon yang juga diselesaikan dengan mengedit redis.conf.
Redis dapat berjalan sendiri dalam mode daemon. Untuk itu Anda perlu menyiapkan tempat di mana daemon menyimpan id prosesnya, PID. Biasanya pidfiles disimpan di /var/run/ tetapi karena batasan lingkungan Anda harus memilih tempat untuk mereka di direktori home Anda. Karena alasan yang dijelaskan nanti di bagian Mengelola Server, pilihan yang baik adalah meletakkan pidfile di bawah direktori yang sama dengan executable. Anda tidak perlu membuat file sendiri, Redis membuatnya untuk Anda secara otomatis.
Sekarang buka redis.conf untuk mengedit.
> cd ~/webapps/fooredis/
> nano redis.conf
Ubah konfigurasi dengan cara berikut.
daemonize no
->daemonize yes
pidfile /var/run/redis.pid
->pidfile /home/foouser/webapps/fooredis/redis.pid
port 6379
->port 23015
Sekarang akhirnya, mulai server Redis. Tentukan file conf sehingga Redis mendengarkan port yang tepat dan berjalan sebagai daemon.
> cd ~/webapps/fooredis/
> ./redis-server redis.conf
>
Lihat itu berjalan.
> 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)
>
Hentikan server jika Anda mau.
> ps -u $USER -o pid,command | grep redis
718 grep redis
10735 ./redis-server redis.conf
> kill 10735
atau
> cat redis.pid | xargs kill
Mengelola Server
Untuk kemudahan penggunaan dan sebagai pekerjaan persiapan untuk bagian selanjutnya, buat skrip yang membantu membuka klien dan memulai, memulai ulang, dan menghentikan server. Solusi mudah adalah dengan menulis makefile. Saat menulis makefile, ingatlah untuk menggunakan tab daripada spasi.
> 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
Aturannya cukup jelas. Keistimewaan dari aturan kedua adalah saat dalam mode daemon, memanggil ./redis-server tidak membuat proses baru jika sudah ada proses yang berjalan.
Aturan ketiga memiliki beberapa kebijaksanaan yang tenang di dalamnya. Jika redis.pid tidak disimpan di bawah direktori fooredis tetapi misalnya ke /var/run/redis.pid maka tidak akan mudah untuk menghentikan server. Ini terutama benar jika Anda menjalankan beberapa instance Redis secara bersamaan.
Untuk menjalankan aturan:
> make start
Menjaga Server Tetap Berjalan
Anda sekarang memiliki instance Redis yang berjalan dalam mode daemon yang memungkinkan Anda keluar dari shell tanpa menghentikannya. Ini masih belum cukup. Bagaimana jika prosesnya macet? Bagaimana jika mesin server di-boot ulang? Untuk menutupi ini, Anda harus membuat dua cronjobs.
> export EDITOR=nano
> crontab -e
Tambahkan dua baris berikut dan simpan.
*/5 * * * * make -C ~/webapps/fooredis/ -f ~/webapps/fooredis/Makefile start
@reboot make -C ~/webapps/fooredis/ -f ~/webapps/fooredis/Makefile start
Yang pertama memastikan setiap lima menit bahwa fooredis berjalan. Seperti yang dikatakan di atas ini tidak memulai proses baru jika sudah berjalan. Yang kedua memastikan bahwa fooredis dimulai segera setelah mesin server reboot dan jauh sebelum aturan pertama dimulai.
Beberapa metode yang lebih halus untuk ini dapat digunakan, misalnya selamanya. Lihat juga utas Komunitas Webfaction ini untuk mengetahui topik selengkapnya.
Kesimpulan
Sekarang Anda memilikinya. Banyak hal yang dilakukan tetapi mungkin lebih banyak lagi yang akan datang. Hal-hal yang mungkin ingin Anda lakukan di masa mendatang yang tidak tercakup di sini mencakup hal-hal berikut.
- Menyetel kata sandi, mencegah pengguna lain mem-flush database Anda. (Lihat redis.conf)
- Membatasi penggunaan memori (Lihat redis.conf)
- Mencatat penggunaan dan kesalahan (Lihat redis.conf)
- Mencadangkan data sesekali.
Ada ide, komentar, atau koreksi?