Cách cài đặt Flarum Forum với Nginx và LE SSL trên CentOS 8

theanh

Administrator
Nhân viên
Flarum là phần mềm diễn đàn miễn phí, mã nguồn mở và thế hệ tiếp theo giúp bạn dễ dàng bắt đầu và phát triển một cộng đồng trực tuyến thành công. Đây là phần mềm đơn giản, nhẹ, nhanh và thân thiện với thiết bị di động dựa trên PHP. Nó đi kèm với một bộ tính năng phong phú bao gồm Giao diện người dùng thanh lịch, Giao diện hai ngăn, Cuộn vô hạn, Trình soạn thảo nổi, Hoàn toàn đáp ứng và nhiều tính năng khác.

Trong hướng dẫn này, chúng tôi sẽ giải thích cách cài đặt diễn đàn Flarum trên máy chủ CentOS 8.

Yêu cầu​

  • Máy chủ chạy CentOS 8.
  • Tên miền hợp lệ được trỏ bằng IP máy chủ của bạn
  • Mật khẩu gốc được cấu hình trên máy chủ.

Bắt đầu​

Trước khi bắt đầu, bạn sẽ cần cài đặt kho lưu trữ EPEL và Remi trong hệ thống của mình. Trước tiên, hãy cài đặt kho lưu trữ EPEL bằng lệnh sau:
Mã:
dnf install epel-release -y
Tiếp theo, hãy tải xuống và cài đặt kho lưu trữ Remi bằng lệnh sau:
Mã:
wget http://rpms.remirepo.net/enterprise/remi-release-8.rpm
 rpm -Uvh remi-release-8.rpm

Cài đặt Nginx, MariaDB và PHP​

Trước tiên, hãy cài đặt máy chủ web Nginx và máy chủ MariaDB bằng lệnh sau:
Mã:
dnf install nginx mariadb-server -y
Sau khi cả hai gói được cài đặt, bạn sẽ cần kích hoạt mô-đun php:remi-7.3 để cài đặt PHP 7.3. Bạn có thể bật nó bằng lệnh sau:
Mã:
dnf module enable php:remi-7.3
Tiếp theo, cài đặt PHP với các phụ thuộc bắt buộc khác bằng lệnh sau:
Mã:
dnf install php php-fpm php-common php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml -y
Sau khi tất cả các gói được cài đặt, hãy khởi động dịch vụ Nginx, MariaDB và PHP-FPM và cho phép chúng khởi động sau khi khởi động lại hệ thống bằng lệnh sau:
Mã:
systemctl start nginx
 systemctl start mariadb
 systemctl start php-fpm
 systemctl enable nginx
 systemctl enable mariadb
 systemctl enable php-fpm
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Cấu hình Cơ sở dữ liệu MariaDB​

Theo mặc định, MariaDB không được bảo mật. Bạn có thể bảo mật bằng tập lệnh sau:
Mã:
mysql_secure_installation
Trả lời tất cả các câu hỏi như hiển thị bên dưới:
Mã:
Nhập mật khẩu hiện tại cho root (nhập nếu không có):Đặt mật khẩu root? [Y/n] YMật khẩu mới:Nhập lại mật khẩu mới:Xóa người dùng ẩn danh? [Y/n] YKhông cho phép root đăng nhập từ xa? [Y/n] YXóa cơ sở dữ liệu thử nghiệm và quyền truy cập vào cơ sở dữ liệu đó? [Y/n] YTải lại bảng đặc quyền ngay bây giờ? [Y/n] Y
Sau khi hoàn tất, hãy đăng nhập vào shell MariaDB bằng lệnh sau:
Mã:
mysql -u root -p
Cung cấp mật khẩu root của bạn khi được nhắc, sau đó tạo cơ sở dữ liệu và người dùng cho Flarum bằng lệnh sau:
Mã:
MariaDB [(none)]> CREATE DATABASE flarumdb;
 MariaDB [(none)]> GRANT ALL PRIVILEGES on flarumdb.* to 'flarum'@'localhost' defined by 'password';
Tiếp theo, xóa các đặc quyền và thoát khỏi shell MariaDB bằng lệnh sau:
Mã:
MariaDB [(none)]> FLUSH PRIVILEGES;
 MariaDB [(none)]> EXIT;
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Cấu hình PHP-FPM cho Nginx​

Tiếp theo, bạn sẽ cần cấu hình PHP-FPM để hoạt động với Nginx. Bạn có thể thực hiện bằng cách chỉnh sửa tệp www.conf:
Mã:
nano /etc/php-fpm.d/www.conf
Thay đổi tên người dùng và nhóm từ apache thành nginx như hiển thị bên dưới:
Mã:
user = nginxgroup = nginxlisten.owner = nginxlisten.group = nginx
Tiếp theo, tìm dòng sau:
Mã:
;listen = /run/php-fpm/www.sock
Và thay thế bằng dòng sau:
Mã:
listen = 127.0.0.1:9000
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, khởi động lại dịch vụ PHP-FPM để áp dụng các thay đổi:
Mã:
systemctl restart php-fpm

