16
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

EC2のAmazonLinuxにQiitaライクな情報共有サービス「Knowledge」を立ち上げる

Posted at

目的

社内の情報共有に、Qiita:Teamはちょっとお高いからもっと気軽に始められるKnowledgeを作ってみよう、というところ。

背景

実は半年ぐらい使っていたのですが、個人サーバに作った結果、誤って消してしまう、かつバックアップも無いという事態に陥り、ちゃんと作り直すことに。。。

構成

ソフトウェアとか バージョン その他
OS AmazonLinux Amazon Linux AMI 2016.09.0.20160923 x86_64 HVM
Java 1.8.0 yumベース
Tomcat 8.0 yumベース
Knowledge 1.6.0 2016/10/27時点ではpre-release4でした
PostgreSQL 9.5.4 Knowledgeのデータ保管用
※Knowledgeの管理画面上、PostgreSQLのドライバーが9.3となっていますが、9.5でも動きました

導入手順

1.AmazonLinux

改めて言うことも無いので、ポイントだけ。

  • AWSの管理コンソールから最新のAmazonLinux用AMIを選択してポチポチやる
  • 今回はt2.micro、ストレージは20GBに設定
  • セキュリティーグループはhttpの80だけ全解放(とりあえずIP制限等無し)
  • 消してしまうと怖いから削除保護を有効にしておく
  • タイムゾーンは日本に変更しておく
  • EIPをセット

2.Knowledgeのインストール

作業は基本的にec2-userで行います。

Java/Tomcatのインストール

  • 標準では1.7が入っているが、Java version 8 以降が推奨されているので更新する
$ sudo yum list installed |grep java
java-1.7.0-openjdk.x86_64             1:1.7.0.111-2.6.7.2.68.amzn1 installed    
javapackages-tools.noarch             0.9.1-1.5.amzn1              installed    
tzdata-java.noarch                    2016g-2.64.amzn1             @amzn-updates
  • 基本はyumベースとし、2016年10月27日時点で安定版をインストール対象とする
  • Java : JDK1.8
  • Tomcat : 8.0.36
  • 念のため、yum search javaで最新版を確認
  • alternativesコマンドを使い、Javaのバージョンを変更
$ sudo yum -y update
$ yum search java|grep openjdk
$ sudo yum -y install java-1.8.0-openjdk-devel tomcat8
$ sudo alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
   2           /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java

Enter to keep the current selection[+], or type selection number: 2
$ java -version
openjdk version "1.8.0_101"
OpenJDK Runtime Environment (build 1.8.0_101-b13)
OpenJDK 64-Bit Server VM (build 25.101-b13, mixed mode)
$ tomcat8 version
Server version: Apache Tomcat/8.0.36
Server built:   Aug 12 2016 18:14:42 UTC
Server number:  8.0.36.0
OS Name:        Linux
OS Version:     4.4.19-29.55.amzn1.x86_64
Architecture:   amd64
JVM Version:    1.8.0_101-b13
JVM Vendor:     Oracle Corporation

Knowledgeのデプロイ

  • Tomcatの初期設定で、/var/lib/tomcat8/webappsがデフォルトディレクトリ
  • デフォルトだと8080ポートなので、80ポートに変更
  • 80ポートでリクエストされたものを、8080ポートで待機しているTomcatにルーティングし、proxyPort属性を追加
  • Tomcatを自動起動
$ sudo vi /etc/tomcat8/server.xml
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
-               redirectPort="8443" />
+               redirectPort="8443" 
+               proxyPort="80" />
$ sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
$ sudo /sbin/service iptables save
$ sudo service tomcat8 start
$ sudo chkconfig tomcat8 on
$ cd /var/lib/tomcat8/webapps
$ sudo wget https://github.com/support-project/knowledge/releases/download/v1.6.0pre4/knowledge.war
$ sudo service tomcat8 start

3.初期セットアップ

  • ブラウザにhttp://[[EC2のEIP]]/knowledge/でアクセス
  • 公式サイトの手順に従い、初期セットアップ

4.PostgreSQLへの移行

  • デフォルトのH2DatabaseからPostgreSQLへ移行する(公式サイトの推奨設定)
  • 自動起動をOn
$ sudo yum install -y postgresql95 postgresql95-server postgresql95-devel postgresql95-contrib
$ psql --version
psql (PostgreSQL) 9.5.4
$ sudo service postgresql95 initdb
Initializing database:                                     [  OK  ]
$ sudo chkconfig postgresql95 on
$ sudo service postgresql95 start

#postgresユーザのパスワードを変更(今回はとりあえずパスワードも`postgres`にしましたが、適宜変えてください)
$ sudo passwd postgres
#環境変数を変更
$ sudo service postgresql95 stop
$ sudo usermod -d /var/lib/pgsql95 postgres
$ sudo grep postgres /etc/passwd
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql95:/bin/bash
$ su - postgres
$ vi /var/lib/pgsql95/.bash_profile 
[ -f /etc/profile ] && source /etc/profile

- PGDATA=/var/lib/pgsql93/data
+ PGDATA=/var/lib/pgsql95/data
export PGDATA
$ exit
$ sudo service postgresql95 start
  • Knowledge用接続設定
$ su - postgres
$ vi /var/lib/pgsql95/data/postgresql.conf
- #listen_addresses = 'localhost'         # what IP address(es) to listen on;
+ listen_addresses = '*'         # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
- #port = 5432                            # (change requires restart)
+ port = 5432                            # (change requires restart)
$ vi /var/lib/pgsql95/data/pg_hba.conf
#以下の通り設定
- local   all             all                                     peer
+ local   all             all                                     md5
 host    all             all             127.0.0.1/32            trust
$ exit
$ sudo service postgresql95 restart

#Knowledge用DB作成
$ su - postgres
createdb knowledge
  • Knowledge画面からPostgreSQLの設定
    1. Knowledgeに管理者ユーザでログイン
    2. 右上のユーザボタンから「システム設定」を選択
    3. 「データベースの接続先変更」を選択
    4. 「org.postgresql.Driver(9.3-1103-jdbc41)」を選択
    5. 以下の通り設定し、保存を押下
項目 設定値 備考
URL jdbc:postgresql://localhost:5432/knowledge -
user postgres -
password postgres ※適宜正しい値を設定してください
schema public -
max connection 0 Knowledgeのデフォルト値
auto commit false Knowledgeのデフォルト値
  • 「組み込みDBのデータをカスタム設定のDBへコピー」を実行

バックアップ設計

  • とりあえず手動でpg_dumpを取得し、別途アタッチしたEBSをスナップショット保管
  • この辺りの記事を参考に別途実施・・・したい

これで使えるようになりました!!
あとはバックアップと、EIPは格好悪いから、専用のドメインを割り当てようかと。
気が向いたら更新します。

参考にさせていただいたサイト

16
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?