すでに忘れかけているのだけど
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」を選択してダイアログを表示。
表示したダイアログ上から
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サーバーは停止しておきます。
〇 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になっていれば正しく起動できている。
[/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を止めないといけない。そのため、以下の手順を踏む必要がある。
/etc/init.d/Qthttpd stop
/opt/sbin/apachectl -k start