Cài đặt Flarum​

Trước khi cài đặt Flarum, bạn sẽ cần cài đặt Composer trong hệ thống của mình.

Bạn có thể cài đặt bằng lệnh sau:
Mã:
curl -sS https://getcomposer.org/installer | php
Sau khi cài đặt, bạn sẽ nhận được kết quả sau:
Mã:
Tất cả các thiết lập đều chính xác để sử dụng ComposerĐang tải xuống...Composer (phiên bản 1.9.2) đã được cài đặt thành công vào: /root/composer.pharSử dụng: php composer.phar
Tiếp theo, di chuyển tệp nhị phân Composer vào thư mục /usr/local/bin và cấp quyền thích hợp:
Mã:
mv composer.phar /usr/local/bin/composer
 chmod 755 /usr/local/bin/composer
Tiếp theo, hãy thay đổi thư mục thành thư mục gốc của tài liệu Nginx và tạo một dự án Flarum bằng lệnh sau:
Mã:
cd /var/www/html
 composer create-project flarum/flarum . --stability=beta
Tiếp theo, cấp quyền thích hợp cho thư mục gốc web Nginx bằng lệnh sau:
Mã:
chown -R nginx:nginx /var/www/html
 chmod -R 755 /var/www/html
 chown -R nginx:nginx /var/lib/php
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Cấu hình Nginx cho Flarum​

