Redmineのプラグイン、knowledgebaseのようなWiki編集/公開システム「BookStack」を検証機に入れてみます。
前提
こちらが既に動いています。
- Ubuntu 20.04
- Apache 2.4系
- MySQL 8系
- PHP 8.1系
また、このサイト用のドメインを有しており、ドメインに即した証明書も発行済みです。
さっくりとした手順
- composerをインストールします。
- DBを作成します。
- BookStackをダウンロードします。
- BookStackの設定を行います。
- Apache設定ファイルを用意します。
- Webサービス再起動後、設定を反映します。
Composerインストール
- インストール
cd /hoge
# 任意の作業ディレクトリに移動します
sudo php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
sudo php composer-setup.php
sudo php -r "unlink('composer-setup.php');"
sudo php composer.phar install --no-dev --optimize-autoloader
- バージョン確認
composer --version
# バージョンが表示されることを確認します。
DBを作成します。
mysql -u root -p
CREATE DATABASE bookstack;
CREATE USER 'bookstackuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON bookstack.* TO 'bookstackuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
DB名/パスワードはポリシーに応じて適切なものを指定します。
BookStackの配置
- プログラム配置
cd /home/www-data
# パーティションの都合上、/home/www-dataに置いています。
# 環境に合わせて適切なWebサービス公開ディレクトリを指定してください。
sudo git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch
sudo chown -R www-data:www-data BookStack
cd BookStack
- 設定ファイル編集
sudo cp -pi .env.example .env
教義・信仰に沿ったエディタで以下を編集します。
APP_URL=https://hoge.example.com
# 公開用URLを指定します
# Database details
DB_HOST=localhost
DB_DATABASE=bookstack
DB_USERNAME=bookstackuser
DB_PASSWORD=password
# DB名、パスワードなどは先ほど作成したものです。
- マイグレート
sudo php artisan key:generate
sudo php artisan migrate --force
sudo php artisan db:seed --force
Web公開用のファイルを作成します。
- 作成するファイル(要管理者権限)
/etc/apache2/sites-available/bookstack.conf
- 作成内容
<VirtualHost *:80>
servername hoge.example.com
# ドメイン名を指定します
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# HTTPアクセスを強制的にHTTPSにリダイレクトします
</VirtualHost>
<VirtualHost *:443>
ServerName hoge.example.com
# ドメイン名を指定します
CustomLog /var/log/bookstack/bs_access.log combined
ErrorLog /var/log/bookstack/bs_error.log
DocumentRoot /home/www-data/BookStack/public
# 自身の環境に合わせます
<Directory /home/www-data/BookStack/public>
# 自身の環境に合わせます
AllowOverride All
Require all granted
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</Directory>
#SSL設定
SSLEngine on
Protocols h2 http/1.1
# SSLを有効化します
SSLCertificateFile /etc/certs/example.com.crt
# SSL証明書を指定します
SSLCertificateKeyFile /etc/private/example.com.key
# 秘密鍵を指定します
# SSLCACertificateFile /etc/certs/example.com.CA.crt
# 中間証明書が発行元から別ファイルで提供されている場合は、この直上をコメントアウトして中間証明書を指定します
#セキュリティヘッダー付与
Header always set Strict-Transport-Security "max-age=63072000"
Header set X-Content-Type-Options "nosniff"
Header always append X-Frame-Options "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block"
</VirtualHost>
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:EC6-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off
SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
設定を反映させます。
- 設定ファイル追加
sudo a2ensite bookstack.conf
sudo apache2ctl configtest
# Syntax OKを確認します
- Webサービス再起動
sudo systemctl restart apache2.service
インストール確認
https://設定したドメイン
でアクセスします。
以下のログイン画面が出れば成功です。
- admin@admin.com
- password
が初期パスワードです。ログイン後、直ちにアカウント情報を設定してください。
今後
- 現在運用しているサイトへのインストール
- セキュリティ強化
- 画像保存ディレクトリの設定
等を行っていきます。