ここではデモサイトの構成時を例に、公式パッケージでJava SE 8が提供されているCentOS 7 (1503)に更新配布サーバを構成するサンプルを提示します。
また、配布する更新データはWebDavでアップロードするものとし、BASIC認証とWebDavサーバを提供するApache Web Serverの構成も併せて行います。
SELinuxを有効にする場合は下記のパッケージをインストールしておいてください。
# yum install policycoreutils-python
Java SE 8(SDK)をインストールします。
公式パッケージのTomcatを使用する場合は依存関係の都合でopenjdk-1.7.0-openjdk-develのインストールも必要になります。
alternatives
の設定ではjava-1.8.0
を選択します。
$ sudo yum install java-1.7.0-openjdk-devel $ sudo yum install java-1.8.0-openjdk-devel $ sudo alternatives --config jre_openjdk $ sudo alternatives --config java $ sudo alternatives --config java_sdk_openjdk $ sudo alternatives --config javac
続いてTomcatをインストールします。
ここで必要に応じてtcp:8080
ポート(BASIC認証なし)のファイアウォール設定(ローカルネットワークからのアクセス許可等)を行ってください。
$ sudo yum install tomcat $ sudo systemctl enable tomcat $ sudo systemctl start tomcat
Apache Web Serverをインストールします。
下記の例ではtcp:80
ポートを許可していますが、実運用環境ではSSL証明書の設定や80
ポートの代わりにtcp:443
ポートの許可が必要です。
$ sudo yum install httpd $ sudo systemctl enable httpd $ sudo systemctl start httpd $ sudo firewall-cmd --add-service=http --permanent $ sudo firewall-cmd --reload
Basic認証用のパスワードファイルを用意します。
$ sudo htpasswd -c /etc/httpd/conf.d/tomcat.distant.htpasswd guest
WebDav用の公開ディレクトリを用意し、権限の設定を行います。
$ sudo mkdir -p /var/www/demo/webdav $ sudo chown apache:apache /var/www/demo/webdav
SELinuxを有効にする場合はWebDav用ディレクトリへの書込み等を許可しておきます。
$ sudo semanage fcontext -a -t public_content_rw_t '/var/www/demo/webdav(/.*)?' $ sudo restorecon -R -v /var/www/demo $ sudo setsebool -P allow_httpd_anon_write on
Apache Web ServerにVirtualHostの設定を行います。
$ sudo vi /etc/httpd/conf.d/tomcat.conf
デモサイトなので特定のユーザ以外には更新できないように設定(<LimitExcept>
)を追加しています。
<VirtualHost *:80> ServerName distant.pkgs.at ProxyRequests Off ProxyPass / ajp://localhost:8009/ ProxyPassReverse / ajp://localhost:8009/ <IfModule mod_dav.c> DavLockDB "/tmp/DavLock" </IfModule> <Location /demo> AuthType Basic AuthName "Dist'ant Demo Site" AuthUserFile /etc/httpd/conf.d/tomcat.distant.htpasswd Require valid-user </Location> <IfModule mod_dav.c> Alias /demo/webdav "/var/www/demo/webdav" <Location /demo/webdav> ProxyPass ! DAV On AllowOverride None Options None <LimitExcept GET HEAD OPTIONS PROPFIND> Require user ******** </LimitExcept> </Location> </IfModule> </VirtualHost>
VirtualHostの設定を行ったのでApache Web Serverをリスタートします。
$ sudo systemctl restart httpd
以上で更新配布サーバの基本構成が完了しました。
更新データディレクトリを作成し、権限を設定します。
$ sudo mkdir -p /var/local/distant/demo $ sudo chown tomcat:tomcat /var/local/distant/demo
設定ファイルのルートディレクトリを作成し管理者(例ではsysadm
)を所有者にしておきます(任意)。
$ sudo mkdir /usr/local/etc/distant $ sudo chown sysadm:sysadm /usr/local/etc/distant
ビルドファイル(build.xml
)の配置先を用意し、ビルドファイルを配置します。
ファイル名はプロジェクト名.xml
にします。
$ mkdir /usr/local/etc/distant/demo.d $ vi /usr/local/etc/distant/demo.d/webapp.xml
下記はデモサイトのwebapp
プロジェクトの例です。
<?xml version="1.0" encoding="UTF-8"?> <project default="build"> <target name="build"> <echo>sleep 8 seconds</echo> <sleep seconds="8"/> <echo>done</echo> </target> <target name="ok-test"> <echo>it will be succeed</echo> </target> <target name="ng-test"> <echo>it will be aborted</echo> <fail /> </target> </project>
dist'ant設定ファイルを設置します。
$ vi /usr/local/etc/distant/demo.xml
下記はデモサイトの例です。
詳細は設定をご覧ください。
<?xml version="1.0" encoding="UTF-8"?> <Site build="./demo.d" data="/var/local/distant/demo" resource="/var/www/demo/webdav"> <Cluster name="prod.web"> <Server name="web0" /> <Server name="web1" /> </Cluster> <Cluster name="test.web"> <Server name="webx" /> <Server name="weby" /> </Cluster> <Project name="webapp"> <Region name="test"> <Server cluster="test.web" /> </Region> <Region name="prod"> <Server cluster="prod.web" /> </Region> </Project> <Project name="batch"> <Region name="test"> <Server name="jobx" /> </Region> <Region name="prod"> <Server name="job0" /> </Region> </Project> <Mail hostname="smtp.gmail.com" port="465" secure="true" username="********@gmail.com" password="********"> <From address="********@gmail.com" /> <ReplyTo address="********@architector.jp" /> <To address="********@architector.jp" /> </Mail> </Site>
続いてTomcatの起動オプションにdist'antが読込む設定ファイルのパスを設定します。
$ sudo vi /etc/sysconfig/tomcat
-Dat.pkgs.distant.site:コンテキストパス=設定ファイルパス
の書式になります。
-Dat.pkgs.distant.site:=
はルートコンテキスト(/)、-Dat.pkgs.distant.site=
はデフォルト値になります。
他のCATALINA_OPTS
を渡す場合や複数設定する場合(空白区切り)は、行末に\
を使用して行を継続できます。
CATALINA_OPTS= \ -Dat.pkgs.distant.site:/demo=/usr/local/etc/distant/demo.xml
上記の設定を反映するためにTomcatをリスタートします。
$ sudo systemctl restart tomcat
最後に更新配布サーバのバイナリのダウンロードしwebappsディレクトリへ配備します。
$ sudo mkdir /usr/local/share/java $ (cd /usr/local/share/java && \ sudo curl -L -O http://distant.pkgs.at/download/at.pkgs.distant.site.war) $ sudo ln -s /usr/local/share/java/at.pkgs.distant.site.war \ /var/lib/tomcat/webapps/demo.war
以上で更新配布サーバへのインストールが完了しました。
ここではJava SE 6以降のJava実行環境(JRE)が構成済みという前提です。
サービス起動にはsystemdを利用します。
まず、適切なディレクトリに更新配布サーバからデプロイ実行バイナリをダウンロードします。
以降のhttp://localhost:8080/demo/
(更新配布サーバのURL)は環境に合わせて読み替えてください。
$ sudo mkdir /usr/local/share/java $ (cd /usr/local/share/java && \ sudo curl -L -O http://localhost:8080/demo/control/bundled/at.pkgs.distant.jar)
デプロイユーザとデプロイ実行バイナリのサービス設定を行います。
下記の例ではデプロイ実行用ユーザdistant
、サーバ名web0
としています。
生成される設定ファイルのサンプルはこちらです。
$ sudo adduser --create-home distant $ sudo su - distant $ mkdir ~/web0 $ exit $ (cd /etc/systemd/system/ && \ sudo curl -L -O \ http://localhost:8080/demo/control/configure/systemd/distant-web0.service) $ sudo systemctl enable distant-web0 $ sudo systemctl start distant-web0
以上でデプロイ対象サーバへのインストールが完了しました。
ここではJava SE 6以降のJava実行環境(JRE)が構成済みという前提です。
サービス起動にはupstartを利用します。
まず、適切なディレクトリに更新配布サーバからデプロイ実行バイナリをダウンロードします。
以降のhttp://localhost:8080/demo/
(更新配布サーバのURL)は環境に合わせて読み替えてください。
$ sudo mkdir /usr/local/share/java $ (cd /usr/local/share/java && \ sudo curl -L -O http://localhost:8080/demo/control/bundled/at.pkgs.distant.jar)
デプロイユーザとデプロイ実行バイナリのサービス設定を行います。
下記の例ではデプロイ実行用ユーザdistant
、サーバ名web0
としています。
生成される設定ファイルのサンプルはこちらです。
$ sudo adduser --create-home distant $ sudo su - distant $ mkdir ~/web0 $ exit $ (cd /etc/init/ && \ sudo curl -L -O \ http://localhost:8080/demo/control/configure/upstart/distant-web0.conf) $ sudo initctl start distant-web0
以上でデプロイ対象サーバへのインストールが完了しました。
ここではJava SE 6以降のJava実行環境(JRE)が構成済みという前提です。
まず、適切なディレクトリに更新配布サーバからデプロイ実行バイナリをダウンロードします。
以降のhttp://localhost:8080/demo/
(更新配布サーバのURL)は環境に合わせて読み替えてください。
$ sudo mkdir /usr/local/share/java $ (cd /usr/local/share/java && \ sudo curl -L -O http://localhost:8080/demo/control/bundled/at.pkgs.distant.jar)
デプロイ実行バイナリは、ビルドが終了するとリソースを開放する目的でプロセスが終了するため、終了ステータスが0
であれば再起動するようにスクリプト側でループ処理が必要です。
ただし、Java SE 7以降であれば--daemonize
オプションを使用することでデーモン化できます。
$ java -jar /usr/local/share/java/at.pkgs.distant.jar Usage: java -jar at.pkgs.distant.jar [OPTION...] CONTROL_URL SERVER Options --daemonize デーモンモードで起動(ワーカを起動し自動再起動する) Java SE 7以降で利用可能 --directory=DIRECTORY ワーキングディレクトリを指定 --group=GID_OR_GROUP_NAME プロセスの実行グループを指定 --user=UID_OR_USER_NAME プロセスの実行ユーザを指定 --pidfile=FILE 指定されたファイルにプロセスIDを書込む
上記のいくつかのオプションは一部環境(Windowsなど)では動作しません。
いくつかのシステムでは下記のように利用できるrcスクリプトが使用できるかもしれません。
生成されるスクリプトのサンプルはこちらです。
$ sudo adduser --create-home distant $ sudo su - distant $ mkdir ~/web0 $ exit $ (cd /etc/rc.d/init.d/ && \ sudo curl -L -O \ http://localhost:8080/demo/control/configure/rcscript/distant-web0.conf)
こちらを利用する場合はシステムに応じたスクリプトの書き換えや配置、パーミッションの設定などを行います。