GitBucket 本家https://github.com/takezoe/gitbucket
既にatlassianのSourceTreeをスタンドアローンで使っているのだが、中央たるリポジトリを持つことにした。
正直、愚生はJava/Tomcat関係の経験は皆無。まったくわからない
GitBucketはサーブレット形式でも稼動可能なので、ここではWebコンテナにTomcatを採用して動かしてみた.
webコンテナで動かす場合、GitBucket は「Servlet 3.0」対応が求められる.
「Servlet 3.0」対応な Tomcat はhttp://tomcat.apache.org/whichversion.htmlで確認可能で、どうやら「7.0.x」でいいみたい.
*後方互換性が明確ではないけど、本家は「Tomcat8」「Tomcat9」を明示しているから、これらでも行けるのかも
っでyumでインストール可能なTomcatのバージョンは「7.0.69」なのでyumでインストール.
[root@c ~]# yum install tomcat
次に、/var/lib/tomcat/webappsに本題の GitBucket を入れる
[root@c ~]# cd /var/lib/tomcat/webapps/
[root@c webapps]# wget https://github.com/gitbucket/gitbucket/releases/download/4.14.1/gitbucket.war
[root@c webapps]# ls -lh gitbucket.war
-rw-r--r-- 1 root root 48M 7月 5 00:25 gitbucket.war
[root@c webapps]#
httpとWebコンテナTomcatを連携させたいので、Tomcatの8080は閉じて、AJPでhttpとTomcatを連携させる設定を行う。
[root@c ~]# vi /etc/tomcat/server.xml
(略
<!-- 無効化
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
(略
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <!-- httpとTomcatの連携部分 -->
(略
[root@c ~]#
httpがTomcatと連携するには下記モジュールが必要で、これらはhttpdパッケージに含まれている
次にhttpdの設定
[root@c ~]# vi /etc/httpd/conf.d/gitbucket.conf
<Location /gitbucket/>
ProxyPass ajp://localhost:8009/gitbucket/
Require ip 192.168.0
</Location>
[root@c ~]#
ホストの /gitbucket への要求が来たら、localhostの8009ポートの/gitbucket へ渡す形である。
そしてアクセス制限もここでは設定しています
httpdとtomcatを稼働させる
[root@c ~]# systemctl enable tomcat
[root@c ~]# systemctl restart httpd
[root@c ~]# systemctl restart tomcat
そして、gitbucketにアクセスると、画面が生じる
画面右上の「Sign in」を押下して、
表示された認証画面にて、初期ユーザ「root」、パスワード「root」でログインします。
ログインに成功したら、まずはパスワードを変更しましょう。
右上のマーク(?)をクリックして、ブルダウンから「Acount setting」を選ぶ
すると、プロファイル画面に変更となり、「Password」欄に新規のパスワードを入力して、画面下部の「Save」リンクを押下します。
これでパスワードが変更される。
LDAPサーバから参照可能なようで、ここではsambaからユーザ情報を借用する。
「System Settings」から「Authentication」欄にて LDAP チェックを有効にして、下記の様に有効にします。
項目 | 設定値 | 備考 |
LDAP Host | c.sybyl.local | sambaサイト |
LDAP Port | 389 | samba/LDAP機能のport番号 |
Bind DN | cn=administrator,cn=users,dc=sybyl,dc=local | LDAPに接続するユーザ名 |
Bind Password | Bind DNのパスワード | |
Base DN | dc=sybyl,dc=local | |
User name attribute | cn | |
Additional filter condition | &(objectCategory=Person)(objectClass=user)(|(gidNumber=2000)(gidNumber=2001)) | gidが2000と2001 |
Full name attribute | displayName | |
Mail address attribute |
*注意 この設定内容は ~tomcat/.gitbucket/gitbucket.conf にも記載されるが、Bind Passwordがそのまま書かれる。。。
[root@c ~]# cat ~tomcat/.gitbucket/gitbucket.conf
#Thu Oct 15 11:21:31 JST 2015
gravatar=false
ldap.bind_password=xxxxxxxxxxxxxxxxxxxxxxx
notification=false
ldap.baseDN=dc\=sybyl,dc\=local
is_create_repository_option_public=true
ldap.additional_filter_condition=&(objectCategory\=Person)(objectClass\=user)(|(gidNumber\=2000)(gidNumber\=2001))
ldap_authentication=true
ssh=false
ldap.username_attribute=cn
allow_account_registration=false
ldap.host=c.sybyl.local
ldap.bindDN=cn\=administrator,cn\=users,dc\=sybyl,dc\=local
allow_anonymous_access=true
ldap.mail_attribute=mail
ldap.fullname_attribute=displayName
ldap.port=389
[root@c ~]#
まあtomcatユーザさえ見えるように調整とか必要なのかも。
実際にどのユーザがログイン可能なのかは、ldapsearchを使って確認できます.
ldapsearchに「ldap.additional_filter_condition」の値を組み込んで
[root@c ~]# ldapsearch -h c.sybyl.local -D "CN=administrator,CN=Users,DC=SYBYL,dc=local" \
-b "dc=sybyl,dc=local" \
'(&(objectCategory=Person)(objectClass=user)(|(gidNumber=2000)(gidNumber=2001)))' -W
*「ldap.additional_filter_condition」の値をさらに括弧で括ります。あと"\"を除きます
留意 コマンドラインでfilterの確認ができても、ldap.mail_attributeの「mail」とかSAMBA(ldap)内の該当エントリーが存在しないとログインできないみたい.
WebコンテナにTomcatの代わりにJettyを選んでみたJetty
めもとして
Servlet Spec | JSP | Apache Tomcat | Jetty |
4.0 | 2.4? | 9.0.x | - |
3.1 | 2.3 | 8.5.x, 8.0.x | 9.3、9.2 |
3.0 | 2.2 | 7.0.x | 8 |
2.5 | 2.1 | 6.0.x | 7 |