Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Mình đã xây dựng một website Forum bằng Discourse như thế nào?

Mình xây dựng một website Forum bằng Discourse như thế nào? Trong bài viết này, mình sẽ chia sẻ cách mà mình đã xây dựng một website Forum bằng một bộ mã nguồn mở rất phổ biến hiện nay là Discourse. Đây là một mã nguồn mở đang được rất nhiều brand sử dụng và đóng góp hàng ngày hàng giờ để giúp nó tốt hơn. Discourse không khó như mình nghĩ và nó rất dễ học. Mình đã tốn 3 tháng chỉ để hiểu cách kiểm soát WordPress bởi giao diện của WordPress thật sự được thiết kế rất tệ cho người mới bắt đầu. Tuy nhiên, với Discourse thì không, đây thật sự là một thế hệ kế tiếp của việc “thảo luận qua diễn đàn” khi rất nhiều bài viết hiện nay nói về việc “thảo luận diễn đàn đã chết”. Discourse đã xóa bỏ hoàn toàn điều đó và khắc phục điểm yếu cổ hữu nhất của forum là khó tương tác. Giới thiệu như vậy là ok rồi, chúng ta hãy cùng đi qua các bước Mình đã xây dựng một website Forum bằng Discourse như thế nào?.

Giới thiệu – luyên thuyên về Discourse

Trước tiên, chúng ta hãy cùng nói sơ qua về điều mà chúng ta sắp làm đã 😆Bắt đầu một cái gì cũng cần phải tìm hiểu gốc gác nó đã, coi nó có phải là “Con ông cháu cha” không đúng hông?. Ví dụ WordPress đứng sau là một Automatic quá mạnh mẽ hay Github đứng sau là một gã khổng lồ xứ Redmond. Việc xem gốc gác của những thằng này là rất quan trọng bởi đó cũng chính là yếu tố giúp nó có phát triển lâu dài hay không. Tuy nhiên, là một dự án mã nguồn mở thì Discourse, WordPress, … những thằng này sống tốt nhờ vào chính sự đóng góp của cộng đồng – những người sử dụng chúng hàng ngày.

Discourse được xem là một dạng diễn đàn mới sau thời kỳ hoàng kim của Xenforo hay vBulletin. Discourse mang hơi hướng hiện đại và giao diện thiết kế phẳng hơn so với 2 đứa kia. Hiện tại ở Việt Nam thì có 2 anh lớn đang xài 2 thằng cũ là tinhte.vn/forums/ (xài giao diện Xenforo) và forums.voz.vn (xài giao diện vBulletin). Tuổi thơ của chúng ta từng vào nhiều diễn đàn xài 2 thằng này, giờ là lúc Discourse thay đổi điều đó với giao diện xài ok hơn rất nhiều.

Discourse là cái gì & có ăn được không?

Discourse là một mã nguồn mở được phát triển tập trung vào xây dựng một diễn đàn hay một cộng đồng. Ban đầu, Discourse là một dịch vụ cung cấp Hosting và gia công phần mềm, tuy nhiên trong một dự án mã nguồn mở rất thành công đó là Discourse ngày nay, công ty này đã dần chuyển hướng sang việc phát triển mã nguồn và hỗ trợ cộng đồng. Discourse được phát triển từ năm 2013 và chính thức ra mắt cộng đồng vào năm 2014, tức chỉ mới 5 năm tuổi thôi đó 😆. Tuy nhiên, với khả năng và chăm chút, Discourse dần được lòng các thương hiệu và cộng đồng lớn. Rất nhiều startup từ lớn tới nhỏ đã chuyển sang dùng Discourse và biến mã nguồn này trở thành một trong những mã nguồn phổ biến nhất.

Discourse được xây dựng trên 4 yếu tố chính:

  • Mã nguồn này sử dụng Ember.js framework để xây dựng giao diện front-end
  • Back-end được xây dựng bằng Ruby on Rails
  • Cơ sở dữ liệu được phát triển trên Postgres database và dùng Redis Cache tăng tốc độ
  • Discourse sẽ chạy trên Web-server sử dụng nginx
  • Tổng thể Discourse được xây dựng và phát triển trên ngôn ngữ Javasript thần thánh 🎉

Phân tích SWOT về Discourse

