CentOS7 にオープンソースグループウェアの Aipo7 をインストールする

 ※注意:Aipo8がリリースされ、CentoOS7にもすんなりとインストールできるようになったようです。(2015/04/27)

この記事は、CentOS7 に、オープンソースグループウェア「Aipo7」 をソースからインストールするための手順を記述しています。

我が家で一か月ほど便利に使わせて頂いたお礼と、その設定がかなり大変だったこともあり、きっと需要があるのではと思い、改めて VirtualBox 上に CentOS7 を入れ、その上に Aipo7 をインストールしながら記事を書きました。

この記事では、Java プロジェクトのビルドには Java6、 実行には CentOS7 の デフォルトである Java7 を使い、DB は MariaDB、Tomcat には Tomcat7 を使っています。

● Apache Mavenのインストール

CentOS7 上で、yum によってインストールされる Apache Maven は、(恐らく)Java7 でコンパイルされているため、後の工程で Aipo7 のソースを Java6 でコンパイルする際、(Maven が)例外を出すというトラブルを抱えます1) mvn を実行すると、UnsupportedClassVersionError unsupported major.minor version 51.0 unable to load class という例外が出ます。。これを回避するため、次のように手動で Maven をインストールします2)この Maven のバイナリは、Java6 でも動作します

[root@vmcentos7 ~]# cd /tmp
[root@vmcentos7 ~]# wget http://mirrors.gigenet.com/apache/maven/maven-3/3.2.5/binaries/apache-maven-3.2.5-bin.tar.gz
[root@vmcentos7 ~]# tar -zxvf apache-maven-3.2.5-bin.tar.gz -C /usr/local
[root@vmcentos7 ~]# cd /usr/local
[root@vmcentos7 ~]# ln -s apache-maven-3.2.5 maven

全てのユーザに対して、自動で必要な環境変数を設定するために、maven.sh を作成しておきます。

次のように maven.sh を作成し編集します。

[root@vmcentos7 ~]# vi /etc/profile.d/maven.sh

そこに次の記述を行い保存します。

export M2_HOME=/usr/local/maven
export M2=$M2_HOME/bin
PATH=$M2:$PATH

設定がうまくできているかの確認は、適当なアカウントでログインした後、

$ printenv M2

により、環境変数 M2 が設定されているかで可能です。

● Java6 のインストール

Aipoの20130613というタグの付いたソースは、Java6 でビルドする必要があるため Java6 をインストールしておきます。

[root@vmcentos7 ~]# yum install java-1.6.0-openjdk-devel
[root@vmcentos7 ~]# ls /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.34.x86_64
bin  include  jre  lib  tapset
[root@vmcentos7 ~]#

● Aipo7 のソースをビルドする

OS のデフォルトの Java とは違う Java を使う必要があることや、後々、ソースを修正して開発することなどを考えて、aipo アカウントを作成し、その aipo アカウントで作業をします3)その方がいいかなぁと思ってそうしたという程度の理由です。

[root@vmcentos7 ~]# useradd aipo
[root@vmcentos7 ~]# password aipo
[root@vmcentos7 ~]# su - aipo
[aipo@vmcentos7 ~]$ 

まず、~/.bash_profile に Java6 を使うための設定を行っておきます。

例えば、以下のようにしておきます。

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

export JAVA_HOME=/usr/java/default
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.34.x86_64

PATH=$JAVA_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin:$CAYENNE_HOME/bin

export PATH

変更が終わったら、次のようにして、source で食べて、変更が正しく行われたかを確認します。

[aipo@vmcentos7 ~]$ source .bash_profile
[aipo@vmcentos7 ~]$ java -version
java version "1.6.0_34"
OpenJDK Runtime Environment (IcedTea6 1.13.6) (rhel-1.13.6.1.el7_0-x86_64)
OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)
[aipo@vmcentos7 ~]$ mvn -version
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-15T02:29:23+09:00)
Maven home: /usr/local/maven
Java version: 1.6.0_34, vendor: Sun Microsystems Inc.
Java home: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.34.x86_64/jre
Default locale: ja_JP, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-123.13.2.el7.x86_64", arch: "amd64", family: "unix"
[aipo@vmcentos7 ~]$

次に、リリース一覧から最新のソース4)この記事を書いた時点では 20130613 というタグが付いたアーカイブが最新で、これは Aipo 7.0.2.0 になります。を取得します5)git clone で最新ソースを得てインストールを行う方法については、この記事では対象外です。

