Mình đã xây dựng website Wordpress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào?

Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? Trong bài viết này mình sẽ chia sẻ cách mình đã xây dựng một website chạy nginx trên một VPS là Lightsail của Amazon Web Services. Tất nhiên, là một người không thật sự hiểu sâu về VPS và nginx thì rất khó cấu hình để nó có thể chạy ổn định, ít lỗi và khả năng chịu tải cao, mình là người đó đó. Chính vì vậy mình mới sử dụng một Framework là Easyengine để giúp mình cấu hình một cách nhanh hơn và chuẩn xác hơn.

Giới thiệu – Luyên thuyên

Vẫn như mọi khi, trước khi bắt đầu, mình vẫn sẽ liệt kê ra các lựa chọn công nghệ mà mình sẽ sử dụng để giúp quá trình trở nên rõ ràng và theo dõi tốt hơn. Lưu ý là có thể sẽ có một vài sai sót hoặc “hơi ngáo” của mình trong quá trình làm bởi mình là một Business man 😂

Đây là những yếu tố mà mình lựa chọn để thực hiện điều trên, tất nhiên bạn có thể sử dụng những giải pháp tương tự.

  • Mã nguồn xây dựng website – Mình chọn WordPress: Chắc có lẽ mình không cần phải giới thiệu quá nhiều về mã nguồn này. WordPress hiện tại đang là mã nguồn xây dựng website (thiên về quản lý content) phổ biến nhất thế giới.
  • VPS – Mình chọn Lightsail của AWS: Lightsail là một dịch vụ VPS còn khá mới của Amazon Web Services, tuy nhiên nó cũng đang dần chứng tỏ khả năng và cho thấy tầm ảnh hưởng và xuất sắc của AWS. Lightsail hiện tại theo mình là VPS ổn định và mượt nhất hiện nay (ý kiến cá nhân nên người đọc đừng ném đá nha 😅). Tất nhiên, bạn có thể chọn VPS khác như Digital Ocean, Vultr hay các VPS ở Việt Nam cũng được.
  • CDN và DNS Manager – Mình chọn Cloudflare: Thật ra thì Cloudflare khá good và dùng quen rồi nên mình lựa chọn luôn. Bạn có thể sử dụng những thằng khác nếu không thích Cloudflare. À lưu ý là khi chạy nginx bằng Easyengine thì bạn không thể cài SSL của Let’s Encrypt chung với Cloudflare được nha, sẽ xảy ra lỗi too many redirection. SSL thì trong bài này mình sẽ xài của chính Cloudflare luôn.
  • Framework để cài nginx – Mình chọn Easyengine (v4): Do lý do ở trên mình đã chia sẻ, mình không rành về nginx do từ đó giờ toàn chạy Apache với khả năng kéo thả nên sang nginx bỡ ngỡ 😆nginx quản lý hoàn toàn bằng câu lệnh nha, nếu đọc đến đây mà ngại thì bạn có thể đọc bài này: nếu bạn chỉ muốn deploy website chạy WordPress thôi. Nói thêm, nginx là một web server khá hot hiện nay và được rất nhiều trang chuyển sang dùng thay cho Apache bởi nó nhanh hơn đánh kể, một vài trang mà mình biết đang sử dụng nginx là: Zing.vn, Tinhte.vn, iDesign.vn, blabla. 😆Để kiểm tra xem 1 website đang xài những công nghệ gì và có dùng nginx hay không, bạn có thể vào Builtwith.com và nhập url trang web đó vào để kiểm tra.

Ok! về cơ bản chỉ có vậy, tùy vào nhu cầu của mọi người mà có thể thêm nhiều công nghệ khác để giúp website chạy ổn định và tốt hơn. Giờ thì bắt đầu nào!

Mua Domain và Cài đặt Cloudflare cho tên miền đó