Hãy cùng mình phân tích một xíu SWOT về Discourse để hiểu nó tổng thể hơn nha. Chắc sẽ có nhiều người đọc thấy mình hơi rảnh vì đi SWOT một thằng mã nguồn mở. 😂Tuy nhiên, đó là thói quen của mình rồi và mình thường SWOT để so sánh, mình là dân làm Business mà *hahah

  • Điểm mạnh (STRENGTHS): Discourse được xây dựng trên ngôn ngữ JavaScript nên tốc độ tải và phản hồi rất nhanh, đây là một yếu tố quan trọng tác động trực tiếp tới trải nghiệm người dùng của diễn đàn bởi họ thường thao tác tranh luận nhanh. Discourse được thiết kế Reponsive giúp cho việc hiển thị trên các loại thiết bị trở nên dễ nhìn và đẹp hơn, yếu tố bắt buộc của web dev hiện nay. Giao diện của Discourse được thiết kế và nghiên cứ UX (User Experience) rất tốt, nó khiến cho việc thảo luận nhóm đông dễ dàng hơn. Rất thân thiện SEO, đây là một yếu tố tối quan trọng hiện nay, cho dù giao diện có đẹp và nhanh thế nào nhưng SEO không thân thiện thì cũng không được quan tâm, hãy tưởng tượng bạn search Google và luôn nằm ở trang 2 😇. Tất nhiên, hỗ trợ SSL thông qua Let’s Encrypt. Cộng đồng hỗ trợ nhanh chóng và sôi nổi, nếu cần bất kỳ hỗ trợ nào bạn đều có thể hỏi hoặc tìm câu trả lời tại: https://meta.discourse.org
  • Điểm yếu (WEAKNESSES): Do được xây dựng trên Ruby on Rail nên Discourse khá là có cơ, bộ nhớ RAM của VPS tối thiểu 1Gb và bạn thậm chí cần SWAP thêm 2Gb. Themes (giao diện) và Plugins (trình cắm) còn khá hạn chế và do người đóng góp viết, hiện chưa có nhiều công ty tập trung phát triển riêng giống như WordPress. Việc cài đặt cũng không dễ dàng như WordPress. Giao diện tổng thể phần nào góp phần khiến cho người dùng ban đầu cảm thấy hơi chán và “thiếu thiếu”.
  • Cơ hội (OPPORTUNITIES): Do là một dự án mã nguồn mở nên Discourse có tìm năng phát triển rất tốt với rất nhiều người sử dụng như hiện nay. Discourse có thể sẽ trở thành một WordPress thứ 2 của thế giới với tốc độ phát triển như bây giờ.
  • Thách thức (THREATS): Trong một thời đại mà mọi thứ đang có xu hướng mã nguồn mở như hiện nay, sẽ rất dễ xuất hiện một “anh tài” khác tốt hơn và mạnh mẽ hơn, nó có khả năng đánh bật Discourse còn non trẻ ra khỏi cuộc chơi. Ngay cả WordPress hùng mạnh cũng lung lay bởi các đàn em thì không có gì là chắc chắn với Discourse cả. 😆Nhưng mà vì một cuộc sống tốt hơn, chúng ta chỉ đừng quan tâm quá.

Discourse đang được sử dụng rộng rãi như thế nào?

Discourse được sử dụng rộng rãi như thế nào? Rất nhiều cộng đồng lớn hay startup hiện nay đang sử dụng Discourse làm nền tảng bởi nó miễn phí và cài đặt nhanh chóng cũng như quản lý dễ dàng. Ở Việt Nam thì có một diễn đàn đang phát triển rất mạnh mẽ với hơn 20.000 thành viên là Dạy Nhau Học, họ cũng đang sử dụng Discourse làm nền tảng chính.

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen
Diễn đàn Dạy Nhau Học – một diễn đàn mình rất thích

Những start-up lớn khác như :

  • Evanto: Cộng đồng hỗ trợ của chợ mua bán Digital rất lớn hiện nay
  • TwitterCommunity: Cộng đồng hỗ trợ hỏi đáp của mạng xã hội Twitter
  • Hubspot: Cộng đồng hỗ trợ và thảo luận của Hubspot – một hệ sinh thái quản trị CRM
  • Docker: Quá hot rồi 😆
  • Patreon: Cộng đồng hỗ trợ của Patreon – nền tảng giúp các Influencer có thể tạo thuê bao cho khách hàng.
  • Linking Park: Nhóm nhạc huyền thoại này cũng có một cộng đồng sử dụng Discourse làm nền tảng.
  • Và còn rất nhiều nữa, bạn có thể xem thêm tại: https://www.discourse.org/customers

