Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Thiết lập Redis trên Web hài lòng

Giới thiệu

Do các hạn chế về môi trường đặc biệt của các máy chủ Web thỏa mãn, các hướng dẫn cài đặt không đơn giản như mong muốn. Tuy nhiên, cuối cùng, bạn sẽ có một máy chủ Redis hoạt động đầy đủ, vẫn hoạt động ngay cả sau khi khởi động lại. Cá nhân tôi đã cài đặt Redis theo quy trình sau đây khoảng nửa năm trước và nó đã chạy hoàn hảo kể từ đó. Một lời cảnh báo nhỏ tuy nhiên, nửa năm không phải là một khoảng thời gian dài, đặc biệt là vì máy chủ không được sử dụng nhiều.

Hướng dẫn bao gồm năm phần:Cài đặt, Kiểm tra, Khởi động Máy chủ, Quản lý Máy chủ và Giữ Máy chủ hoạt động.

Cài đặt

Đăng nhập vào trình bao Web hài lòng của bạn

ssh [email protected]

Tải xuống Redis mới nhất từ ​​trang tải xuống 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/

Trước khi thực hiện, hãy xem máy chủ của bạn là Linux 32 hay 64 bit. Tập lệnh cài đặt không xử lý tốt môi trường 32 bit, ít nhất là trên các máy CentOS 5 của Web hài lòng. Lệnh cho các bit là uname -m . Nếu Linux là 32 bit, kết quả sẽ là i686, nếu 64 bit thì là x86_64. Xem câu trả lời này để biết chi tiết.

> uname -m
i686

Nếu máy chủ của bạn là 64 bit (x86_64) thì chỉ cần tạo.

> make

Nhưng nếu máy chủ của bạn là 32 bit (i686) thì bạn phải thực hiện thêm một số việc nhỏ. Có một lệnh make 32bit nhưng nó tạo ra một lỗi. Chỉnh sửa một dòng trong tập lệnh cài đặt để tạo make 32bit để làm việc.

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

Thay đổi dòng 214 từ dòng này

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

tới cái này

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

và lưu lại. Sau đó, chạy lệnh thực hiện với cờ 32 bit.

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

Các tệp thực thi được tạo trong thư mục ~/src/redis-2.6.16/src/ . Các tệp thực thi bao gồm redis-cli , redis-server , redis-benchmarkredis-sentinel .

Kiểm tra (tùy chọn)

Như kết quả của quá trình cài đặt cho thấy, sẽ rất tốt nếu đảm bảo rằng mọi thứ hoạt động như mong đợi bằng cách chạy thử nghiệm.

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

Rất tiếc, quá trình kiểm tra yêu cầu cài đặt tlc8.6.0, ít nhất không phải là mặc định trên máy web223. Vì vậy, bạn phải cài đặt nó trước, từ nguồn. Xem ghi chú cài đặt Tcl / Tk và ghi chú biên dịch.

> 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

Kiểm tra Tcl với make test sẽ mất thời gian và cũng sẽ thất bại do các hạn chế về môi trường của WebFaction. Tôi khuyên bạn nên bỏ qua điều này.

Bây giờ chúng ta đã cài đặt Tlc, chúng ta có thể chạy các bài kiểm tra Redis. Các bài kiểm tra sẽ mất nhiều thời gian và cũng tạm thời sử dụng một lượng bộ nhớ khá lớn.

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

Sau khi kiểm tra, bạn đã sẵn sàng để tiếp tục.

Khởi động máy chủ

Đầu tiên, tạo một ứng dụng tùy chỉnh thông qua Bảng điều khiển Web hài lòng (Ứng dụng tùy chỉnh (nghe trên cổng)). Đặt tên cho ví dụ như fooredis . Lưu ý rằng bạn không phải tạo miền hoặc trang web cho ứng dụng nếu Redis chỉ được sử dụng cục bộ, tức là từ cùng một máy chủ.

Thứ hai, hãy ghi chú về số cổng socket được cấp cho ứng dụng. Ví dụ là 23015 .

Sao chép các tệp thực thi đã được biên dịch trước đó vào thư mục của ứng dụng. Bạn có thể chọn sao chép tất cả hoặc chỉ những thứ bạn cần.

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

Sao chép tệp cấu hình mẫu. Bạn sẽ sớm sửa đổi điều đó.

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

