Cách cài đặt BookStack với Nginx trên Ubuntu 16.04 LTS

theanh

Administrator
Nhân viên
BookStack là một nền tảng nguồn mở để tạo nội dung tài liệu/wiki cho dự án của bạn. Nó được viết bằng ngôn ngữ lập trình PHP với khung web Laravel. Về cơ bản, tài liệu/wiki dự án của bạn được lưu trữ trên BookStack dưới dạng 'Book', theo sau là 'Chapter' và 'Pages'. Và nó giúp bạn dễ dàng tạo và đọc tài liệu dưới dạng Book, dựa trên Chapter và Pages.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn từng bước cách cài đặt và cấu hình BookStack trên Ubuntu 16.04 theo ngăn xếp LEMP (Linux, Nginx, PHP-FPM, MySQL/MariaDB). Hướng dẫn này sẽ trình bày chi tiết bao gồm cách cài đặt PHP Composer và tạo cơ sở dữ liệu MySQL theo cách thủ công bằng dòng lệnh.

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

  • Ubuntu 16.04
  • Quyền root

Những việc chúng ta sẽ làm​

  1. Cập nhật kho lưu trữ và nâng cấp hệ thống
  2. Cài đặt Nginx trên Ubuntu 16.04
  3. Cài đặt và cấu hình PHP-FPM
  4. Cài đặt và cấu hình cơ sở dữ liệu MariaDB
  5. Cài đặt PHP Composer
  6. Cài đặt và cấu hình BookStack
  7. Cấu hình Nginx Virtual Host cho BookStack
  8. Kiểm tra

Bước 1 - Cập nhật và nâng cấp Ubuntu​

Trước khi cài đặt bất kỳ gói nào để cài đặt BookStack, hãy đảm bảo kho lưu trữ Ubuntu và hệ thống của bạn đáp ứng date.

Nếu không, bạn có thể cập nhật kho lưu trữ Ubuntu và nâng cấp hệ thống bằng các lệnh bên dưới.
Mã:
sudo apt update
sudo apt upgrade

Bước 2 - Cài đặt Nginx trên Ubuntu 16.04​

Trong hướng dẫn này, chúng ta sẽ chạy nền tảng 'BookStack' trong ngăn xếp LEMP và chúng ta sẽ cài đặt máy chủ web Nginx từ kho lưu trữ Ubuntu.

Cài đặt máy chủ web Nginx trên Ubuntu bằng lệnh apt bên dưới.
Mã:
sudo apt install nginx -y
Sau khi cài đặt hoàn tất, hãy khởi động dịch vụ và cho phép nó khởi chạy mọi lúc khi khởi động hệ thống.
Mã:
systemctl start nginx
systemctl enable nginx
Bây giờ hãy kiểm tra trạng thái dịch vụ nginx và cổng mở trên hệ thống, đảm bảo bạn nhận được cổng HTTP 80 trong danh sách.

Chạy các lệnh bên dưới.
Mã:
systemctl status nginx
netstat -plntu
Sau đây là kết quả.



Máy chủ web Nginx được cài đặt trên máy chủ Ubuntu 16.04.

Bước 3 - Cài đặt và cấu hình PHP-FPM​

Trong bước này, chúng ta sẽ cài đặt và cấu hình PHP-FPM 7.0. Chúng ta sẽ cài đặt PHP và PHP-FPM với một số tiện ích mở rộng cần thiết cho 'BookStack', bao gồm PDO, Tokenizer, GD, Tidy, MBString và OpenSSL.

Cài đặt PHP và PHP-FPM với tất cả các tiện ích mở rộng cần thiết bằng cách chạy lệnh apt bên dưới.
Mã:
sudo apt install php7.0-fpm php7.0-mcrypt php7.0-curl php7.0-cli php7.0-mysql php7.0-gd php7.0-xsl php7.0-json php7.0-intl php-pear php7.0-dev php7.0-common php7.0-mbstring php7.0-tidy php7.0-zip php-soap libcurl3 curl -y
Sau khi cài đặt hoàn tất, chúng ta cần cấu hình các tệp cấu hình 'php.ini' cho 'php fpm' và 'php cli'.

Chỉnh sửa tệp 'php.ini' cho 'fpm' cấu hình sử dụng vim.
Mã:
vim /etc/php/7.0/fpm/php.ini
Bỏ chú thích dòng 'cgi.fix_pathinfo' và đổi giá trị thành '0'.
Mã:
cgi.fix_pathinfo=0
Lưu và thoát.

Chỉnh sửa tệp 'php.ini' để cấu hình 'cli' sử dụng vim.
Mã:
vim /etc/php/7.0/cli/php.ini
Bỏ chú thích dòng 'cgi.fix_pathinfo' và đổi giá trị thành '0'.
Mã:
cgi.fix_pathinfo=0
Lưu và thoát.