Bước này về cơ bản khá đơn giản. Bạn chỉ việc mua tên miền yêu thích ở các nhà cung cấp tên miền như NameCheap, Godaddy, blabla,…. cho các tên miền quốc tế hoặc nếu muốn mua tên miền .vn thì mua tại các nhà cung cấp trong nước như Mắt Bão, PA Vietnam,… Sau khi mua tên miền xong, việc bạn cần làm là truy cập vào Cloudflare để đăng ký quản lý DNS tại đây. Cloudflare sẽ tiến hành gồm nhiều bước cơ bản như nhập tên miền, chọn gói Cloudflare phù hợp (từ Free đến vài trăm đô tùy vào nhu cầu), thay đổi Name Server,… Thường thì Cloudflare sẽ cho bạn 2 cặp tên miền và bạn sẽ dùng chúng thay cho cặp tên miền mặc định.

Mình đã tạo một website WordPress dùng AWS như thế nào? - huuphongnguyen.com

Sau khi copy 2 tên cặp Name Server và thay chúng vào khu vực Name Server của nhà cunng cấp tên miền, từ đây mọi thứ về DNS sẽ được quản lý trên Cloudflare cả. Tất nhiên, bạn có thể chọn những nhà quản lý DNS khác thay cho Cloudflare hoặc dùng luôn nhà cung cấp tên miền cũng được, tùy vào sở thích và nhu cầu của mỗi người, riêng mình thì thích dùng Cloudflare bởi nó đầy đủ chức năng từ cơ bản đến nâng cao cũng như giao diện khá thân thiện.

Cài đặt Lightsail – AWS

Đăng ký và mua một instance Lightsail

Đầu tiên, để có thể sử dụng được Lightsail, chúng ta phải mua một instance (tạm hiểu như là mua một con máy ảo) để biến nó thành “một ngôi nhà” và chứa trang của chúng ta. Truy cập vào: lightsail.aws.amazon.com để đăng nhập và tiến hành mua instance. Nếu bạn chưa có tài khoản AWS thì bạn cần phải tạo một tài khoản nha (khá nhanh và dễ dàng).

Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Hiện tại mình đang có 2 instance chạy trên tài khoản AWS này. Mình chọn Create instance

Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Tại đây, bạn sẽ có rất nhiều lựa chọn để cấu hình cho instance của mình như vị trí instance của bạn đặt ở đâu? Mình chọn Singapore bởi nó là nơi gần Việt Nam nhất và cho tốc độ cao nhất. Ngoài ra, bạn được lựa chọn nền tảng cho instance, thường thì mình sẽ chọn linux bởi giá rẻ và hiệu quả hơn Windows. Hệ điều hành thì mình chọn Ubuntu 16.04 LTS, bạn cũng có thể chọn 18.04 bởi EasyEngine hiện tại cũng đã hỗ trợ phiên bản này.

Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Kế tiếp, chúng ta sẽ lựa chọn gói cho instance, với gói thấp nhất là $3.50 mỗi tháng và free tháng đầu là lựa chọn của mình. Nếu bạn chưa rành và còn lăn tăn thì cứ chọn gói này mà chơi trước cho an tâm. Sau này muốn nâng cấp thì chỉ việc tạo một Snapshot và dùng Snapshot đó cho instance cao hơn thôi. Chi phí tạo một snapshot là $0.50 thôi nên hoàn toàn yên tâm là chọn rồi không được chọn lại nha.

Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Kế tiếp, trong phần SSH key pair manager, bạn cần lựa chọn key pair cho instance, sau này chúng ta sẽ dùng key pair đó để kết nối với instance thông qua các ứng dụng bên thứ 3. Trong bước kế tiếp mình sẽ dùng key này để kết nối với Terminal trên MacOS đó. Bạn chọn tạo mới hoặc chọn Default cũng được, nhưng nhớ tải về nha (đó là một file .pem).

Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Sau khi đã hoàn tất các lựa chọn. Chúng ta chọn Create instance để khởi tạo.

Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen
Đây là instance đang trong quá trình tạo. Bạn chỉ cần chờ khoảng 30s là xong!
Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen
Đây là instance đã tạo xong và chúng ta có thể sử dụng.
Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Click chọn vào Instance vừa tạo, chúng ta sẽ thấy những thông tin quan trọng như Public IP của instance và Key dùng để kết nối SSH với instance đó. Phía trên bạn cũng có những tab theo dõi như Storage, Metrics (sơ đồ hoạt động), Networking, Snapshots (dùng để chúng tao backup hoặc muốn nâng cấp gói dùng), Tags, History và Delete.

