KnowledgeをHerokuで動かす

Qiita:Teamのような情報共有ツールで社内LANのような限定的に使うことができるものを探していたところ、Knowledgeを見つけました。

そこで、ためしに、Heroku上で動かしてみました。
作業環境はLinux (Ubuntu 14.04)で行っています。

なお、公式でDeploy to Heroku Buttonに対応しているため、下記の手順を行わなくても、GitHub上のsupport-project/knowledgeの「Deploy to Heroku」を押下するとデプロイ~PostgreSQLアドオンの追加まで行ってくれます。

インストールから起動まで

  1. Herokuアカウントの作成

    Herokuアカウントを持っていない場合は、Sign Upでアカウントを作成します。

  2. JREのインストール

    KnowlegeをHerokuにデプロイする際にJavaが必要なため、作業環境にJREをインストールしておきます。

    $ sudo apt-get install -y default-jre
    
  3. Herokuのコマンドラインツールのインストールとログイン

    Heroku Toolbeltをインストールします。サイト上で、「Debian/Ubuntu」を選択すると表示されるコマンドを実行します。

    $ wget -O- https://toolbelt.heroku.com/install-ubuntu.sh | sh
    

    つぎにHerokuにログインします。

    $ heroku login
    
  4. Herokuアプリの作成

    作業用ディレクトリを作成します。

    $ mkdir knowledge
    $ cd knowledge
    

    アプリ名をsample-knowlegeとしてHerokuアプリを作成します。(アプリ名は適宜変更します)

    $ heroku create sample-knowlege
    
  5. Knowledgeのダウンロード

    KnowledgeはJavaのWAR形式で提供されているので、それをダウンロードします。

    ダウンロードはこちらから Releases support-project/knowledge

    執筆時点での最新バージョン1.3.1を使います。

    $ wget https://github.com/support-project/knowledge/releases/download/v1.3.1/knowledge.war
    
  6. WARをHeroku上で動かすために、Heroku ToolbeltのWARデプロイプラグインを追加する

    WARデプロイについて – WAR Deployment | Heroku Dev Center
    WARデプロイプラグインについて – heroku/heroku-deploy

    $ heroku plugins:install https://github.com/heroku/heroku-deploy
    
  7. knowledge.warをHerokuにデプロイ
    $ heroku deploy:war --war knowledge.war --app sample-knowlege
    

    アクセス先URLの確認

    $ heroku apps:info sample-knowlege
    === sample-knowlege
    Dynos:         web: 1
    :
    :
    :
    :
    Web URL:       https://sample-knowlege.herokuapp.com/
    
  8. URLでアクセス

    https://sample-knowlege.herokuapp.com/ にアクセスします。

    Topページ

    ログインはドキュメントKnowledge – Free knowledge base systemより

    ID:admin、パスワード:admin123

    でできます。

DBをPostgreSQLに変更する

KnowledgeのDBはデフォルトでは、組み込みのH2 Databaseを使用しているため、デプロイしなおすとデータが消えます。
永続化するためにデータベースをPostgreSQLに変更します。

  1. HerokuにPostgrSQLのアドオンを追加
    $ heroku addons:create heroku-postgresql --app sample-knowlege
    
  2. JDBC用のURL情報を取得

    KnowledgeにPostgreSQLの接続情報を設定するためにJDBC情報を取得します。
    Connecting to Relational Databases on Heroku with Java | Heroku Dev Centerより

    $ heroku run echo \$JDBC_DATABASE_URL --app sample-knowlege
    Running echo $JDBC_DATABASE_URL on sample-knowlege... up, run.2571
    jdbc:postgresql://ec2-WW-XX-YY-ZZ.compute-1.amazonaws.com:5432/XXXXXXXXXX?user=XXXXXXXXX&password=XXXXXXXXXXXXX&sslmode=require
    
  3. KnowledgeにPostgreSQLの接続情報を登録

    adminでログインしたのち、「システム設定」→「データベースの接続先変更」に以下の情報を入力して「保存」ボタンを押下します。

    driverClass: org.h2.Driver # 選択済みの状態
    URL: 先ほどの手順で取得したJDBCの接続URL
    user:先ほどの手順で取得したJDBCの接続URLにあるuser=の値
    password:先ほどの手順で取得したJDBCの接続URLにあるpassword=の値
    schema:先ほどの手順で取得したJDBCの接続URLにある:5432/と?の間の文字列
    max connection: 0 # そのまま
    auto commit: false # そのまま
    

    DB接続情報入力

  4. 組み込みDBの内容をPostgreSQLにコピー

    先の手順で登録に成功すると、「保存」ボタンの横に「組み込みDBで保存したデータをカスタム設定のDBにコピー」ボタンが現れるので、それを押下してデータをコピーします。

  5. 接続先をPostgreSQLに切り替える

    「driverClass」を「org.h2.Driver」から「org.postgresql.Driver」に変更して「保存」ボタンを押下します。

    ※なお、デプロイしなおすと、DB接続設定がクリアされるため、再度同じ内容を入力して切り替える必要があります。(その際は「組み込みDBで保存したデータをカスタム設定のDBにコピー」は実行しないこと)

その他

  • PostgreSQLの接続情報を登録した際、誤った情報を登録してしまい、Server Errorになった

    Server ErrorになるとTopページは表示されますが、ログインなどができなくなってしまいます。再度、デプロイすることでログインできます。その際組み込みDBに登録している内容はクリアされます。

  • PostgreSQLの内容を見るには

    https://postgres.heroku.com/databases では中身を確認できないため、コマンドラインツール(psqlなど)、WEBツール(phpPgAdminなど)・GUIツールなどで見る必要があります。

広告