knowledge(https://github.com/support-project/knowledge) をかなり古いOSで動かしていたので新しいサーバーに移行しようとして悪戦苦闘した結果。
起きたこと
- java11 では jaxb が本体から分離したことにより動作しない
- ならば、と maven + jdk 入れて mvn package したらコンパイルは通るがテストが悉く失敗する
- pom.xml を頑張っていじってたら h2 のデータベースが開けないとか言われる
- h2 の jar をビルドしてコンソールを開いてデータベースを作成することには成功した
- が、 mvn test が通らない。
- sql関係で結構変更があるのかも
そんなわけで java11以降への移行…はあきらめる。まあどうせアレがアレだしもういいや。
requirements
- java 8
- postgresql (13以降)
- tomcat 9
AJP 使って httpd からアクセスさせるなら apache httpd が必要となる。
移行元データのバックアップ
pg_dump -U knowledge_user knowledge_db > /backup/knowledge_db.bak
各種サービス等をインストールする
インストール
sudo dnf install java-1.8.0-openjdk
sudo dnf install tomcat
sudo dnf remove postgresql-server
起動設定
sudo systemctl enable tomcat
sudo systemctl enable postgresql
postgresql は指定したロールでホスト指定でログインさせるために にそういう設定が必要。
/var/lib/pgsql/data/pg_hba.conf
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 password
# IPv6 local connections:
host all all ::1/128 password
knowledge をインストールする
knowledge.war を https://github.com/support-project/knowledge からダウンロードして tomcat/webapps にコピーする。
sudo cp knowledge.war /usr/share/tomcat/webapps
アプリケーションにアクセスしたら一度 admin でログインする。
初回起動
tomcat を起動してから knowledge (http://192.168.0.nnn:8080/knowledge) にアクセスする。
tomcat を起動する
sudo systemctl start tomcat
データベースを作成して移行元データベースを復元する
必要なロール、データベースを作成してロールに対するアクセス権限を与える。
psql で以下
create database knowledge_db;
create role knowledge_user login password 'xxxxxxxx';
grant all priviledges on database knowledge_db to knowledge_user;
復元
psql -d knowledge_db < /vagrant/knowledge_db.bak
カスタム設定を編集する
/usr/share/tomcat/.knowledge/custom_connection.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><connectionConfig><autocommit>false</autocommit><driverClass>org.postgresql.Driver</driverClass><maxConn>0</maxConn><name>custom</name><password>knowledge</password><schema></schema><URL>jdbc:postgresql://localhost:5432/knowledge_db</URL><user>knowledge_user</user></connectionConfig>
アプリケーションを再起動する
sudo systemctl stop tomcat
sudo systemctl start tomcat
アプリケーション設定を完了する
ログイン
knowledge (http://192.168.0.nnn:8080/knowledge) にアクセスして移行元で設定した管理者(多分 admin で、パスワードはデフォルト設定ではなく変更したもの)でログインする。
インデックス再作成
システム設定メニュー>検索用のインデックスの再作成 にアクセスし、記事番号の開始と終了を設定して「開始」ボタンをクリックする