Ok! như vậy là chúng ta đã xong các bước tạo một instance trên Lightsail của AWS rồi đó. 🎉

Trỏ tên miền về instance Lightsail

Để có thể sử dụng tên miền mà bạn mua, bạn cần phải trỏ tên miền về instance vừa tạo trên Lightsail của AWS. Việc trỏ tên miền về cơ bản là khá đơn giản thôi. Bạn cần phải copy Public IP của instance, sau đó vào Cloudflare (tất nhiên đối với những người không sử dụng Cloudflare thì có thể thao tác tương tự như bình thường thôi).

Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Đấy chỉ vậy thôi, đợi khoảng vài phút hoặc đôi khi nó ngay lập tức. Lúc này thì tên miền của bạn đã được trỏ về instance Lightsail rồi. Tất nhiên, sau này bạn có thể dùng tên miền thay cho dãy Public IP khó nhớ để truy cập.

Kết nối instance Lightsail với Terminal trên MacOS

Bước kế tiếp, mình sẽ tiến hành kết nối Terminal của MacOS với instance Lightsail vừa tạo. Tất nhiên, nếu bạn dùng Windows thì có thể sử dụng các phần mềm khác tương tự hoặc có thể kết nối trực tiếp SSH trong cửa sổ chi tiết của instance vừa tạo (tuy nhiên nó khá lag và trải nghiệm kém 😂). Chính vì lý do đó mà mình chọn Terminal trên MacOS bởi nó super cool. 🎉

Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Đầu tiên mình mở Terminal lên và list ra nơi mình đang đứng, thường thì khi mới mở Terminal lên mình sẽ đứng ở vị trí root, tức là tận cùng của máy. Sau đó mình đi đến thư mục mà mình đã chưa bộ key pair .pem của mình, trong trường hợp này mình đã lưu ở Documents trên máy Mac của mình.

cd Documents/
Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Nếu bạn không chắc ăn mình đang đứng ở đâu thì cứ gõ các câu lệnh dưới đây để list ra nha

ls

-> Dùng để list ra các file và thư mục mà mình đang truy cập

cd [Nơi bạn muốn đến]/

-> Đi đến nơi mà mình muốn đến 😆nhớ là phải theo thứ tự nha, không thì bạn có thể ghi một cây dài ra như Documents/bla1/bla2/…

cd -

-> Cái này để back lại 1 nấc

cd --

-> Cái này để quay lại vị trí ban đầu nếu bạn lỡ đi xa quá

Sau khi đã đi đến nơi để key pair mà mình lưu. Bạn gõ từng câu lệnh dưới đây để giúp Mac có thể kết nối với instance Lightsail nha. Lưu ý, chữ hoa và chữ in thường đó, bạn nên copy tên file .pem lại là tốt nhất. Bạn thay cụm […] bằng tên của riêng bạn.

chmod 600 [ten-key-pair].pem
ssh -i [ten-key-pair].pem [email protected][public-ip]
Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Bấm Enter và hệ thống sẽ kết nối với instance của bạn nhanh thôi. Dưới đây là sau khi đã kết nối thành công. 🎉 Bạn sẽ đi tiếp bước kế tiếp

Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Cài đặt nginx thông qua framework EasyEngine V4

