Plesk + Docker で Subversion の外部公開をやってみて、運用からしばらくたったので、忘れないうちに記事化。
Docker
Docker って最近聞きはするけど何なのか全く理解できてなかった。
要するに仮想環境なんだけど、VM のようにゲスト OS やライブラリを全て個別に持つのではなく、
ホスト OS やリソースを共有をするので、VM よりも軽量で効率的なものらしい。
コンテナ
Docker では、ひとまとめになったパッケージをコンテナという。
Docker Hub (https://hub.docker.com/) では、有志が作ったコンテナが大量に置かれており、
公開扱いになっているものは、ここから自由に選択して導入することができる。
必要なライブラリなどがひとまとめに、かつ、セットアップされた状態でコンテナ化されている。
なので、よく linux 系でありがちな、足りないパッケージをインストールしたり、設定ファイルの編集したり、バージョン違いでうまくいかなくて悩んだり・・・。
そういった面倒なことをせずにサービスを立ち上げることができる。
Plesk 環境での Docker
Plesk 環境だと、サーバー管理画面から Docker の起動やオプション設定ができる。
コマンドを入力せずにサービス立ち上げまで問題なくできてしまう。
いいのか?こんな楽して・・・と思うぐらい呆気ないほど簡単。
Subversion のいい感じの Docker コンテナを探しインストール
Plesk の Docker を選択する。
検索テキストボックスから直接 Docker Hub の検索ができる。
今回は、CollabNet Subversion Edge のコンテナを選択した。
使用するポート番号がしっかり記載されており助かる。
実行を押すと、ダウンロードが始まる。
ダウンロード終了後、設定画面になる。
今回ダウンロードしたコンテナは、
3343 – HTTP CSVN Admin Sites
4434 – HTTPS CSVN Admin Sites (If SSL is enabled)
18080 – Apache Http SVN
とあるので、外部公開する場合は、これらのポートをマッピングする必要がある。
自動マッピングのチェックを外して、自分で設定したいポートに振り返る。
ボリュームマッピングに関しては、自分の好きなところに設定すればいいと思う。
plesk の場合は、ファイルマネージャーで管理しているディレクトリを指定しておいたほうが後々便利かもしれない。
その場合は一度コンソールからパスを確認しておき、そのパスを割り当てる。
plesk のファイルマネージャーで管理されているディレクトリパスは、
var/www/vhosts/(ホスト名)
って感じだったので、その下に csvn と名前の付いたディレクトリを作り、その下にマッピングすることにする。
環境変数は特にいじらず、デフォルトのままで問題ない。
設定が終わったら、OK を押すと、このようにコンテナが起動する。
Plesk (nginx) の Docker プロキシルールを設定する
外部に指定したポートを公開するには、 nginx 側での設定が必要になる。
「ウェブサイトとドメイン」→「Docker プロキシルール」を選択する。
「ルールを追加」で、コンテナと設定したポートを選択。
追加すると、以下のようにリスト表示される。
http://(ホスト名):(3343のターゲットポート)
もしくは、https に対応している場合は
https://(ホスト名):(4434のターゲットポート)
でアクセス。
以下のように、CollabNet Subversion Edge のログイン画面になれば成功。
CollabNet Subversion Edge の設定
起動初期状態で、ユーザ名、パスワードともに admin になっているので、ログインしたらまずパスワードを変更する。
サーバー設定。特に難しいことはない。
ただし、注意として、ポート番号とリポジトリディレクトリ・バックアップディレクトリは、Docker 側と一体になっているので、いじらないほうがいい。
Subversion を起動。
こうなっていれば OK
そこに書かれているように、svn のリポジトリ URL、web 上での閲覧サービスの URL が表示される。
svn のリポジトリ追加
こんな感じで、web 上だけで管理が可能。
また、ユーザー管理に関しても web 上だけで操作できるため、まずコマンドを触ることなく管理ができて楽ちん。
バックアップ
CollabNet Subversion Edge では、定期バックアップ機能があるので、それを使ってバックアップ可能。
が、今すぐバックアップを取る機能はないので、そういう場合はコマンドから手動で。
vnadmin dump リポジトリパス > ダンプファイル名
コメント