Th3 21 Thứ Năm, 21 Tháng Ba, 2019

Hướng dẫn tạo VPS chạy CentOS với Amazon EC2 Instance và cài đặt VPSSIM

VPS của Amazon được đánh giá là rất rất tốt. Nếu bạn muốn thử nghiệm dịch vụ VPS của Amazon thì có 2 lựa chọn là Lightsail và EC2. Với Lightsail bạn được dùng thử 1 tháng và với EC2 bạn được dùng thử trong vòng 12 tháng.

Nếu bạn đã quen với việc tạo VPS với Vultr hay Digital Ocean thì việc tạo 1 VPS với Amazon EC2 sẽ khiến bạn một chút bối rối. Để giúp các bạn tiết kiệm thời gian mày mò, trong bài viết này mình sẽ hướng dẫn cho các bạn cách khởi tạo 1 Instance với Amazon EC2 sử dụng hệ điều hành CentOS 7; rồi sau đó cài đặt VPSSIM rồi tạo website.

Nếu không thích VPSSIM bạn vẫn có thể tham khảo các hướng dẫn trong bài viết này, sau đó thay vì VPSSIM thì bạn có thể cài đặt trên đó 1 control panel mà bạn quen dùng như VestaCP, Virtualmin,.. hay 1 bash script như HocVPS để tạo website, miễn sao nó chịu chạy trên CentOS ^.^

Với các bạn đã quen với Vultr cung cấp sắn user root cùng password để login thì có thể bạn sẽ bối rối với Amazon EC2 khi phải login SSH thông qua key pair. Do đó trong bài viết này mình cũng sẽ hướng dẫn các bạn 1 cách chi tiết làm sao để login SSH với key pair bằng PuTTy và Bitvise, login FTPS với key pair trên Filezilla. Nếu bạn không muốn sử dụng key thì bên dưới mình cũng có phần hướng dẫn các bạn chuyển về chế độ login với password giống như các bạn đã quen sử dụng với Vultr.

1. Khởi tạo một EC2 Instance chạy hệ điều hành CentOS

Truy cập trang Amazon EC2 console tại https://console.aws.amazon.com/ec2/.

ChọnLaunch Instance để bắt đầu

Step 1: Choose an Amazon Machine Image (AMI)

Ở phần Quick Start, bạn sẽ thấy một số option như sau:

  • Amazon Linux 2 AMI (HVM), SSD Volume Type
  • Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type
  • Red Hat Enterprise Linux 7.5 (HVM), SSD Volume Type
  • SUSE Linux Enterprise Server 15 (HVM), SSD Volume Type

Không chọn mấy cái này bởi vì chúng ta cần 1 hệ điều hành CentOS để cài đặt VPSSIM. Bạn ko thể cài VPSSIM trên Amazon Linux 2 hay Red Hat… (mình đã thử và thất bại)

Vì vậy, hãy nhấn vào mục AWS Marketplace

Nếu bạn chỉ đơn giản muốn tạo ngay 1 website WordPress ngay lập tức và không muốn quan tâm tới các bước cài đặt cấu hình server trước đó thì có 1 lựa chọn cho bạn đó là WordPress Certified by Bitnami and Automattic.

Tuy nhiên, trong bài viết này mục tiêu của chúng ta là cài đặt VPSSIM nên chúng ta cần một hệ điều hành Centos chưa cài đặt gì. Bạn có thể gõ “CentOS” để tìm sau đó lựa 1 cái, lưu ý là bản CentOS phải chưa cài gì nhé.

Ví dụ: nếu bạn chọn “CentOS 7.4 Minimal with Webmin (HVM)”, thì sẽ ko cài được VPSSIM đâu vì Image này đã cài thêm Webmin rồi.

OK, bây giờ mình sẽ chọn “CentOS 7 (x86_64) – with Updates HVM”

Bạn có thể xem thêm về bản image này tại đây: https://aws.amazon.com/marketplace/pp/B00O7WM7QW

Click Continue

Step 2: Choose an Instance Type

Trong bài hướng dẫn này, mình sẽ chọn t2 micro. Lựa cái này mới được miễn phí 12 tháng, mỗi tháng 750 giờ sử dụng. Bạn xem thêm ở đây: https://aws.amazon.com/ec2/?ft=n

