XserverにBookStackをインストールする

BookStack(Wiki)は共用ホスティングレンタルサーバー)はサポートしていませんが、Xserverには普通にインストールできました。
ただしいろいろと設定が必要なので、メモしておきます。

Wikipediaにも使われているMediaWikiなら小難しい設定抜きでインストールできたので、ユーザーごとに閲覧制限をしたいといった理由がなければそちらでもよさそうです。

BookStackとは

オープンソースWikiソフトウェアの一つです。
PHPMySQLで動きます。
本棚、ブック、章、ページといった風に、サイトを本に見立てて管理するのが特徴です。
ページ構造が直感的でページ編集にWYSIWYGMarkdownどちらも使えるので、PCに慣れていないメンバーがいる場合にもおすすめです。
他のWikiにはあまりない機能として、ユーザーに権限を設定して見れないページを作れる点があります。
現在でも頻繁にアップデートが行われています。

有志の方により日本語化がされています。

www.bookstackapp.com

BookStack動作環境

  • PHP >= 7.4
    • For installation and maintenance, you’ll need to be able to run php from the command line.
    • Required Extensions: OpenSSL, PDO, MBstring, Tokenizer, GD, MySQL, SimpleXML & DOM
  • MySQL >= 5.7 or MariaDB >= 10.2
    • For the storage of BookStack content and data.
    • Single Database (All permissions advised since application manages schema)
  • Git Version Control
    • For application of updates when following our standard process.
  • Composer >= v2.0
    • For installation and management of our PHP dependencies.

※BookStackのバージョンアップで変わっている可能性があるので、公式サイトで確認が必要です。

www.bookstackapp.com

Xserverの下準備をする

Xserver管理画面でMySQLPHPのバージョン設定

  1. Xserver管理画面にログイン。
  2. Xserver管理画面のサーバー管理のMySQL設定で、MySQLデータベースを作り、そのデータベースにMySQLユーザーを追加します。
    作ったデータベースの名前とユーザー名、パスワードをメモしておきます。
  3. PHP Ver.切替」でBookStackをインストールしたいドメインを選び、7.4以上のバージョンのPHPに切り替えておきます。ここではPHP8.0に切り替えるものとします。

PHPを切り替え

  1. まずはSSHでXserverにログインします。

  2. php -vを実行してPHPのバージョンを確認します。
    おそらく管理画面で設定したバージョンとは異なるものとなっているはずです。
    その場合まずはmkdir $HOME/binを実行しbinディレクトリを作り、ln -s /usr/bin/php8.0 $HOME/bin/phpを実行して、Xserver管理画面で設定したバージョンであるPHP8.0のシンボリックリンクを作成します。

  3. 次にSSHで使うPHPのバージョンを切り替えるためにvi ~/.bashrcを実行して.bashrcを開きます。

    以下の行を追記し、パスを通します。
    PATH=$HOME/bin:$PATH
    .bashrcをそのままにしておきたい人はサブフォルダにでも.bashrcを作ってそちらをsourceコマンドで読み込んでください。)

  4. source ~/.bashrcを実行して.bashrcを再読み込みします。

  5. php -vを実行してPHPのバージョンを確認して、PHP8になっていれば大丈夫です。

Composerをアップデート

引き続きComposerをアップデートしていきます。一度SSHをログアウトしていたならsource ~/.bashrcSSHで使うPHPを切り替えてください。

composer -VでComposerのバージョンを確認して、動作環境より低いバージョンならアップデートする必要があります。

Composerのダウンロードページを開きます。

getcomposer.org

下記コマンドでサーバーの設定に合ったcomposer.pharを生成してくれます。
Composerのバージョンアップ等でハッシュ値が変わる可能性があるので、必ず公式ページからコピペしてください。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

composer.pharファイルが作成されますので、mv composer.phar $HOME/bin/composerを実行してbinフォルダに移動します。

source ~/.bashrcを実行して.bashrcを再読み込みします。

composer -Vを実行してComposerのバージョンを確認して、BookStackの動作条件を満たしていることを確認します。

Gitのインストール

XserverはGitが元から入っています。

BookStackをインストールする

いよいよBookStackをインストールしていきます。

ここから先は公式サイトの手動インストール手順とだいたい同じです。

