BookStack 知識庫安裝流程 -CentOS 8
這套由 Jason Cheng 節省哥所介紹的開源軟體,BookStack 這是一套免費又開源軟體可以拿來當成一書籍來使用,這套系統是由目前最熱門的 PHP MVC 裡的 Laravel 架構所寫出來的,可以記錄有關於技術及備忘錄
運行環境
CentOS 8、Nginx 1.17、PHP 7.4、Mariadb 10.4
WEB 服務安裝
可以參考本知識庫的 WBE 服務安裝流程 CentOS 8 LNMP 安裝
BookStack 資料庫設定
mysql -u root -p # 登入資料庫裡設定資表及權限
CREATE DATABASE IF NOT EXISTS bookstackdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; #在資料庫裡新增BookStack表單
GRANT ALL PRIVILEGES ON bookstackdb.* TO 'bookstackuser'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION; #密碼請自己輸入好記錄的密碼
FLUSH PRIVILEGES;
PHP 服務設定
- PHP 套件安裝
dnf install -y php php-mysqlnd php-pdo php-xml php-pear php-devel php-mbstring re2c gcc-c++ gcc \
php-fpm php-mysql php-gd php-cli php-json php-opcache php-curl php-ldap php-odbc php-xmlrpc php-soap \
curl curl-devel php-intl php-zip php-openssl php-tidy php-tokenizer php-xml
- 安裝好 PHP 要去修改 「
vim /etc/php.ini
」 設定檔
修改前
;cgi.fix_pathinfo=1
修改後
cgi.fix_pathinfo=0
修改時區
[Date]
修改前
;date.timezone =
修改後
date.timezone = Asia/Taipei
修改資料上傳限制
; 上傳檔案大小上限(單一檔案大小)
upload_max_filesize = 50M
; POST 大小上限(所有檔案大小加總)
post_max_size = 200M
; 記憶體用量上限
memory_limit = 512M
; Script執行時間上限(單位:秒)
max_execution_time = 600
; Script處理資料時間上限(單位:秒)
max_input_time = 600
; Socket無回應斷線時間(單位:秒)
default_socket_timeout = 600
存檔
:wq
- 設定「php-fpm」「
vim /etc/php-fpm.d/www.conf
」
由誰使用此服務
; RPM: apache user chosen to provide access to the same directories as httpd
;user = apache
user = nginx
; RPM: Keep a group allowed to write in log dir.
;group = apache
group =nginx
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
;listen = /run/php-fpm/www.sock
listen = 127.0.0.1:9000
; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server.
; Default Values: user and group are set as the running user
; mode is set to 0660
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
php_value[session.save_path] = /var/www/html/sessions
修改好存檔
:wq
- 重啟及開機自動啟動 php-fpm 服務
systemctl restart php-fpm
Nginx 設定檔
- 設定檔位置
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig # 備份原本預設的設定檔
vim /etc/nginx/nginx.conf # 新增新的nginx設定檔
- 全域設定
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
#
events {
worker_connections 1024;
}
#
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#
access_log /var/log/nginx/access.log main;
#
#
client_body_timeout 120s;
#
server_tokens off;
#
# Default is 60, May need to be increased for very large uploads
#
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
#
include /etc/nginx/mime.types;
include /etc/nginx/conf.d/*.conf;
default_type application/octet-stream;
#
# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
#
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
add_header X-Frame-Options SAMEORIGIN;
add_header X-Powered-By eiblog/1.3.0;
add_header X-Content-Type-Options nosniff;
add_header Referrer-Policy "no-referrer-when-downgrade";
add_header Cache-Control no-cache;
#
brotli on;
brotli_comp_level 6;
brotli_min_length 512;
brotli_types text/plain text/javascript text/css text/xml text/x-component application/javascript application/x-javascript application/xml application/json application/xhtml+xml application/rss+xml application/atom+xml application/x-font-ttf application/vnd.ms-fontobject image/svg+xml image/x-icon font/opentype;
brotli_static always;
}
- 在 conf.d 目錄下新增設定檔
vim /etc/nginx/conf.d/bookstack.conf #網頁的設定檔
- 服務器設定檔
#
server {
listen 80;
server_name 您的網域;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
#
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name 您的網域;
root /var/www/html/BookStack/public;
#
# certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
#
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets on;
#
# intermediate configuration. tweak to your needs.
#
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5';
ssl_prefer_server_ciphers on;
#
access_log /var/log/nginx/bookstack_access.log;
error_log /var/log/nginx/bookstack_error.log;
#
client_max_body_size 1G;
fastcgi_buffers 64 4K;
#
index index.php;
#
location / {
try_files $uri $uri/ /index.php?$query_string;
}
#
#
location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README) {
deny all;
}
#
location ~ \.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:/var/run/php-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
}
#
location ~* \.(?:ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
expires 30d;
access_log off;
}
}
BookStack 服務安裝
- 安裝 Composer 作曲家服務
cd /usr/local/bin # 將dirs更改為我們希望將composer安裝到的位置
curl -sS https://getcomposer.org/installer | php # 安裝 composer
mv composer.phar composer # 重新命名 composer
- BookStack 放置位置
cd /var/www/html # 希望將 BookStack 存放的位置
mkdir /var/www/html/sessions # 新增from php sessions
git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch # 從github上下載最新版本的BookStackApp資料
cd BookStack && composer install --no-dev # 進入到BookStack目錄下用composer安裝服務
- BookStack 設定
cp .env.example .env # 複製範本設定文件
vim .env # 更新與數據庫中的新的配置,以及其他設置
---
DB_HOST=localhost
DB_DATABASE=bookstackdb
DB_USERNAME=bookstackuser
DB_PASSWORD=bookstackpass
---
All other settings are fine as default, but feel free to change any others as you see fit.
php artisan key:generate --force # 在.env中生成並更新APP_KEY
chown -R nginx:nginx /var/www/html/{BookStack,sessions} # 將所有權更改為Web服務器用戶
php artisan migrate --force # 產生新的資料庫表及其他設定
- 開啟瀏灠器輸入
http://server_ip
預設帳號為: [email protected]、密碼為:password
備註
- 如果在安裝
BookStack
時發生以下錯誤,表示在安裝php
時有套件尚未安裝到需手動安裝。
Problem 1
- The requested PHP extension ext-tidy * is missing from your system. Install or enable PHP's tidy extension.
Problem 2
- Installation request for gathercontent/htmldiff 0.2.1 -> satisfiable by gathercontent/htmldiff[0.2.1].
- gathercontent/htmldiff 0.2.1 requires ext-tidy * -> the requested PHP extension tidy is missing from your system.
- 在
PHP 7.4
中少安裝到php-tidy
所造成無法安裝,安裝此套件後就再重新安裝一次BookStack
服務就可以了
dnf install php-tidy -y