[aipo@vmcentos7 ~]$ wget https://github.com/aipocom/aipo/archive/20130613.tar.gz
[aipo@vmcentos7 ~]$ tar zxvf 20130613.tar.gz
[aipo@vmcentos7 ~]$ cd aipo-20130613/oms/src/main/webapp/WEB-INF/datasource
[aipo@vmcentos7 datasource]$ mv dbcp-org001.properties dbcp-org001-posgresql.properties
[aipo@vmcentos7 datasource]$ cp dbcp-org001-mysql.properties dbcp-org001.properties
[aipo@vmcentos7 datasource]$ ls
dbcp-org001-mysql.properties  dbcp-org001-posgresql.properties  dbcp-org001.properties
[aipo@vmcentos7 datasource]$

後から作成する aipo 用のデータベースと、そのデータベースのユーザとパスワードを設定しておきます。

[aipo@vmcentos7 datasource]$ vi dbcp-org001.properties

ファイル中の

cayenne.dbcp.url=jdbc:mysql://localhost:3306/org001?characterEncoding=UTF8
cayenne.dbcp.username=root
cayenne.dbcp.password=

cayenne.dbcp.url=jdbc:mysql://localhost:3306/aipo?characterEncoding=UTF8
cayenne.dbcp.username=aipo
cayenne.dbcp.password=aipo

としておきます6)パスワードなどは、みなさんのお好みで設定してください。

pom.xml を開き、dependencies の中に、MySQL のコネクター用の情報を dependency 要素として追記します。

[aipo@vmcentos7 ~]$ cd ~/aipo-20130613
[aipo@vmcentos7 ~]$ vi pom.xml

次のように追記します(269行あたり):

   <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>5.1.34</version>
    </dependency>
  </dependencies>

修正したら、次のようにしてビルドします。

[aipo@vmcentos7 ~]$ mvn package
(省略)
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:16 min
[INFO] Finished at: 2015-02-01T14:34:45+09:00
[INFO] Final Memory: 40M/96M
[INFO] ------------------------------------------------------------------------
[aipo@vmcentos7 aipo-20130613]$ 

念のために、aipo.war ファイルが作成されているかを確認しておきます。

[aipo@vmcentos7 aipo-20130613]$ ls war/target
aipo  aipo.war  classes  maven-archiver
[aipo@vmcentos7 aipo-20130613]$

● MariaDBのインストール

一旦、aipo アカウントを exit して、root になります。

[aipo@vmcentos7 aipo-20130613]$ exit
ログアウト
[root@vmcentos7 ~]#

rootで、yum を使って MariaDB をインストールします。

[root@vmcentos7 ~]# yum install mariadb-server

MariaDB 内の全ての文字コードを UTF-8 に統一するために次の修正をしておきます。
[root@vmcentos7 ~]# vi /etc/my.cnf.d/server.cnf

# this is only for the mysqld standalone daemon
[mysqld]

の下(13行目)に

character-set-server = utf8

を加えます。

● Aipo 用のデータベースを作成する

MariaDB を起動します。

[root@vmcentos7 ~]# systemctl start mariadb
[root@vmcentos7 ~]#

MariaDB の root アカウントのパスワードを設定しておきます。
※ 以下の記述の中にある の部分が、root のパスワードになりますので、任意に設定してください。

[root@vmcentos7 ~]# mysql -u root
MariaDB > update mysql.user set password=password('<password>') where user = 'root';
MariaDB > flush privileges;
MariaDB > exit;

Aipo 用のデータベースとアカウントを作成します。

[root@vmcentos7 ~]# mysql -u root -p
password: <psssword>
MariaDB > create database aipo;
MariaDB > grant all privileges on aipo.* to aipo@localhost identified by 'aipo';
MariaDB > flush privileges;
MariaDB > exit;

初期のデータベース情報を取込みます。

[root@vmcentos7 ~]# mysql -u aipo --password=aipo aipo < ~aipo/aipo-20130613/sql/mysql/org001.sql
[root@vmcentos7 ~]#

● Apache Tomcatのインストール

yum を使ってインストールします。

[root@vmcentos7 ~]# yum install tomcat tomcat-webapps tomcat-admin-webapps
[root@vmcentos7 ~]# ls /etc/tomcat
Catalina             context.xml         server.xml        web.xml
catalina.policy      log4j.properties    tomcat-users.xml
catalina.properties  logging.properties  tomcat.conf
[root@vmcentos7 ~]#

管理画面などにアクセスできるように、tomcat-users.xml を編集します。