Hướng dẫn cài đặt và cấu hình Discourse

Okey!! Luyên thuyên – giới thiệu cũng khá dài rồi 😆Chúng ta hãy cùng đi qua các bước cài đặt và cấu hình Discourse thôi.

Để chạy được Discourse thì cần những gì?

Để cài đặt và có thể chạy được mộ trang Discourse. Chúng ta cần một con VPS chạy Ubuntu OS và RAM từ 1Gb trở nên với điều kiện SWAP thêm 2Gb nữa để giúp hạn chế tràn RAM. Do như đã kể ở trên, Discourse được xây dựng trên Ruby on Rail nên “nặng đô” hơn những thằng cùng trang lứa 🤪. Đấy chúng ta chỉ cần một con VPS như vậy là có thể chạy ổn rồi.

Mua VPS nào để cài đặt một website chạy Discourse?

Vậy chúng ta phải mua VPS nào để cài đặt một website chạy Discourse?. Hiện tại đang có rất rất nhiều nhà cung cấp dịch vụ VPS trong và ngoài nước, trên trời và dưới lòng đất. Kể ra thì có những thằng rất nổi và đang được yêu thích như Vultr, Linode, Digital Ocean, hay mới đây là Lightsail của Amazon Web Services (AWS). Mỗi thằng có một điểm mạnh riêng và đa số đều có Server tại Singapore, điều này khá quan trọng bởi nó là nơi gần nhất mà các VPS nước ngoài đặt so với Việt Nam. Mình đã từng xài qua cả 3 thằng là Digital Ocean, Vultr và Lightsail, cả 3 thằng đều ngon nhưng mình thích Lightsail và Digital Ocean hơn. Tuy nhiên có một điểm lưu ý là Lightsail hạn chế người dùng tạo SWAP và thường xảy ra lỗi không đáng có. Nếu bạn vững và thích hàng của AWS thì chọn nha, mình đang có 2 trang web chạy trên thằng này, còn trang Discourse thì chưa 😅. Trong bài hướng dẫn này, mình sẽ xài Digital Ocean để mua VPS và dùng Lightsail để quản lý DNS (mình không giỏi cấu hình mạng nên khi dùng những thằng xài nginx và SSL Let’s Encrypt, mình hạn chế xài Cloudflare bởi nó hay lỗi Too many Redirection *có thể khắc phục nhưng mình lười quá chưa tìm hiểu 😎)

Các bước cài đặt Discourse trên VPS

Mua VPS để cài đặt Discourse

Đầu tiên, mình sẽ mua VPS trên Digital Ocean, điều này cũng tương tự nếu bạn mua VPS trên những thằng khác thôi, giá thành thì cũng không chênh lệch nhau là mấy so với cùng cấu hình.

Nếu như bạn lần đầu sử dụng Digital Ocean thì bạn hãy đăng ký thông qua link giới thiệu của mình, bạn sẽ được $100 miễn phí xài trong 2 tháng và sau đó bạn xài $25 thì mình cũng được Digital Ocean cho $25 nữa đó, mình cũng từng đăng ký qua link giới thiệu của bạn mình 🥰, bạn đăng ký thông qua link này nha: https://m.do.co/c/ea671770e774

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Sau khi bạn tạo tài khoản xong, bạn hãy tạo Droplets (Digital Ocean gọi các instance là Droplet, mấy host khác họ thường gọi là Instance). Tại đây, bạn chọn những options để cấu hình cho VPS bạn sắp mua. Digital Ocean thậm chí còn có những lựa chọn khác cho bạn như “1 click định giang sơn” với việc bấm 1 cái là có nguyên trang WordPress hay nguyên trang Discourse luôn, tuy nhiên việc này thường hay xảy ra các lỗi mà mình không biết khắc hoặc rất khó sửa nếu là dân không chuyên VPS. Ngay cả các thành viên “gạo cội” của cộng đồng Discourse cũng khuyên nên cài bằng tay từng bước, không nên “1 click định giang sơn” bởi “tỏa hỏa nhập mà” có ngày 😂

