本家 http://www.eclipse.org/jetty/

Java Servletコンテナ
Tomcatでもいいのだが、小さくて分かり易いのでこちらを利用している。
yumでインストール可能なjettyはバージョンが 9.0.x である。これでも十分なのだが、手動で 9.3.xをインストールしてみた。
っというよりyumで何をinstallしたらいいのかさっぱり分からなかったので手動で構築した...

Java

http://www.eclipse.org/jetty/documentation/current/what-jetty-version.htmlから、Jetty 9.3 はJava8が必要みたい。現状インストールされているのは

[root@git ~]# java -version
java version "1.7.0_85"
OpenJDK Runtime Environment (rhel-2.6.1.2.el7_1-x86_64 u85-b01)
OpenJDK 64-Bit Server VM (build 24.85-b03, mixed mode)
[root@git ~]#

*alternativesコマンドからも確認します
とjava7を使っている。java8のjdkが欲しいので

[root@git ~]# yum install java-1.8.0-openjdk-devel

としてパッケージをインストール後、alternativesでパスを再定義する

[root@git ~]# alternatives --config java
 
2 プログラムがあり 'java' を提供します。
 
  選択       コマンド
-----------------------------------------------
 + 1           /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.85-2.6.1.2.el7_1.x86_64/jre/bin/java
*  2           /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.77-0.b03.el7_2.x86_64/jre/bin/java
 
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2   <---- '2'と入力
[root@git ~]#

これでpathが修正されjava8が利用可能なる

[root@git ~]# java -version
openjdk version "1.8.0_77"
OpenJDK Runtime Environment (build 1.8.0_77-b03)
OpenJDK 64-Bit Server VM (build 25.77-b03, mixed mode)
[root@git ~]#

導入

hhttps://www.eclipse.org/jetty/download.htmlより.tgzリンクを押下
入手したファイル(jetty-distribution-9.4.6.v20170531.tar.gz)を/opt/srcに配置

[root@git ~]# cd /opt/src/
[root@git src]# ls -lh
合計 17M
-rw-r--r-- 1 root root 17M  8月 29 05:45 jetty-distribution-9.4.6.v20170531.tar.gz
[root@git src]#

簡単な動作テストを行いたいのなら、その場で展開して、javaコンテナで付属の demo-base をデプロイする.

[root@git src]# gzip -cd jetty-distribution-9.4.6.v20170531.tar.gz | tar xf -
[root@git src]# cd jetty-distribution-9.4.6.v20170531/demo-base/
[root@git demo-base]#
[root@git demo-base]# java -jar ../start.jar

ブラウザを起動して、展開したサーバの8080を叩くと下記画面が現れる.
2017y08m29d_055327568.png
確認したら、Ctrl-Cで停止
*javaとjettyの組み合わせで稼動できるかのテストかな

jettyの稼動ユーザを作成

jettyをrootで稼動させず、特定のユーザで稼動させる。 セキュアのためかな
apache httpdの「apache」みたいなものと思えばいいかも.

[root@git ~]# useradd -r -s /bin/false -d /opt/jetty -m jetty             # /opt/jettyを作ります
[root@git ~]# id jetty
uid=996(jetty) gid=994(jetty) groups=994(jetty)
 
[root@git ~]#

jettyのホームディレクトリに jetty プログラムを配置します

[root@git ~]# cd /opt/jetty
[root@git jetty]# gzip -cd ../src/jetty-distribution-9.4.6.v20170531.tar.gz | tar xf -
[root@git jetty]# ln -s jetty-distribution-9.4.6.v20170531 curt
 
[root@git jetty]# chown -R jetty:jetty ./curt ./jetty-distribution-9.4.6.v20170531
 
[root@git ~]# ls -ld /opt/jetty/*
lrwxrwxrwx  1 jetty jetty  34  8月 29 09:00 /opt/jetty/curt -> jetty-distribution-9.4.6.v20170531
drwxr-xr-x 10 jetty jetty 239  6月  1 08:50 /opt/jetty/jetty-distribution-9.4.6.v20170531
[root@git ~]#

起動スクリプト

jettyには起動スクリプトは「/opt/jetty/bin/jetty.sh」が用意されている。
中身はinit.d系のbashスクリプト.

systemctl系に書き直すのが面倒なので、このままinit.d系の「jetty.sh」採用.
リンクを使って、「/etc/init.d/jetty」に配置する.

[root@git ~]# ln -s /opt/jetty/curt/bin/jetty.sh /etc/init.d/jetty
[root@git ~]# chkconfig --add jetty
 
[root@git ~]# chkconfig --list jetty
(略)
jetty           0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@git ~]#

