Ubuntu 20.04(22.04)にBookstackをインストール
Redmineのプラグイン、knowledgebaseのようなWiki編集/公開システム「BookStack」をインストールしたときのメモです。
前提
-
こちらが既に動いています。
-
Ubuntu 20.04
- Ubuntu 22.04でも動作を確認
-
Apache 2.4系
-
MySQL 8系
-
PHP 8.1系
-
Composer 2.6
また、このサイト用のドメインを有しており、ドメインに即した証明書も発行済みです。
さっくりとした手順
- DBを作成します。
- BookStackをダウンロードします。
- BookStackの設定を行います。
- Apache設定ファイルを用意します。
- Webサービス再起動後、設定を反映します。
DB作成
mysql -u root -p
CREATE DATABASE bookstack set utf8mb4;
CREATE USER 'bookstackuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON bookstack.* TO 'bookstackuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
DB名/パスワードはポリシーに応じて適切なものを指定します。
- DB作成確認
mysql -u snipeitbookstack -p
設定したパスワードでログインできることを確認
- DB確認
SHOW DATABASES;
bookstackがあることを確認
- ログアウト
exit
BookStackの配置
- 配置ディレクトリに移動
cd /home/www-data && pwd
※ パーティションの都合上、/home/www-dataに置いています。
※ 環境に合わせて適切なWebサービス公開ディレクトリを指定してください。
- git clone
sudo git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch
- 所有者変更
sudo chown -R www-data:www-data BookStack
設定及びインストール
- ディレクトリ移動
cd /home/www-data/BookStack && pwd
git cloneしたディレクトリを指定します。
- Composer Install
sudo composer install --no-dev
- 設定ファイルのサンプルをコピー
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名、パスワードなどは先ほど作成したものです。
- DBマイグレート
sudo php artisan key:generate
sudo php artisan db:seed --force
sudo php artisan migrate --force
Apache用のファイル作成
- バーチャルファイル作成
- BookStack用の設定ファイル作成
- 【】の箇所は、自分の環境に合わせて修正してください。
cat <<- __EOF__ | sudo tee -a /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)"
__EOF__
設定反映
- Apache設定ファイル有効化
sudo a2ensite bookstack.conf
- コンフィグチェック
sudo apache2ctl configtest
SyntaxOKを確認します
- Webサービス再起動
sudo systemctl restart apache2.service
インストール確認
https://設定したドメイン
でアクセスします。
以下のログイン画面が出れば成功です。
- admin@admin.com
- passowrd
が初期パスワードです。直ちに、アカウント情報(特にパスワード)を強固なものに設定してください。なお、ログインIDはメールアドレスとなっています。