EasyEngine là một framework giúp cho chúng ta quản lý các website WordPress chạy trên Web Server nginx một cách dễ dàng hơn. EasyEngine được xây dựng – phát triển – và tối ưu dành cho các website chạy WordPress. Bạn có thể truy cập vào: EasyEngine.io để hiểu rõ hơn về những gì mà framework này có thể làm giúp chúng ta. Một vài điểm mạnh mà EasyEngine có thể giúp chúng ta:

  • Tự cài đặt NGINX bản mới nhất.
  • Tự thiết lập PHP-FPM cho NGINX.
  • Có hỗ trợ HHVM.
  • Hỗ trợ Redis Cache.
  • Hỗ trợ SSL miễn phí từ Let’s Encrypt.
  • Hỗ trợ tự cài website WordPress mới nhanh chóng.
  • Cài sẵn phpMyAdmin và bảo mật.
  • Cài sẵn Postfix để tối ưu gửi mail, không vào spam.
  • Có sẵn WP-CLI để quản trị WordPress với dòng lệnh.
  • Cấu hình NGINX cho WordPress Multisite.
  • Và còn rất nhiều điều khác mà EasyEngine giúp cho chúng ta

Nếu như bạn là một người mới tìm hiểu về Web Server và đặc biệt là không rành về việc sử dụng nginx thì EasyEngine là điều cần thiết. Mình đã từng ngồi “vò đầu bức tai” vì cấu hình nginx từng bước, tất nhiên nó sẽ tốt hơn nếu xài framework nhưng đòi hỏi phải có kiến thức vững về nginx. Đôi khi đừng quá cố gắng cho những thứ quá sức 😂

Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Trong bài viết này, mình sẽ dùng EasyEngine V4 – phiên bản mới nhất của EasyEngine và được viết lại gần như hoàn toàn bộ khung của bộ framework này, tất nhiên là nó hiện tại còn thiếu một vài chức năng nhưng sẽ sớm được cập nhật thôi. Lưu ý là trên trang web của EasyEngine có cả 2 phiên bản là V4 và V3, những câu lệnh của V3 sẽ không thể dùng được trên V4.

Đầu tiên, trước khi cài đặt EasyEngine thì bạn cần phải update tổng thể đã. Để làm điều này bạn gõ câu lệnh dưới đây. Hệ thống sẽ chạy rất nhiều lệnh để update các công nhệ mới nhất. 😄

sudo apt-get update
Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen
Sau khi đã update xong!

Sau khi đã update mọi thứ xong để chuẩn bị. Chúng ta cần phải truy cập vào trang web của EasyEngine là EasyEngine.io để xem các lệnh cài mới nhất. Hiện tại phiên bản V4 thì sẽ có lệnh cài như sau:

wget -qO ee rt.cx/ee4 && sudo bash ee

Bạn copy y chang và chạy lệnh này. Do là phải làm hết mọi việc thay chúng ta nên EasyEngine sẽ chạy rất nhiều lệnh, quá trình này kéo dài khoảng 2-3-4 phút tùy vào mạng mẽo và hiệu suất máy 😎. Sau khi đã chạy xong sẽ cho ra kết quả giống bên dưới.

Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Tới đây chúng ta đã cài xong EasyEngine V4, nó đã giúp mình cấu hình gần như mọi thứ về một web server là nginx. Nếu tự làm tay thì sẽ tốn rất nhiều công sức và đòi hỏi một trình độ thật sự chuyên sâu. À ngoài ra bạn cần phải thêm 1 câu lệnh nữa để cập nhật phiên bản ổn định cho EasyEngine V4 nha, do là V4 đang trong quá trình phát triển nên đôi khi cần điều này để khắc phục lỗi.

sudo ee cli update --stable --yes

Để cài đặt một website WordPress, bạn chỉ cần 1 dòng lệnh duy nhất dưới đây. Bạn cũng có thể tham khảo trang web của họ để thêm vài hậu tố giúp bật những tính năng như SSL hay Cache. Mình dùng Cloudflare nên sẽ dùng luôn SSL của Cloudflare nên không cần bật nữa.

sudo ee site create [Tên miền website của bạn] –type=wp –cache

Trong trường hợp của mình, mình dùng tên miền phong.page nên nó sẽ là:

sudo ee site create anhxuyen.com –type=wp –cache

