LoginSignup
8
7

More than 1 year has passed since last update.

QNAP上でリバースプロキシ経由でGitbucketを使う

Last updated at Posted at 2015-07-20

すでに忘れかけているのだけど

QNAP内でTomcatを動かしてGitBucketを立てて、apacheのリバースプロキシを利用して80ポートからアクセスしましょう、というお話。

ステップとしては、
1. GitBucketのインストール
2. apacheのインストール
3. リバースプロキシの設定

の、通常のWebサーバーと同じです。

1. GitBucketのインストール

GitBucketは、Tomcat等のサーブレット環境(実はよくわかってない)で該当するディレクトリにwarファイルを置いておけばOKらしいので、QNAP上では単純にTomcatを動かせばいいんだろうな。
ということで、AppCenterからTomcatとJRE_ARMをインストールします。

  • GitBucket.warを配置
cd /share/MD0_DATA/.qpkg/Tomcat/tomcat/webapps
wget https://github.com/takezoe/gitbucket/releases/download/3.4/gitbucket.war

これでhttp://<ホスト名>:7080/gitbucketにアクセスして、GitBucketのトップページが表示されればOK

2. apacheのインストール

QNAPには標準でWebサーバー機能が付いているわけですが、これがかなり曲者で

  • QNAP再起動すると設定が初期化
  • httpdを再起動すると初期化

なんてことを繰り返します。
色々試行錯誤してる人はいますが、自分の環境ではまったくもってうまくいかない。
そこで、アプローチを少し変更してOptwareのパッケージにapacheないかなー。
と、探したのがことの発端。

ipkg list apache
apache - 2.2.20-1 - The most popular web server on the internet
Successfully terminated.

といった感じで、apacheがあるのを確認できたので

ipkg install apache

で、すんなりインストール完了。

Optwareでインストールされたapacheは
/opt/etc/apache2ディレクトリの中に、諸々の設定ファイルが入っている。

apacheを起動させる場合は
/opt/sbin/apachectl -k start
とする。

起動時にいくつかエラーメッセージが出る場合は、httpd.confの設定を書き換える。

今回、出たエラーは確か二つ

  • 起動USERがない
  • ServerNameが設定されていない

の二つだった気がする

USERを作成する

USERがないと言われた場合は起動ユーザーを作成する。
httpd.confの「USER」にはデフォルトでnobodyが指定されているので、nobodyユーザーを作成するか
他に既にユーザーが作成されていて、そのユーザーを兼務させる場合はnobodyを書き換えればいい。

〇 nobodyユーザーを作成

ユーザーの作成はQTSの中から作成する。useraddコマンドで作成することも可能かと思いますが、自分は試していないので今回は割愛。
作成はコントロールパネルの「Privilege Settings」→「Users」から「Create a User」を選択してダイアログを表示。
user_create.jpg

表示したダイアログ上から

UserName nobody
password <任意>
User Group administrators,everyones

といった感じで、nobodyユーザを作成する。

ServerNameを設定

〇ポートの指定

Optwareのapacheは、デフォルトで8000ポートでリクエストを受け付けるようになっているみたいです。
これを80ポートに変更する場合は、httpd.confのLISTENパラメータ(41行目付近)を変更する必要があります。

変更前 変更後
LISTEN 8000 LISTEN 80

ただし、デフォルトでは80ポートはQNAPのWebサーバーが利用しているので、衝突するためQNAP側のWebサーバーは停止しておきます。
web.jpg

〇 ServerNameの設定

httpd.confの該当する箇所(163行目付近)にServerNameがコメントアウトされているので、ここを対象とするServerNameに変更した上で、コメント文字を削除する。

myqnapcloudを使っている人であれば
ServerName <myQNAPcloud Device Name>.myqnapcloud.com:80
と、なります。
<myQNAPcloud Device Name>の部分は、各自が設定している値を入力すればいいです。
~~:80のポート指定部分は、〇ポートの指定でLISTENに与えているポート番号を指定します。

この状態で
lsof -i:80で、ちゃんとhttpdの設定どおりにwww(80)がLISTENになっていれば正しく起動できている。

lsof_Sample
[/opt/sbin] # lsof -i:80
COMMAND  PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
httpd    554 ******    3u  IPv6 7851114      0t0  TCP *:www (LISTEN)
httpd   2607 ******    3u  IPv6 7851114      0t0  TCP *:www (LISTEN)

※USERのところはhttpdを立ち上げたUSER名が出てればOK

3. リバースプロキシの設定

http://<ホスト名>:80/gitbucketで来たリクエストを、http://<ホスト名>:7080/gitbucketへ転送するようにする。
apacheとtomcatは同じQNAP内で動いているので

リバプロ
ProxyPass /gitbucket http://127.0.0.1:7080/gitbucket
ProxyPassReverse /gitbucket http://127.0.0.1:7080/gitbucket

として/etc/sbin/apachectl -k restartでapacheを再起動する。

以上

補足

特に何もしなければシステム再起動時にipkg-apacheは起動しない。
さらに、80番ポートはQthttpdが占有するので、ipkg-apacheを動かすにはQthttpdを止めないといけない。そのため、以下の手順を踏む必要がある。

ipkg-apache起動
/etc/init.d/Qthttpd stop
/opt/sbin/apachectl -k start
8
7
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
8
7