Điều quan trọng nhất đầu tiên khi mua VPS chính là chọn hệ điều này, bạn chọn Ubuntu phiên bản cao nhất nha. Kéo xuống dưới bạn sẽ đấy chọn kích thước cho VPS, nếu bạn được $100 khi tạo lần đầu thì cứ Yolo 🎉gói cao $40-$50 mỗi tháng, sau 2 tháng hết $100 miễn phí thì xuống lại. 😆Tại vì nếu không dùng thì sau 2 tháng $100 sẽ hết hạn à. Mình thì sẽ chọn gói $10 với 2GB RAM/ 50GB SSD/ 2TB tranfer dữ liệu.

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Kế tiếp, chúng ta sẽ chọn nơi đặt con VPS của chúng ta, thường thì mình sẽ chọn Singapore và Nhật bản (nếu có) bởi nó gần Việt Nam nhất và nhanh nhất. Tuy nhiên, bạn cũng có thể xài các quốc gia khác nếu User của bạn hướng đến là người nước ngoài. Sau đó, chọn Create để khởi tạo VPS nha. Dưới đây là hình ảnh đã khởi tạo thành công, chỗ mình tô mờ chính là Public IP dùng để kết nối với VPS, mỗi người mỗi VPS sẽ có mã khác nhau.

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Như vậy là xong bước mua VPS để cài đặt Discourse rồi 😆🎉À sau khi bạn mua thì Digital Ocean cũng sẽ gửi mail mật khẩu của VPS cho bạn để giúp bạn đăng nhập đó.

Đăng nhập và kết nối tới VPS

Sau khi mua VPS rồi, chúng ta phải kết nối với VPS để có thể điều khiển và cài đặt các thứ các thứ lên VPS chứ 😎. Để kết nối với VPS thì chúng ta có thể xài những công cụ như ZOC Terminal, PuTTY,… (nếu bạn dùng Windows là chính) hay Terminal trên MacOS, về cơ bản thì những thằng này giúp bạn có thể điều khiển VPS chạy Linux bằng câu lệnh giống như nhau thôi. Mình đang xài MacOS nên sẽ dùng Terminal trên MacOS luôn cho tiện, bạn dùng Windows thì cứ tải 2 thằng trên xài nha, câu lệnh y chang thôi.

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen
Giao diện Terminal trên MacOS

Bạn gõ câu lệnh dưới đây để kết nối với VPS nha, nếu không rành thì cứ copy các câu lệnh paste vào thôi (nhớ chỉnh sửa các IP lại), mình cũng thường copy vào cho nó chạy khi chưa hiểu. Bạn thay toàn bộ cụm […] bằng các chỉ số của VPS mà bạn mua nha.

ssh [email protected][Public IP của bạn]

Sau khi bạn đăng nhập lần đầu, VPS sẽ hỏi mật khẩu của bạn, bạn dùng mật khẩu mà Digital Ocean đã gửi qua mail để đăng nhập, nó sẽ bắt bạn đổi mật khẩu riêng đó. Nếu bấm mật khẩu mà không thấy hiển thị ra thì đừng quan tâm, cứ bấm như bình thường rồi Enter thôi, đây là cơ chế bảo mật của Linux.

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Khi các bạn đã đổi một khẩu và đăng nhập thành công, bạn bấm ls để list ra các thứ đagn có trên VPS thử giống trên là ok rồi. Nếu lần sau mà bạn đăng nhập thì cứ làm y chang trên, nó sẽ hỏi mật khẩu và đăng nhập là giống dưới đây của mình.

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Như vậy là bạn đã kết nối thành công và có thể điều khiến VPS vừa mua rồi 🎉

Trỏ tên miền từ Domain Provider về VPS

Nếu bạn chưa mua tên miền thì có thể mua ở các nhà cung cấp tên miền (Domain Provider) như NameCheap, Godaddy, Google Domain,… cho các tên miền quốc tế hoặc Mắt Bão, PA Việt Nam,… cho tên miền .vn . Sau khi mua thì bạn có thể quản lý DNS trên nhà cung cấp đó luôn nếu nó ngon 😎Mình mua ở Godaddy không à, nhưng thằng này giao diện của nó là “đỉnh cao” của tệ luôn, nên mình thường chuyển sang Cloudflare hoặc quản lý trên Lightsail. Về cơ bản thao tác y chang nhau cả thôi nên bạn yên tâm nếu hơi mơ hồ.

Để trỏ tên miền về VPS, chúng ta sẽ thêm 2 thẻ A bao gồm “@” và “www” với giá trị là Public IP của VPS. Mình xài Lightsail quản lý DNS nên giao diện hơi lạ, bạn dùng những thằng khác thì các thẻ A hay giá trị cũng y chang à nên đừng lo.

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Sau khi làm bước này, tầm 1-2p hoặc vài ngày nếu xui 🤪Tên miền đã được trỏ về VPS, sau này truy cập gõ tên miền là ok không cần gõ Public IP nữa.

