2018/05/29

JDK8(171)とtomcatとgroupsessionのインストール CentOS7

1.Java SE Development Kit 8u171のインストール


http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
JDK10はgroupsessionが未対応なので、8の最新をダウンロード
rpmパッケージをダウンロードして、ローカルインストールする。

# yum install jdk-8u171-linux-x64.rpm
既にパッケージがインストールされているときは、最新を認識させる必要がある。
# alternatives --config java
3 プログラムがあり 'java' を提供します。
選択 コマンド
-----------------------------------------------
1 java-1.7.0-openjdk.x86_64 (/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el7_3.x86_64/jre/bin/java)
*+ 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64/jre/bin/java)
3 /usr/java/jdk1.8.0_171-amd64/jre/bin/java
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:

最新になっているので、問題ない。
# echo $JAVA_HOME でパスが通っているか確認。
何も出なければ、とおっていないので、在処を探す。
# readlink $(readlink $(which java))
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64/jre/bin/java

設定し、反映させる
# echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64/jre" >> /root/.bashrc
# source /root/.bashrc
# echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64/jre

2.tomcatユーザを作成、パスワード

# useradd tomcat
# passwd tomcat

3.tomcatをインストール

http://tomcat.apache.org/
gsessionはJ2EEコンテナは6,7,8が対象なので、apache-tomcat-8.5.31.tar.gzをダウンロードし、
展開 ⇒ /usr/localへ移動 ⇒ 所有者をtomcatに ⇒ シンボリックリンクを作成
# tar xvfz apache-tomcat-8.5.31.tar.gz
# mv apache-tomcat-8.5.31 /usr/local
# cd /usr/local
# chown -R tomcat:tomcat apache-tomcat-8.5.31
# ln -s apache-tomcat-8.5.31 tomcat

4.環境変数の定義

JAVA_HOMEとCATALINA_HOMEを定義する。
CentOSの場合、/etc/profileが既にあるので、この後ろに書く。
# nano /etc/profile
末尾に
JAVA_HOME=/usr/java/default
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME CATALINA_HOME
を加える。

5.systemdの起動用にtomcat.serviceを作成。


# nano /usr/lib/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64/jre/
Environment=CATALINA_OPTS=-Xmx3072M -2048XmsM
ExecStart=/usr/local/apache-tomcat-8.5.31/bin/startup.sh
ExecStop=/usr/local/apache-tomcat-8.5.31/bin/shutdown.sh
ExecReStart=/usr/local/apache-tomcat-8.5.31/bin/shutdown.sh;/usr/local/apache-tomcat-8.5.31/bin/startup.sh
[Install]
WantedBy=multi-user.target

実行権限を付与
# chmod 755 /usr/lib/systemd/system/tomcat.service

ヒープメモリを
Environment=CATALINA_OPTS=-Xmx3072M -2048XmsM
で設定しないで、~/tomcat/bin/startup.shから直接起動時に反映させたい場合は、
~/tomcat/bin 配下に setenv.sh を作成して、その中に書けば良い

#!/bin/sh
JAVA_OPTS="-server -Xms2048M -Xmx3072M"
export JAVA_OPTS

これで々ように起動時にヒープメモリが設定される。

6.firewall 8080ポートの開放


# firewall-cmd --add-port=8080/tcp --permanent
success
# firewall-cmd --reload
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: em1
sources:
services: dhcpv6-client ssh
ports: 8080/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
8080が開いた。

7.起動、停止テスト

# systemctl start tomcat
停止は、
# systemctl stop tomcat
自動起動は
# systemctl enable tomcat



稼働確認


groupsessionのインストール


最新版をダウンロード
https://groupsession.jp/dl/gsession_war_4_8_1-dl1.html

から、gsession.warをダウンロード
# systemctl stop tomcat でtomcatを停止してから、
/usr/local/apache-tomcat-8.5.31/webappsにgsession.warを置く。
# systemctl start tomcat で起動。

2018/05/21

centOS7にntfsのhddをマウントさせる

ntfsドライブをマウントするためのパッケージは

fuse
fuse-ntfs-3g
dkms
dkms-fuse

# yum -y --enablerepo=epel install dkms fuse-ntfs-3g
yumでインストールするが、
epelリポジトリのパッケージをインストールする時は --enablerepo=epel と文句言われるので-y
のパラメータを追加すること。

内部の構成を確認する、パーティションを変更したりする場合で2TBを超える場合は、
fdiskではなく parted -l とかで、処理をすること

マウント先を、適宜指定する
# mkdir /mnt/usbhdd
マウント
# mount -t ntfs-3g /dev/sdb1 /mnt/usbhdd
アンマウント
# umount /mnt/usbhdd

以上

2018/05/19

Linux find 今日作業したファイルを検索

作業したファイのバックアップを取る際に、広域に跨ってると意外に探すのが面倒だったりする。
いつ頃作業したかがわかれば、findで割と容易に見つけられる。

オプション
-type f :ファイルのみを対象に検索
-type d :ディレクトリを対象に検索
-mmin -60 :60分以内に更新
-amin -60 :60分以内にアクセス
-mtime -2 :2日以内に更新
-atime -2 :2日以内にアクセス
-anewer :後述のファイルの日付より後に更新されたものを抽出