Tiếp theo, bạn sẽ cần tạo tệp cấu hình máy chủ ảo Nginx cho Nginx. Bạn có thể tạo tệp này bằng lệnh sau:
Mã:
nano /etc/nginx/conf.d/flarum.conf
Thêm các dòng sau:
Mã:
server { listen 80; server_name flarum.example.com;# lưu ý rằng các dòng này ban đầu là từ khối "location /"root /var/www/html/public;index index.php index.html index.htm;location / { try_files $uri $uri/ /index.php?$query_string; }location /api { try_files $uri $uri/ /api.php?$query_string; }location /admin { try_files $uri $uri/ /admin.php?$query_string; }location /flarum { deny all; return 404;}location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params;}location ~* \.html$ { expires -1;}location ~* \.(css|js|gif|jpe?g|png)$ { hết hạn 1M; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate";}gzip on;gzip_http_version 1.1;gzip_vary on;gzip_comp_level 6;gzip_proxied any;gzip_types application/atom+xml application/javascript application/json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/svg+xml image/x-icon text/css #text/html -- text/html được nén theo mặc định bởi nginx text/plain text/xml;gzip_buffers 16 8k;gzip_disable "MSIE [1-6]\.(?!.*SV1)"; }
Lưu và đóng tệp khi bạn hoàn tất. Tiếp theo, bạn sẽ cần tăng kích thước hash_bucket trong tệp nginx.conf.

Bạn có thể thực hiện bằng cách chỉnh sửa tệp /etc/nginx/nginx.conf:
Mã:
nano /etc/nginx/nginx.conf
Thêm dòng sau ngay phía trên dòng cuối cùng:
Mã:
server_names_hash_bucket_size 64;
Lưu và đóng tệp. Sau đó, hãy kiểm tra Nginx xem có lỗi cú pháp nào không bằng lệnh sau:
Mã:
nginx -t
Bạn sẽ thấy kết quả sau:
Mã:
nginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: kiểm tra tệp cấu hình /etc/nginx/nginx.conf thành công
Cuối cùng, hãy khởi động lại dịch vụ Nginx và PHP-FPM để áp dụng các thay đổi:
Mã:
systemctl restart php-fpm
 systemctl restart nginx

Cấu hình SELinux và Tường lửa​

Trước tiên, bạn sẽ cần tạo một quy tắc tường lửa để cho phép dịch vụ HTTP và HTTPS từ các mạng bên ngoài. Bạn có thể cho phép bằng lệnh sau:
Mã:
firewall-cmd --permanent --add-service=http
Mã:
firewall-cmd --permanent --add-service=https
 firewall-cmd --reload
Theo mặc định, SELinux được bật trong CentOS 8. Vì vậy, bạn sẽ cần cấu hình SELinux để Flarum hoạt động chính xác. Bạn có thể cấu hình SELinux bằng lệnh sau:
Mã:
setsebool httpd_can_network_connect on -P
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Truy cập Flarum Web UI​

Bây giờ, hãy mở trình duyệt web của bạn và nhập URL http://flarum.example.com. Bạn sẽ được chuyển hướng đến trang sau:



Cung cấp tên diễn đàn, thông tin chi tiết về cơ sở dữ liệu, tên người dùng quản trị, mật khẩu và nhấp vào nút Cài đặt Flarum. Sau khi quá trình cài đặt hoàn tất thành công, bạn sẽ thấy bảng điều khiển Flarum ở trang sau:


Bảo mật Flarum bằng Let's Encrypt SSL​

Flarum hiện đã được cài đặt và cấu hình. Đã đến lúc bảo mật nó bằng Let's Encrypt SSL miễn phí.

Để thực hiện, bạn sẽ cần tải xuống máy khách certbot trên máy chủ của mình. Bạn có thể tải xuống và thiết lập quyền chính xác bằng cách chạy lệnh sau:
Mã:
wget https://dl.eff.org/certbot-auto
 mv certbot-auto /usr/local/bin/certbot-auto
 chown root /usr/local/bin/certbot-auto
 chmod 0755 /usr/local/bin/certbot-auto
Bây giờ, hãy chạy lệnh sau để lấy và cài đặt chứng chỉ SSL cho trang web flarum của bạn.
Mã:
certbot-auto --nginx -d flarum.example.com
Lệnh trên sẽ cài đặt tất cả các phụ thuộc cần thiết trên máy chủ của bạn trước. Sau khi cài đặt, bạn sẽ được yêu cầu cung cấp địa chỉ email và chấp nhận điều khoản dịch vụ như hiển thị bên dưới:
Mã:
Lưu nhật ký gỡ lỗi vào /var/log/letsencrypt/letsencrypt.logCác plugin đã chọn: Authenticator apache, Installer apacheNhập địa chỉ email (dùng để gia hạn khẩn cấp và thông báo bảo mật) (Nhập 'c' đểhủy): [emailprotected]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Vui lòng đọc Điều khoản dịch vụ tạihttps://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. Bạn phảiđồng ý để đăng ký với máy chủ ACME tạihttps://acme-v02.api.letsencrypt.org/directory- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(A)gree/(C)ancel: A- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Bạn có sẵn lòng chia sẻ địa chỉ email của mình với Electronic Frontier Foundation, đối tác sáng lập của dự án Let's Encrypt và tổ chức phi lợi nhuận phát triển Certbot không? Chúng tôi muốn gửi cho bạn email về công việc của chúng tôimã hóa web, tin tức EFF, các chiến dịch và các cách hỗ trợ tự do kỹ thuật số.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(C)ó/(K)o: CNhận chứng chỉ mớiThực hiện các thử thách sau:Thử thách http-01 cho flarum.example.comĐang chờ xác minh...Dọn dẹp các thử tháchTriển khai chứng chỉ cho VirtualHost /etc/nginx/conf.d/flarum.conf
Tiếp theo, bạn sẽ cần chọn có chuyển hướng lưu lượng HTTP sang HTTPS hay không như hiển thị bên dưới:
Mã:
Vui lòng chọn có chuyển hướng lưu lượng HTTP sang HTTPS hay không, xóa quyền truy cập HTTP.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1: Không chuyển hướng - Không thực hiện thêm bất kỳ thay đổi nào đối với cấu hình máy chủ web.2: Chuyển hướng - Chuyển hướng tất cả các yêu cầu đến quyền truy cập HTTPS an toàn. Chọn tùy chọn này chocác trang web mới hoặc nếu bạn tin tưởng rằng trang web của mình hoạt động trên HTTPS. Bạn có thể hoàn tácthay đổi này bằng cách chỉnh sửa cấu hình máy chủ web của mình.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Chọn số thích hợp [1-2] rồi [enter] (nhấn 'c' để hủy): 2
Nhập 2 và nhấn Enter để tiếp tục. Sau khi quá trình cài đặt hoàn tất, bạn sẽ thấy kết quả sau:
Mã:
Đang chuyển hướng tất cả lưu lượng truy cập trên cổng 80 sang ssl trong /etc/nginx/conf.d/flarum.conf- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Xin chúc mừng! Bạn đã bật thành công https://flarum.example.comBạn nên kiểm tra cấu hình của mình tại:https://www.ssllabs.com/ssltest/analyze.html?d=flarum.example.com- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -LƯU Ý QUAN TRỌNG: - Xin chúc mừng! Chứng chỉ và chuỗi của bạn đã được lưu tại: /etc/letsencrypt/live/flarum.example.com/fullchain.pem Tệp khóa của bạn đã được lưu tại: /etc/letsencrypt/live/flarum.example.com/privkey.pem Chứng chỉ của bạn sẽ hết hạn vào ngày 23-03-2020. Để có phiên bản mới hoặc đã chỉnh sửa của chứng chỉ này trong tương lai, chỉ cần chạy lại certbot-auto với tùy chọn "certonly". Để gia hạn không tương tác *tất cả* chứng chỉ của bạn, hãy chạy "certbot-auto renew" - Nếu bạn thích Certbot, vui lòng cân nhắc hỗ trợ công việc của chúng tôi bằng cách: Quyên góp cho ISRG / Let's Encrypt: https://letsencrypt.org/donate Quyên góp cho EFF: https://eff.org/donate-le
Vậy là xong! Bây giờ bạn có thể truy cập trang web Flarum của mình bằng URL an toàn https://flarum.example.com.
 
Back
Bên trên