Đăng ký dịch vụ SMTP để gửi Email tác vụ

Sau khi đã mua VPS và kết nối nó, cũng như trỏ tên miền về VPS. Điều quan trọng tiếp theo là đăng ký dịch vụ SMTP để gửi các email tác vụ. Ví dụ, khi bạn đăng ký tài khoản, sẽ luôn có email confirm hay có ai nhắn tin sẽ có email thông báo, đó là email được gửi từ dịch vụ SMTP tự động. Hiện nay có rất nhiều thằng cung cấp SMTP nhưng ok nhất theo mình vẫn là SparkPost bởi nó không bị list vào mục spam khi gửi mail.

Để đăng ký SparkPost, bạn vào link này: https://www.sparkpost.com/

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

SparkPost sẽ cho bạn gửi 15.000 emails trong tháng đầu tiên và 500 emails mỗi tháng miễn phí vĩnh viễn. Con số này nghe có vẻ khá ít đúng hông, yên tâm đi bởi ban đầu trang cộng đồng của bạn phát triển không nhiều nên nhiêu đó là dư rồi 😂 khi có nhiều người thì $9 mỗi tháng chúng ta sẽ gửi được 50.000 emails mỗi tháng, lúc này thì sẽ có thu nhập để trả. Sau khi đọc kỹ thì bấm Get Started.

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

SparkPost sẽ hỏi domain mà bạn đăng ký để gửi mail. Bạn có thể nhập domain mình vào ví dụ: huuphongnguyen.com. Và sau đó bấm Add Domain.

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Có 2 lựa chọn cho chúng ta ở bước này, bạn hãy chọn SMTP nha bởi mình đang cần SMTP.

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Sau khi chọn, SparkPost sẽ cho bạn xem các thông tin quan trọng như trên, bạn lưu hết ra note, đặc biệt là mật khẩu. Những thông tin này sẽ dùng trong phần Cấu hình thông tin Discourse bên dưới 🐥

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Sau khi xong, bạn cần check mail để Verify tài khoản của mình, sau đó bạn vào mục Verify your sending domain để xác nhận là bạn chủ của Domain đó.

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Việc Verify domain rất dễ, bạn sẽ có thông tin DNS settings để cấu hình. Quay trở lại chỗ quản lý DNS lúc nảy và thêm một thẻ TXT với Hostname và value mà SparkPost cung cấp.

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Sau khi đã thêm thẻ TXT xong, bạn quay lại trang SparkPost để Verify TXT Record. Nếu thành công thì sẽ giống dưới đây.

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Và tên miền của bạn tầm 5 phút cũng sẽ có trạng thái Verified.

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Như vậy là đã xong bước cấu hình SMTP để gửi Email tác vụ rồi. 🎉Lưu ý, bạn bắt buộc phải xong bước này trước khi cài Discourse bởi nếu không bạn sẽ bị lỗi cả trang vì Discourse không thể gửi email xác nhận tài khoản đăng nhập cho bạn được.

Cài đặt SWAP cho VPS để tăng bộ nhớ đệm

Trong bước này, chúng ta sẽ tiến hành cài đặt bộ nhớ SWAP cho VPS để tăng cường khả năng tải và khắc phục lỗi khi bộ nhớ RAM bị hết. Thật ra, ban đầu mình đã chọn bộ nhớ RAM 2G rồi nên việc tạo SWAP có thể không cần, tuy nhiên Discourse khuyên là nên cài thêm bộ nhớ SWAP với dung lượng 2Gb. Nói thêm, SWAP là việc tận dụng một phần ổ cứng để nó hoạt động giống như RAM, khi chúng ta xài hết RAM thì hệ thống sẽ tự động chuyển một phần ổ cứng sang dùng giống như là một phần dung lượng RAM thêm (tất nhiên về tốc độ và hiệu năng không thể bằng 100% RAM gốc được).

Một lưu ý là một vài người khi nghe điều này, liền nghĩ ngay sao không cho 50% ổ cứng làm SWAP luôn cho nó mạnh 😂Mình từng nghĩ như vậy đó, nhưng dung lượng tối đa cài SWAP chỉ nên là gấp đôi RAM thôi. Ví dụ: Trong phần trước mình chọn RAM 2Gb thì SWAP mình tạo thêm tối đa chỉ nên 4Gb mà thôi.

Trước tiên, bạn nên kiểm tra dung lượng bộ nhớ RAM và SWAP đã được cài chưa bằng lệnh:

