LoginSignup
18
18

More than 5 years have passed since last update.

Jetty上にAD連携したgitbucketを構築する

Last updated at Posted at 2014-07-31

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の起動ユーザーです

構築手順

手順は以下の通りです。

  1. Gitbucketのインストール
  2. Jettyのインストール
  3. Jetty上にgitbucketを配備する
  4. 起動ユーザーをjettyで行なう
  5. ActiveDirectory連携

前提条件

  • Jettyユーザーが既に作成されている事
  • Javaの最新バージョンが既にインストールされている事

1. Gitbucketのインストール

  1. 配備用に/opt/gitbucketを作成します。
  2. 公式サイトからgitbucketver2.1をダウンロードします。
  3. 利用するバージョン向けにシンボリックリンクを張ります。
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のインストール

  1. 配備用に/opt/jettyを作成します。.
  2. 公式サイトから任意のバージョンをダウンロードして、展開します。 今回はバージョン9.1.3.v20140225をダウンロードします。
  3. 現在のバージョン用にシンボリックリンクをはります。
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
  1. /etc/default/jettyを作成し、起動時に読み込むJETTY_HOMEの設定を行ないます。 bash # vim /etc/default/jetty JETTY_HOME=/opt/jetty/current
  2. 起動設定ファイルを/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/jettyGITBUCKET_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で行なう

  1. /etc/default/jettyJETTY_USERを追加する

    # vim /etc/default/jetty
    JETTY_USER=jetty
    
  2. 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 mail

この後、ログアウトして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

参考サイト

以上です。

18
18
1

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
18
18