BookStack 開源知識管理平台

開源wiki系統

BookStack 架設

運行環境

安裝nginx mariadb

 apt update
apt -y install nginx mariadb-server unzip git
systemctl enable nginx && systemctl start nginx

systemctl enable mariadb && systemctl start mariadb

資料庫設定

mariadb -u root -p   

CREATE DATABASE IF NOT EXISTS bookstackdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 
GRANT ALL PRIVILEGES ON bookstackdb.* TO 'bookstackuser'@'localhost' IDENTIFIED BY 'bookstackpass' WITH GRANT OPTION; 
FLUSH PRIVILEGES;

安裝PHP 8.4

apt install -y lsb-release ca-certificates apt-transport-https software-properties-common
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/sury-php.list
apt update && apt install curl php8.4 php8.4-{common,mbstring,fpm,mysql,gd,cli,opcache,curl,ldap,odbc,xmlrpc,soap,intl,zip,tidy,xml} -y

修改/etc/php/8.4/fpm/php.ini設定

sed -i "s|^;cgi.fix_pathinfo=1.*$|cgi.fix_pathinfo=0|" /etc/php/8.4/fpm/php.ini
sed -i "s|^;cgi.fix_pathinfo=1.*$|cgi.fix_pathinfo=0|" /etc/php/8.4/cli/php.ini

sed -i "s|^;date.timezone =.*$|date.timezone = Asia/Taipei|" /etc/php/8.4/fpm/php.ini
sed -i "s|^;date.timezone =.*$|date.timezone = Asia/Taipei|" /etc/php/8.4/cli/php.ini

sed -i "s|^upload_max_filesize = 2M.*$|upload_max_filesize = 50M|" /etc/php/8.4/fpm/php.ini
sed -i "s|^upload_max_filesize = 2M.*$|upload_max_filesize = 50M|" /etc/php/8.4/cli/php.ini

sed -i "s|^post_max_size = 8M.*$|post_max_size = 200M|" /etc/php/8.4/fpm/php.ini
sed -i "s|^post_max_size = 8M.*$|post_max_size = 200M|" /etc/php/8.4/cli/php.ini

sed -i "s|^memory_limit = 128M.*$|memory_limit = 512M|" /etc/php/8.4/fpm/php.ini
sed -i "s|^memory_limit = -1.*$|memory_limit = 512M|" /etc/php/8.4/cli/php.ini

sed -i "s|^max_execution_time = 30.*$|max_execution_time = 600|" /etc/php/8.4/fpm/php.ini
sed -i "s|^max_execution_time = 30.*$|max_execution_time = 600|" /etc/php/8.4/cli/php.ini

sed -i "s|^max_input_time = 60.*$|max_input_time = 600|" /etc/php/8.4/fpm/php.ini
sed -i "s|^max_input_time = 60.*$|max_input_time = 600|" /etc/php/8.4/cli/php.ini

sed -i "s|^default_socket_timeout = 60.*$|default_socket_timeout = 600|" /etc/php/8.4/fpm/php.ini
sed -i "s|^default_socket_timeout = 60.*$|default_socket_timeout = 600|" /etc/php/8.4/cli/php.ini

/etc/php/8.4/fpm/pool.d/www.conf 新增設定

確認以下設定正確
user = www-data
group = www-data

listen.owner = www-data
listen.group = www-data
listen.mode = 0660
#listen.mode註解打開

最後一行增加
php_value[session.save_path]    = /var/www/html/sessions
systemctl start php8.4-fpm && systemctl enable php8.4-fpm

設定/etc/nginx/nginx.conf

http區塊加入

client_body_timeout 120s;
client_max_body_size 100M;

建立/etc/nginx/conf.d/bookstack.conf

server {
  listen 80;
  listen [::]:80;

  server_name _;

  root /var/www/html/bookstack/public;
  index index.php index.html;

  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }
  
  location ~ \.php$ {
    include fastcgi_params;
    fastcgi_pass unix:/run/php/php8.4-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}

BookStack下載安裝

cd /usr/local/bin

curl -sS https://getcomposer.org/installer | php

mv composer.phar composer
mkdir -p /var/www/html 
 
cd /var/www/html   

mkdir /var/www/html/sessions

git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch

cd BookStack && composer install --no-dev
cp .env.example .env

修改 .env   

#APP_URL=先設定空白
APP_URL=
DB_HOST=localhost
DB_DATABASE=bookstackdb
DB_USERNAME=bookstackuser
DB_PASSWORD=bookstackpass
php artisan key:generate --force   
chown -R www-data:www-data /var/www/html/{BookStack,sessions}   
php artisan migrate --force  

 

參考相關網頁

BUBU知識庫

BookStack 改為子目錄

BookStack設定

cd /var/www/html/bookstack

nano .env
修改為子目錄
APP_URL=http://ip/bookstack

 

NGINX設定

修改/etc/nginx/conf.d/bookstack.conf

server {
  listen 8080;
  listen [::]:8080;

  server_name _;

  root /var/www/html/bookstack/public;
  index index.php index.html;

  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }
  location ~ \.php$ {
    include fastcgi_params;
    fastcgi_pass unix:/run/php/php8.4-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}


server {
  listen 80;
  listen [::]:80;

  server_name _;

  root /var/www/html;
  index index.html;

  location /bookstack/ {
    proxy_pass http://localhost:8080/;
    proxy_redirect off;
  }
  
}
nginx -t

service nginx restart

http://ip/bookstack

BookStack - SSL設定

運行環境

反向代理主機設定

location /bookstack/ {
      client_max_body_size 50M;
      proxy_pass http://bookstack主機ip/bookstack/;
    }

BookStack主機設定

進入bookstack目錄
cd /var/www/html/bookstack

更新網址
php artisan bookstack:update-url <oldUrl> <newUrl>

清除快取
php artisan cache:clear

編輯.env

APP_URL=https://xxx.com/bookstack 

瀏覽器輸入https://xxx.com/bookstack

BookStack 備份還原

備份

透過mysqldump備份資料庫

# Example
mysqldump -u user bookstack > bookstack.backup.sql

mysqldump -u 使用者 -p 資料庫名稱 > 資料庫名稱.backup.sql

文件

以下是包含應備份資料的檔案和資料夾清單。

或者,您可以備份整個 BookStack 資料夾,但預設只有上述資料夾包含重要的特定於實例的資料。

tar -czvf bookstack-files-backup.tar.gz .env public/uploads storage/uploads themes

打包整個BookStack

tar -czvf bookstack-files-backup.tar.gz bookstack

還原

先重新安裝BookStack後再還原備份檔案

資料庫還原

# Example
mysql -u root -p bookstack < bookstack.backup.sql

mysql -u 使用者 -p 資料庫名稱 < 資料庫名稱.backup.sql

還原備份檔

tar -xvzf bookstack-files-backup.tar.gz

更新URL

# Searches for <oldUrl> and replaces it with <newUrl>
php artisan bookstack:update-url <oldUrl> <newUrl>

# Example:
php artisan bookstack:update-url http://docs.example.com https://demo.bookstackapp.com