free -m

hoặc kiểm tra toàn hệ thống với lệnh:

df -h
Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Như vậy là theo thông số ở trên, chúng ta vẫn chưa tạo SWAP và dung lượng RAM chỉ là 2G giống như mình đã mua trước đó. Giờ hãy tạo thêm SWAP nào! 😎Để tạo dung lượng SWAP, bạn gõ câu lệnh dưới đây (à thôi copy đi, gõ lại chi cho mệt, mình cũng copy à 😂)

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1024k

Phần count=1024k nghĩa là mình sẽ dùng 1024Mb = 1Gb làm RAM, bạn có thể sửa thành 2048k = 2Gb hoặc 4096k = 4Gb giống mình. Tuy nhiên, theo Discourse họ khuyên bộ nhớ SWAP tối thiểu phải là 2Gb nên bạn sửa câu lệnh trên thành dưới đây là ok.

sudo dd if=/dev/zero of=/swapfile bs=1024 count=2048k

Sau khi nhập câu lệnh trên, bạn sẽ thấy VPS chạy một vài lệnh để xác nhận. Sau khi xong, chúng ta tiếp tục tạo định danh cho SWAP bằng câu lệnh dưới đây:

sudo mkswap /swapfile

Khi đã tạo định danh cho SWAP, điều kế tiếp là cần phải kích hoạt SWAP của chúng ta lên bằng câu lệnh:

swapon /swapfile

Sau khi nhập lệnh này, chúng ta sẽ nhận được một dòng: “insecure permissions 0644, 0600 suggested”. Nếu chỉ có dòng này thì bạn bỏ qua và tiếp tục bước tiếp theo sau đây. Còn nếu như nó báo thêm 1 dòng nữa là không thể Commited, điều này có nghĩa là VPS của bạn không cho tạo SWAP theo cách này, nó ép bạn phải mua VPS dung lượng cao hơn đó (mình thử 3 thằng là Lightsail, Vultr, Digital Ocean thì Lightsail là thằng bị) 🔫https://xiaoxing.us/2018/09/04/creating_swap_on_lightsail/ . Nhưng bạn đừng lo, “thời thế tạo anh hùng” – một anh Deverloper từ Trung Quốc mới đây đã chia sẻ một cách tạo SWAP khác và nó khá ok (mình đã thử), bạn xem tại đây: , cứ copy từng dòng vào là ok nha.

Nếu như không có gì khác xảy ra ngoài dòng “insecure permissions 0644, 0600 suggested”. Bạn đã có thể kiểm tra bộ nhớ SWAP đã được tạo chưa bằng câu lệnh dưới đây:

swapon -s

Lệnh này sẽ trả lại cho bạn thông tin SWAP, nếu bạn thấy nó có dung lượng đúng với bạn cài là xong. Tuy nhiên, đây chỉ mới là kích hoạt SWAP thôi, khi mà Server của bạn gặp vấn đề, thường thì bạn phải Reboot lại server để mọi thứ ổn định lại, SWAP sẽ mất đi và bạn phải cài lại. Vậy làm sao để tránh lập lại điều này? Bạn sẽ tiếp tục nhập thểm vài dòng lệnh để giúp bộ nhớ SWAP có thể tự kích hoạt cũng như nâng cao bảo mật.

echo /swapfile none swap defaults 0 0 >> /etc/fstab
chown root:root /swapfile
chmod 0600 /swapfile

Đấy, chỉ vậy thôi là xong rồi. 3 dòng lệnh ngắn 😎. Kế tiếp chúng ta cần phải tạo Swappiness – nesss -nesss. Swappiness có nghĩa là cài giới hạn khi nào thì chuyển sang dùng bộ nhớ SWAP, ví dụ khi RAM còn 10% thì hệ thống tự biết chuyển sang xài SWAP. Bước đầu tiên là kiểm tra Swappiness hiện tại bằng câu lệnh:

cat /proc/sys/vm/swappiness

Theo những hệ thống VPS hiện nay thì nó sẽ trả về 30 hoặc 60, điều này là khá cao bởi RAM còn hơn 1 nữa thì không có lý do chúng ta chuyển SWAP nhanh vậy. Chúng ta sẽ chỉnh nó xuống 10. Để làm điều đó, bạn gõ câu lệnh dưới đây:

sudo sysctl vm.swappiness=10