Installation · BookStack

  1. まずはcd ~/でホームディレクトリに移動します。

  2. git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch でBookStackのGitHubからプロジェクトをCloneします。
    BookStackディレクトリが作られているはずです。

  3. cd BookStackBookStackディレクトリに移動。

  4. composer install --no-devを実行してBookStackに必要なパッケージをインストールします。

BookStackの環境設定ファイルとデータベースの設定

そのままBookStackディレクトリで設定ファイルを作成していきます。

  1. cp .env.example .envを実行して.env.exampleファイルを.envファイルにコピーします。

  2. php artisan key:generateを実行して一意のアプリケーション キーを生成します。
    これにより.envファイル内のAPP_KEY定数が自動的に更新されます。

  3. vi .envでファイルを開き、メモしておいたデータベースの詳細と、APP_URLには公開予定のURL、メールの詳細も設定します。
    適時自分の環境に合わせて書き換えてください。

APP_URL=https://your-domain.com

DB_HOST=mysql***xserver.jp
DB_DATABASE=Database name
DB_USERNAME=Database user
DB_PASSWORD=Database password

MAIL_DRIVER=smtp
MAIL_FROM_NAME="BookStack"
MAIL_FROM=info@your-domain.com
MAIL_HOST=sv***.xserver.jp
MAIL_PORT=465
MAIL_USERNAME=info@your-domain.com
MAIL_PASSWORD=Mail password
MAIL_ENCRYPTION=ssl

同じディレクトリにある.env.example.completeファイルにはその他設定できる項目が書かれています。

APP_LANG=ja
APP_TIMEZONE=Asia/Tokyo

あたりは設定しておくとよさそうです。

  1. php artisan migrateを実行してデータベースを更新します。

BookStack用にディレクトリを設定

  1. chmod u+w ~/BookStack/storage ~/BookStack/bootstrap/cacheを実行して、これらのフォルダーをWebサーバーによって書き込み可能にします。

  2. publicフォルダを公開予定のドメインディレクトリのpublic_htmlフォルダに移動させます。
    今回はyour-domain.comが公開予定のドメインで、その直下にインストールするとします。
    移動させる前にpublic_htmlフォルダからindex.htmlファイル等は削除しておいてください。

    mv ~/BookStack/public/* ~/BookStack/public/.htaccess ~/your-domain.com/public_htmlを実行して必要なファイルを移動させます。

  3. chmod u+w ~/your-domain.com/public_html/uploadsを実行してuploadsをWebサーバーによって書き込み可能にします。

公開ディレクトリのファイルを書き換え

  1. cd ~/your-domain.com/public_htmlを実行して、公開ディレクトリに移動します。

  2. vi .htaccessを実行してRewriteEngine Onの下の行にRewriteBase /を追記します。
    ※もしBookStackの公開ディレクトリがサブディレクトリの場合、例えばインストール先がdirならRewriteBase /dir/としてください。

  3. vi index.phpを実行して、いくつかの書き換えをしてください。
    /../..のところはBookStackの公開ディレクトリがサブディレクトリだったりするなら、その分/../../..といった風に階層を深くします。

18行目あたり

if (file_exists(__DIR__ . '/../storage/framework/maintenance.php')) {
    require __DIR__ . '/../storage/framework/maintenance.php';
}
↓以下に変更
if (file_exists(__DIR__ . '/../../BookStack/storage/framework/maintenance.php')) {
    require __DIR__ . '/../../BookStack/storage/framework/maintenance.php';
}

37行目あたり

require __DIR__ . '/../vendor/autoload.php';
↓以下に変更
require __DIR__ . '/../../BookStack/vendor/autoload.php';

51行目あたり

$app = require_once __DIR__ . '/../bootstrap/app.php';
↓以下に変更
$app = require_once __DIR__ . '/../../BookStack/bootstrap/app.php';

BookStackにログイン

これでBookStackのインストールができたはずです。

ブラウザで公開URLにアクセスして、デフォルトの管理者admin@admin.comとパスワードpasswordでログインできます。

セキュリティ上の理由から、初回ログイン直後にログイン情報を変更してください。

参考にしたサイト

Installing BookStack Wiki on cPanel Shared Hosting - WarpConduit Computing

【エックスサーバー】Laravelで作成したWebアプリを公開 | チグサウェブ