Tạo server deploy Rails app từ máy tính khác.
Bài đăng này đã không được cập nhật trong 7 năm
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.
nhatnh
là username
, 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