技術ネタはQiitaに移りました。壁もどこぞに。

TeamCity JavaEE:war 版のインストール

仕事で CI ツールの選定をしていたところ、 TeamCity が非常によく出来ていて気に入ったので、 プライベートでも立ててみた。

仕事先で入れた時には Linux 版(tar.gz を展開して、sh で起動)を 使用していたため、 とくに引っかかるところもなく、 簡単に立てられたのだが、 あまりポート使いまくるのもなーとか、 あんまりいろんな環境が増えるのもなーと思い、 今回は既にセットアップ済みの Tomcat 上にデプロイできるように、 Java EE 版(war)で構築してみようと思った。

ところが、URL にアクセスしてみると、以下のようなエラーが…。

TeamCity has failed to start
Unable to initialize logs. The logs directories are not accessible for writing.
TeamCity server process does not have enough permissions to write into the log files under the directory:
/usr/share/logs
Please fix permissions and restart TeamCity. You can read more about TeamCity logs in documentation.
TeamCity 9.0.1 (build 32116)

f:id:Yoichi-KIKUCHI:20150111173955p:plain

対処方法が分かってしまえば簡単なのだが、 TeamCity は非常にわかりやすい反面、資料や情報の豊富さでいえば、 やはり Jenkins に負けるので調べるのに少々手間取った。

以下、Java EE 版(war)のセットアップ手順。 なお、デプロイ先の環境(Tomcat など)はすでに構築済みであるものとする。

TeamCity の入手と配置

JetBrains の公式から、URL を調べて wget などで。 500M ちょっとあるので、少し時間がかかる。 ダウンロードできたら、webapps にデプロイする。

$ wget http://download.jetbrains.com/teamcity/TeamCity-9.0.1.war

$ sudo mv TeamCity-9.0.1.war /var/lib/tomcat/webapps/TeamCity.war

ログ出力先の設定

ここで、JVM Option で TeamCity のログ出力先を設定してやる必要がある。 これをやっておかないと、先に紹介したようなエラー画面が表示されてしまう。 デフォルトだと、tomcat ユーザーでは書き込めないようなディレクトリが指定されてしっているようす。

JVM Option に与える設定値は、以下のとおり。
-Dteamcity_logs={tomcat ユーザーの書き込み可能なログディレクトリ}

今回は、yum でインストールした tomcat に設定するため、以下にあるように、/usr/share/tomcat/conf/tomcat.conf を編集する。
yum でインストールした Tomcat に JVM オプションを設定 - 作業ノート

sudo vi /usr/share/tomcat/conf/tomcat.conf

...

# System-wide configuration file for tomcat services
# This will be sourced by tomcat and any secondary service
# Values will be overridden by service-specific configuration
# files in /etc/sysconfig
#
# Use this one to change default values for all services
# Change the service specific ones to affect only one service
# (see, for instance, /etc/sysconfig/tomcat)
#

# Where your java installation lives
JAVA_HOME="/usr/lib/jvm/jre"

# Where your tomcat installation lives
CATALINA_BASE="/usr/share/tomcat"
CATALINA_HOME="/usr/share/tomcat"
JASPER_HOME="/usr/share/tomcat"
CATALINA_TMPDIR="/var/cache/tomcat/temp"

# You can pass some parameters to java here if you wish to
#JAVA_OPTS="-Xminf0.1 -Xmaxf0.3"

# Use JAVA_OPTS to set java.library.path for libtcnative.so
#JAVA_OPTS="-Djava.library.path=/usr/lib64"

# What user should run tomcat
TOMCAT_USER="tomcat"

# You can change your tomcat locale here
#LANG="en_US"

# Run tomcat under the Java Security Manager
SECURITY_MANAGER="false"

# Time to wait in seconds, before killing process
SHUTDOWN_WAIT="30"

# Whether to annoy the user with "attempting to shut down" messages or not
SHUTDOWN_VERBOSE="false"

# Set the TOMCAT_PID location

CATALINA_PID="/var/run/tomcat.pid"

# Connector port is 8080 for this tomcat instance
#CONNECTOR_PORT="8080"

# If you wish to further customize your tomcat environment,
# put your own definitions here
# (i.e. LD_LIBRARY_PATH for some jdbc drivers)

##
## JVM Options
##
CATALINA_OPTS="-Dteamcity_logs=/var/log/tomcat/"

tomcat の起動

最後に、tomcat を起動、または再起動して画面を確認する。

$ sudo systemctl start tomcat

f:id:Yoichi-KIKUCHI:20150111174114p:plain