Với t2.micro, cấu hình Instance của bạn như sau Variable ECUs, 1 vCPUs, 2.5 GHz, Intel Xeon Family, 1 GiB memory, EBS only.

Tiếp tục click Next: Configure Instance Details

Step 3: Configure Instance Details

Step 4: Add Storage

Dung lượng lưu trữ mặc định nó hiện cho bạn là 8 GiB. Tuy nhiên bạn có thể tự chọn dung lượng cho mình, tối đa là 30 GB cho EBS General Purpose (SSD) or Magnetic storage, chọn hơn nữa thì ko còn free nữa nhé

Step 5: Add Tags

Click vào Add Name tag. Mục này thì không bắt buộc, tuy nhiên bạn vẫn nên set name cho nó để sau này dễ phân biệt. Trong bài viết này, mình sẽ đặt Name là QuyetDoan

Step 6: Configure Security Group

Ở đây, mình sẽ đặt là All traffic and Source và Anywhere. Bạn sẽ thấy một cảnh báo, hãy bỏ qua nó. Đừng quá lo lắng, chúng ta có thể thay đổi thiết đặt này sau này nếu cần thiết.

Review and Launch

Ở Step 4, nếu bạn chọn Storage Size vượt quá 30 GiB, bạn sẽ thấy 1 thông báo như sau:

Nếu muốn tiếp tục dùng gói free thì bạn phải quay lại đối nó xuống dưới 30GiB.

Nếu như mọi thứ ok, bạn sẽ thấy như này:

Click vào Launch

Tạo key pair

Sau khi cấu hình xong. Bạn cần phải tạo 1 key pair. ĐỪNG nhấn chọn Proceed without a key pair nếu bạn ko biết mình đang làm gì.

Trong ví dụ này, mình sẽ đặt Key pair name là ToanNguyen. Sau đó click vào Download Key Pair

Bạn cần phải tải xuống private key file (*.pem file) trước khi bạn có thể đi tiếp.  Lưu nó lại và nhớ đừng quên bạn đã lưu ở đâu nhé; bạn sẽ không thể tải lại lần thứ 2. Nếu bạn cố click tải xuống, nó sẽ hiện thông báo:

Sau khi bạn đã tải về file pem và lưu nó cẩn thận. Bạn có thể click vào Launch Instances

Chờ một lúc để hệ thống khởi tạo, sau đó bạn có thể thấy thông tin về instance:

2. Login SSH với key pair

2.1. Khâu chuẩn bị

Tải về và cài đặt PuTTY or Bitvise

Nếu bạn đã quen dùng VPS bên mấy thằng khác thì cũng không lạ gì với 2 phần mềm này nữa. Do có người thích dùng PuTTY hơn, lại cũng có người thích dùng Bitvise hơn nên mình hướng dẫn login SSH với cả 2 thằng này luôn:

  • Dành cho bạn nào chưa biết thì bạn có thể tải PuTTY từ trang chủ của nó:
    http://www.chiark.greenend.org.uk/~sgtatham/putty/
  • Trang tải Bitvise: https://www.bitvise.com/ssh-client-download

Xong rồi giờ kiểm tra thông tin Public DNS (IPv4) và IPv4 Public IP, chúng ta sẽ cần những thông tin này để login SSH

Lưu ý quan trọng: Nếu bạn stop, sau đó khởi động lại Instance, thì Amazon sẽ release lại một địa chỉ public IPv4 mới, không giống như cũ. Tức là IP sẽ bị thay đổi. Do đó bạn cần phải tạo 1 Elastic IP, cái IP này sẽ không thay đổi và sẽ đi chung với AWS account của bạn. Địa chỉ IP này sẽ ko thay đổi sau khi bạn restart lại Instance. Cái này quan trọng nhé ! Nếu bạn ko dùng Elastic IP mà chơi trỏ Domain về cái Public IPv4 kia thì… bạn tự hiểu nhé. Bạn có thể tìm hiểu thêm về Elastic IP ở đây:
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html

Phần dưới của bài mình sẽ hướng dẫn cách tạo Elastic IP này, còn giờ phải đi cho xong phần login này đã ^.^

Tên user mặc định của các AMI

  • Với Amazon Linux 2 or the Amazon Linux AMI, tên user name là ec2-user.
  • Với Centos AMI, tên user name là centos.
  • Với Debian AMI, tên user là admin hoặc root.
  • Với Fedora AMI, tên user là ec2-user hoặc fedora.
  • Với RHEL AMI, tên user là ec2-user hoặc root.
  • Với SUSE AMI, tên user là ec2-user hoặc root.
  • Với Ubuntu AMI, tên user là ubuntu.