Bấm Enter và pha một ly cà phê thôi! 😎 Sau khi chạy xong EasyEngine sẽ cho bạn bảng thông tin giống bên dưới. Bạn có thể dùng thông tin này để truy cập vào phpMyAdmin hay wp-admin.

Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Như vậy là bạn đã deloy một website WordPress trên chạy web server nginx bằng EasyEngine rồi đó. Bạn có thể vào tên miền của mình để xem.

Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Thật sự đơn giản đúng không, nó thậm chí nhanh hơn cả việc mình deploy một website WordPress trên Apache mà mình đã chia sẻ trong bài trước.

Cách truy cập vào file wp-config.php trên EasyEngine V4

Để quản lý và xây dựng một website WordPress, chúng ta cần phải truy cập vào bộ file của WordPress, trong đó quan trọng nhất là wp-config.php. Tuy nhiên, không giống như Apache, nginx quản lý mọi thứ thông qua câu lệnh nên chúng ta thường không thể làm tương tự như trước. EasyEngine V4 cũng thay đổi luôn cấu trúc của họ và đường dẫn chứa file cũng thay đổi. Bạn có thể kiểm tra thông qua các câu lệnh dưới đây, mình đã list ra từng bước cho bạn dễ nhìn hơn.

Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Mình sẽ cd vào từ từ và ls ra để thấy các folder đang có nha.

Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Tới đây, bạn đã thấy được app rồi đấy, đó chính là nơi chứa toàn bộ file WordPress. Tuy nhiên, rất nhiều người hiện tại không được phép truy cập vào cho dù đang sử dụng key pair root giống mình. EasyEngine nói rằng họ sẽ khắc phục trong các phiên bản sắp tới. Mặc dù vậy, mình cũng tìm ra cách giúp chúng ta chỉnh sửa các file wp bên trong app đó. 😂

Trước tiên bạn cần cd — để trở ra nơi bắt đầu bởi mình đã vào khá sâu để coi cái app. Sau đó bạn gõ lệnh dưới đây:

sudo ee shell [tên domain của bạn]

Bạn sẽ được chuyển sang quyền này. 😅

Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Giờ thì bạn hãy ls ra, bạn sẽ thấy toàn bộ file wp. Ngoài ra, bạn cần cd — một lần và ls ra thì bạn sẽ thấy file quan trọng wp-config.php

Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Thấy nó rồi, vậy làm sao để edit nó? Rất dễ, bạn chỉ cần gõ lệnh dưới đây:

vim [tên file cần sửa]

vim wp-config.php

Vậy là bạn đã truy cập được vào file wp-config.php và chỉnh sửa tùy ý như là thêm các define để nâng cao bộ nhớ hay các quyền cơ bản khác.

Mình đã xây dựng website WordPress chạy Nginx trên AWS thế nào? - HuuPhongNguyen

Sau khi chỉnh sửa xong, bạn bấm : x (tổ hợp phím này giúp Save và Exit luôn nhé)

Đấy, problem solved 🎉Giờ thì bạn dùng trang wordpress của mình như bình thường thôi 😆

Everything’s awesome! 🎉

Như vậy là mình vừa hướng dẫn xong cách mình đã xây dựng một website WordPress chạy Nginx trên AWS như thế nào. Tất nhiên, cách này dùng framework là EasyEngine nhưng nó cũng khá hiệu quả và tốt cho những người không rành kỹ thuật như mình.

Nguồn tham khảo:

  • EasyEngine (2018) EasyEngine = Easy WordPress on Nginx, Available at: https://easyengine.io/ (Accessed: 26 Jan 2019)
  • Lightsail (2018) Tutorial: Using Let’s Encrypt SSL certificates with your WordPress instance in Amazon Lightsail, available at: https://lightsail.aws.amazon.com/ls/docs/en/articles/amazon-lightsail-using-lets-encrypt-certificates-with-wordpress (Accessed: 26 Jan 2019)
  • Rohit Falor (2017) How do I connect to a new Amazon Lightsail instance from my Mac? , available at: https://stackoverflow.com/questions/46028907/how-do-i-connect-to-a-new-amazon-lightsail-instance-from-my-mac (Accessed: 26 Jan 2019)

Bài viết tương tự:

Đánh giá bài viết:

Twitter
Facebook
LinkedIn
Email
Print