chkconfigコマンドで、スクリプトを有効にさせ、再起動時にも稼動対象にさせます.

設定ファイル

jettyの稼動に必要な設定を行う。
というか、「/etc/init.d/jetty」が起動の際に読み込まれる設定ファイルを作る.
中身的には /etc/sysconfig/ で用意される様なファイルで、
項目 JAVA、JAVA_OPTIONS、JETTY_HOME、JETTY_ARGS、JETTY_USERなどなどが定義対象. 詳しくは「/etc/init.d/jetty参照.

この設定ファイルの名称は、起動スクリプト名に依存しています.
jetty.sh」なら「/etc/default/jetty
gitbucket.sh」なら「/etc/default/gitbucket
で定義される. JETTY_ARGSで使用portを定義できるから複数作成も可能みたい.
一応、他にも参照箇所が定義されているが、上記「/etc/default/jetty」だけで十分かと

ここではまず下記のようにした。

[root@git ~]# vi /etc/default/jetty
JETTY_HOME=/opt/jetty/curt
JETTY_USER=jetty
JETTY_ARGS=jetty.http.port=8080
JETTY_RUN=/opt/jetty/logs
JETTY_SHELL=/bin/bash
 
JETTY_BASE=/opt/jetty/curt/demo-base                     # javaコンテナ で行ったテスト起動と同じにするなら
 
[root@git ~]#
[root@git ~]# mkdir -p /opt/jetty/logs && chown jetty:jetty $_      # logsフォルダ作成

&color(red)*};運用の際には「/opt/jetty/curt/webapps」にwarファイルを入れると思うので、テストが終わったら「JETTY_BASE」を適切にする必要あり

起動

単純に

[root@git ~]# systemctl start jetty

でOK.

停止は

[root@git ~]# systemctl stop jetty

とする。
定義が間違っていると、stopを実施したのにjettyプロセスが残る場合があります。
その際はプロセス番号を見つけて 「kill -9 <pid>」して下さい

Gitbucket

GitBucketを載せてみた.

GitBucketのファイルを入手して、/opt/jetty/curt/webapps に配置

[root@git ~]# cd /opt/jetty/curt/webapps
[root@git webapps]# wget https://github.com/gitbucket/gitbucket/releases/download/4.15.0/gitbucket.war
 
[root@git webapps]# chown jetty:jetty gitbucket.war

*取得したgitbucketのバージョンは?
取得したファイル名から推測はできないので、warファイルに入っているファイルを確認すれば一応は見えるのかも.

[root@git webapps]# unzip -l gitbucket.war | grep -i gitbucket
 :
  3062119  08-05-2017 11:50   WEB-INF/lib/gitbucket_2.12-4.15.0.jar
[root@git webapps]#

留意 GitBucketは自身の設定ファイルを持つ。その場所は通常ならコンテナ稼動者のホームディレクトリに置かれてしまう。
ここの場合ではjettyユーザの「/opt/jetty」の配下に置かれる.
それをコントロールするには「/opt/jetty/.bashrc」を調整する

[root@git ~]# echo "export GITBUCKET_HOME=/opt/jetty/gitbucket" >> /opt/jetty/.bashrc
[root@git ~]# mkdir /opt/jetty/gitbucket && chown jetty:jetty $_

*当初、「/etc/default/jetty」にGITBUCKET_HOME環境変数を加えたが機能しない. 調べたら「jetty.sh」474行「su - "$JETTY_USER" $SU_SHELL -c "」とあった.

/etc/default/jetty」を下記のようにして、

[root@git ~]# vi /etc/default/jetty
JETTY_HOME=/opt/jetty/curt
JETTY_USER=jetty
JETTY_ARGS=jetty.http.port=8080
JETTY_RUN=/opt/jetty/logs
JETTY_SHELL=/bin/bash
JETTY_BASE=/opt/jetty/curt

jettyを起動させます

[root@git ~]# systemctl start jetty

展開場所とurl

いまだとアクセス先で/gitbuketと掘る必要がある. そのサイトに行ったらそこで運用されている形にしたい.
参照: http://www.eclipse.org/jetty/documentation/9.3.x/configuring-specific-webapp-deployment.html

[root@git ~]# vi /opt/jetty/curt/webapps/gitbucket.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
 
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="contextPath">/</Set>
  <Set name="war">/opt/jetty/curt/webapps/gitbucket.war</Set>
</Configure>
[root@git ~]#
[root@git ~]# chown jetty:jetty /opt/jetty/curt/webapps/gitbucket.xml
[root@git ~]# systemctl restart jetty

トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2017-08-29 (火) 19:41:07 (105d)