Trong trường hợp mà user name ở trên ko xài được thì bạn cần check lại với nhà cung cấp AMI của bạn đang dùng nhé. Còn trong bài hướng dẫn này, chúng ta dùng Centos AMI, nên user name sẽ là centos

2.2. Login với PuTTy

Bước 1: Sử dụng PuTTYgen để convert Private Key

  1. Mở PuTTYGen lên (chứ không phải PuTTY nhé):
    Từ Start Menu  chọn All Programs > PuTTY > PuTTYgen
  1. Trong mục Type of key to generate, chọn RSA.
    Nếu bạn sử dụng phiên bản PuTTYgen cũ hơn, hãy chọn SSH-2 RSA
  1. Choose Load. By default, PuTTYgen displays only files with the extension .ppk.To locate your .pemfile, select the option to display files of all types.
  1. Chọn file .pem mà bạn đã lưu ở phần trên, nhấn Open. Click OK để bỏ qua hộp thoại thông báo.
  2. Chọn Save private key để lưu lại key với định dạng mà PuTTY có thể sử dụng. PuTTYgen hiện một thông báo về việc lưu key mà không có passphrase. Cứ chọn Yes.
  1. Cuối cùng là lưu file ppk của bạn lại

Bước 2: Bắt đầu một PuTTY Session

1. Mở PuTTY lên (Start menu > All Programs > PuTTY> PuTTY).

2. Trong phần Category, chọn Session và điền vào những thông tin sau:

  • Host Name: điền theo format sau: User name: centos
  • Public DNS name: ec2-52-221-217-110.ap-southeast-1.compute.amazonaws.com(bạn coi thông tin này ở mục description bên dưới Instance của bạn nhé)
  • Port: 22
  • Conection type: SSH

Ở phần Category bên trái, bạn tìm đến phần Connection >  SSH, click dấu + để mở nó ra rồi chọn Auth. Sau đó tiến hàn chọn file:

  • Click vào Browse.
  • Tìm file .ppk mà bạn đã tạo lúc này, rồi nhấn Open.
  • Choose Open to start the PuTTY session.

4. Nếu đây là lần đầu bạn kết nối tới instance, PuTTY sẽ hiện một cửa sổ thông báo như bên dưới. Bạn cứ nhấn Yes là được.

Sau khi nhấn Yes thì màn hình Termial hiện ra. Vậy là OK.

2.3. Login với BitVise

Bước 1: Import key

  • Các bạn mở Bitvise lên rồi nhấn chọn Client key manager
  • Ở cửa sổ hiện lên, các bạn nhấn chọn Import
  • Các bạn chọn All Files như hình dưới rồi tìm đến file pem mà chúng ta đã tải xuống. Chọn Open
  • Một cửa sổ mới hiện lên, các bạn chọn Import
  • Như vậy, sau khi Import, các bạn có thể thấy ở phần Client Key Manager xuất hiện thêm 1 mục là Global 1. Như vậy key đã import thành công và có tên là Global 1.

Bước 2: Đăng nhập  với Bitvise

  • Ở mục Host: các bạn điền IPv4 Public IP hoặc Elastic IP vào
  • Ở mục Port: các bạn để nguyên là 22
  • Username: centos
  • Initial method: các bạn chọn publickey
  • Client key: các bạn chọn cái Global 1 lúc nãy.
  • Nhấn Login, vậy là các bạn đã đăng nhập thành công ^-^

3. Elastic IP

Hihi, như đã nói ở khúc trên – do IPv4 Public IP có thể bị thay đổi sau mỗi lần restart instance. Vì vậy chúng ta cần phải tạo một cái Elastic IP:

Các bạn nhìn qua Panel bên trái sẽ thấy mục Elastic IPs:

Click vào  Allocate new address

Bạn có thể thấy IP mới đã được tạo. Bây giờ bạn click vào close trở ra ngoài, bạn sẽ thấy các Elastic IPs mà bạn có. Ở đây mình chỉ có 1 cái vừa tạo lúc nãy thôi. Bạn Click phải vào như hình dưới và chọn Asociate address.