Hãy gõ câu lệnh kiểm tra bên trên một lần nữa, nếu nó không trả về 30 hoặc 60 mà trả về 10 nghĩa là thành công rồi đó. Đến đây, cần thêm một bước nữa Swappiness không bị trả lại mặc định khi khởi động lại, bạn chạy câu lệnh dưới đây để mở file config:

nano /etc/sysctl.conf

Nó sẽ chuyển bạn vào một cửa sổ khác, kéo xuống cuối và thêm dòng lệnh dưới đây vào:

vm.swappiness=10

Sau khi thêm vào xong, bấm Ctrl+O để Save lại (trên Mac là Control+O), và bấm Ctrl+X để thoát khỏi file Config. Như vậy là xong rồi đó, bạn cần phải Reboot lại VPS để xác nhận:

sudo reboot

Chờ tầm khoảng 10-15s cho ổn định thì bạn kết nối SSH lại với VPS và kiểm tra lại bằng câu lệnh: cat /proc/sys/vm/swappiness để xem Swappiness vẫn là 10 hay không, nếu là 10 tức là xong xuối rồi. 🎉 Tới đây bạn cũng có thể gõ lệnh free -m hay df – h để kiểm tra, bạn dễ dàng thấy SWAP của mình đã là 4095k=4Gb và tổng dung lượng xài là 5.1Gb

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Hoàn tất bước tạo SWAP cho VPS rồi nha 🎉

Cài đặt Docker cho VPS

Sau khi tạo SWAP, chúng ta cài đặt Docker cho VPS, Docker là một cái gì đó rất là hot hiện nay, bạn cứ tưởng tượng mọi thứ sẽ được gói gọn vào 1 cái Công-tơ-nơ và người xài thì chỉ mở cái Công-tơ-nơ đó ra là có hết. Docker cơ bản là vậy, theo mình hiểu 😂. Mình chưa rành về Docker lắm nên cũng hơi mơ mơ, chắc chắn mình sẽ học Docker trong thời gian sớm nhất. Bạn có thể đọc và tham khảo tại trang chủ của Docker: https://www.docker.com/

Nói dong dài thế thôi, chứ cài đặt Docker lên VPS chỉ 1 dòng lệnh duy nhất à:

wget -qO- https://get.docker.com/ | sh
Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Vậy là chúng ta đã cài xong Docker trên VPS rồi, 🎉

Cài đặt mã nguồn Discourse lên VPS

Sau bao chông gai, cuối cùng cũng đã có thể cài đặt Discourse lên VPS rồi. Để cài đặt Discourse, trước tiên bạn cần nhập liên tục 4 dòng lệnh dưới đây:

sudo -s
mkdir /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Cấu hình thông tin Discourse

Vậy là bạn đã clone toàn bộ mã nguồn Discourse về VPS rồi, dòng lệnh cuối là giúp bạn đặt chân vào folder Discourse. Sau đây, bạn sẽ chạy câu lệnh kế tiếp, câu lệnh sẽ khiến hệ thống hỏi bạn một vài câu hỏi thẩm vấn 😎Yên tâm, khi đi thi thì luôn mang phao mà (nhớ những thông tin lúc nãy SparkPost cho chúng ta không, mình đã kêu bạn lưu ra note rồi đó). hãy mở nó ra và chuẩn bị nhập vào.

./discourse-setup
  • Hostname for your Discourse? [discourse.example.com]: tên miền mà bạn đã trỏ về VPS
  • Email address for admin account(s)? [[email protected],[email protected]]: email admin diễn đàn
  • SMTP server address? [smtp.example.com]: thông tin HOST SMTP
    SMTP port? [587]: cổng SMTP
  • SMTP user name? [[email protected]]: tài khoản SMTP
  • SMTP password? [pa$$word]: mật khẩu SMTP
  • Let’s Encrypt account email? (ENTER to skip) [[email protected]]:nhập lại email để Discourse tự động cài đặt https luôn.

Sau khi trả lời, Discourse sẽ show toàn bộ câu trả lời của bạn ra, bạn kiểm tra lại đã đúng chưa và bấm Enter nhé. Giờ thì hệ thống sẽ chạy hàng tỉ câu lệnh 😎Hãy đi pha bát mì hay ly cà phê ăn uống ngủ nghỉ đi. Tầm 5-10 phút hoặc lâu hơn dựa vào tốc độ mạng và sức mạnh VPS của bạn.

Sau khi hệ thống chạy xong và thành công, bạn sẽ thấy nó giống như vầy:

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Đừng quan tâm cái LOG: Datavase system is shut down 😂Mình từng tưởng nó bị lỗi cơ. Sau đó, hãy mở một trình duyệt lên và truy cập tên miền của bạn đi, nó sẽ là cổng chào của Discourse đó.

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Lưu ý: đôi khi nó không truy cập được thì bạn hãy chờ tầm 5 phút rồi thử lại, nếu không được nữa thì hãy kiểm tra DNS của mạng Wifi bạn đang xài có mặc định không, mình từng xài 1.1.1.1 của Cloudflare và nó không cho mình truy cập. Nếu bạn dùng DNS của Cloudflare thì hãy vào link này: https://cloudflare-dns.com/purge-cache/ , paste link trang của bạn vào và Purge Cache.

Vậy là xong 🎉

Kích hoạt HTTPS cho trang Discourse

Để trang của bạn luôn là HTTPS, bạn cần phải trả qua 10 phần cài đặt ban đầu (bạn có thể bấm Skip hết bởi mình có thể điền vào sau trong phần cài đặt – tuy nhiên mình khuyên nên từ từ tận hưởng đi 😂). Khi đã vào được bên trong, bạn chọn vào cái icon Hamburger ở góc trên trái kế bên avatar – Chọn Admin (Quản trị nếu bạn xài Tiếng Viêt) – Chọn qua trang Xác lập – Nhìn xuống dưới có khung tìm kiếm, bạn tìm cụm “Force” sẽ thấy mục Force HTTPS giống dưới đây:

Mình đã xây dựng một website Forum bằng Discourse như thế nào? - HuuPhongNguyen

Bạn check vào và bấm Stick xác nhận, sau đó Refresh lại là xong 🎉

Một vài cài đặt tiện ích cho trang Discourse

Discourse là mã nguồn mở nên nó có thể làm được rất nhiều điều, mình sẽ hướng dẫn bạn cấu hình và cài đặt thêm một vài tiện ích khá cần thiết hoặc custom theo ý thích cho trang Discourse.

Everything’s fucking awesome 🎉

Như vậy là mình đã ghi lại toàn bộ quá trình Mình đã xây dựng một website Forum bằng Discourse như thế nào? Toàn bộ quá trình này là do bản thân mình tự tìm tòi và đọc tài liệu – bài viết của rất nhiều bên. Mình cũng trân thành cảm ơn tất cả mọi thứ đã giúp mình có thể hiểu và tự tạo được. Bài viết này có thể có vài điểm chưa hoàn hảo và có thể không đúng, nếu có sai hãy góp ý bên dưới phần comment để mình khắc phục. Bài viết này như là một Documentation cho bản thân mình và những người không phải dân chuyên giống như mình. Cảm ơn vì bạn đã đọc đến đây, một bài viết rất rất dài ❤️

Nguồn mà mình đã tham khảo: (Mình có thói quen viết theo kiểu Harvard 😂)

  • Dheeraj Kumar (2018) How to install Discourse on $5 Droplet on DigitalOcean, Available at: https://meta.discourse.org/t/how-to-install-discourse-on-5-droplet-on-digitalocean/84172 (Accessed: 2 Feb. 2019)
  • Coding – Horror (2019) Set up Discourse in the cloud in under 30 minutes, Available at: https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md (Accessed: 2 Feb. 2019)
  • Cheng (2018) Hướng dẫn tạo diễn đàn miễn phí với Discourse vô cùng đơn giản, Available at: https://cheng.vn/discource/huong-dan-cai-dat-dien-dan-mien-phi-voi-discourse/#1Cai_Swap_cho_VPS (Accessed: 2 Feb. 2019)
  • Cheng (2018) Hướng dẫn tạo bộ nhớ Swap trên Ubuntu – Centos, Available at: https://cheng.vn/discource/huong-dan-tao-bo-nho-swap-tren-ubuntu-centos/ (Accessed: 2 Feb. 2019)
  • Phong (2018) LOG: database system is shut down. How to fix it, Available at: https://meta.discourse.org/t/log-database-system-is-shut-down-how-to-fix-it/107894 (Accessed: 2 Feb. 2019)
  • XiaoXing (2018) Creating SWAP File on AWS Lightsail Linux Machines, Available at: https://xiaoxing.us/2018/09/04/creating_swap_on_lightsail/ (Accessed: 2 Feb. 2019)

Bài viết tương tự bạn nên đọc:

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

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

Twitter
Facebook
LinkedIn
Email
Print