Cách cài đặt DokuWiki với Nginx và Let's Encrypt SSL trên Alma Linux

theanh

Administrator
Nhân viên
DokuWiki là phần mềm wiki mã nguồn mở, chạy trên nền web, được thiết kế chủ yếu cho các hệ thống Linux. Nó cho phép cộng tác tài liệu và quản lý kiến thức bằng cách cho phép người dùng tạo và chỉnh sửa nội dung thông qua giao diện web đơn giản và trực quan. DokuWiki nổi bật với tính chất nhẹ và dễ cài đặt, vì nó không yêu cầu cơ sở dữ liệu, khiến nó phù hợp với các tổ chức hoặc dự án nhỏ hơn. Khả năng định dạng văn bản mạnh mẽ, kiểm soát phiên bản và hệ sinh thái plugin mở rộng khiến nó trở thành một công cụ đa năng để tạo và duy trì tài liệu, cơ sở kiến thức và trang web trong môi trường Linux.

Hướng dẫn này sẽ chỉ cho bạn cách cài đặt DokuWiki với Nginx trên Alma Linux.

Điều kiện tiên quyết​

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

Cài đặt Nginx và PHP​

Theo mặc định, phiên bản PHP mới nhất không được bao gồm trong kho lưu trữ mặc định của Alma Linux 8. Vì vậy, bạn sẽ cần cài đặt kho lưu trữ EPEL và Remi trên hệ thống của mình.

Bạn có thể cài đặt cả hai bằng cách chạy lệnh sau:
Mã:
dnf install epel-release -y
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
Sau khi cả hai gói được cài đặt, hãy kích hoạt kho lưu trữ PHP Remi bằng lệnh sau lệnh:
Mã:
dnf module enable php:remi-7.4 -y
Bạn sẽ thấy kết quả sau:
Mã:
Dependencies resolved.
============================================================================================================================================== Package Architecture Version Repository Size
==============================================================================================================================================
Enabling module streams: php remi-7.4
Transaction Summary
==============================================================================================================================================
Complete!
Tiếp theo, cài đặt máy chủ web Nginx, PHP và các tiện ích mở rộng cần thiết khác bằng cách sử dụng lệnh sau lệnh:
Mã:
dnf install nginx php php-cli php-fpm php-gd php-xml php-zip -y
Sau khi tất cả các gói được cài đặt, hãy chỉnh sửa tệp cấu hình PHP-FPM và thay đổi listen, user và group:
Mã:
nano /etc/php-fpm.d/www.conf
Thay đổi các mục sau dòng:
Mã:
user = nginx
group = nginx
Lưu và đóng tệp sau đó khởi động và kích hoạt dịch vụ Nginx và PHP-FPM bằng lệnh sau:
Mã:
systemctl start nginx php-fpm
systemctl enable nginx php-fpm
Bạn cũng có thể xác minh phiên bản PHP bằng lệnh sau lệnh:
Mã:
php --version
Bạn sẽ nhận được kết quả sau:
Mã:
PHP 7.4.28 (cli) (built: Feb 15 2022 13:23:10) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.28, Copyright (c), by Zend Technologies

Cài đặt DokuWiki trên Alma Linux 8​