Sau đó chọn Instance mà chúng ta tạo lúc đầu. Rồi click Asociate vậy là xong.

Thông báo bạn đã thao tác thành công:

Bây giờ bạn có thể login SSH với host name như sau: user_name@elastic_ip.

4. Đăng nhập EC2 Instance với user root

Mặc định, bạn chỉ có thể login EC2 instance với user mặc định (centos với CentOS, ec2-user với Amazon Linux 2/Amazon Linux AMI). Nếu bạn thử login với user root, bạn sẽ gặp thông báo lỗi. Trong bài viết này mình sẽ hướng dẫn các bạn 2 cách xử lý vấn đề này để có thể login SSH với user root:

  • Cho phép login bằng password thay vì keypair: Với cách này, bạn có thể login SSH, FTPS với root và password mà bạn đã thiết đặt y chang với mấy cái VPS của Vultr, Digital Ocean.. (mình sẽ hướng dẫn cái này ở dưới)
  • Nếu bạn không muốn dùng mật khẩu để đăng nhập để tăng tính bảo mật, bạn có thể làm theo những bước mình hướng dẫn dưới đây để enable  việc login bằng root user.

Bước 1: Chuyển sang superuser

Tại terminal, các bạn gõ lệnh:

sudo -s

Bước 2: Chỉnh lại file Athorized keys

Mình sẽ dùng Vi Editor để chỉnh sửa nội dung trong file authorized_keys. Nhiều bạn có thể thích edit với nano hơn, tuy nhiên lúc này chúng ta vẫn chưa cài nano nên buộc phải dùng Vi:

vi /root/.ssh/authorized_keys

Nhấn phím i để chuyển sang insert mode. Sau đó bạn xóa nội dung từ đầu file cho tới từ ssh-rsa. Chỉnh sửa xong bạn nhấn phím ESC để quay lại command mode. Sau đó gõ :wq và nhấn enter để lưu và thoát.

Bước: Chỉnh lại sshd_config

Chúng ta cần loại bỏ dấu comment (dấu #) trước dòng “PermitRootLogin” trong file sshd_config.

Tương tự như trên mình cũng sẽ edit với vi:

vi /etc/sshd_config

Nhấn phím i để chuyển sang insert mode, tìm đến dòng “PermitRootLogin” và bỏ dấu $# ở đằng trước

Xong rồi bạn nhấn ESC để quay lại command mode. Sau đó gõ :wq và nhấn enter để lưu và thoát.

Bước 4: Khởi động lại ssh service

Bạn restart lại ssh service trong hệ điều hành Centos 7 với lệnh sau:

/bin/systemctl restart sshd.service

Ok. Vậy là bây giờ bạn đã có thể login EC2 Instance as root.

5. Đăng nhập SFTP trên Filezilla với file .pem

1. Để đăng nhập SFTP với keypair trên phần mềm Filezilla, bạn làm như sau: Vào Edit (Preferences) > Settings > Connection > SFTP, Click “Add key file”

2. Tìm chọn file .pem của bạn.

3. Một thông báo hiện ra hỏi bạn có muốn lưu chuyển file pem của bạn sang ppk không. Bạn click Yes, đặt filename rồi lưu file đó lại.

If the new file is shown in the list of Keyfiles, then continue to the next step. If not, then click “Addkeyfile…” and select the converted file.

Các bạn vào File > Site Manager > Thêm thông tin vào như hình dưới:

  • Host: Bạn điền vào Elastic IP
  • Protocol: SFTP
  • Logon Type: Normal
  • User: centos hoặc root
  • Password: để trống vì lúc này mình chưa set pass cho user.

6. Đăng nhập SSH bằng password thay vì key pair

Nhiều bạn có thể thấy đăng nhập bằng keypair theo các bước ở trên sao mà lằng nhằng phức tạp quá, có cách nào đăng nhập luôn bằng pass giống như Vultr hay không. Vậy nên trong phần này của bài viét, mình sẽ hướng dẫn các bạn cách bật chức năng đăng nhập bằng password cho EC2. Bạn có thể bỏ qua phần này nếu bạn chỉ muốn đăng nhập với keypair như hướng dẫn ở phần 4, 5 ở trên.

Bước 1: Login SSH (bằng Key pair)

Hi, muốn làm gì thì làm cũng phải login trước đã đúng không :p

Viết một bình luận