今日アクセスしたファイルやディレクトを検索
$ find /home/aaa/bbb/ -atime 0

60分以内に更新したファイルを検索
$ find /home/aaa/bbb/ -type f -mmin -60

元.vmファイルより新しいファイルを検索
$ find /home/aaa/bbb/ -anewer ./work/元.vm

2018/05/17

SQL JOIN時に絞り込み条件付加

join on を指定する際に、条件を付けてjoinできるのを知った。

select <テーブルA>.<カラム1>,<テーブルA>.<カラム2>・・・・,<テーブルB>.<カラム5>,<テーブルC>.<カラム2> from <テーブルA> inner join <テーブルB> on <テーブルB>.<カラム1>=<テーブルA>.<カラム1> and <テーブルB>.<カラム1>=true and <テーブルB>.<カラム2>=0
left join <テーブルC> on <テーブルC>.<カラム1>=<テーブルA>.<カラム1> where 更に条件;¥

このような感じで、join on の際に、複数の条件を付与して連結できる。



LeftJoinの場合は、従の条件を絞ってから連結 というような動きにはならないようだ。
あくまで、 主の条件が絞られていれば、絞ってから連結とする模様。

where以下に条件を書かなくても絞り込めるので、where以下がスッキリする、整理しやすい
というメリットがある。




grepを使った絞り込み ファイル単位で複数の行に条件を設けて抽出する場合


grepを使った絞り込み

条件

ディレクトリA
   aaa.xml
   bbb.xml
   ccc.xml
   ・
   ・
   ・
   zzz.xml

aaa.xml
<type>0</type>
   ・
   ・
<name>0463</name>

bbb.xml
<type>1</type>
   ・
   ・
<name>0463</name>

ccc.xml

<type>2</type>
   ・
   ・
<name>1234</name>

ccc.xml
<type>0</type>
   ・
   ・
<name>0463</name>


ディレクトリAの中にあるxmlで、typeが0、nameが0463のファイルを抽出したい場合
一回のgrepで抽出しようとしたが、行が異なると判定されてしまうので、上手くいかず。
-P '検索箇所頭[\s\S]*?検索箇所末尾' の Pオプションを使った場合、
ファイルサイズが大きく、ファイス数が多いとかなりの負荷がかかる。
また、改行の\nを削除したファイルに置換するものコピーの手間がかかる。
今回の対象ファイル数が、25,000ファイル位あった。
こんなの一つづつはご免蒙る。


そこで、次の手順を取った。
1.取得したい条件を一旦ファイルにする。
 $ grep -r -l "0" /ディレクトリA >type.txt
 $ grep -r -l "0463" /ディレクトリA >name.txt

-rで回帰
-l でファイル名のみ抽出させる。(行数やパターンが出ると、2でgrepした際に重ならない)

2.grepで重なる部分を取得する。
 $ grep -f {type,name}.txt
 結果
 aaa.xml
 ccc.xml
  ・
  ・
 のように抽出したいファイルが絞り込める。
 実際は、
 /home/ディレクトリA/ディレクトリB_1000/1/20180301_134814.xm ディレクトリBのレベルで判別したいので、一旦マージ用のファイルを生成し、
 $ grep -f {type,name}.txt >merge.txt

この段で、P オプションとoオプション(only-matching)を使って絞り込む
  $ grep -oP 'ディレクトリB[\s\S]*?/' merge.txt | uniq -d
ディレクトリB/ ←この部分を取得したい。
 uniq -d  ユニークで重複を表示させない。
  結果
 ディレクトリB_1000
 ディレクトリB_1010
 ディレクトリB_1012
    ・
    ・
    ・
 ディレクトリ
期待値が取れた。 

2018/05/11

TeraTerm(ssh)でGUI(X11転送、X-Window)を使う。

WINDOWSマシンで、X-Window(X11転送、X11フォワーディング)を利用するために

接続先のサーバのsshdでX-wiondwsが許容されている。
TeraTermはインストールされている。
として、

https://ja.osdn.net/projects/sfnet_xming/releases/
ここから、
Xming
Xming-fonts

を其々インストーラーからインストールする。

Xmingをデフォルトでインストールする。

途中でポート(ファイアーフォール)の許可を求めてくるので、許可しておく。
続いてXming-fontsもデフォルトでインストールする。

TeraTermを立ち上げて、
設定⇒ssh設定⇒SSHポート転送を開き、

リモートの(X)アプリケーションをローカルのXサーバに表示するにチェック。

設定の保存をして、再度立ち上げれば、X11転送の設定が完了。(TeraTermの再起動が必要)

端末から、sshでログインして、GUIのコマンド(nautilusなど)を実行すると
X-Windowsが立ち上がる。

sshを更に経由する際は
(直接外部からでなく、一旦固定IPのサーバを経由して、そこからローカルアドレスのサーバにアクセスする様な場合
sshに -Yのパラメータを付けて、
ssh -Y ユーザ名@IPアドレス としておかないと、
X11転送を実行する際に。エラーが帰ってきます。

OpenSSH-7.3p1 日本語マニュアルより、
-Y
信頼された X11 転送を許可します。信頼された X11 転送は、X11 SECURITY 拡張機能の制約をうけることはありません。
との事である。

最初これが見つからずに、認証で躓いたので、オボエガキ。