Skip to main content

BookStack 架設

運行環境

  • PVE
  • LXC
  • Debian 12

安裝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下載安裝

  • 安裝Composer
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
  • BookStack 設定
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  

 

  • 設定完成輸入http://ip,預設帳密admin@admin.com、password

參考相關網頁

BUBU知識庫