Bây giờ hãy khởi động dịch vụ PHP-FPM và cho phép dịch vụ này khởi chạy mọi lúc khi khởi động hệ thống.
Mã:
systemctl start php7.0-fpm
systemctl enable php7.0-fpm
Trên hệ thống Ubuntu, PHP-FPM sẽ chạy dưới tệp 'sock' - hãy kiểm tra tệp này bằng lệnh netstat bên dưới.
Mã:
netstat -pl | grep fpm
Và bạn sẽ nhận được kết quả như bên dưới.



PHP và PHP-FPM với tất cả các tiện ích mở rộng cần thiết đã được cài đặt.

Bước 4 - Cài đặt và cấu hình cơ sở dữ liệu MariaDB​

BookStack chỉ hỗ trợ cơ sở dữ liệu MySQL và chỉ chạy dưới phiên bản MySQL > 5.6. Đối với hướng dẫn này, chúng tôi sẽ sử dụng phiên bản MariaDB mới nhất có thể cài đặt từ kho lưu trữ Ubuntu.

Chạy lệnh apt sau để cài đặt cơ sở dữ liệu MariaDB.
Mã:
sudo apt install mariadb-server mariadb-client -y
Sau khi cài đặt hoàn tất, hãy khởi động dịch vụ và cho phép dịch vụ khởi chạy mọi lúc khi khởi động hệ thống.
Mã:
systemctl start mysql
systemctl enable mysql
Bây giờ chúng ta cần cấu hình mật khẩu 'root' cho cơ sở dữ liệu.

Chạy lệnh sau để thiết lập mật khẩu cơ sở dữ liệu 'root'.
Mã:
mysql_secure_installation
Và bạn sẽ được yêu cầu nhập mật khẩu root MySQL mới - nhập mật khẩu của bạn cho người dùng root và nhấn Enter. Đối với những người dùng khác, chỉ cần nhập 'Y' thành yes và Enter lần nữa.
Mã:
Đặt mật khẩu root? [Y/n] Y
 Xóa người dùng ẩn danh? [Y/n] Y
 Không cho phép đăng nhập root từ xa? [Y/n] Y
 Xóa cơ sở dữ liệu thử nghiệm và truy cập vào cơ sở dữ liệu đó? [Y/n] Y
 Tải lại bảng đặc quyền ngay bây giờ? [Y/n] Y
Mật khẩu root MySQL hiện đã được thiết lập.



Tiếp theo, chúng ta cần tạo một cơ sở dữ liệu mới để cài đặt BookStack.

Chúng ta sẽ tạo một cơ sở dữ liệu mới có tên là 'bookstackdb' với người dùng 'bookstak' và mật khẩu 'bookstack@'.

Đăng nhập vào shell MySQL với tư cách là người dùng root.
Mã:
mysql -u root -p
Bây giờ hãy chạy tất cả các truy vấn MySQL bên dưới.
Mã:
create database bookstackdb;
create user bookstack@localhost defined by 'bookstack@';
grant all privileges on bookstackdb.* to bookstack@localhost defined by 'bookstack@';
flush privileges;
exit;
MySQL/MariaDB đã được cài đặt trên hệ thống Ubuntu và cơ sở dữ liệu cho cài đặt 'BookStack' đã được tạo.


Bước 5 - Cài đặt PHP Composer​

Composer là trình quản lý phụ thuộc cho PHP. Nó cho phép bạn quản lý các phụ thuộc PHP mà bạn cần cho dự án của mình. Trong bước này, chúng ta sẽ cài đặt Composer bằng tập lệnh cài đặt. Composer sẽ được sử dụng để tải xuống tất cả các thư viện PHP cần thiết cho 'BookStack'.

Đi đến thư mục gốc và tải xuống trình cài đặt bằng curl.
Mã:
cd ~/
curl -sS https://getcomposer.org/installer | php
Và bạn sẽ nhận được tệp 'composer.phar' trong thư mục gốc của mình, di chuyển tệp đến thư mục '/usr/bin' và chạy lệnh 'composer' như bên dưới.
Mã:
mv composer.phar /usr/bin/composer
composer -v
Bạn sẽ nhận được phiên bản composer được cài đặt trên hệ thống của mình.



PHP Composer hiện đã được cài đặt trên Ubuntu 16.04.

Bước 6 - Cài đặt BookStack​

Trong bước này, chúng ta sẽ cài đặt BookStack trong thư mục '/var/www', đây sẽ là thư mục ứng dụng gốc.

Đi đến thư mục '/var/www' và sao chép mã nguồn 'BookStack' bằng lệnh git.
Mã:
cd /var/www/
git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch
Đi đến thư mục 'BookStack/' và cài đặt tất cả các phụ thuộc PHP bằng lệnh composer như được hiển thị bên dưới.
Mã:
cd BookStack/
composer install
Đảm bảo bạn không gặp lỗi nào và khi hoàn tất, bạn sẽ thấy kết quả như bên dưới.



