CentOS7にGitbucketをインストール

結構いろいろ悩んだのでメモとして。

<対象バージョン>
CentOS:7
Apache httpd:2.4.6
Java:OpenJDK 1.8
GitBucket:4.1

<手順>
毎回sudo打ちたくないので、suでrootで実行。
※自ホストを「server1.local」にしてますが、実際に作成したホスト名に変えてくださいね。

○アプリのインストール
# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
# yum -y install tomcat
# yum -y install httpd
# cd /var/lib/tomcat/webapps
# wget https://github.com/takezoe/gitbucket/releases/download/4.1/gitbucket.war

○サービス化/起動
# systemctl enable httpd
# systemctl start httpd
# systemctl enable tomcat
# systemctl start tomcat
ここまでで、自ホスト内で「http://server1.local:8080/gitbucket」でアクセスできるが、他ホストからは接続できない。

○ポート変更
「http://server1.local/gitbucket」でアクセスできるように変更します。
# vi /etc/tomcat/server.xml
・ServerNameを自ホストに変更します。
 ServerName server1.local:80
・httpdの8080ポートを閉じます。
 以下の部分を「<!– –>」でコメントアウト。
 <Connector port="8080" protocol="HTTP/1.1"
            connectionTimeout="20000"
            redirectPort="8443" />

#vi /etc/httpd/conf.d/gitbucket.conf
・AJPを使ったProxyPassを設定します。
 ProxyPass /gitbucket ajp://server1.local:8009/gitbucket

# systemctl restart httpd
ここまでで、自ホスト内で「http://server1.local/gitbucket」でアクセスできるが、他ホストからは接続できない。

○Firewallの設定変更
他ホストから接続できるようにhttpポートを通すようにします。
# firewall-cmd –add-service=http –permanent
# firewall-cmd –reload
ここまで変更すると、他ホストからも「http://server1.local/gitbucket」でアクセス可能。

<補足>
○デフォルトでAJPのConnectorは有効になっています。
 (<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />)
○ネットで検索すると、「LoadModule proxy_module modules/mod_proxy.so」とかをhttpd.confに追加する手順がよく出てくるのですが、デフォルトだとhttpd.confに「Include conf.modules.d/*.conf」があって、「conf.modules.d/00-proxy.conf」に「LoadModule proxy_module modules/mod_proxy.so」「LoadModule proxy_ajp_module modules/mod_proxy_ajp.so」があるので追加しなくても大丈夫。
○ProxyPassの設定で、VirtualHostディレクティブを使うパターンとLocationディレクティブを使うパターンがよく出てくるのですが、バーチャルホストしないのであればVirtualHostは指定したくないですし、Locationディレクティブは公式ドキュメントを見ると「<Location>ディレクティブは ファイルシステム外のコンテンツにディレクティブを適用するときに 使用してください。」とあるのでこれも指定したくないということで、今回は両方とも使わず、直接ProxyPassディレクティブを使ってます。

カテゴリーOSS

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください