UPDATE phần cấu hình SSL tự động của Let’s Encrypt, lần trước mình làm vội quá mà quên mất không để ý Discourse có tích hợp SSL Let’s Encrypt. Các bạn theo dõi tiếp phần Cấu hình SSL nhé. :).
Discourse là 1 mã nguồn mở được xây dựng để giúp người sử dụng có thể build một forum một cách đơn giản nhất. Discourse được thiết kế với các thành phần sau:
- Ruby on Rails – Ngôn ngữ lập trình Ruby viết ra một framework là Rails
- Postgres Database – Hệ quản trị cơ sở dữ liệu giống như MSSQL , MySQL , MariaDB , …
- Redis server cache - Là mã nguồn mở hỗ trợ việc lưu và xử lý cache dữ liệu trên server, tăng tốc truy cập cho người sử dụng cuối.
Bài viết này của mình sẽ hướng dẫn các bạn step by step cài đặt forum Discourse trên một server Centos | version mình sử dụng là Centos 7 – 1801 x 64
Muốn biết Centos của mình version là gì, các bạn dùng command
Cat /etc/centos-releases
Chuẩn bị VPS
Đầu tiên dĩ nhiên bạn phải có server . Bạn có thể thuê VPS với cấu hình tối thiểu như bên dưới để cài đặt Discourse nhé.
- VPS ít nhất là 1 Gb RAM. Nhiều hơn thì càng tốt, hoặc không bạn có thể tạo Swap để hỗ trợ server. Tuy nhiên bạn nên chọn những nhà cung cấp xài SSD nhé. Và nên kiểm tra tốc độ của Hard Disk để đảm bảo là bạn đang share RAM với ổ cứng bằng Swap tốt nhất.
- Đã cài đặt Centos 7_x64 trên VPS | Các bạn cài bản minimal thôi cho nhẹ nhé. Các bạn có thể download bản minimal theo đường link sau CentOS-7-x86_64-Minimal-1810.iso
Nhà mình thì không có gì ngoài dư dả source nên mình sẽ sử dụng cấu hình như sau: :v
- 8GB Ram
- 10 vCPUs – Intel Xeon E2670 2.5 Ghz
- 20 GB Disk SSD Raid 10
Trỏ Domain và IP mình đã mua
Như bài viết này, mình có có subdomain: forum.sapabc.xyz , mình sẽ thực hiện gắn vào IP của mình
Mình mua domain ở pavietnam > logon vào access.pavietnam.vn > thực hiện trỏ IP về subdomain: forum.sapabc.xyz
Update VPS
Sau khi cài đặt VPS, các bạn thực hiện Logon vào hệ thống bằng phần mềm Putty hoặc bất kỳ một SSH client nào khác cũng được.
Nếu không logon được, thì bạn cần check lại với nhà cung cấp VPS, xem port có bị chặn bởi firewall hoặc là SSH đã đổi port ?
Thực hiện command sau để Update hệ điều hành
Yum -y update
Tùy vào hardware VPS & network mà có thể nhanh hoặc chậm. Một số bạn không update được vì DNS thì có thể vào /etc/resolv.conf rồi edit nameserver 8.8.8.8 của google cũng được nhé.
Tạo file SWAP (RAM Ảo)
Với VPS <=1 GB RAM, bạn nên set up SWAP, ngược lại nếu VPS đủ mạnh, thì bạn có thể bỏ qua bước này. SWAPFILE nên = physical RAM * 2
Tạo swapfile theo command bên dưới
dd if=/dev/zero of=/swapfile bs=1M count=2048
mkswap /swapfile
chmod 600 /swapfile
Chỉnh file fstab bằng vi, nếu chưa có vi, các bạn install vi vào nhé.
vi /etc/fstab
Thêm vào các dòng sau, bạn đừng quên mở bằng quyền của sudo nhé, sau đó ấn phím I để insert , sau khi thêm xong, bạn ấn phím Escape > ấn tiếp :wq để lưu file
/swapfile swap swap defaults 0 0
Thiết lập quy tắc sử dụng Swap, Swap chỉ nên được sử dụng khi RAM bị chiếm dụng quá nhiều dẫn đến Low Memory.
sysctl -w vm.swappiness=10
echo vm.swappiness = 10 | tee -a /etc/sysctl.conf
sysctl vm.vfs_cache_pressure=60
echo vm.vfs_cache_pressure = 60 | tee -a /etc/sysctl.conf
Kích hoạt SwapFile
mount -a
swapon -a
Kiếm tra lại swapfile đã thiết lập
swapon -s
Nếu Swapfile đã thiết lập thành công, bạn sẽ nhận được kết quả trả về như bên dưới.
Filename Type Size Used Priority
/swapfile file 2097148 0 -1
Install Docker
Log on vào server thực hiện các command sau để cài đặt Docker cho Centos 7
yum -y install docker
Sau khi đã Install xong Docker, các bạn thực hiện command sau để mở và edit file docker trong sysconfig
Vi /etc/sysconfig/docker
Change từ
OPTIONS=‘–selinux-enabled --log-driver=journald --signature-verification=false’
Thành
#OPTIONS=‘–selinux-enabled --log-driver=journald --signature-verification=false’
Mục đích là Inactive cái đoạn này đi thôi, không có gì cao siêu cả
Nhấn phím Escape > gõ :wq để save file.
Start docker và kích hoạt Docker
systemctl start docker
systemctl enable docker
kiểm tra trạng thái docker
systemctl status docker
Note: Các bạn nhớ chú ý phần Restart Docker , nếu các bạn restart firewalld , bạn cũng phải restart docker luôn nhé. Đối với Centos 7.xx trở lên thì firewalld đã thay cho iptable s mặc định rồi nhé.
Install Discourse
Tạo folder name discourse tại thư mục /var và thực hiện tải discourse về. Việc tải Discourse về mình hướng dẫn bên dưới đc thực hiện bằng Git nên các bạn phải Install Git trước đã nhé.
Install git bằng command
Yum -y install git
Trường hợp không muốn xài Git , các bạn có thể vào link github/discourse > Download về rồi upload vào server bằng WINSCP
Tạo folder
mkdir /var/discourse
Tải discourse về
git clone GitHub - discourse/discourse_docker: A Docker image for Discourse /var/discourse
Mở thư mục vừa clone discourse về.
cd /var/discourse
Copy file template config Discourse vào thư mục containers
cp samples/standalone.yml containers/app.yml
Các bạn có thể kiểm tra lại xem đã copy thành công chưa bằng cách vào thư mục containers và gõ ls -la để kiểm tra
Configure Discourse
Mở file app.yml và edit bằng lệnh vi
vi app.yml
Edit lại file app.yml như hình bên dưới , có thể tùy chỉnh thông số theo ý của bạn nhé
Save lại và thoát app.yml.
Khởi động Bootstrap Discourse
Chạy Command bên dưới để khởi động boottrap cho Discourse
Cd /var/discourse
./launcher bootstrap app
Nếu trong quá trình chạy, bạn gặp lỗi version
ERROR: Docker version 1.13.1 not supported, please upgrade to at least 17.03.1, or recommended 17.06.2
Thì bạn thực hiện lần lượt các lệnh sau để update version cho Docker
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce
Kiểm tra lại version và trạng thái của docker
systemctl start docker
systemctl enable docker
systemctl status docker
docker --version
Sau đó trỏ đến thư mục /var/discourse và chạy lại lệnh ./launcher bootstrap app
Pha cà phê ngồi đi bạn, chờ mòn mỏi luôn á :v lòi mắt lòi trĩ có gì lòi đó luôn =]]z
Với cấu hình và mạng vps của mình, thì tầm 20 phút
Sau khi hoàn thành Bootstrap thì bạn chạy lệnh bên dưới để start nhé
./launcher start app
Chờ xíu chứ đừng có tắt SSH client nhé. Từ từ thịt bò nó mới nhừ.
Mở trình duyệt và cấu hình cơ bản Discourse
Mở trình duyệt lên, gõ dzô domain mà mình đã trỏ về IP nhé. Thành quả nè.
Dĩ nhiên là non-https nhé. HTTPS thì bạn xem tiếp phần bên dưới nhé
Check gmail và active account nào
Thành quả đây
Cài đặt SSL và chuyển thành HTTPS
Discourse đã có sẵn phần cấu hình SSL từ Let’s Encrypt cho phép các bạn sử dụng SSL miễn phí. Phần này hoàn toàn tự động, và được config trong file app.yml
Rất đơn giản bạn chỉ cần mở thư mục container có chứa file app.yml
cd /var/discourse/containers
và thực hiện uncomment các đoạn bôi đậm bên dưới
#Uncomment these two lines if you wish to add Lets Encrypt (https)
– “templates/web.ssl.template.yml”
– “templates/web.letsencrypt.ssl.template.yml”
#If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
LETSENCRYPT_ACCOUNT_EMAIL: điền email đăng ký SSL của bạn vào
Sau đó thực hiện quay lại folder trước đó bằng command
cd …
rồi thực hiện lệnh rebuild app để apply cài đặt bạn vừa thay đổi.
./launcher rebuild app
Đợi khoảng 10 phút, sau khi rebuild hoàn tất. Lúc này mở trình duyệt lên và hưởng thụ thành quả nào. Màu xanh thần thánh đã xuất hiện rồi.