Các bước cần thiết để thiết lập cơ sở dữ liệu Redis trên Webfaction tài khoản lưu trữ được chia sẻ là gì?Thiết lập Redis trên Webfaction
Trả lời
Giới thiệu
Do những hạn chế môi trường đặc biệt của máy chủ Webfaction hướng dẫn cài đặt là không đơn giản như họ sẽ. Tuy nhiên vào cuối bạn sẽ có một máy chủ Redis đầy đủ chức năng mà vẫn lên ngay cả sau khi khởi động lại. Cá nhân tôi cài đặt Redis theo quy trình sau khoảng nửa năm trước và nó đã hoạt động hoàn hảo kể từ đó. Một từ nhỏ của một cảnh báo mặc dù, nửa năm không phải là một thời gian dài, đặc biệt là bởi vì các máy chủ đã không được sử dụng nặng.
Hướng dẫn bao gồm năm phần: Cài đặt, Thử nghiệm, Khởi động Máy chủ, Quản lý máy chủ và Giữ Máy chủ đang chạy.
Lắp đặt
Đăng nhập vào của bạn Webfaction vỏ
ssh [email protected]
Tải mới nhất Redis từ Redis download site.
> 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 hoặc 64 bit. Kịch bản cài đặt không xử lý tốt môi trường 32 bit, at least on Webfaction's CentOS 5 machines. Lệnh cho bit là uname -m
. Nếu Linux là 32 bit thì kết quả sẽ là i686, nếu 64 bit sau đó x86_64. Xem chi tiết answer để biết chi tiết.
> uname -m
i686
Nếu máy chủ của bạn 64 bit (x86_64) thì chỉ cần thực hiện.
> 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ố nội dung. 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 để làm cho make 32bit
hoạt động.
> nano ~/src/redis-2.6.16/src/Makefile
Thay đổi dòng 214 từ này
$(MAKE) CFLAGS="-m32" LDFLAGS="-m32"
này
$(MAKE) CFLAGS="-m32 -march=i686" LDFLAGS="-m32 -march=i686"
và lưu lại. Sau đó chạy lệnh make with 32bit flag.
> cd ~/src/redis-2.6.16/ ## Note the dir, no trailing src/
> make 32bit
Thực thi được tạo thành thư mục ~/src/redis-2.6.16/src/
. Các tệp thi hành bao gồm redis-cli
, redis-server
, redis-benchmark
và redis-sentinel
.
Testing (không bắt buộc)
Là kết quả của quá trình cài đặt gợi ý, nó sẽ được tốt đẹp để đảm bảo rằng mọi thứ hoạt động như mong đợi bằng cách chạy kiểm tra.
Hint: To run 'make test' is a good idea ;)
Thật không may, thử nghiệm yêu cầu cài đặt tlc8.6.0 không phải là mặc định ít nhất trên máy web223. Vì vậy, bạn phải cài đặt nó trước, từ nguồn.Xem Tcl/Tk installation notes và compiling notes.
> 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 hạn chế về môi trường của WebFaction. Tôi đề nghị bạn bỏ qua điều này.
Bây giờ chúng tôi đã cài đặt Tlc, chúng tôi có thể chạy thử nghiệm Redis. Các thử nghiệm sẽ mất một thời gian dài 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.
Bắt đầu từ Server
Đầu tiên, tạo một ứng dụng tùy chỉnh thông qua Webfaction Control Panel (Custom ứng dụng (nghe trên cổng)). Đặt tên cho ví dụ là 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, ghi chú về số cổng cổng đã được cung cấp cho ứng dụng. Ví dụ: .
Sao chép tệp thi hành đượ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 cái 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 .
Hiện tại Redis đã được chạy. Có vài vấn đề mặc dù. Đầu tiên, cổng Redis mặc định 6379 có thể đã được sử dụng. Thứ hai, ngay cả khi cổng được miễn phí, có, bạn có thể khởi động máy chủ nhưng nó dừng chạy cùng lúc khi bạn thoát khỏi trình bao. Đối với redis.conf đầu tiên phải được chỉnh sửa và 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 the daemon mode. Cho rằng bạn cần phải thiết lập một nơi mà daemon lưu trữ các id quá trình của nó, PID. Thông thường pidfiles được lưu trữ trong/var/run/nhưng vì các hạn chế về 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 bạn. 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 thư mục với các tệp thi hành. Bạn không phải tự tạo tệp, Redis tự động tạo tệp cho bạn.
Bây giờ hãy mở tệp 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, khởi động máy chủ Redis. Chỉ định tệp conf để Redis 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ý Server
Đối với sự dễ dàng sử dụng và như là một công việc chuẩn bị cho các phần tiếp theo, làm cho một kịch bản giúp để mở client và bắt đầu, 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 makefile. Khi viết một makefile, hãy nhớ sử dụng các tab thay vì dấu cách.
> 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
Quy tắc khá tự giải thích. Đặc biệt về quy tắc thứ hai là trong khi ở chế độ daemon, gọi ./redis-server không tạo ra một tiến trình mới nếu có một tiến trình đang chạy.
Quy tắc thứ ba có một số sự khôn ngoan trong đó. Nếu redis.pid không được lưu trữ trong thư mục fooredis, nhưng ví dụ: /var/run/redis.pid thì sẽ không dễ dàng như vậy khi dừng máy chủ. Điều này đặc biệt đúng nếu bạn chạy đồng thời nhiều Redis.
Để thực hiện một quy tắc:
> make start
Giữ Server Chạy
Bây giờ bạn có một thể hiện của Redis chạy trong chế độ daemon cho phép bạn bỏ vỏ mà không dừng lại nó. Điều này vẫn chưa đủ. Điều gì sẽ xảy ra nếu quá trình này bị treo? Điều gì sẽ xảy ra nếu máy chủ được khởi động lại? Để trang trải những điều này, bạn phải tạo hai số 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
Đầu tiên đảm bảo mỗi năm phút fooredis đang chạy. Như đã nói ở trên, điều này không bắt đầu quá trình mới nếu một tiến trình đang chạy. Cách thứ hai đảm bảo rằng fooredis được bắt đầu ngay lập tức sau khi khởi động lại máy chủ và lâu trước khi quy tắc đầu tiên bắt đầu.
Một số phương pháp khác có thể được sử dụng, ví dụ forever. Xem thêm điều này Webfaction Community thread để biết thêm về chủ đề.
Kết luận
Bây giờ bạn có nó. Rất nhiều việc đã làm nhưng có thể sẽ còn nhiều hơn nữa. Những điều bạn có thể muốn làm trong tương lai 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)
- Hạn chế sử dụng bộ nhớ (Xem redis.conf)
- Logging việc sử dụng và các lỗi (Xem redis.conf)
- Backupping dữ liệu một lần trong một thời gian.
Bất kỳ ý tưởng, nhận xét hoặc chỉnh sửa nào?
FYI, nếu bạn đang cài đặt redis 2.8.8+
bạn có thể gặp lỗi, không xác định tham chiếu đến __sync_add_and_fetch_4
khi biên dịch. Xem http://www.eschrade.com/page/undefined-reference-to-__sync_add_and_fetch_4/ để biết thông tin.
Tôi đã dán phần có liên quan từ trang đó bên dưới trong trường hợp trang ngoại tuyến. Về cơ bản, bạn cần xuất biến CFLAGS và khởi động lại quá trình xây dựng.
[[email protected] redis-2.6.7]# export CFLAGS=-march=i686
[[email protected] redis-2.6.7]# make distclean
[[email protected] redis-2.6.7]# make
Để tóm tắt câu trả lời tuyệt vời Akseli của:
assume your user is named "magic_r_user"
cd ~
wget "http://download.redis.io/releases/redis-3.0.0.tar.gz"
tar -xzf redis-3.0.0.tar.gz
mv redis-3.0.0 redis
cd redis
make
make test
create a custom app "listening on port" through the Webfaction management website
assume we named it magic_r_app
assume it was assigned port 18932
cp ~/redis/redis.conf ~/webapps/magic_r_app/
vi ~/webapps/magic_r_app/redis.conf
daemonize yes
pidfile ~/webapps/magic_r_app/redis.pid
port 18932
test it
~/redis/src/redis-server ~/webapps/magic_r_app/redis.conf
~/redis/src/redis-cli -p 18932
ctrl-d
cat ~/webapps/magic_r_app/redis.pid | xargs kill
crontab -e
*/1 * * * * /home/magic_r_user/redis/src/redis-server /home/magic_r_user/webapps/magic_r_app/redis.conf &>> /home/magic_r_user/logs/user/cron.log
don't forget to set a password!
- 1. Cách xem thiết lập/nhận/trong nhật ký redis
- 2. Redis bỏ qua maxmemory thiết
- 3. Cách triển khai ứng dụng Flask trên Webfaction?
- 4. thiết lập OpenGL trên Ubuntu
- 5. Thiết lập Kudu Trên IIS
- 6. redis: đặt mật khẩu cho redis
- 7. Thực hành tốt nhất cho danh sách và thiết lập xử lý trong Redis là gì?
- 8. Thiết lập Discourse trên Ubuntu 12.04 LTS
- 9. MonoDevelop trên Mac - Thiết lập xuất khẩu
- 10. Cách thiết lập FTP trên Azure VM
- 11. thiết lập trang demo trên github
- 12. Thiết lập SMTP trên IIS Express
- 13. Thiết lập móc trên tin nhắn Windows
- 14. Thiết lập nhật thực trên ubuntu
- 15. thiết lập tên miền phụ trên nginx
- 16. Flask request.remote_addr sai trên webfaction và không hiển thị IP người dùng thực
- 17. Giải pháp tốt nhất cho việc tìm kiếm 1 x 1 triệu giao lộ được thiết lập? Redis, Mongo, khác
- 18. Thay đổi ID thiết bị trên trình giả lập Android?
- 19. Cách thiết lập Eclipse + Statet + Rcpp trên Windows
- 20. loại dữ liệu thiết lập phpexcel trên phạm vi ô
- 21. Cách thiết lập PEAR trên Mac OS X 10.5 Leopard
- 22. WPF Thiết lập kiểu dựa trên kiểu dữ liệu?
- 23. ASP.NET MVC 2 - Thiết lập giá trị trên IValueProvider
- 24. Thiết lập Rails đường khác dựa trên QueryString
- 25. Thiết lập một máy chủ Mercurial trên IIS 6
- 26. Rails chuyển hướng thất bại trên nginx & unicorn thiết lập
- 27. Thiết lập Git trên EC2 để kéo từ GitHub repo
- 28. Margin thiết lập trình trên RadioButton không áp dụng
- 29. Cách dễ dàng để thiết lập CMS trên appharbor
Life-saver !!!!!!!!!! – cyberjoac
Bravo! Một trong những câu trả lời hay nhất về SO mà tôi đã thấy, thời gian! – Nate
Cảm ơn! Tôi đồng ý rằng đó là một trong những hướng dẫn tốt nhất tôi đã nhìn thấy trên SO – thebeagle