概要
オープンソース「knowledge」をEC2上にインストール。
構築環境
OS | Amazon Linux 2 AMI (HVM), SSD Volume Type 64ビット(x86) |
言語 | Java 1.8 |
AP | Tomcat 9.0.31 |
DB | PostgreSQL12.2 |
ソフトウェア | knowledge |
※ EC2の「セキュリティグループ」→「インバウンド」でHTTP80番ポートが解放されていること。
Java
① Javaのインストールをします。以下のコマンドを実行します。
yum install -y java-1.8.0-openjdk-devel.x86_64
② Javaのバージョンを確認します。(1.8以上のバージョンであることを確認する)
java -version
Tomcat
① Tomcat用のユーザーを作成します。
useradd -s /sbin/nologin tomcat
② Tomcatをインストールします。wgetを使用しtomcatをダウンロードします。
wget http://ftp.riken.jp/net/apache/tomcat/tomcat-9/v9.0.31/bin/apache-tomcat-9.0.31.tar.gz
③ tar.gzを解凍します。
tar -xzf apache-tomcat-9.0.31.tar.gz
④ 解凍したディレクトリを /optに移動します。
mv apache-tomcat-9.0.31 /opt
⑤ chownを使用して所有者をtomcatへ変更します。
chown -R tomcat:tomcat /opt/apache-tomcat-9.0.31/
⑥ シンボリックリンクを作成します。
ln -s /opt/apache-tomcat-9.0.31/ /opt/tomcat
⑦ サービスの定義ファイルを作成します。
vim /etc/systemd/system/tomcat.service
・ 以下の内容を記入してください。
[Unit]
Description=Apache Tomcat 9
After=network.target
[Service]
User=tomcat
Group=tomcat
Type=oneshot
PIDFile=/opt/tomcat/tomcat.pid
RemainAfterExit=yes
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
ExecReStart=/opt/tomcat/bin/shutdown.sh;/opt/tomcat/bin/startup.sh
[Install]
WantedBy=multi-user.target
⑧ パーミッションの変更をします。
chmod 755 /etc/systemd/system/tomcat.service
⑨ Linuxを再起動後もTomcatが自動起動するように設定します。その後、tomcatを起動します。
systemctl enable tomcat
systemctl start tomcat
⑩ Tomcatのバージョンを確認します。
/opt/tomcat/bin/version.sh
# サーバーバージョンの確認
Server version: Apache Tomcat/9.0.31
PostgreSQL
KnowledgeはSQLサーバーを利用しない場合でも、簡易DBとして利用できますが、PostgreSQLに変更することを推奨しているので、インストールをします。
PostgreSQLのインストール
① PostgreSQLのダウンロード
rpm -ivh --nodeps https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
② Amazon Linux2用のリポジトリに書き換え
sed -i "s/\$releasever/7/g" "/etc/yum.repos.d/pgdg-redhat-all.repo"
③ PostgreSQLのインストール
yum install -y postgresql12 postgresql12-server postgresql12-devel postgresql12-contrib
④ バージョンを確認します。
psql --version
psql (PostgreSQL) 12.2
PostgreSQLの初期設定
① 初期セットアップを行います。
PGSETUP_INITDB_OPTIONS='--encoding=UTF-8 --locale=C' sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
# 以下表示されればOKです。
Initializing database ... OK
② PortgreSQLの起動、自動起動の設定
systemctl enable postgresql-12.service
systemctl start postgresql-12.service
③ パスワード変更
sudo passwd postgres
# 以下パスワードを要求されるので、2回入力する
Changing password for user postgres.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
④ postgresql.confを編集します。
## 対象ディレクトリに移動
cd /var/lib/pgsql/12/data/
## バックアップファイルの作成
cp -p postgresql.conf postgresql.conf.bak.yyyymmdd
## 編集
vim postgresql.conf
## (変更前)
#listen_addresses = 'localhost' # what IP address(es) to listen on;
#port = 5432 # (change requires restart)
## (変更後)
listen_addresses = '*' # what IP address(es) to listen on;
port = 5432 # (change requires restart)
⑤ pg_hba.confを編集します。
## 対象ディレクトリに移動
cd /var/lib/pgsql/12/data/
## バックアップファイルの作成
cp -p pg_hba.conf pg_hba.conf.bak.yyyymmdd
## 編集
vim 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 ident
## (変更後) 「***.***.***.***/32」にはEC2のグローバルIPを入れる
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all ***.***.***.***/32 password
⑥ Knowledge用のDB作成
su - postgres
createdb knowledge
⑦ postgresユーザーのパスワード設定
psql
ALTER ROLE postgres with password '(任意のパスワード)';
⑧ 接続確認をします。
psql -h (EC2のグローバルIP) -U postgres -d knowledge
Password for user postgres:
psql (12.2)
Type "help" for help.
knowledge=#
⑨ 再起動します。
systemctl restart postgresql-12.service
JDBCの設定
① Javaディレクトリに移動
cd /usr/share/java
② JDBCのダウンロード
wget https://jdbc.postgresql.org/download/postgresql-42.2.10.jar
③ profileファイルのバックアップ
cp -p /etc/profile /etc/profile.bak.yyyymmdd
④ profileの編集
vim /etc/profile
⑤ 一番下に以下を追記します。
# JDBC
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.amzn2.0.1.x86_64
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar:/usr/share/java/postgresql-42.1.10.jar
export CATALINA_HOME=/opt/tomcat
export KNOWLEDGE_HOME=/home/tomcat/.knowledge
export JAVA_OPTS="-Dfile.encoding=UTF-8 \
-Dnet.sf.ehcache.skipUpdateCheck=true \
-XX:+UseConcMarkSweepGC \
-XX:+CMSClassUnloadingEnabled \
-XX:+UseParNewGC \
-XX:MaxPermSize=128m \
-Xms512m -Xmx512m"
Knowledge
① tomcatのwebappsディレクトリに移動します。
cd /opt/tomcat/webapps/
② KnowledgeのGithubへアクセスし最新バージョンのwarファイルのURLをコピーします。
③ wgetコマンドでknowlegdeをダウンロードしインストールします。
wget https://github.com/support-project/knowledge/releases/download/v1.13.1/knowledge.war
URL
AWSのパブリックDNS名に「:8080/knowledge」を追加してアクセスします。
(例) http://ec2-***-***-***-***.ap-northeast-1.compute.amazonaws.com:8080/knowledge/