Tiếp theo, bạn sẽ cần tải xuống phiên bản DokuWiki mới nhất từ trang web chính thức của họ. Bạn có thể tải xuống bằng lệnh sau:
Mã:
wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
Sau khi tải xuống hoàn tất, hãy tạo một thư mục cho DokuWiki bên trong thư mục gốc web Nginx:
Mã:
mkdir /var/www/html/dokuwiki
Tiếp theo, giải nén tệp đã tải xuống bằng lệnh sau lệnh:
Mã:
tar xvf dokuwiki-stable.tgz
Tiếp theo, di chuyển thư mục đã giải nén đến thư mục DokuWiki:
Mã:
mv dokuwiki-2020-07-29/* /var/www/html/dokuwiki/
Tiếp theo, thay đổi quyền sở hữu thư mục DokuWiki thành Nginx:
Mã:
chown -R nginx:nginx /var/www/html/dokuwiki
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Tạo Nginx Virtual Host cho DokuWiki​

Tiếp theo, tạo tệp cấu hình Nginx cho DokuWiki bằng lệnh sau lệnh:
Mã:
nano /etc/nginx/conf.d/dokuwiki.conf
Thêm các dòng sau:
Mã:
server { listen 80; server_name wiki.example.com; root /var/www/html/dokuwiki; index index.html index.htm index.php doku.php; client_max_body_size 15M; client_body_buffer_size 128K; location / { try_files $uri $uri/ @dokuwiki; } location ^~ /conf/ { return 403; } location ^~ /data/ { return 403; } location ~ /\.ht { deny all; } location @dokuwiki { rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last; rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last; rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last; rewrite ^/(.*) /doku.php?id=$1 last; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
}
Lưu và đóng tệp sau đó xác minh Nginx xem có lỗi cú pháp nào không bằng lệnh sau:
Mã:
nginx -t
Bạn sẽ nhận được thông báo sau đầu ra:
Mã:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Cuối cùng, khởi động lại dịch vụ Nginx để áp dụng các thay đổi:
Mã:
systemctl restart nginx
Bạn cũng có thể kiểm tra trạng thái của Nginx bằng cách sử dụng lệnh sau lệnh:
Mã:
systemctl status nginx
Bạn sẽ nhận được kết quả sau:
Mã:
? nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled) Drop-In: /usr/lib/systemd/system/nginx.service.d ??php-fpm.conf Active: active (running) since Sat 2022-03-26 04:26:32 UTC; 4s ago Process: 5020 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Process: 5018 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Process: 5017 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) Main PID: 5022 (nginx) Tasks: 2 (limit: 11412) Memory: 3.8M CGroup: /system.slice/nginx.service ??5022 nginx: master process /usr/sbin/nginx ??5023 nginx: worker process
Mar 26 04:26:32 linux systemd[1]: nginx.service: Succeeded.
Mar 26 04:26:32 linux systemd[1]: Stopped The nginx HTTP and reverse proxy server.
Mar 26 04:26:32 linux systemd[1]: Starting The nginx HTTP and reverse proxy server...
Mar 26 04:26:32 linux nginx[5018]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Mar 26 04:26:32 linux nginx[5018]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Mar 26 04:26:32 linux systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Mar 26 04:26:32 linux systemd[1]: Started The nginx HTTP and reverse proxy server.

Truy cập Giao diện Web DokuWiki​

Bây giờ, hãy mở trình duyệt web của bạn và truy cập trình hướng dẫn cài đặt web DokuWiki bằng URL . Bạn sẽ nhận được trang sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22636%22%3E%3C/svg%3E


Cung cấp tất cả thông tin bắt buộc như tên siêu người dùng, email, mật khẩu. Sau đó, nhấp vào nút Lưu. Sau khi quá trình cài đặt hoàn tất thành công, bạn sẽ thấy trang sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22374%22%3E%3C/svg%3E


Bây giờ, hãy nhấp vào DokuWiki mới của bạn. Bạn sẽ thấy trang sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22428%22%3E%3C/svg%3E


Bây giờ, hãy nhấp vào nút đăng nhập. Bạn sẽ được chuyển hướng đến trang sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22416%22%3E%3C/svg%3E


Bây giờ, hãy cung cấp tên người dùng và mật khẩu Quản trị viên của bạn. Sau đó, nhấp vào nútĐăng nhập. Bạn sẽ thấy bảng điều khiển DokuWiki trên trang sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22441%22%3E%3C/svg%3E


Sau khi cấu hình thành công, hãy xóa tệp install.php khỏi thư mục gốc DokuWiki:
Mã:
rm -rf /var/www/html/dokuwiki/install.php

Bảo mật DokuWiki với Let's Encrypt​

Bạn nên bảo mật trang web wiki bằng Let's Encrypt. Để làm như vậy, bạn sẽ cần cài đặt gói Certbot trên máy chủ của mình. Bạn có thể cài đặt bằng cách chạy lệnh sau:
Mã:
dnf install epel-release -y
dnf install certbot -y
Tiếp theo, chạy lệnh sau để cài đặt Let's Encrypt SSL trên trang web của bạn:
Mã:
certbot --nginx -d wiki.example.com
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ụ:
Mã:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [emailprotected]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Account registered.
Requesting a certificate for wiki.example.com
Performing the following challenges:
http-01 challenge for wiki.example.com
Waiting for verification.
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/dokuwiki.conf
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/dokuwiki.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://wiki.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Subscribe to the EFF mailing list (email: [emailprotected]).
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/wiki.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/wiki.example.com/privkey.pem Your certificate will expire on 2022-04-09. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Bây giờ bạn có thể truy cập trang web của mình một cách an toàn bằng URL .

Kết luận​

Xin chúc mừng! Bạn đã cài đặt và cấu hình DokuWiki thành công trên máy chủ Alma Linux 8. Bây giờ bạn có thể dễ dàng tạo trang wiki của riêng mình bằng DokuWiki. Hãy thoải mái hỏi tôi nếu bạn có bất kỳ câu hỏi nào.
 
Back
Bên trên