Bây giờ hãy sao chép tệp cấu hình môi trường '.env.example' và chỉnh sửa bằng vim.
Mã:
cp .env.example .env
vim .env
Trên dòng chi tiết cơ sở dữ liệu, hãy thay đổi mọi thứ bằng thông tin cơ sở dữ liệu của bạn, như được hiển thị bên dưới.
Mã:
# Chi tiết cơ sở dữ liệu
 DB_HOST=localhost
 DB_DATABASE=bookstackdb
 DB_USERNAME=bookstack
 DB_PASSWORD=bookstack@
Lưu và thoát.

Và thay đổi chủ sở hữu của thư mục 'BookStack' thành người dùng và nhóm 'www-data'.
Mã:
chown -R www-data:www-data /var/www/BookStack
Tiếp theo, chúng ta cần tạo khóa ứng dụng duy nhất cho BookStack và cập nhật lược đồ cơ sở dữ liệu bằng lệnh PHP artisan.

Trên thư mục ứng dụng gốc '/var/www/BookStack', hãy chạy các lệnh như được hiển thị bên dưới.
Mã:
php artisan key:generate
php artisan migrate
Bạn sẽ được yêu cầu xác nhận, hãy nhập 'yes' và nhấn Enter.



Chờ lệnh tạo khóa bí mật và nhập lược đồ cơ sở dữ liệu.

BookStack hiện đã được cài đặt trên Ubuntu 16.04, ứng dụng khóa bí mật duy nhất đã được tạo và lược đồ cơ sở dữ liệu cho BookStack đã được đã cập nhật.

Bước 7 - Cấu hình Nginx Virtual Host cho BookStack​

Trong bước này, chúng ta sẽ cấu hình nginx virtual host cho BookStack. Chúng ta sẽ sử dụng 'book.hakase-labs.co' làm tên miền cho URL BookStack của mình.

Vào thư mục '/etc/nginx' và tạo tệp virtual host mới 'bookstack' trong thư mục 'sites-available' bằng trình soạn thảo vim.
Mã:
cd /etc/nginx/
vim sites-available/bookstack
Dán cấu hình bên dưới.
Mã:
máy chủ {
 lắng nghe 80;
 tên máy chủ book.hakase-labs.co;
 gốc /var/www/BookStack/public;
 
 nhật ký truy cập /var/log/nginx/bookstack_access.log;
 nhật ký lỗi /var/log/nginx/bookstack_error.log;
 
 kích thước thân máy khách tối đa 1G;
 fastcgi_buffers 64 4K;
 
 chỉ mục index.php;
 
 vị trí / {
 try_files $uri $uri/ /index.php?$query_string;
 }
 
 vị trí ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README) {
 từ chối tất cả;
 }
 
 vị trí ~ \.php(?:$|/) {
 fastcgi_split_path_info ^(.+\.php)(/.+)$;
 include fastcgi_params;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_param PATH_INFO $fastcgi_path_info;
 fastcgi_pass unix:/run/php/php7.0-fpm.sock;
 }
 
 location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
 expires 30d;
 access_log off;
 }
 }
Lưu và thoát.

Bây giờ hãy kích hoạt máy chủ ảo và kiểm tra cấu hình.
Mã:
ln -s /etc/nginx/sites-available/bookstack /etc/nginx/sites-enabled/
nginx -t
Đảm bảo bạn không gặp lỗi như hiển thị bên dưới.



Bây giờ hãy khởi động lại dịch vụ Nginx.
Mã:
systemctl restart nginx
Máy chủ ảo Nginx cho BookStack đã được thêm và kích hoạt.

Bước 8 - Kiểm tra​

Mở trình duyệt web của bạn và nhập URL BookStack vào thanh địa chỉ, của tôi là http://book.hakase-labs.co/

Và bạn sẽ được chuyển hướng đến trang 'đăng nhập/' như hiển thị bên dưới.



Nhập người dùng quản trị mặc định '[emailprotected]' với mật khẩu 'password', sau đó nhấn nút 'Đăng nhập'.

Và bạn sẽ nhận được Bảng điều khiển người dùng BookStack.



Nhấp vào menu 'Cài đặt' và bạn sẽ nhận được trang cài đặt.



Bây giờ hãy nhấp vào menu 'Người dùng' rồi nhấp vào người dùng 'Quản trị'. Thay đổi email mặc định bằng địa chỉ email của bạn và mật khẩu bằng mật khẩu bí mật của riêng bạn.



Sau đó nhấp vào nút 'Lưu'.

Với thao tác này, quá trình cài đặt BookStack với ngăn xếp LEMP (Linux, Nginx, MariaDB và PHP-FPM) trên Ubuntu 16.04 đã hoàn tất thành công.

Tham khảo​

 
Back
Bên trên