[root@vmcentos7 tomcat]# vi tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<tomcat-users>
 <role rolename="admin"/>
 <role rolename="admin-gui"/>
 <role rolename="admin-script"/>
 <role rolename="manager"/>
 <role rolename="manager-gui"/>
 <role rolename="manager-script"/>
 <role rolename="manager-jmx"/>
 <role rolename="manager-status"/>

 <user username="tomcat" password="1111" roles="tomcat"/>
 <user username="both" password="1111" roles="tomcat,role1"/>
 <user username="role1" password="1111" roles="role1"/>
 <user username="manager" password="1111" roles="manager-gui,manager-status,manager-script,manager-jmx"/>
 <user username="admin" password="1111" roles="admin-gui,admin-script"/>

</tomcat-users>

※ ここでのアカウントやそのパスワードは、適当に設定していますので、必要により適切に設定してください。

Tomcat を起動します。

[root@vmcentos7 ~]# systemctl start tomcat
[root@vmcentos7 ~]# systemctl status tomcat
tomcat.service - Apache Tomcat Web Application Container
   Loaded: loaded (/usr/lib/systemd/system/tomcat.service; disabled)
   Active: active (running) since 日 2015-02-01 15:46:29 JST; 39min ago
  Process: 11602 ExecStop=/usr/sbin/tomcat-sysd stop (code=exited, status=0/SUCCESS)
  Process: 11633 ExecStart=/usr/sbin/tomcat-sysd start (code=exited, status=0/SUCCESS)
 Main PID: 11652 (java)
   CGroup: /system.slice/tomcat.service
           └─11652 java -classpath /usr/share/tomcat/bin/bootstrap.jar:/usr/share/tomcat/bin/tomcat-juli.jar:/usr/share/ja...

Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
[root@vmcentos7 ~]# 

他のマシンからアクセスする場合は、次のようにして、ファイヤーフォールの 8080 ポートに穴をあけるなどしておきます。

[root@vmcentos7 ~]# firewall-cmd --add-port=8080/tcp

ブラウザから Tomcat にアクセスしてみます(ユーザ名 manager、パスワード1111)。
ローカル環境からアクセスする場合は、http://localhost:8080/manager/html になります。

● 管理画面から、aipo.war をデプロイします。

webapps ディレクトリにコピーするだけで、デプロイできますので、ここでは cp コマンドで行います。

[root@vmcentos7 ~]# cp  ~aipo/aipo-20130613/war/target/aipo.war /usr/share/tomcat/webapps
[root@vmcentos7 ~]# ls /usr/share/tomcat/webapps
ROOT  aipo  aipo.war  host-manager  manager  sample
[root@vmcentos7 webapps]#

● 確認

ここまでの作業がうまくできていれば、Aipo7 が起動しているはずですので、Aipo7 が起動し終えるために必要な時間を少しおいて、Aipo7 にブラウザでアクセスしてみます。

ローカル環境からのアクセスは、http://localhost:8080/aipo になります。

ビルドがうまく行っているのに、Aipo7 が正常に起動しない場合は、ほぼデータベースの設定の問題と思われますので、ログを確認し設定を見直してみましょう7)ログは、まず /var/log/tomcat/aipo.log を確認してみましょう

無事、次のようなログイン画面が表示されたなら、ユーザ名admin、パスワードadminを入力することで、ログインできるはずです。

aipo

● あとがき

Aipo7 を使いはじめてちょうど一か月がたちました。大きな不満もなく、我が家では、もう必須のアプリケーションです。スケジュール管理と TODO 管理を中心に使わせて頂いています。

CentOS7 へのインストールはソースからしかできなかったのですが、 CentOS6 へのインストールは、インストーラーを使って簡単にできることも確認しています。Windows へのインストールも可能です。

● お願い
かなり大変な作業ですので、これからインストールしてみようかという方のために、うまくインストールできた方もできなかった方も気軽にコメントを残して頂けると嬉しいです。注意点や気づきなども大変助かります。


Footnotes

Footnotes
1 mvn を実行すると、UnsupportedClassVersionError unsupported major.minor version 51.0 unable to load class という例外が出ます。
2 この Maven のバイナリは、Java6 でも動作します
3 その方がいいかなぁと思ってそうしたという程度の理由です。
4 この記事を書いた時点では 20130613 というタグが付いたアーカイブが最新で、これは Aipo 7.0.2.0 になります。
5 git clone で最新ソースを得てインストールを行う方法については、この記事では対象外です。
6 パスワードなどは、みなさんのお好みで設定してください。
7 ログは、まず /var/log/tomcat/aipo.log を確認してみましょう