+4

Tạo server deploy Rails app từ máy tính khác.

Tình huống:

Nếu bạn có 1 máy tính ở nhà, loại máy bàn, thì việc đi đâu vác theo như laptop là điều không thế 😄. Nhưng bạn vẫn muốn sử dụng máy tính ở nhà vì 1 việc nào đó. Hoặc bạn muốn deploy 1 ứng dụng Rails của bạn lên server Production để học tập hay muốn vọc vạch tập tành deploy, thì bạn có thể tìm được giải pháp trong bài viết của mình.

Kết nối cùng mạng LAN.

Cách này thì cực kỳ đơn giản.

Chuẩn bị

2 máy tính nền Linux cùng kết nối cùng mạng LAN. ( 1 máy server và 1 máy client)

Ok, dạo đầu chuẩn bị thế là xong, bây giờ bắt tay vào công việc. Trước hết chúng ta cần cài đặt OpenSSH cho cả 2 máy client và server.

OpenSSH là một giao thức mạng dùng để thiết lập kết nối giữa Client và Server/VPS, giúp các quản trị viên truy cập máy chủ từ xa một cách an toàn.

Server

sudo apt-get install openssh-server -y

Client

sudo apt-get install openssh-client -y

Tương tự như GITHUB, có 2 cách để kết nối.

C1: Sử dụng IP, username, password. Ví dụ máy server có các thông số như sau:

IP: 192.168.31.110
Username: "nhatnh"
Pwd: "123456"

Từ máy Client ta bắt đầu kết nối với máy Server bằng lệnh sau.

ssh nhatnh@192.168.31.110

ssh là cái openssh-client mình vừa mới cài đặt phía trên. nhatnhusername, và tương tự 192.168.31.110 là IP

Sau đó nó sẽ yêu cầu bạn nhập mật khẩu, gõ vào thế là xong. Tuy nhiên, cách này cực ở chỗ mỗi lần connect lại nhập mật khẩu 1 lần.

Mình có từng đọc được 1 câu ở đâu đó trên mạng rất hay.

Lập trình viên giỏi là những người rất nhác, thay vì họ viết 1 tập lệnh y hệt nhau cho mỗi chức năng, họ dồn vào 1 class lúc cần gọi ra xài, đỡ phải mất công viết lại.

Đọc xong nhìn lại, "Đù mình là lập trình viên giỏi ư". (tat) Vậy nên cách thứ 2 để kết nối với server là sử dụng ssh key

Vác máy server ra, bạn vào thư mục~/.ssh, tạo file authorized_keys và dán vào đó nội dung ssh public key của bạn vào là được. Thường nó có tên như thế này: id_rsa.pub

Kết nối với server gõ lệnh:

ssh nhatnh@192.168.31.110

Lần này thì nó không yêu cầu mật khẩu lằng nhằng gì cả. Ok. Vậy là xong việc kết nối giữa 2 máy trong cùng mạng LAN.

Kết nối qua Internet

Kết nối này thì rắc rối hơn, mình sẽ cần Publish IP, máy Server phải mở PORT và phải NAT đúng máy client muốn connect. ( Lằng nhằng nhỉ ) >.<

OK, Mình ví dụ các thông số cần thiết: – public IP: 118.69.176.252 – private IP: 192.168.31.222 – public PORT: 9999 – private PORT: 22 (đây là PORT mặc định của ssh)

Máy client và server phải cài OpenSSH như cách kết nối mạng LAN nhé.

Việc đầu tiên cần làm là NAT cổng 9999 của server đến địa chỉ 192.168.1.23, PORT 22.

Với mỗi modem sẽ có 1 giao diện khác nhau, nhưng nói chung là vào network setting, NAT setting và tạo NAT thôi. Các bạn tham khảo ở link này nhé: https://www.bachkhoashop.com/tin-tuc/camera-huong-dan-nat-port-modem-ra-ngoai-de-xem-camera-tu-xa-bang-ten--93.html

Nếu đã xong các bước đó thì việc còn lại chỉ việc nhâm nhi ly cafe và bấm Enter thôi. ( Đùa đấy ).

Để kết nối, ở máy client bạn gõ.

ssh nhatnh@118.69.176.252 -p 9999

Vậy là xong.

Lưu ý

Dù là public IP hay private IP cũng là IP động, mỗi lần bạn ngắt kết nối với modem thì private IP của bạn sẽ thay đổi. Mà nó thay đổi thì bạn phải vào modem chỉnh NAT lại cho đúng với IP mới. ( thật rắc rối ). Bạn có thể tìm hiểu cách set private IP tĩnh cố định trên google 😄.

Kết luận

Vậy là mình đã hướng dẫn các bạn tạo 1 con server từ máy của mình. Bài tiếp theo mình sẽ hướng dẫn tiếp việc config server, và sử dụng Mina để deploy Rails app lên máy server tự tạo này nhé.

Nguồn: https://www.bachkhoashop.com/tin-tuc/camera-huong-dan-nat-port-modem-ra-ngoai-de-xem-camera-tu-xa-bang-ten--93.html http://ubuntuhandbook.org/index.php/2016/04/enable-ssh-ubuntu-16-04-lts/ https://en.wikipedia.org/wiki/Port_(computer_networking)


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí