Jetty上にGitbucketを構築したくなったので、CentOS上に環境構築したメモを残しておきます。
サーバーに関して
対象バージョン
以下のバージョンで環境構築を行ないます。
システム | バージョン |
---|---|
CentOS | 6.4(final) |
Java | 1.7.0_25 |
Jetty | 9.1.3.v20140225 |
Gitbucket | 2.1 |
サーバーのディレクトリ構造
それぞれアプリケーションを以下に配備します。
パス | 概要 |
---|---|
/opt/gitbucket/current | 現在のバージョンのgitbucketを参照するためのシンボリックリンクです。 このディレクトリ上に旧バージョンのgitbucketも配備します。 |
/opt/jetty/current | 現在のバージョンのjettyを参照するためのシンボリックリンクです。このディレクトリ上に旧バージョンのjettyも配備します。 |
/var/gitbucket/data | GITBUCKET_HOMEをここに指定します。 |
/etc/default/jetty | jettyの初期設定ファイルを配備します。 |
/etc/init.d/jetty | jettyの起動スクリプトを配備します。 |
ユーザー
構築はrootで行ないますが、起動はjettyユーザーで行ないます。
ユーザー名 | 概要 |
---|---|
jetty | jettyの起動ユーザーです |
構築手順
手順は以下の通りです。
- Gitbucketのインストール
- Jettyのインストール
- Jetty上にgitbucketを配備する
- 起動ユーザーをjettyで行なう
- ActiveDirectory連携
前提条件
- Jettyユーザーが既に作成されている事
- Javaの最新バージョンが既にインストールされている事
1. Gitbucketのインストール
mkdir /opt/gitbucket
cd /opt/gitbucket
wget https://github.com/takezoe/gitbucket/releases/download/2.1/gitbucket.war
ln -s gitbucket-2.1.war current.war
2. Jettyのインストール
- 配備用に
/opt/jetty
を作成します。. - 公式サイトから任意のバージョンをダウンロードして、展開します。 今回はバージョン9.1.3.v20140225をダウンロードします。
- 現在のバージョン用にシンボリックリンクをはります。
mkdir /opt/jetty
cd /opt/jetty
wget http://eclipse.org/downloads/download.php?file=/jetty/9.1.3.v20140225/dist/jetty-distribution-9.1.3.v20140225.tar.gz&r=1
tar zxf jetty-distribution-9.1.3.v20140225.tar.gz
rm jetty-distribution-9.1.3.v20140225.tar.gz
ln -s jetty-distribution-9.1.3.v20140225.tar.gz current
-
/etc/default/jetty
を作成し、起動時に読み込むJETTY_HOME
の設定を行ないます。bash # vim /etc/default/jetty JETTY_HOME=/opt/jetty/current
- 起動設定ファイルを
/etc/init.d/jetty
にコピーします。cp /opt/jett/current/bin/jetty /etc/init.d/jetty
3. Jetty上にgitbucketを配備する
Jetty上にgitbucketの配備を行ないます。
当初はJETTY_HOME/webapps/
配下に/opt/gitbucket/current.war
のシンボリックリンクを設定しようとしたのですが、
これを行なうとアプリケーション名がhttp://localhost:8080/gitbucket-2.1
になってしまいました。
そこで、JETTY_HOME/webapps/jetty.xml
を設定することで起動を行ないます。
<!-- vim /opt/jetty/current/webapps/gitbucket.xml -->
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/gitbucket</Set>
<Set name="war">/opt/gitbucket/current</Set>
</Configure>
この設定を行なう事で、http://localhost:8080/gitbucket
のURLで起動が可能になります。
また、このままだと起動ユーザーのHOMEディレクトリ直下に.gitbucket
というフォルダが設定されるため、/etc/default/jetty
でGITBUCKET_HOME
の設定を行ないます。
# vim /etc/default/jetty
export GITBUCKET_HOME=/var/gitbucket/data
オマケ: http://localhost:8080/
で起動する
http://localhost:8080/gitbucket
ではなく、http://localhost:8080/
で起動したい場合、
contextPath
の設定を弄ります。
<!-- vim /opt/jetty/current/webapps/gitbucket.xml -->
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<!-- Set name="contextPath">/gitbucket</Set -->
<Set name="contextPath">/</Set>
<Set name="war">/opt/gitbucket/current</Set>
</Configure>
4. 起動ユーザーをjetty
で行なう
-
/etc/default/jetty
にJETTY_USER
を追加する# vim /etc/default/jetty JETTY_USER=jetty
-
jettyユーザーで参照する領域の所有者をjettyにする。
chown jetty:jetty -R /opt/jetty/ chown jetty:jetty -R /opt/gitbucket/ chown jetty:jetty -R /var/gitbucket/jetty
5. ActiveDirectoryに連携する
基本的には『GitBucketのユーザ認証をActiveDirectoryと連携する』に記載されている通りです。
root
でログイン後、System Settings
へ遷移します。
Authentication
セクションのLDAP
を有効にし、以下のように設定します。
BindDNだけ上記サイトと異なります。
フィールド | 設定値 | 備考 |
---|---|---|
LDAP Host | hoge-piyo |
SET LOGONSERVER で確認 |
LDAP Port | 389 | |
Bind DN | xxxx@hoge.local | xxxxは任意のユーザー名。末尾をlocal にすること |
Bind Password | ******* | 任意のユーザーのパスワード |
Base DN | dc=hoge,dc=local | |
User name attribute | sAMAccountName | |
Full name attribute | displayName | |
Mail address attribute |
この後、ログアウトしてADのアカウントでログイン出来ればOKです。
なお、初めてログインしたユーザーアカウントはAdministrator権限を持っていないので、必要に応じてrootで再ログインを付与してください。
おまけ:Dockerfile
~Dockerfile作る!~
=> という訳で作りました。
FROM centos:centos6
# 依存ライブラリインストール
RUN yum install -y which
RUN yum install -y java7
RUN yum install -y wget
RUN yum install -y tar
# jettyの起動用ユーザーを作成
RUN useradd -s /sbin/nologin jetty
# 配備ディレクトリ構築
RUN mkdir -p /opt/jetty /opt/gitbucket /var/gitbucket/data
# Jettyのインストール
ENV JETTY_VERSION 9.2.1.v20140609
WORKDIR /opt/jetty/
RUN wget http://download.eclipse.org/jetty/$JETTY_VERSION/dist/jetty-distribution-$JETTY_VERSION.tar.gz
RUN tar xfz jetty-distribution-$JETTY_VERSION.tar.gz
RUN ln -s jetty-distribution-$JETTY_VERSION current
# Gitbucketのダウンロード
WORKDIR /opt/gitbucket
RUN wget https://github.com/takezoe/gitbucket/releases/download/2.1/gitbucket.war
RUN ln -s gitbucket.war current
# Jettyの初期設定
WORKDIR /opt/jetty/current
RUN cp bin/jetty.sh /etc/init.d/jetty
RUN echo JETTY_HOME=/opt/jetty/current > /etc/default/jetty
RUN echo "export GITBUCKET_HOME=/var/gitbucket/data" >> /etc/default/jetty
RUN echo JETTY_USER=jetty >> /etc/default/jetty
RUN echo JETTY_SHELL=/bin/bash >> /etc/default/jetty
# Jetty上で動かすためのgitbucketの設定
RUN cp demo-base/webapps/test.xml webapps/gitbucket.xml
RUN sed -i -e "s|<Set name=\"contextPath\">/test</Set>|<Set name=\"contextPath\">/</Set>|g" webapps/gitbucket.xml
RUN sed -i -e "s|<Property name=\"jetty.webapps\" default=\".\"/>/test.war|/opt/gitbucket/current|g" webapps/gitbucket.xml
RUN sed -i -e "23,110d" webapps/gitbucket.xml
RUN chown jetty:jetty -R /opt/jetty/ /opt/gitbucket/ /var/gitbucket/data/
# Port Exporse
EXPOSE 8080
# Startup Jetty
CMD ["/etc/init.d/jetty", "start"]
# ENTRYPOINT /etc/init.d/jetty start && tail -f /opt/jetty/current/logs/*.stderrout.log
参考サイト
- Jettyのインストール(EC2 ver9.1)
- GitBucketのユーザ認証をActiveDirectoryと連携する
- SCM-Managerの認証をActiveDirectoryで行う
- Configuring a Specific Web Application Deployment
以上です。