Bây giờ Redis đã có thể chạy được. Tuy nhiên, có một số vấn đề. Đầu tiên, cổng Redis 6379 mặc định có thể đã được sử dụng. Thứ hai, ngay cả khi cổng miễn phí, vâng, bạn có thể khởi động máy chủ nhưng nó ngừng chạy ngay khi bạn thoát khỏi trình bao. Đối với lần đầu tiên, redis.conf phải được chỉnh sửa và đối với lần thứ hai, bạn cần một daemon cũng được giải quyết bằng cách chỉnh sửa redis.conf.

Redis có thể tự chạy trong chế độ daemon. Để làm được điều đó, bạn cần thiết lập một nơi mà daemon lưu trữ các id quy trình, PID của nó. Thông thường các tệp pidfiles được lưu trữ trong / var / run / nhưng vì các giới hạn của môi trường, bạn phải chọn một vị trí cho chúng trong thư mục chính của mình. Bởi vì một lý do được giải thích sau trong phần Quản lý Máy chủ, một lựa chọn tốt là đặt pidfile dưới cùng một thư mục với các tệp thực thi. Bạn không phải tự tạo tệp, Redis sẽ tự động tạo tệp cho bạn.

Bây giờ, hãy mở redis.conf để chỉnh sửa.

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

Thay đổi cấu hình theo cách sau.

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

Bây giờ cuối cùng, hãy khởi động máy chủ Redis. Chỉ định tệp conf để Redis lắng nghe đúng cổng và chạy dưới dạng daemon.

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

Xem nó đang chạy.

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

Dừng máy chủ nếu bạn muốn.

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

hoặc

> cat redis.pid | xargs kill

Quản lý Máy chủ

Để dễ sử dụng và là công việc chuẩn bị cho phần tiếp theo, hãy tạo một tập lệnh giúp mở máy khách và khởi động, khởi động lại và dừng máy chủ. Một giải pháp dễ dàng là viết một tệp makefile. Khi viết makefile, hãy nhớ sử dụng các tab thay vì khoảng trắng.

> 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

Các quy tắc khá dễ hiểu. Điều đặc biệt về quy tắc thứ hai là khi ở chế độ daemon, việc gọi ./redis-server không tạo ra một quy trình mới nếu đã có một quy trình đang chạy.

Quy tắc thứ ba có một số khôn ngoan trong đó. Nếu redis.pid không được lưu trữ trong thư mục của fooredis mà ví dụ như /var/run/redis.pid thì việc dừng máy chủ sẽ không dễ dàng như vậy. Điều này đặc biệt đúng nếu bạn chạy nhiều phiên bản Redis đồng thời.

Để thực hiện quy tắc:

> make start

Giữ Máy chủ Hoạt động

Bây giờ bạn có một phiên bản của Redis đang chạy ở chế độ daemon cho phép bạn thoát khỏi trình bao mà không dừng nó. Điều này vẫn chưa đủ. Điều gì sẽ xảy ra nếu quá trình bị lỗi? Điều gì sẽ xảy ra nếu máy chủ được khởi động lại? Để che những thứ này, bạn phải tạo hai cronjobs.

> export EDITOR=nano
> crontab -e

Thêm hai dòng sau và lưu.

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

Điều đầu tiên đảm bảo rằng fooredis đang chạy mỗi năm phút. Như đã nói ở trên, quá trình này không bắt đầu quá trình mới nếu một quá trình đã chạy. Quy tắc thứ hai đảm bảo rằng fooredis được khởi động ngay sau khi máy chủ khởi động lại và rất lâu trước khi quy tắc đầu tiên bắt đầu.

Một số phương pháp phân định rõ hơn cho điều này có thể được sử dụng, chẳng hạn như mãi mãi. Xem thêm chuỗi Cộng đồng hài lòng về web này để biết thêm về chủ đề.

Kết luận

Bây giờ bạn có nó. Rất nhiều việc đã hoàn thành nhưng có lẽ sẽ còn nhiều việc nữa. Những điều bạn có thể muốn làm trong tương lai mà không được đề cập ở đây, bao gồm những điều sau đây.

  • Đặt mật khẩu, ngăn người dùng khác xóa cơ sở dữ liệu của bạn. (Xem redis.conf)
  • Giới hạn việc sử dụng bộ nhớ (Xem redis.conf)
  • Ghi nhật ký việc sử dụng và các lỗi (Xem redis.conf)
  • Thỉnh thoảng sao lưu dữ liệu.

Bất kỳ ý tưởng, nhận xét hoặc sửa chữa?



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. SignalR không thể kết nối với Azure Redis trên SSL

  2. Một chiến lược tốt để nhóm các từ tương tự là gì?

  3. Dữ liệu cố định từ Redis sang MongoDB cho kho dữ liệu

  4. Thời gian tạo khóa trong redis

  5. Redis sub / pub và php / nodejs