【Python】URLエンコードされたテキストファイルをデコードしてファイル出力
URLエンコードされた文字列が吐かれたログファイルをデコードすることがあったので、お勉強がてら作ってみた。
環境
Python 2.7.10
ソース
f_cnv.py
#!/usr/bin/python # -*- coding: utf-8 -*- # 文字コードの指定:http://yono.cc/python/python_basics/japanese.html # コメント:http://python301.blog123.fc2.com/blog-entry-9.html import sys import urllib # 命名規約:http://nekowarau.seesaa.net/article/426647551.html def url_decode(input_path, output_path): # if文:http://www.pythonweb.jp/tutorial/if/index4.html # 論理演算子:http://www.pythonweb.jp/tutorial/if/index6.html if input_path == "" and output_path =="": sys.exit ("error: The number of parameters has to be 2" + "\n" + "info: First param is input file path, second param is output file path") print "input file is " + input_path + ", " + "output file is " + output_path # 数値=>文字列:http://www.pythonweb.jp/tutorial/string/index9.html # インデックス付きfor:http://www.gesource.jp/programming/python/code/0022.html """ strParam = "" for i, e in enumerate(param): strParam = strParam + " param[" + str(i) + "]" + "=" + e print "info: param is" + strParam """ # ファイル入力:http://www.yukun.info/blog/2008/06/python-file.html#readlines_8211_1 rf = open(input_path) lines = rf.readlines() rf.close() # ファイル出力:http://www.mwsoft.jp/programming/python/file.html wf = open(output_path, "w") for line in lines: # urlエンコード・デコード:http://python.g.hatena.ne.jp/mhrs/20060609/p1 decodedLine = urllib.unquote_plus(line); wf.write(decodedLine) print wf.close() # メイン関数的な:http://qiita.com/shunsuke227ono/items/a043bfa9998e7033de3a if __name__ == "__main__": # コマンドライン引数:http://www.python-izm.com/contents/basis/command_line_arguments.shtml param = sys.argv # 配列のサイズ:http://www.pythonweb.jp/tutorial/list/index5.html if len(param) != 3: # 終了メソッド:http://d.hatena.ne.jp/kakurasan/20110512/p1 sys.exit ("error: The number of parameters has to be 2" + "\n" + "info: First param is input file path, second param is output file path") url_decode(param[1], param[2])
使い方
第一引数に入力ファイル、第二引数に出力ファイルのパスを渡します。
スクリプトとして実行
例)encode.txtをデコードしてdecode.txtとして出力
$ ./f_env.py /home/hoge/Documents/encode.txt /home/hoge/Documents/decode.txt
モジュールとして実行
例)上記と同じ処理を対話型シェルで実行
$ python >>> import f_env >>> f_cnv.url_decode("/home/hoge/Documents/encode.txt", "/home/hoge/Documents/decode.txt")
.pycファイル
上記のモジュールとして実行で呼び出すと「f_env.pyc」というファイルが作られていた。
こいつはなんぞと思いググってみた。
.pycファイルを作成させない方法メモ - かせきのうさぎさん
Python で書かれたモジュールを import すると自動的に .pycファイルが作成される。このファイルはコンパイルして得られたバイトコードを保存したものだ。つまり一種のキャッシュである。モジュールは他のファイルからも import される可能性が高いので、こうしておけばコンパイルする時間を節約できる。
ということらしい。
【CentOS6】java8 + Tomcat7をインストール
今回はyumを利用します。
yumを利用するとパスをごにょごにょしたり、起動スクリプト自作しなくてよかったりメリットもあるので利用します。
yumに頼った所為でハマったのですが。。。
自分の手で色々やってインストールするなら↓が詳しくて良いかも。
LinuxサーバへのTomcat 7導入 (Tomcatインストール)
環境
- サーバOS: CentOS6.7
- webサーバ: Apache2.2
手順
javaのインストール
java8関連のパッケージはベースリポジトリにあるのでyumでインストール。
$ yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel 読み込んだプラグイン:fastestmirror インストール処理の設定をしています Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * epel: ftp.jaist.ac.jp * extras: ftp.iij.ad.jp * rpmforge: ftp.kddilabs.jp * updates: centosv4.centos.org 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> Package java-1.8.0-openjdk.x86_64 1:1.8.0.71-1.b15.el6_7 will be インストール --> 依存性の処理をしています: java-1.8.0-openjdk-headless = 1:1.8.0.71-1.b15.el6_7 のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64 --> 依存性の処理をしています: xorg-x11-fonts-Type1 のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64 --> 依存性の処理をしています: libjvm.so(SUNWprivate_1.1)(64bit) のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64 --> 依存性の処理をしています: libjava.so(SUNWprivate_1.1)(64bit) のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64 --> 依存性の処理をしています: libasound.so.2(ALSA_0.9.0rc4)(64bit) のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64 --> 依存性の処理をしています: libasound.so.2(ALSA_0.9)(64bit) のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64 --> 依存性の処理をしています: libjvm.so()(64bit) のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64 --> 依存性の処理をしています: libjava.so()(64bit) のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64 --> 依存性の処理をしています: libgif.so.4()(64bit) のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64 --> 依存性の処理をしています: libawt.so()(64bit) のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64 --> 依存性の処理をしています: libasound.so.2()(64bit) のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64 --> 依存性の処理をしています: libXtst.so.6()(64bit) のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64 ---> Package java-1.8.0-openjdk-devel.x86_64 1:1.8.0.71-1.b15.el6_7 will be インストール --> トランザクションの確認を実行しています。 ---> Package alsa-lib.x86_64 0:1.0.22-3.el6 will be インストール ---> Package giflib.x86_64 0:4.1.6-3.1.el6 will be インストール --> 依存性の処理をしています: libSM.so.6()(64bit) のパッケージ: giflib-4.1.6-3.1.el6.x86_64 --> 依存性の処理をしています: libICE.so.6()(64bit) のパッケージ: giflib-4.1.6-3.1.el6.x86_64 ---> Package java-1.8.0-openjdk-headless.x86_64 1:1.8.0.71-1.b15.el6_7 will be インストール --> 依存性の処理をしています: tzdata-java >= 2014f-1 のパッケージ: 1:java-1.8.0-openjdk-headless-1.8.0.71-1.b15.el6_7.x86_64 --> 依存性の処理をしています: jpackage-utils のパッケージ: 1:java-1.8.0-openjdk-headless-1.8.0.71-1.b15.el6_7.x86_64 ---> Package libXtst.x86_64 0:1.2.2-2.1.el6 will be インストール ---> Package xorg-x11-fonts-Type1.noarch 0:7.2-11.el6 will be インストール --> 依存性の処理をしています: ttmkfdir のパッケージ: xorg-x11-fonts-Type1-7.2-11.el6.noarch --> 依存性の処理をしています: ttmkfdir のパッケージ: xorg-x11-fonts-Type1-7.2-11.el6.noarch --> 依存性の処理をしています: mkfontdir のパッケージ: xorg-x11-fonts-Type1-7.2-11.el6.noarch --> 依存性の処理をしています: mkfontdir のパッケージ: xorg-x11-fonts-Type1-7.2-11.el6.noarch --> トランザクションの確認を実行しています。 ---> Package jpackage-utils.noarch 0:1.7.5-3.14.el6 will be インストール ---> Package libICE.x86_64 0:1.0.6-1.el6 will be インストール ---> Package libSM.x86_64 0:1.2.1-2.el6 will be インストール ---> Package ttmkfdir.x86_64 0:3.0.9-32.1.el6 will be インストール ---> Package tzdata-java.noarch 0:2016a-2.el6 will be インストール ---> Package xorg-x11-font-utils.x86_64 1:7.2-11.el6 will be インストール --> 依存性の処理をしています: libfontenc.so.1()(64bit) のパッケージ: 1:xorg-x11-font-utils-7.2-11.el6.x86_64 --> 依存性の処理をしています: libXfont.so.1()(64bit) のパッケージ: 1:xorg-x11-font-utils-7.2-11.el6.x86_64 --> トランザクションの確認を実行しています。 ---> Package libXfont.x86_64 0:1.4.5-5.el6_7 will be インストール ---> Package libfontenc.x86_64 0:1.0.5-2.el6 will be インストール --> 依存性解決を終了しました。 依存性を解決しました ======================================================================================================================= パッケージ アーキテクチャ バージョン リポジトリー 容量 ======================================================================================================================= インストールしています: java-1.8.0-openjdk x86_64 1:1.8.0.71-1.b15.el6_7 updates 190 k java-1.8.0-openjdk-devel x86_64 1:1.8.0.71-1.b15.el6_7 updates 10 M 依存性関連でのインストールをします。: alsa-lib x86_64 1.0.22-3.el6 base 370 k giflib x86_64 4.1.6-3.1.el6 base 37 k java-1.8.0-openjdk-headless x86_64 1:1.8.0.71-1.b15.el6_7 updates 32 M jpackage-utils noarch 1.7.5-3.14.el6 base 60 k libICE x86_64 1.0.6-1.el6 base 53 k libSM x86_64 1.2.1-2.el6 base 37 k libXfont x86_64 1.4.5-5.el6_7 updates 137 k libXtst x86_64 1.2.2-2.1.el6 base 19 k libfontenc x86_64 1.0.5-2.el6 base 24 k ttmkfdir x86_64 3.0.9-32.1.el6 base 43 k tzdata-java noarch 2016a-2.el6 updates 177 k xorg-x11-font-utils x86_64 1:7.2-11.el6 base 75 k xorg-x11-fonts-Type1 noarch 7.2-11.el6 base 520 k トランザクションの要約 ======================================================================================================================= インストール 15 パッケージ 総ダウンロード容量: 43 M インストール済み容量: 146 M パッケージをダウンロードしています: (1/15): alsa-lib-1.0.22-3.el6.x86_64.rpm | 370 kB 00:00 (2/15): giflib-4.1.6-3.1.el6.x86_64.rpm | 37 kB 00:00 (3/15): java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64.rpm | 190 kB 00:01 (4/15): java-1.8.0-openjdk-devel-1.8.0.71-1.b15.el6_7.x86_64.rpm | 10 MB 01:27 (5/15): java-1.8.0-openjdk-headless-1.8.0.71-1.b15.el6_7.x86_64.rpm | 32 MB 03:50 (6/15): jpackage-utils-1.7.5-3.14.el6.noarch.rpm | 60 kB 00:00 (7/15): libICE-1.0.6-1.el6.x86_64.rpm | 53 kB 00:00 (8/15): libSM-1.2.1-2.el6.x86_64.rpm | 37 kB 00:00 (9/15): libXfont-1.4.5-5.el6_7.x86_64.rpm | 137 kB 00:01 (10/15): libXtst-1.2.2-2.1.el6.x86_64.rpm | 19 kB 00:00 (11/15): libfontenc-1.0.5-2.el6.x86_64.rpm | 24 kB 00:00 (12/15): ttmkfdir-3.0.9-32.1.el6.x86_64.rpm | 43 kB 00:00 (13/15): tzdata-java-2016a-2.el6.noarch.rpm | 177 kB 00:01 (14/15): xorg-x11-font-utils-7.2-11.el6.x86_64.rpm | 75 kB 00:00 (15/15): xorg-x11-fonts-Type1-7.2-11.el6.noarch.rpm | 520 kB 00:00 ----------------------------------------------------------------------------------------------------------------------- 合計 136 kB/s | 43 MB 05:27 rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションのテストを成功しました トランザクションを実行しています インストールしています : libfontenc-1.0.5-2.el6.x86_64 1/15 インストールしています : libICE-1.0.6-1.el6.x86_64 2/15 インストールしています : libSM-1.2.1-2.el6.x86_64 3/15 インストールしています : giflib-4.1.6-3.1.el6.x86_64 4/15 インストールしています : libXfont-1.4.5-5.el6_7.x86_64 5/15 インストールしています : 1:xorg-x11-font-utils-7.2-11.el6.x86_64 6/15 インストールしています : libXtst-1.2.2-2.1.el6.x86_64 7/15 インストールしています : alsa-lib-1.0.22-3.el6.x86_64 8/15 インストールしています : tzdata-java-2016a-2.el6.noarch 9/15 インストールしています : jpackage-utils-1.7.5-3.14.el6.noarch 10/15 インストールしています : ttmkfdir-3.0.9-32.1.el6.x86_64 11/15 インストールしています : xorg-x11-fonts-Type1-7.2-11.el6.noarch 12/15 インストールしています : 1:java-1.8.0-openjdk-headless-1.8.0.71-1.b15.el6_7.x86_64 13/15 インストールしています : 1:java-1.8.0-openjdk-devel-1.8.0.71-1.b15.el6_7.x86_64 14/15 インストールしています : 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64 15/15 Verifying : ttmkfdir-3.0.9-32.1.el6.x86_64 1/15 Verifying : libXfont-1.4.5-5.el6_7.x86_64 2/15 Verifying : jpackage-utils-1.7.5-3.14.el6.noarch 3/15 Verifying : libICE-1.0.6-1.el6.x86_64 4/15 Verifying : libfontenc-1.0.5-2.el6.x86_64 5/15 Verifying : tzdata-java-2016a-2.el6.noarch 6/15 Verifying : alsa-lib-1.0.22-3.el6.x86_64 7/15 Verifying : 1:xorg-x11-font-utils-7.2-11.el6.x86_64 8/15 Verifying : 1:java-1.8.0-openjdk-devel-1.8.0.71-1.b15.el6_7.x86_64 9/15 Verifying : libSM-1.2.1-2.el6.x86_64 10/15 Verifying : libXtst-1.2.2-2.1.el6.x86_64 11/15 Verifying : xorg-x11-fonts-Type1-7.2-11.el6.noarch 12/15 Verifying : 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64 13/15 Verifying : 1:java-1.8.0-openjdk-headless-1.8.0.71-1.b15.el6_7.x86_64 14/15 Verifying : giflib-4.1.6-3.1.el6.x86_64 15/15 インストール: java-1.8.0-openjdk.x86_64 1:1.8.0.71-1.b15.el6_7 java-1.8.0-openjdk-devel.x86_64 1:1.8.0.71-1.b15.el6_7 依存性関連をインストールしました: alsa-lib.x86_64 0:1.0.22-3.el6 giflib.x86_64 0:4.1.6-3.1.el6 java-1.8.0-openjdk-headless.x86_64 1:1.8.0.71-1.b15.el6_7 jpackage-utils.noarch 0:1.7.5-3.14.el6 libICE.x86_64 0:1.0.6-1.el6 libSM.x86_64 0:1.2.1-2.el6 libXfont.x86_64 0:1.4.5-5.el6_7 libXtst.x86_64 0:1.2.2-2.1.el6 libfontenc.x86_64 0:1.0.5-2.el6 ttmkfdir.x86_64 0:3.0.9-32.1.el6 tzdata-java.noarch 0:2016a-2.el6 xorg-x11-font-utils.x86_64 1:7.2-11.el6 xorg-x11-fonts-Type1.noarch 0:7.2-11.el6 完了しました!
確認
$ java -version openjdk version "1.8.0_71" OpenJDK Runtime Environment (build 1.8.0_71-b15) OpenJDK 64-Bit Server VM (build 25.71-b15, mixed mode)
Tomcatのインストール
残念ながらCentOS6のリポジトリにTomcat7はないので(バージョン6はある)、サードパーティリポジトリから入手する。
# ないんです><
$ yum search tomcat7
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* epel: ftp.jaist.ac.jp
* extras: ftp.iij.ad.jp
* rpmforge: ftp.kddilabs.jp
* updates: centosx4.centos.org
警告: 一致するものが見つかりません: tomcat7
見つかりませんでした
jpackageリポジトリの取得
Tomcat7はjava関連のパッケージを提供してるjpackageリポジトリから取得することにします。
rpm -Uvh http://mirrors.dotsrc.org/jpackage/6.0/generic/free/RPMS/jpackage-release-6-3.jpp6.noarch.rpm http://mirrors.dotsrc.org/jpackage/6.0/generic/free/RPMS/jpackage-release-6-3.jpp6.noarch.rpm を取得中 エラー: 依存性の欠如: yum-priorities は jpackage-release-6-3.jpp6.noarch に必要とされています
yum-prioritiesを入れないとダメみたいです。
$ yum install -y yum-priorities 読み込んだプラグイン:fastestmirror インストール処理の設定をしています Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * epel: ftp.jaist.ac.jp * extras: ftp.iij.ad.jp * rpmforge: ftp.kddilabs.jp * updates: centosv4.centos.org 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> Package yum-plugin-priorities.noarch 0:1.1.30-30.el6 will be インストール --> 依存性解決を終了しました。 依存性を解決しました ============================================================================================================================ パッケージ アーキテクチャ バージョン リポジトリー 容量 ============================================================================================================================ インストールしています: yum-plugin-priorities noarch 1.1.30-30.el6 base 25 k トランザクションの要約 ============================================================================================================================ インストール 1 パッケージ 総ダウンロード容量: 25 k インストール済み容量: 28 k パッケージをダウンロードしています: yum-plugin-priorities-1.1.30-30.el6.noarch.rpm | 25 kB 00:00 rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションのテストを成功しました トランザクションを実行しています インストールしています : yum-plugin-priorities-1.1.30-30.el6.noarch 1/1 Verifying : yum-plugin-priorities-1.1.30-30.el6.noarch 1/1 インストール: yum-plugin-priorities.noarch 0:1.1.30-30.el6 完了しました!
気を取り直してリポジトリを取得。
$ rpm -Uvh http://mirrors.dotsrc.org/jpackage/6.0/generic/free/RPMS/jpackage-release-6-3.jpp6.noarch.rpm http://mirrors.dotsrc.org/jpackage/6.0/generic/free/RPMS/jpackage-release-6-3.jpp6.noarch.rpm を取得中 準備中... ########################################### [100%] 1:jpackage-release ########################################### [100%]
確認
$ cat /etc/yum.repos.d/jpackage.repo [jpackage] name=JPackage 6 generic mirrorlist=http://www.jpackage.org/mirrorlist.php?dist=generic&type=free&release=6.0 failovermethod=priority enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-jpackage priority=10
インストール
念のため、tomcat7がリポジトリにあるか確認
$ yum search tomcat7 読み込んだプラグイン:fastestmirror, priorities Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * epel: ftp.jaist.ac.jp * extras: ftp.iij.ad.jp * jpackage: mirrors.dotsrc.org * rpmforge: ftp.kddilabs.jp * updates: centosd6.centos.org jpackage | 1.9 kB 00:00 jpackage/primary_db | 1.7 MB 00:06 238 packages excluded due to repository priority protections =================================================== N/S Matched: tomcat7 =================================================== tomcat7.noarch : Apache Servlet/JSP Engine, RI for Servlet 3.0/JSP 2.2 API tomcat7-admin-webapps.noarch : The host-manager and manager web applications for Apache Tomcat tomcat7-docs-webapp.noarch : The docs web application for Apache Tomcat tomcat7-el-2.2-api.noarch : Expression Language v2.2 API tomcat7-javadoc.noarch : Javadoc generated documentation for Apache Tomcat tomcat7-jsp-2.2-api.noarch : Apache Tomcat JSP API implementation classes tomcat7-lib.noarch : Libraries needed to run the Tomcat Web container tomcat7-servlet-3.0-api.noarch : Apache Tomcat Servlet API implementation classes tomcat7-webapps.noarch : The ROOT and examples web applications for Apache Tomcat Name and summary matches only, use "search all" for everything.
大丈夫ですね!
前置きが長くなりましたが、ようやくtomcatをインストール。
# せっかくなんで管理ページも入れておく $ yum -y install tomcat7-webapps tomcat7-admin-webapps 読み込んだプラグイン:fastestmirror, priorities インストール処理の設定をしています Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * epel: ftp.jaist.ac.jp * extras: ftp.iij.ad.jp * jpackage: mirror.ibcp.fr * rpmforge: ftp.kddilabs.jp * updates: centosd6.centos.org 238 packages excluded due to repository priority protections 依存性の解決をしています --> トランザクションの確認を実行しています。 #〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜(中略)〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 トランザクションの要約 ============================================================================================================================ インストール 41 パッケージ 合計容量: 35 M インストール済み容量: 91 M パッケージをダウンロードしています: パッケージ tomcat7-7.0.54-2.jpp6.noarch.rpm は署名されていません
。。。と思ったら、署名されていないとか言われてインストールできません。
--nogpgcheckオプションをつけて再実行。
$ yum install -y --nogpgcheck tomcat7-webapps tomcat7-admin-webapps 読み込んだプラグイン:fastestmirror, priorities インストール処理の設定をしています Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * epel: ftp.jaist.ac.jp * extras: ftp.iij.ad.jp * jpackage: mirrors.dotsrc.org * rpmforge: ftp.kddilabs.jp * updates: centosv4.centos.org 238 packages excluded due to repository priority protections 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> Package tomcat7-admin-webapps.noarch 0:7.0.54-2.jpp6 will be インストール --> 依存性の処理をしています: tomcat7 = 7.0.54-2.jpp6 のパッケージ: tomcat7-admin-webapps-7.0.54-2.jpp6.noarch ---> Package tomcat7-webapps.noarch 0:7.0.54-2.jpp6 will be インストール --> 依存性の処理をしています: jakarta-taglibs-standard >= 1.1 のパッケージ: tomcat7-webapps-7.0.54-2.jpp6.noarch --> トランザクションの確認を実行しています。 ---> Package apache-taglibs-standard.noarch 0:1.1.2-8.jpp6 will be インストール --> 依存性の処理をしています: xalan-j2 >= 2.6.0 のパッケージ: apache-taglibs-standard-1.1.2-8.jpp6.noarch --> 依存性の処理をしています: jsp_2_1_api のパッケージ: apache-taglibs-standard-1.1.2-8.jpp6.noarch --> 依存性の処理をしています: servlet_2_5_api のパッケージ: apache-taglibs-standard-1.1.2-8.jpp6.noarch ---> Package tomcat7.noarch 0:7.0.54-2.jpp6 will be インストール --> 依存性の処理をしています: tomcat7-lib = 7.0.54-2.jpp6 のパッケージ: tomcat7-7.0.54-2.jpp6.noarch --> 依存性の処理をしています: apache-commons-daemon のパッケージ: tomcat7-7.0.54-2.jpp6.noarch --> 依存性の処理をしています: /lib/lsb/init-functions のパッケージ: tomcat7-7.0.54-2.jpp6.noarch --> 依存性の処理をしています: apache-commons-logging のパッケージ: tomcat7-7.0.54-2.jpp6.noarch --> トランザクションの確認を実行しています。 ---> Package apache-commons-daemon.noarch 1:1.0.15-1.jpp6 will be インストール ---> Package apache-commons-logging.noarch 0:1.1.3-2.jpp6 will be インストール ---> Package redhat-lsb-core.x86_64 0:4.0-7.el6.centos will be インストール --> 依存性の処理をしています: perl-Test-Simple のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64 --> 依存性の処理をしています: perl-Test-Harness のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64 --> 依存性の処理をしています: perl-ExtUtils-MakeMaker のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64 --> 依存性の処理をしています: perl-CGI のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64 --> 依存性の処理をしています: /usr/bin/time のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64 --> 依存性の処理をしています: /usr/bin/pax のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64 --> 依存性の処理をしています: /usr/bin/patch のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64 --> 依存性の処理をしています: /usr/bin/msgfmt のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64 --> 依存性の処理をしています: /usr/bin/man のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64 --> 依存性の処理をしています: /usr/bin/bc のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64 --> 依存性の処理をしています: /usr/bin/batch のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64 --> 依存性の処理をしています: /usr/bin/at のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64 --> 依存性の処理をしています: /bin/gettext のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64 ---> Package tomcat6-jsp-2.1-api.noarch 0:6.0.33-2.jpp6 will be インストール ---> Package tomcat6-servlet-2.5-api.noarch 0:6.0.33-2.jpp6 will be インストール ---> Package tomcat7-lib.noarch 0:7.0.54-2.jpp6 will be インストール --> 依存性の処理をしています: tomcat7-servlet-3.0-api = 7.0.54-2.jpp6 のパッケージ: tomcat7-lib-7.0.54-2.jpp6.noarch --> 依存性の処理をしています: tomcat7-jsp-2.2-api = 7.0.54-2.jpp6 のパッケージ: tomcat7-lib-7.0.54-2.jpp6.noarch --> 依存性の処理をしています: tomcat7-el-2.2-api = 7.0.54-2.jpp6 のパッケージ: tomcat7-lib-7.0.54-2.jpp6.noarch --> 依存性の処理をしています: /usr/share/java/ecj3.jar のパッケージ: tomcat7-lib-7.0.54-2.jpp6.noarch --> 依存性の処理をしています: apache-commons-dbcp-tomcat5 のパッケージ: tomcat7-lib-7.0.54-2.jpp6.noarch --> 依存性の処理をしています: apache-commons-pool-tomcat5 のパッケージ: tomcat7-lib-7.0.54-2.jpp6.noarch --> 依存性の処理をしています: ecj3 のパッケージ: tomcat7-lib-7.0.54-2.jpp6.noarch --> 依存性の処理をしています: apache-commons-collections-tomcat5 のパッケージ: tomcat7-lib-7.0.54-2.jpp6.noarch ---> Package xalan-j2.noarch 0:2.7.1-8.jbossorg_1.jpp6 will be インストール --> 依存性の処理をしています: jaxp_parser_impl のパッケージ: xalan-j2-2.7.1-8.jbossorg_1.jpp6.noarch --> トランザクションの確認を実行しています。 ---> Package apache-commons-collections-tomcat5.noarch 0:3.2.1-6.jpp6 will be インストール ---> Package apache-commons-dbcp-tomcat5.noarch 0:1.3.0-0.r830852.4.jpp6 will be インストール ---> Package apache-commons-pool-tomcat5.noarch 0:1.5.7-1.jpp6 will be インストール ---> Package at.x86_64 0:3.1.10-48.el6 will be インストール ---> Package bc.x86_64 0:1.06.95-1.el6 will be インストール ---> Package ecj3.noarch 1:3.7-1.jpp6 will be インストール ---> Package gettext.x86_64 0:0.17-18.el6 will be インストール --> 依存性の処理をしています: cvs のパッケージ: gettext-0.17-18.el6.x86_64 ---> Package java-1.5.0-gcj.x86_64 0:1.5.0.0-29.1.el6 will be インストール --> 依存性の処理をしています: libgcj >= 4.1.2-5 のパッケージ: java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64 --> 依存性の処理をしています: sinjdoc のパッケージ: java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64 --> 依存性の処理をしています: /usr/lib64/security/classpath.security のパッケージ: java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64 --> 依存性の処理をしています: /usr/bin/gij のパッケージ: java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64 --> 依存性の処理をしています: /usr/bin/gij のパッケージ: java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64 --> 依存性の処理をしています: /usr/bin/gcj-dbtool のパッケージ: java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64 --> 依存性の処理をしています: /usr/bin/gcj-dbtool のパッケージ: java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64 ---> Package man.x86_64 0:1.6f-32.el6 will be インストール --> 依存性の処理をしています: lzma のパッケージ: man-1.6f-32.el6.x86_64 ---> Package patch.x86_64 0:2.6-6.el6 will be インストール ---> Package pax.x86_64 0:3.4-10.1.el6 will be インストール ---> Package perl-CGI.x86_64 0:3.51-141.el6_7.1 will be インストール ---> Package perl-ExtUtils-MakeMaker.x86_64 0:6.55-141.el6_7.1 will be インストール --> 依存性の処理をしています: perl-devel のパッケージ: perl-ExtUtils-MakeMaker-6.55-141.el6_7.1.x86_64 ---> Package perl-Test-Harness.x86_64 0:3.17-141.el6_7.1 will be インストール ---> Package perl-Test-Simple.x86_64 0:0.92-141.el6_7.1 will be インストール ---> Package time.x86_64 0:1.7-38.el6 will be インストール ---> Package tomcat7-el-2.2-api.noarch 0:7.0.54-2.jpp6 will be インストール ---> Package tomcat7-jsp-2.2-api.noarch 0:7.0.54-2.jpp6 will be インストール ---> Package tomcat7-servlet-3.0-api.noarch 0:7.0.54-2.jpp6 will be インストール --> トランザクションの確認を実行しています。 ---> Package cvs.x86_64 0:1.11.23-16.el6 will be インストール ---> Package libgcj.x86_64 0:4.4.7-16.el6 will be インストール --> 依存性の処理をしています: zip >= 2.1 のパッケージ: libgcj-4.4.7-16.el6.x86_64 --> 依存性の処理をしています: libart_lgpl >= 2.1.0 のパッケージ: libgcj-4.4.7-16.el6.x86_64 ---> Package perl-devel.x86_64 4:5.10.1-141.el6_7.1 will be インストール --> 依存性の処理をしています: perl(ExtUtils::ParseXS) のパッケージ: 4:perl-devel-5.10.1-141.el6_7.1.x86_64 --> 依存性の処理をしています: gdbm-devel のパッケージ: 4:perl-devel-5.10.1-141.el6_7.1.x86_64 ---> Package sinjdoc.x86_64 0:0.5-9.1.el6 will be インストール --> 依存性の処理をしています: java_cup >= 0.10 のパッケージ: sinjdoc-0.5-9.1.el6.x86_64 ---> Package xz-lzma-compat.x86_64 0:4.999.9-0.5.beta.20091007git.el6 will be インストール --> 依存性の処理をしています: xz = 4.999.9-0.5.beta.20091007git.el6 のパッケージ: xz-lzma-compat-4.999.9-0.5.beta.20091007git.el6.x86_64 --> トランザクションの確認を実行しています。 ---> Package gdbm-devel.x86_64 0:1.8.0-38.el6 will be インストール ---> Package java-cup.noarch 2:0.11-0.a.3.jpp6 will be インストール ---> Package libart_lgpl.x86_64 0:2.3.20-5.1.el6 will be インストール ---> Package perl-ExtUtils-ParseXS.x86_64 1:2.2003.0-141.el6_7.1 will be インストール ---> Package xz.x86_64 0:4.999.9-0.5.beta.20091007git.el6 will be インストール ---> Package zip.x86_64 0:3.0-1.el6_7.1 will be インストール --> 依存性解決を終了しました。 依存性を解決しました ============================================================================================================================ パッケージ アーキテクチャ バージョン リポジトリー 容量 ============================================================================================================================ インストールしています: tomcat7-admin-webapps noarch 7.0.54-2.jpp6 jpackage 41 k tomcat7-webapps noarch 7.0.54-2.jpp6 jpackage 737 k 依存性関連でのインストールをします。: apache-commons-collections-tomcat5 noarch 3.2.1-6.jpp6 jpackage 29 k apache-commons-daemon noarch 1:1.0.15-1.jpp6 jpackage 52 k apache-commons-dbcp-tomcat5 noarch 1.3.0-0.r830852.4.jpp6 jpackage 158 k apache-commons-logging noarch 1.1.3-2.jpp6 jpackage 78 k apache-commons-pool-tomcat5 noarch 1.5.7-1.jpp6 jpackage 78 k apache-taglibs-standard noarch 1.1.2-8.jpp6 jpackage 299 k at x86_64 3.1.10-48.el6 base 61 k bc x86_64 1.06.95-1.el6 base 110 k cvs x86_64 1.11.23-16.el6 base 712 k ecj3 noarch 1:3.7-1.jpp6 jpackage 1.0 M gdbm-devel x86_64 1.8.0-38.el6 base 25 k gettext x86_64 0.17-18.el6 base 1.8 M java-1.5.0-gcj x86_64 1.5.0.0-29.1.el6 base 139 k java-cup noarch 2:0.11-0.a.3.jpp6 jpackage 104 k libart_lgpl x86_64 2.3.20-5.1.el6 base 65 k libgcj x86_64 4.4.7-16.el6 base 19 M man x86_64 1.6f-32.el6 base 263 k patch x86_64 2.6-6.el6 base 90 k pax x86_64 3.4-10.1.el6 base 69 k perl-CGI x86_64 3.51-141.el6_7.1 updates 209 k perl-ExtUtils-MakeMaker x86_64 6.55-141.el6_7.1 updates 294 k perl-ExtUtils-ParseXS x86_64 1:2.2003.0-141.el6_7.1 updates 46 k perl-Test-Harness x86_64 3.17-141.el6_7.1 updates 232 k perl-Test-Simple x86_64 0.92-141.el6_7.1 updates 113 k perl-devel x86_64 4:5.10.1-141.el6_7.1 updates 424 k redhat-lsb-core x86_64 4.0-7.el6.centos base 25 k sinjdoc x86_64 0.5-9.1.el6 base 705 k time x86_64 1.7-38.el6 base 26 k tomcat6-jsp-2.1-api noarch 6.0.33-2.jpp6 jpackage 75 k tomcat6-servlet-2.5-api noarch 6.0.33-2.jpp6 jpackage 89 k tomcat7 noarch 7.0.54-2.jpp6 jpackage 103 k tomcat7-el-2.2-api noarch 7.0.54-2.jpp6 jpackage 54 k tomcat7-jsp-2.2-api noarch 7.0.54-2.jpp6 jpackage 82 k tomcat7-lib noarch 7.0.54-2.jpp6 jpackage 4.9 M tomcat7-servlet-3.0-api noarch 7.0.54-2.jpp6 jpackage 186 k xalan-j2 noarch 2.7.1-8.jbossorg_1.jpp6 jpackage 3.1 M xz x86_64 4.999.9-0.5.beta.20091007git.el6 base 137 k xz-lzma-compat x86_64 4.999.9-0.5.beta.20091007git.el6 base 16 k zip x86_64 3.0-1.el6_7.1 updates 259 k トランザクションの要約 ============================================================================================================================ インストール 41 パッケージ 合計容量: 35 M インストール済み容量: 91 M パッケージをダウンロードしています: rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションのテストを成功しました トランザクションを実行しています 警告: RPMDB は yum 以外で変更されました。 インストールしています : tomcat6-servlet-2.5-api-6.0.33-2.jpp6.noarch 1/41 インストールしています : tomcat7-servlet-3.0-api-7.0.54-2.jpp6.noarch 2/41 インストールしています : tomcat7-jsp-2.2-api-7.0.54-2.jpp6.noarch 3/41 インストールしています : tomcat6-jsp-2.1-api-6.0.33-2.jpp6.noarch 4/41 インストールしています : cvs-1.11.23-16.el6.x86_64 5/41 インストールしています : gettext-0.17-18.el6.x86_64 6/41 インストールしています : bc-1.06.95-1.el6.x86_64 7/41 インストールしています : patch-2.6-6.el6.x86_64 8/41 インストールしています : 1:apache-commons-daemon-1.0.15-1.jpp6.noarch 9/41 インストールしています : perl-CGI-3.51-141.el6_7.1.x86_64 10/41 インストールしています : apache-commons-collections-tomcat5-3.2.1-6.jpp6.noarch 11/41 インストールしています : apache-commons-logging-1.1.3-2.jpp6.noarch 12/41 インストールしています : 2:java-cup-0.11-0.a.3.jpp6.noarch 13/41 インストールしています : tomcat7-el-2.2-api-7.0.54-2.jpp6.noarch 14/41 インストールしています : zip-3.0-1.el6_7.1.x86_64 15/41 インストールしています : apache-commons-dbcp-tomcat5-1.3.0-0.r830852.4.jpp6.noarch 16/41 インストールしています : apache-commons-pool-tomcat5-1.5.7-1.jpp6.noarch 17/41 インストールしています : xz-4.999.9-0.5.beta.20091007git.el6.x86_64 18/41 インストールしています : xz-lzma-compat-4.999.9-0.5.beta.20091007git.el6.x86_64 19/41 インストールしています : man-1.6f-32.el6.x86_64 20/41 インストールしています : libart_lgpl-2.3.20-5.1.el6.x86_64 21/41 インストールしています : libgcj-4.4.7-16.el6.x86_64 22/41 インストールしています : java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64 23/41 インストールしています : sinjdoc-0.5-9.1.el6.x86_64 24/41 インストールしています : 1:ecj3-3.7-1.jpp6.noarch 25/41 インストールしています : tomcat7-lib-7.0.54-2.jpp6.noarch 26/41 インストールしています : xalan-j2-2.7.1-8.jbossorg_1.jpp6.noarch 27/41 インストールしています : apache-taglibs-standard-1.1.2-8.jpp6.noarch 28/41 インストールしています : pax-3.4-10.1.el6.x86_64 29/41 インストールしています : gdbm-devel-1.8.0-38.el6.x86_64 30/41 インストールしています : 1:perl-ExtUtils-ParseXS-2.2003.0-141.el6_7.1.x86_64 31/41 インストールしています : perl-ExtUtils-MakeMaker-6.55-141.el6_7.1.x86_64 32/41 インストールしています : 4:perl-devel-5.10.1-141.el6_7.1.x86_64 33/41 インストールしています : perl-Test-Harness-3.17-141.el6_7.1.x86_64 34/41 インストールしています : perl-Test-Simple-0.92-141.el6_7.1.x86_64 35/41 インストールしています : at-3.1.10-48.el6.x86_64 36/41 インストールしています : time-1.7-38.el6.x86_64 37/41 インストールしています : redhat-lsb-core-4.0-7.el6.centos.x86_64 38/41 インストールしています : tomcat7-7.0.54-2.jpp6.noarch 39/41 インストールしています : tomcat7-admin-webapps-7.0.54-2.jpp6.noarch 40/41 インストールしています : tomcat7-webapps-7.0.54-2.jpp6.noarch 41/41 Verifying : time-1.7-38.el6.x86_64 1/41 Verifying : at-3.1.10-48.el6.x86_64 2/41 Verifying : tomcat7-7.0.54-2.jpp6.noarch 3/41 Verifying : redhat-lsb-core-4.0-7.el6.centos.x86_64 4/41 Verifying : gdbm-devel-1.8.0-38.el6.x86_64 5/41 Verifying : 4:perl-devel-5.10.1-141.el6_7.1.x86_64 6/41 Verifying : pax-3.4-10.1.el6.x86_64 7/41 Verifying : tomcat7-jsp-2.2-api-7.0.54-2.jpp6.noarch 8/41 Verifying : tomcat7-servlet-3.0-api-7.0.54-2.jpp6.noarch 9/41 Verifying : libart_lgpl-2.3.20-5.1.el6.x86_64 10/41 Verifying : xz-4.999.9-0.5.beta.20091007git.el6.x86_64 11/41 Verifying : sinjdoc-0.5-9.1.el6.x86_64 12/41 Verifying : tomcat7-admin-webapps-7.0.54-2.jpp6.noarch 13/41 Verifying : tomcat6-servlet-2.5-api-6.0.33-2.jpp6.noarch 14/41 Verifying : apache-commons-pool-tomcat5-1.5.7-1.jpp6.noarch 15/41 Verifying : 1:ecj3-3.7-1.jpp6.noarch 16/41 Verifying : man-1.6f-32.el6.x86_64 17/41 Verifying : perl-Test-Simple-0.92-141.el6_7.1.x86_64 18/41 Verifying : apache-commons-dbcp-tomcat5-1.3.0-0.r830852.4.jpp6.noarch 19/41 Verifying : libgcj-4.4.7-16.el6.x86_64 20/41 Verifying : zip-3.0-1.el6_7.1.x86_64 21/41 Verifying : java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64 22/41 Verifying : tomcat7-el-2.2-api-7.0.54-2.jpp6.noarch 23/41 Verifying : tomcat6-jsp-2.1-api-6.0.33-2.jpp6.noarch 24/41 Verifying : xz-lzma-compat-4.999.9-0.5.beta.20091007git.el6.x86_64 25/41 Verifying : perl-ExtUtils-MakeMaker-6.55-141.el6_7.1.x86_64 26/41 Verifying : 2:java-cup-0.11-0.a.3.jpp6.noarch 27/41 Verifying : apache-commons-logging-1.1.3-2.jpp6.noarch 28/41 Verifying : apache-commons-collections-tomcat5-3.2.1-6.jpp6.noarch 29/41 Verifying : tomcat7-lib-7.0.54-2.jpp6.noarch 30/41 Verifying : perl-CGI-3.51-141.el6_7.1.x86_64 31/41 Verifying : gettext-0.17-18.el6.x86_64 32/41 Verifying : apache-taglibs-standard-1.1.2-8.jpp6.noarch 33/41 Verifying : 1:apache-commons-daemon-1.0.15-1.jpp6.noarch 34/41 Verifying : 1:perl-ExtUtils-ParseXS-2.2003.0-141.el6_7.1.x86_64 35/41 Verifying : xalan-j2-2.7.1-8.jbossorg_1.jpp6.noarch 36/41 Verifying : patch-2.6-6.el6.x86_64 37/41 Verifying : bc-1.06.95-1.el6.x86_64 38/41 Verifying : cvs-1.11.23-16.el6.x86_64 39/41 Verifying : tomcat7-webapps-7.0.54-2.jpp6.noarch 40/41 Verifying : perl-Test-Harness-3.17-141.el6_7.1.x86_64 41/41 インストール: tomcat7-admin-webapps.noarch 0:7.0.54-2.jpp6 tomcat7-webapps.noarch 0:7.0.54-2.jpp6 依存性関連をインストールしました: apache-commons-collections-tomcat5.noarch 0:3.2.1-6.jpp6 apache-commons-daemon.noarch 1:1.0.15-1.jpp6 apache-commons-dbcp-tomcat5.noarch 0:1.3.0-0.r830852.4.jpp6 apache-commons-logging.noarch 0:1.1.3-2.jpp6 apache-commons-pool-tomcat5.noarch 0:1.5.7-1.jpp6 apache-taglibs-standard.noarch 0:1.1.2-8.jpp6 at.x86_64 0:3.1.10-48.el6 bc.x86_64 0:1.06.95-1.el6 cvs.x86_64 0:1.11.23-16.el6 ecj3.noarch 1:3.7-1.jpp6 gdbm-devel.x86_64 0:1.8.0-38.el6 gettext.x86_64 0:0.17-18.el6 java-1.5.0-gcj.x86_64 0:1.5.0.0-29.1.el6 java-cup.noarch 2:0.11-0.a.3.jpp6 libart_lgpl.x86_64 0:2.3.20-5.1.el6 libgcj.x86_64 0:4.4.7-16.el6 man.x86_64 0:1.6f-32.el6 patch.x86_64 0:2.6-6.el6 pax.x86_64 0:3.4-10.1.el6 perl-CGI.x86_64 0:3.51-141.el6_7.1 perl-ExtUtils-MakeMaker.x86_64 0:6.55-141.el6_7.1 perl-ExtUtils-ParseXS.x86_64 1:2.2003.0-141.el6_7.1 perl-Test-Harness.x86_64 0:3.17-141.el6_7.1 perl-Test-Simple.x86_64 0:0.92-141.el6_7.1 perl-devel.x86_64 4:5.10.1-141.el6_7.1 redhat-lsb-core.x86_64 0:4.0-7.el6.centos sinjdoc.x86_64 0:0.5-9.1.el6 time.x86_64 0:1.7-38.el6 tomcat6-jsp-2.1-api.noarch 0:6.0.33-2.jpp6 tomcat6-servlet-2.5-api.noarch 0:6.0.33-2.jpp6 tomcat7.noarch 0:7.0.54-2.jpp6 tomcat7-el-2.2-api.noarch 0:7.0.54-2.jpp6 tomcat7-jsp-2.2-api.noarch 0:7.0.54-2.jpp6 tomcat7-lib.noarch 0:7.0.54-2.jpp6 tomcat7-servlet-3.0-api.noarch 0:7.0.54-2.jpp6 xalan-j2.noarch 0:2.7.1-8.jbossorg_1.jpp6 xz.x86_64 0:4.999.9-0.5.beta.20091007git.el6 xz-lzma-compat.x86_64 0:4.999.9-0.5.beta.20091007git.el6 zip.x86_64 0:3.0-1.el6_7.1 完了しました!
今度はうまくインストールされました。
Apacheとの連携
↓ちなみにApacheのインストールついては別記事上げてます
【CentOS6】Apache2.2インストール&設定 - 忘備録
モジュールの追加
# 無効(コメントアウト)になっていないことを確認
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
プロキシ設定
まずはApache側。
httpd.confに書いても良いみたいですが、自分はバーチャルホストを設定しているため、そちらの設定ファイルに記述しました。
/etc/httpd/conf.d/vhosts/example.conf
<VirtualHost *:80> ServerName example.co.jp #〜〜〜〜〜〜(中略)〜〜〜〜〜〜〜〜 # サーバのルートに対する接続を、8009ポートに転送するという設定 <Location /> ProxyPass ajp://localhost:8009/ </Location> </VirtualHost>
続いてTomcat側。
/etc/tomcat7/server.xml
<!-- 無効(コメントアウト)になっていないこと確認 --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Tomcatの起動と自動起動設定
# 起動 $ service tomcat7 start Starting tomcat7: [ OK ] # 自動起動設定の確認 $ chkconfig | grep tomcat7 tomcat7 0:off 1:off 2:off 3:off 4:off 5:off 6:off # 自動起動をON $ chkconfig tomcat7 on # 確認 $ chkconfig | grep tomcat7 tomcat7 0:off 1:off 2:on 3:on 4:on 5:on 6:off
本来ここまでくれば、tomcatにアクセスできるのですが、あることをしないと今回の手順ではコンパイルエラーで動きません。
/var/log/tomcat7/catalina.out
3 03, 2016 11:37:27 午後 org.apache.jasper.compiler.JDTCompiler$1 findType 重大: Compilation error org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException at org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader.<init>(Unknown Source) at org.apache.jasper.compiler.JDTCompiler$1.findType(JDTCompiler.java:231) at org.apache.jasper.compiler.JDTCompiler$1.findType(JDTCompiler.java:187) at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(Unknown Source) at org.eclipse.jdt.internal.compiler.lookup.UnresolvedReferenceBinding.resolve(Unknown Source) at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.resolveType(Unknown Source) at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getTypeFromTypeSignature(Unknown Source) at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getTypeFromVariantTypeSignature(Unknown Source) at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getTypeArgumentsFromSignature(Unknown Source) at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getTypeFromTypeSignature(Unknown Source) at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.createMethod(Unknown Source) at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.createMethods(Unknown Source) at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.cachePartsFrom(Unknown Source) at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.createBinaryTypeFrom(Unknown Source) at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.createBinaryTypeFrom(Unknown Source) at org.eclipse.jdt.internal.compiler.Compiler.accept(Unknown Source) at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(Unknown Source) at org.eclipse.jdt.internal.compiler.lookup.UnresolvedReferenceBinding.resolve(Unknown Source) at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.resolveType(Unknown Source) at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(Unknown Source) at org.eclipse.jdt.internal.compiler.lookup.Scope.getPackage(Unknown Source) at org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference.internalResolveLeafType(Unknown Source) at org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference.internalResolveType(Unknown Source) at org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference.resolveType(Unknown Source) at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.resolveTypeFor(Unknown Source) at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.fields(Unknown Source) at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.faultInTypesForFieldsAndMethods(Unknown Source) at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInTypes(Unknown Source) at org.eclipse.jdt.internal.compiler.Compiler.process(Unknown Source) at org.eclipse.jdt.internal.compiler.Compiler.compile(Unknown Source) at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:466) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:378) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:353) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:340) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:657) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:213) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:193) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)
調べてるうちに↓の記事に行き着き
CentOS6にJDK8・Tomcat7の環境を構築した時に詰まった話 | hacknote
いろいろ調べてみたところ、 Tomcat 7.0.54ではecjのバージョンを4系にする必要があるようでした。
出ているエラーの内容は違うようでしたが、原因は同じみたいで上記サイトを参考に対応したら動きました。
対応例
$ cd /usr/share/java/tomcat7 $ ls -la | grep ecj lrwxrwxrwx. 1 root root 24 3月 3 21:45 2016 [ecj3].jar -> /usr/share/java/ecj3.jar -rw-r--r--. 1 root root 1155139 7月 30 16:59 2014 ecj3-7.0.54.jar lrwxrwxrwx. 1 root root 15 3月 3 21:45 2016 ecj3.jar -> ecj3-7.0.54.jar # 消すのは怖いので古いecjを退避 $ mkdir bk $ mv [ecj3].jar bk $ mv ecj3-7.0.54.jar bk $ mv ecj3.jar bk # ecj4.4を入手 $ wget http://central.maven.org/maven2/org/eclipse/jdt/core/compiler/ecj/4.4/ecj-4.4.jar --2016-03-03 23:27:15-- http://central.maven.org/maven2/org/eclipse/jdt/core/compiler/ecj/4.4/ecj-4.4.jar central.maven.org をDNSに問いあわせています... 23.235.47.209 central.maven.org|23.235.47.209|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 2298872 (2.2M) [application/java-archive] `ecj-4.4.jar' に保存中 100%[==================================================================================>] 2,298,872 208K/s 時間 9.3s 2016-03-03 23:27:25 (242 KB/s) - `ecj-4.4.jar' へ保存完了 [2298872/2298872]
tomcatを再起動してサーバにアクセスしてみます。
やっとこうまくいきました。
たぶん無理くりtomcat7入れたせいで依存関係が正しく解決できてないみたいです。
起動スクリプトのバージョン確認もうまくいきませんでした。
$ service tomcat7 version
Error: Could not find or load main class org.apache.catalina.util.ServerInfo
とりあえず動いたので、これについては後日調査します。
Tomcatマネージャの設定
Tomcatの管理ページへの認証設定を記述。
<tomcat-users> <role rolename="manager-gui"/> <user username="tomcat" password="password" roles="manager-gui"/> </tomcat-users>
http://domain/manager/ にアクセスしてみます。
tomcat-users.xmlに設定したusernameとpasswordで認証をします。
管理ページにアクセスできます。
管理ページではGUIベースでデプロイやステータスのチェックなどができます。
ロールについて
Tomcat7管理ページのロールには以下のものがあります。
ロール | 概要 |
---|---|
manager-gui | allows access to the HTML GUI and the status pages |
manager-status | allows access to the status pages only |
manager-script | allows access to the text interface and the status pages |
manager-jmx | allows access to the JMX proxy and the status pages |
admin-gui | allows access to the HTML GUI |
admin-script | allows access to the text interface |
参考
ベリーキュート Blog » Blog Archive » Tomcat 7 インストールと設定
Apache側の設定 - Tomcatとの連携(mod_proxy_ajp) - Apache入門
CentOS6にJDK8・Tomcat7の環境を構築した時に詰まった話 | hacknote
【CentOS6】ログ監視ツール
logwatch
logwatchは定期的にログのサマリーをメールで送ってくれるツールです。
導入することで、日々大量に吐かれるログから必要な情報だけをサマリーしてくれるため、ログの監視がぐっと楽になると思います。
インストール
$ yum search logwatch 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile epel/metalink | 4.7 kB 00:00 * base: ftp.iij.ad.jp * epel: ftp.jaist.ac.jp * extras: ftp.iij.ad.jp * rpmforge: ftp.kddilabs.jp * updates: ftp.iij.ad.jp base | 3.7 kB 00:00 epel | 4.3 kB 00:00 epel/primary_db | 5.8 MB 00:03 extras | 3.4 kB 00:00 rpmforge | 1.9 kB 00:00 updates | 3.4 kB 00:00 ========================================================================== N/S Matched: logwatch ========================================================================== dmraid-events-logwatch.x86_64 : dmraid logwatch-based email reporting hostapd-logwatch.x86_64 : Logwatch scripts for hostapd fwlogwatch.x86_64 : Firewall log analyzer, report generator and realtime response agent logwatch.noarch : A log file analysis program Name and summary matches only, use "search all" for everything. $ yum install -y log watch 読み込んだプラグイン:fastestmirror インストール処理の設定をしています Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * epel: mirrors.hustunique.com * extras: ftp.iij.ad.jp * rpmforge: ftp.kddilabs.jp * updates: ftp.iij.ad.jp パッケージ log は利用できません。 パッケージ watch は利用できません。 エラー: 何もしません $ yum install -y logwatch 読み込んだプラグイン:fastestmirror インストール処理の設定をしています Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * epel: mirrors.hustunique.com * extras: ftp.iij.ad.jp * rpmforge: ftp.kddilabs.jp * updates: ftp.iij.ad.jp 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> Package logwatch.noarch 0:7.3.6-52.el6 will be インストール --> 依存性の処理をしています: perl(strict) のパッケージ: logwatch-7.3.6-52.el6.noarch --> 依存性の処理をしています: perl(POSIX) のパッケージ: logwatch-7.3.6-52.el6.noarch --> 依存性の処理をしています: perl(Getopt::Long) のパッケージ: logwatch-7.3.6-52.el6.noarch --> 依存性の処理をしています: perl(File::Temp) のパッケージ: logwatch-7.3.6-52.el6.noarch --> 依存性の処理をしています: perl(Exporter) のパッケージ: logwatch-7.3.6-52.el6.noarch --> 依存性の処理をしています: perl(Date::Manip) のパッケージ: logwatch-7.3.6-52.el6.noarch --> 依存性の処理をしています: /usr/bin/perl のパッケージ: logwatch-7.3.6-52.el6.noarch --> トランザクションの確認を実行しています。 ---> Package perl.x86_64 4:5.10.1-141.el6_7.1 will be インストール --> 依存性の処理をしています: perl-libs = 4:5.10.1-141.el6_7.1 のパッケージ: 4:perl-5.10.1-141.el6_7.1.x86_64 --> 依存性の処理をしています: perl-libs のパッケージ: 4:perl-5.10.1-141.el6_7.1.x86_64 --> 依存性の処理をしています: perl(version) のパッケージ: 4:perl-5.10.1-141.el6_7.1.x86_64 --> 依存性の処理をしています: perl(Pod::Simple) のパッケージ: 4:perl-5.10.1-141.el6_7.1.x86_64 --> 依存性の処理をしています: perl(Module::Pluggable) のパッケージ: 4:perl-5.10.1-141.el6_7.1.x86_64 --> 依存性の処理をしています: libperl.so()(64bit) のパッケージ: 4:perl-5.10.1-141.el6_7.1.x86_64 ---> Package perl-Date-Manip.noarch 0:6.24-1.el6 will be インストール --> 依存性の処理をしています: perl(YAML::Syck) のパッケージ: perl-Date-Manip-6.24-1.el6.noarch --> トランザクションの確認を実行しています。 ---> Package perl-Module-Pluggable.x86_64 1:3.90-141.el6_7.1 will be インストール ---> Package perl-Pod-Simple.x86_64 1:3.13-141.el6_7.1 will be インストール --> 依存性の処理をしています: perl(Pod::Escapes) >= 1.04 のパッケージ: 1:perl-Pod-Simple-3.13-141.el6_7.1.x86_64 ---> Package perl-YAML-Syck.x86_64 0:1.07-4.el6 will be インストール ---> Package perl-libs.x86_64 4:5.10.1-141.el6_7.1 will be インストール ---> Package perl-version.x86_64 3:0.77-141.el6_7.1 will be インストール --> トランザクションの確認を実行しています。 ---> Package perl-Pod-Escapes.x86_64 1:1.04-141.el6_7.1 will be インストール --> 依存性解決を終了しました。 依存性を解決しました =========================================================================================================================================================================== パッケージ アーキテクチャ バージョン リポジトリー 容量 =========================================================================================================================================================================== インストールしています: logwatch noarch 7.3.6-52.el6 base 302 k 依存性関連でのインストールをします。: perl x86_64 4:5.10.1-141.el6_7.1 updates 10 M perl-Date-Manip noarch 6.24-1.el6 base 1.4 M perl-Module-Pluggable x86_64 1:3.90-141.el6_7.1 updates 40 k perl-Pod-Escapes x86_64 1:1.04-141.el6_7.1 updates 33 k perl-Pod-Simple x86_64 1:3.13-141.el6_7.1 updates 213 k perl-YAML-Syck x86_64 1.07-4.el6 base 75 k perl-libs x86_64 4:5.10.1-141.el6_7.1 updates 579 k perl-version x86_64 3:0.77-141.el6_7.1 updates 52 k トランザクションの要約 =========================================================================================================================================================================== インストール 9 パッケージ 総ダウンロード容量: 13 M インストール済み容量: 47 M パッケージをダウンロードしています: (1/9): logwatch-7.3.6-52.el6.noarch.rpm | 302 kB 00:00 (2/9): perl-5.10.1-141.el6_7.1.x86_64.rpm | 10 MB 00:03 (3/9): perl-Date-Manip-6.24-1.el6.noarch.rpm | 1.4 MB 00:01 (4/9): perl-Module-Pluggable-3.90-141.el6_7.1.x86_64.rpm | 40 kB 00:00 (5/9): perl-Pod-Escapes-1.04-141.el6_7.1.x86_64.rpm | 33 kB 00:00 (6/9): perl-Pod-Simple-3.13-141.el6_7.1.x86_64.rpm | 213 kB 00:00 (7/9): perl-YAML-Syck-1.07-4.el6.x86_64.rpm | 75 kB 00:00 (8/9): perl-libs-5.10.1-141.el6_7.1.x86_64.rpm | 579 kB 00:00 (9/9): perl-version-0.77-141.el6_7.1.x86_64.rpm | 52 kB 00:00 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 合計 1.4 MB/s | 13 MB 00:09 rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションのテストを成功しました トランザクションを実行しています インストールしています : 1:perl-Pod-Escapes-1.04-141.el6_7.1.x86_64 1/9 インストールしています : 1:perl-Module-Pluggable-3.90-141.el6_7.1.x86_64 2/9 インストールしています : 3:perl-version-0.77-141.el6_7.1.x86_64 3/9 インストールしています : 4:perl-libs-5.10.1-141.el6_7.1.x86_64 4/9 インストールしています : 1:perl-Pod-Simple-3.13-141.el6_7.1.x86_64 5/9 インストールしています : 4:perl-5.10.1-141.el6_7.1.x86_64 6/9 インストールしています : perl-YAML-Syck-1.07-4.el6.x86_64 7/9 インストールしています : perl-Date-Manip-6.24-1.el6.noarch 8/9 インストールしています : logwatch-7.3.6-52.el6.noarch 9/9 Verifying : 1:perl-Pod-Simple-3.13-141.el6_7.1.x86_64 1/9 Verifying : 1:perl-Pod-Escapes-1.04-141.el6_7.1.x86_64 2/9 Verifying : perl-Date-Manip-6.24-1.el6.noarch 3/9 Verifying : logwatch-7.3.6-52.el6.noarch 4/9 Verifying : 1:perl-Module-Pluggable-3.90-141.el6_7.1.x86_64 5/9 Verifying : perl-YAML-Syck-1.07-4.el6.x86_64 6/9 Verifying : 3:perl-version-0.77-141.el6_7.1.x86_64 7/9 Verifying : 4:perl-libs-5.10.1-141.el6_7.1.x86_64 8/9 Verifying : 4:perl-5.10.1-141.el6_7.1.x86_64 9/9 インストール: logwatch.noarch 0:7.3.6-52.el6 依存性関連をインストールしました: perl.x86_64 4:5.10.1-141.el6_7.1 perl-Date-Manip.noarch 0:6.24-1.el6 perl-Module-Pluggable.x86_64 1:3.90-141.el6_7.1 perl-Pod-Escapes.x86_64 1:1.04-141.el6_7.1 perl-Pod-Simple.x86_64 1:3.13-141.el6_7.1 perl-YAML-Syck.x86_64 0:1.07-4.el6 perl-libs.x86_64 4:5.10.1-141.el6_7.1 perl-version.x86_64 3:0.77-141.el6_7.1 完了しました!
設定
デフォルトの設定ファイルは
/usr/share/logwatch/default.conf/logwatch.conf
で、独自に設定を変えたい場合は以下ファイルを変更する。
/etc/logwatch/conf/logwatch.conf
ちなみに、デフォルトから変更したい項目だけ記述しておけば良いです。
自分の場合は以下を変えました。
# デフォルトだとrootだが、gmail宛に飛ばすように変更 MailTo = sample@gmail.com # デフォルトのメールクライアントのsendmailからmailxに変更 mailer = "mailx -t"
基本的な運用はcronでの日次実行(logwatchインストール時に/etc/cron.daily/0logwatchが作成される)になる。
なお、テストなどのために即時実行したい場合はlogwatchコマンドを叩けばよい。
$ logwatch You have old files in your logwatch tmpdir (/var/cache/logwatch): logwatch.dbppTw6E logwatch.sAUaElla The directories listed above were most likely created by a logwatch run that failed to complete successfully. If so, you may delete these directories. Ignoring header field "MIME-Version: 1.0" Ignoring header field "Content-Transfer-Encoding: 7bit" Ignoring header field "Content-Type: text/plain; charset="iso-8859-1""
そして、以下のようなサマリがメールで飛んでくる。
################### Logwatch 7.3.6 (05/19/07) #################### Processing Initiated: Fri Feb 26 03:27:03 2016 Date Range Processed: yesterday ( 2016-Feb-25 ) Period is day. Detail Level of Output: 0 Type of Output: unformatted Logfiles for Host: localhost.localdomain ################################################################## --------------------- clam-update Begin ------------------------ Last ClamAV update process started at Thu Feb 25 03:43:01 2016 Last Status: main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo) Downloading daily-21407.cdiff [100%] Downloading daily-21408.cdiff [100%] Downloading daily-21409.cdiff [100%] Downloading daily-21410.cdiff [100%] daily.cld updated (version: 21410, sigs: 1854558, f-level: 63, builder: neo) bytecode.cvd is up to date (version: 271, sigs: 47, f-level: 63, builder: anvilleg) Database updated (4278830 signatures) from database.clamav.net (IP: 27.96.54.66) ---------------------- clam-update End ------------------------- --------------------- pam_unix Begin ------------------------ sshd: Authentication Failures: unknown (xxxxxxxxxxx.xxx.ftth.sample.com): 1 Time(s) Invalid Users: Unknown Account: 1 Time(s) su-l: Sessions Opened: hoge -> root: 5 Time(s) ---------------------- pam_unix End ------------------------- --------------------- Postfix Begin ------------------------ 5.380M Bytes accepted 5,641,489 8.114K Bytes delivered 8,309 ======== ================================================ 22 Accepted 100.00% -------- ------------------------------------------------ 22 Total 100.00% ======== ================================================ 1 Removed from queue 3 Delivered 21 Deferred 310 Deferrals 1220 Connection failure (outbound) ---------------------- Postfix End ------------------------- --------------------- SSHD Begin ------------------------ Illegal users from: XXX.XXX.XXX.XXX (xxxxxxxxxxx.xxx.ftth.sample.com): 1 time Users logging in through sshd: hoge: XXX.XXX.XXX.XXX (xxxxxxxxxxx.xxx.ftth.sample.com): 4 times XXX.XXX.XXX.XXX (xxxxxxxxxxx.xxx.ftth.sample.com): 1 time Received disconnect: 11: disconnected by user : 5 Time(s) ---------------------- SSHD End ------------------------- --------------------- yum Begin ------------------------ Packages Installed: 1:perl-Pod-Simple-3.13-141.el6_7.1.x86_64 4:perl-libs-5.10.1-141.el6_7.1.x86_64 perl-YAML-Syck-1.07-4.el6.x86_64 1:perl-Module-Pluggable-3.90-141.el6_7.1.x86_64 logwatch-7.3.6-52.el6.noarch 1:perl-Pod-Escapes-1.04-141.el6_7.1.x86_64 4:perl-5.10.1-141.el6_7.1.x86_64 perl-Date-Manip-6.24-1.el6.noarch 3:perl-version-0.77-141.el6_7.1.x86_64 ---------------------- yum End ------------------------- --------------------- Disk Space Begin ------------------------ Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 50G 1.3G 46G 3% / /dev/sda1 477M 57M 395M 13% /boot /dev/mapper/VolGroup-lv_home 240G 60M 228G 1% /home ---------------------- Disk Space End ------------------------- ###################### Logwatch End #########################
特に、Linuxのpam認証に関する「pam_unix」やssh認証に関する「SSHD」セキュリティに関する重要な情報なので、有用ですね。
参考
Logwatchでサーバ監視レポート - エーエイチレフ linuxサーバー技術情報
swatch
任意のログをリアルタイムにチェックしたり、メッセージのパターンを検知してメールを投げたりできるツールです。
インストール
前提として、EPELリポジトリの登録が必要です。
【CentOS6】サードパーティリポジトリの追加 - 忘備録
yum install -y swatch 読み込んだプラグイン:fastestmirror インストール処理の設定をしています Loading mirror speeds from cached hostfile epel/metalink | 5.1 kB 00:00 * base: ftp.iij.ad.jp * epel: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * rpmforge: ftp.kddilabs.jp * updates: ftp.iij.ad.jp base | 3.7 kB 00:00 epel | 4.3 kB 00:00 extras | 3.4 kB 00:00 rpmforge | 1.9 kB 00:00 updates | 3.4 kB 00:00 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> Package swatch.noarch 0:3.2.3-7.el6 will be インストール --> 依存性の処理をしています: perl(Time::HiRes) のパッケージ: swatch-3.2.3-7.el6.noarch --> 依存性の処理をしています: perl(Date::Parse) のパッケージ: swatch-3.2.3-7.el6.noarch --> 依存性の処理をしています: perl(Date::Format) のパッケージ: swatch-3.2.3-7.el6.noarch --> 依存性の処理をしています: perl(Date::Calc) のパッケージ: swatch-3.2.3-7.el6.noarch --> トランザクションの確認を実行しています。 ---> Package perl-Date-Calc.noarch 0:6.3-2.el6 will be インストール --> 依存性の処理をしています: perl(Bit::Vector) >= 7.1 のパッケージ: perl-Date-Calc-6.3-2.el6.noarch --> 依存性の処理をしています: perl(Carp::Clan) のパッケージ: perl-Date-Calc-6.3-2.el6.noarch --> 依存性の処理をしています: perl(Bit::Vector) のパッケージ: perl-Date-Calc-6.3-2.el6.noarch ---> Package perl-Time-HiRes.x86_64 4:1.9721-141.el6_7.1 will be インストール ---> Package perl-TimeDate.noarch 1:1.16-13.el6 will be インストール --> トランザクションの確認を実行しています。 ---> Package perl-Bit-Vector.x86_64 0:7.1-2.el6 will be インストール ---> Package perl-Carp-Clan.noarch 0:6.03-2.el6 will be インストール --> 依存性解決を終了しました。 依存性を解決しました ============================================================================================================== パッケージ アーキテクチャ バージョン リポジトリー 容量 ============================================================================================================== インストールしています: swatch noarch 3.2.3-7.el6 epel 49 k 依存性関連でのインストールをします。: perl-Bit-Vector x86_64 7.1-2.el6 base 169 k perl-Carp-Clan noarch 6.03-2.el6 base 25 k perl-Date-Calc noarch 6.3-2.el6 base 210 k perl-Time-HiRes x86_64 4:1.9721-141.el6_7.1 updates 49 k perl-TimeDate noarch 1:1.16-13.el6 base 37 k トランザクションの要約 ============================================================================================================== インストール 6 パッケージ 総ダウンロード容量: 539 k インストール済み容量: 1.4 M パッケージをダウンロードしています: (1/6): perl-Bit-Vector-7.1-2.el6.x86_64.rpm | 169 kB 00:00 (2/6): perl-Carp-Clan-6.03-2.el6.noarch.rpm | 25 kB 00:00 (3/6): perl-Date-Calc-6.3-2.el6.noarch.rpm | 210 kB 00:00 (4/6): perl-Time-HiRes-1.9721-141.el6_7.1.x86_64.rpm | 49 kB 00:00 (5/6): perl-TimeDate-1.16-13.el6.noarch.rpm | 37 kB 00:01 (6/6): swatch-3.2.3-7.el6.noarch.rpm | 49 kB 00:00 -------------------------------------------------------------------------------------------------------------- 合計 144 kB/s | 539 kB 00:03 rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションのテストを成功しました トランザクションを実行しています インストールしています : perl-Carp-Clan-6.03-2.el6.noarch 1/6 インストールしています : perl-Bit-Vector-7.1-2.el6.x86_64 2/6 インストールしています : perl-Date-Calc-6.3-2.el6.noarch 3/6 インストールしています : 4:perl-Time-HiRes-1.9721-141.el6_7.1.x86_64 4/6 インストールしています : 1:perl-TimeDate-1.16-13.el6.noarch 5/6 インストールしています : swatch-3.2.3-7.el6.noarch 6/6 Verifying : perl-Carp-Clan-6.03-2.el6.noarch 1/6 Verifying : perl-Bit-Vector-7.1-2.el6.x86_64 2/6 Verifying : perl-Date-Calc-6.3-2.el6.noarch 3/6 Verifying : swatch-3.2.3-7.el6.noarch 4/6 Verifying : 1:perl-TimeDate-1.16-13.el6.noarch 5/6 Verifying : 4:perl-Time-HiRes-1.9721-141.el6_7.1.x86_64 6/6 インストール: swatch.noarch 0:3.2.3-7.el6 依存性関連をインストールしました: perl-Bit-Vector.x86_64 0:7.1-2.el6 perl-Carp-Clan.noarch 0:6.03-2.el6 perl-Date-Calc.noarch 0:6.3-2.el6 perl-Time-HiRes.x86_64 4:1.9721-141.el6_7.1 perl-TimeDate.noarch 1:1.16-13.el6 完了しました!
デーモン起動スクリプト
毎回手動でswatchを起動するのは手間なので、起動スクリプトを作成します。
[2016.02.29] スクリプトに不具合があったので修正しました。詳しくはソースのコメントを参照
/etc/rc.d/init.d/swatch
#!/bin/sh # # swatch # # chkconfig: 2345 90 35 # description: swatch start/stop script # . /etc/rc.d/init.d/functions #[ ! -d /var/log/swatch ] && mkdir -p /var/log/swatch PATH=/bin:/sbin:/usr/bin:/usr/sbin start() { ls /var/run/swatch_*.pid 1> /dev/null 2>&1 if [ $? -ne 0 ]; then pno=0 RET=0 conflist=`ls /etc/swatch/conf/*.conf` if [ $? -ne 0 ]; then exit 1 fi for conf in $conflist do log=`basename $conf | cut -d\. -f1` logPath=`find /var/log/ -type f -regex ".*/$log"` [ ! -n "$logPath" ] && logPath=`find /var/log/ -type f -regex ".*/$log.log"` if [ -n "$logPath" ]; then pno=`expr $pno + 1` # [2016.02.29] --script-dirオプションを追加しました。 # この指定がないとスクリプト停止時に.swatch_script.*ファイルが削除されず、ホームディレクトリに溜まっていってしまいます。 swatch -c $conf -t "$logPath" --daemon \ --script-dir=/tmp/ \ --pid-file /var/run/swatch_$pno.pid 1>> /var/log/swatch.log 2>& 1 RET=$? [ $RET != 0 ] && return $RET else echo -n "error: not found log file" exit 1 fi done if [ $pno -gt 0 ]; then echo [ $RET = 0 ] && touch /var/lock/subsys/swatch fi echo -n "Starting swatch" return $RET else echo -n "swatch already started" fi } stop() { ls /var/run/swatch_*.pid 1> /dev/null 2>&1 if [ $? -eq 0 ]; then echo -n "Stopping swatch" for pid in /var/run/swatch_*.pid do kill $(cat $pid) rm -f $pid done echo rm -f /var/lock/subsys/swatch /tmp/.swatch_script.* else echo -n "swatch is not starting" fi } status() { ls /var/run/swatch_*.pid 1> /dev/null 2>&1 if [ $? -eq 0 ]; then echo -n "swatch (pid" for pid in /var/run/swatch_*.pid do echo -n " `cat $pid`" done echo ") is running" else echo -n "swatch is stopped" fi } case "$1" in start) start;; stop) stop;; restart)stop && start;; status) status;; *) echo "Usage: swatch {start|stop|restart|status}" && exit 1;; esac exit $RET
スクリプトの概要は以下です。
- /etc/swatch/conf/ 配下にある「*.conf」ファイルをswatchの-cオプションの引数にする
- /var/log/{上記の設定ファイルの拡張子(.conf)を抜いたもの} をswatchの-tオプションの引数にする
- /var/log/{上記の設定ファイルの拡張子(.conf)を抜いたもの}がない場合、{左記に.logを加えたもの} をswatchの-tオプションの引数にする
- 「echo」アクションの出力先を /var/log/swatch.log にする
文だとイマイチ分からないので例を挙げると
/etc/swatch/conf/secure.conf と /etc/swatch/conf/yum.conf という設定ファイルがあった場合、
swatch -c secure.conf -t secure
と
swatch -c yum.conf -t yum.log
が実行されます。
実行と自動起動設定
とりあえず実行
$ service swatch start
起動スクリプトとして登録して。。。
$ chkconfig --add swatch
OS起動時にスクリプトが起動するように設定しておきます。
$ chkconfig swatch on
確認
$ chkconfig | grep swatch swatch 0:off 1:off 2:on 3:on 4:on 5:on 6:off
設定
swatchの設定ファイルは監視するログファイルごとに、以下ディレクトリに作る
/etc/swatch/conf/
/etc/swatch/conf/secure.conf
##login watchfor /su(pam_unix)|session opened for user root/i echo pipe "mail -s 'TELNET_Session_Opend_Log (root)' sample@gmail.com" ##ftp watchfor /ftp.*session opened/i echo pipe "mail -s 'FTP_Session_Opend_Log' sample@gmail.com" ##ssh watchfor /sshd.*session opened/i echo pipe "mail -s SSH_Session_Opend_Log sample@gmail.com"
swatchの設定ファイルの書式は以下です。
watchfor /パターン/ アクション
設定されたパターンが監視対象のログファイルに出力されると、アクションが実行されます。
ちなみにパターンはPerlの正規表現で「/パターン/i」と i をつけることで大文字・小文字を無視することができます。
アクションには以下のように、いくらか種類があります。
アクション | 概要 |
---|---|
echo | 検索パターンにマッチした行を標準出力に渡す。 |
検索パターンにマッチした行をメール通知する。 | |
pipe | 検索パターンにマッチした行をパイプを通して外部コマンドに渡す。 |
threshold | 連続してマッチした行の表示を指定回数になるまで表示しないようにする。 |
throttle | 連続してマッチした行の検出を一定時間抑止する。 |
mailというメールで通知するためのアクションが用意されているのですが、例で挙げているsecure.confのアクションはpipeを使っており、ログ出力をmailコマンドに渡しています。
なぜこんな面倒をしているかというと、mailアクションでは内部的にsendmailが利用されていて、sendmailだと都合が悪いため(理由は割愛)mailコマンドを利用するようにしています。
参考
サーバのログを監視するSwatchの導入方法と使い方を解説 | OXY NOTES
Swatchによるリアルタイムログ監視システムを構築する【前編】 | 情シスハック
Linuxexpert - Swatchパターン&ルール記述例-Tips/Swatchパターン&ルール記述例-PukiWiki
ドットコマンドと直接スクリプトを実行した時の違い - Webエンジニアの技術メモ 〜PHP、SQL、Linuxなど〜
/var/lock/subsys/について - さよならインターネット
[swatch: ログ監視] Debian Linux Server
。。。今回初めて起動スクリプトを独自に書いたんで、とても勉強になりました。
半分コピペですが
【CentOS6】サードパーティリポジトリの追加
よく使われると思われるEPELとRPMforgeリポジトリの追加方法をメモしておく
EPELリポジトリの追加
# 電子署名の公開鍵取得 $ rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6 # EPELリポジトリの取得 # -i: インストール # -v (-iに対するオプション): 操作対象のパッケージ名 # -h (-iに対するオプション): 進捗状況(#によるインジケータ)の表示 $ rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm を取得中 準備中... ########################################### [100%] 1:epel-release ########################################### [100%]
RPMforgeリポジトリの追加
# 電子署名の公開鍵取得 $ rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt # RPMforgeリポジトリの取得 # -i: インストール # -v (-iに対するオプション): 操作対象のパッケージ名 # -h (-iに対するオプション): 進捗状況(#によるインジケータ)の表示 $ rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm を取得中 準備中... ########################################### [100%] 1:rpmforge-release ########################################### [100%]
その他リポジトリについて
AdditionalResources/Repositories - CentOS Wiki
参考
【CentOS6】ログファイルについて調べてみた
本気でサーバを勉強し始めたので、ログについて学ぶことにしました。
rsyslogについて
CentOS6ではrsyslogdというデーモンによって大概のログファイルが管理されています。
設定ファイルは /etc/rsyslog.conf にあり、この設定を変更することでログの主力先やログレベルなどを変更することができます。
この記事に書いてあることは、rsyslog.confがデフォルトの場合のお話であります。
/var/log/ 以下にあるファイル
rsyslogdはデフォルトの設定で /var/log/ 配下にログを吐きます。
また、rsyslogdを使わずに独自にログを吐き出すパッケージも大概このディレクト配下にログを吐くようになっていると思います。
audit/audit.log
カーネルに対して発行されるシステム・コールのすべてを監視するauditdのログ。
SELinuxポリシーに対する違反などを記録している。
anaconda.~
- anaconda.ifcfg.log
- anaconda.log
- anaconda.program.log
- anaconda.storage.log
- anaconda.syslog
- anaconda.xlog
- anaconda.yum.log
RHELやFedoraのインストーラであるanacodaのログファイルたち。
ちなみに、インストールに関するログは上記のほかに、/root/install.log や /root/install.log.syslog がある。
/root/install.log
インストールされたソフトウェア・パッケージのリストが含まれる。
/root/install.log.syslog
インストールで生成されたsyslogメッセージが含まれる。
boot.log
サービスの起動/停止に関するログ。
btmp
ログイン(失敗)に関するログ。
バイナリ。
lastbコマンドを利用してみることができる。
clamav/clamd.log
clamavのウィルススキャン実行ログ。
ちなみにclamavディレクト及びその配下にあるファイルは、clamavによって管理されているので、インストールしていなかったり、clamavの設定次第では存在しないはずです。
clamav/freshclam.log
clamavのデータベース更新ログ。
cron
cronの実行ログ。
cron-yyyymmdd
ローテートされたcron。
dmesg
システム起動時からファイルシステムがマウントされる時点までの間にカーネルが出力したメッセージが記録されているファイル。
dmesg.old
ローテートされたdmesg。
dracut.log
lastlog
ユーザごとの最後のログイン情報を記録している。
バイナリファイル。
lastlogコマンドで見ることができる。
maillog
メールサブシステムのログ。
maillog-yyyymmdd
ローテートされたmessagesログ。
messages
システムの汎用ログ。
messages-yyyymmdd
ローテートされたmeesagesログ。
secure
認証関連のログ。
secure-20160222
ローテートされたsecureログ。
spooler
uucp と news の crit 以上 が出力されるログ。
spooler-20160222
ローテートされたspooler。
tallylog
ユーザーごとのログイン失敗回数を記録する。
wtmp
ログインに関するログ。
バイナリ。
lastコマンドもしくはwhoコマンドでみる事ができる。
yum.log
yumによるパッケージ操作のログ。
参考
Audit について学んでみる - いますぐ実践! Linuxシステム管理 / Vol.222
Linux auditdでアクセス拒否されたファイルを探し出す|Engineering のまにまに
Linux、「/var/log/btmp」とはなんぞや?|マコトのおもちゃ箱 ~ぼへぼへ自営業者の技術メモ~
必読!ログファイルとディレクトリ | Think IT(シンクイット)
【Linux】ファイルシステムについて
SUID
Set User IDの略。
SUIDを付与されたファイルやディレクトリは誰が実行しても所有者の権限で実行される。
例えば、passwdコマンドは/etc/shadowに書き込みを行うが、/etc/shadowのパーミッションは以下のようになっている。
例)/etc/shadowファイルのパーミッション
$ ls -l /etc/shadow ----------. 1 root root 776 2月 22 18:25 2016 /etc/shadow
このパーミッションだと、通常rootユーザ以外は書き込みができないはずであるが、passwdコマンドには以下のようにSUIDが与えられているので、一般ユーザが実行しても/etc/shadowに書き込みができる。
例)passwdコマンドのパーミッション
$ ls -l /usr/bin/passwd -rwsr-xr-x. 1 root root 30768 2月 22 20:48 2012 /usr/bin/passwd
SUIDの付与の仕方
chmod 4xxx file
もしくは、chmod u+s file でセットできる。
例)絶対モードでSUIDを付与
$ chmod 4777 fir $ ls -l hoge -rwsrwxrwx. 1 root root 0 2月 23 20:39 2016 fir
ちなみにシェルスクリプトに設定しても効果はない模様。
一般ユーザにルート権限でシェルを実行する方法について − Linux Square − @IT
スクリプトのSUIDビットというのは危なっかしいので無視されるもののようです。
こんなのもあったけど、CentOS6ではできなかった
[Solaris] シェルスクリプトのオーナーをrootにしてsetuidビットをセットしたがroot権限で動作しない - Life with IT
ただし以下のようにスクリプトの最初にオプションを付けることによってこの制限を外すことができる。
Bourneシェルの場合
#!/bin/sh -p
SGID
Set Group IDの略。
SUIDが付与されている場合、所有者の権限で実行されるのに対し、こちらはグループの権限で実行される。
ディレクトリに付与するとそのディレクトリで作成されたファイルは全て同じグループとなるので、複数ユーザで共有するディレクトリに設定するとよい。
SGIDの付与の仕方
chmod 2xxx dir
もしくは、chmod g+s dir でセットできる。
例)絶対モードでSGIDを付与
$ chmod 2777 dir $ ls -l hoge drwxrwsrwx. 2 root root 4096 2月 23 20:03 2016 dir
スティッキービット(Sticky bit)
スティッキービットを付与されたファイルやディレクトリは所有者以外が削除できなくなる。
通常はディレクトリに設定する。
スティッキービットの付与の仕方
chmod 1xxx file
もしくは、chmod o+t file でセットできる。
$ chmod 1777 dir $ ls -l drwxr-xr-t. 2 root root 4096 2月 23 20:08 2016 dir
ちなみに、その他ユーザに実行権限を与えていないと大文字でフラグが立つ。
$ chmod 1006 testdir $ ls -l testdir d------rwT. 2 root root 4096 2月 23 20:06 2016 testdir # その他ユーザに実行権限さえあれば大文字にならない $ chmod 1001 testdir $ ls -l testdir d--------t. 2 root root 4096 2月 23 20:06 2016 testdir
これによって何が嬉しいのかよく分からないので、エロい人教えてください。
【余談】chmodについて
chmodの絶対モード(数字で設定するやつ)って覚えにくいなーとか思ってたんですが、最近になってあの数字が、パーミッションのビットを表してることを教えてもらった。
7(10)
-> 111(2)
=> rwx
6(10)
-> 110
=> rw-
4(10)
-> 100
=> r--
$ chmod 764 file $ ls -l file -rwxrw-r--. 1 root root 0 2月 23 20:14 2016 file
なるほど、分かればシンボリックモード(u+x みたいなやつ)より扱いやすいですね。
てか、もっと早く教えてよ
えっ、自分で気づけって?
デフォルトのパーミッション
作成したファイルやディレクトリのデフォルトのパーミッションはumaskによって決まる。
ファイルは「666」から、ディレクトリは「777」からumaskを差し引いたものがデフォルトのパーミッションになる。
たとえば、umaskが0022の場合
ファイルのパーミッションは
644 (= 666 - (0)022) => -rw-r--r--
ディレクトリのパーミッションは
755 (= 777 - (0)022) => drwxr-xr-x
となる
umaskの確認
umaskコマンドを引数なしで実行すると確認できる。
また -Sオプションを付けるとシンボリックモードで確認できる。
$ umask 0022 $ umask -S u=rwx,g=rx,o=rx
umaskの設定
umaskコマンドに引数を与えて設定。
また、シンボリックモードでも設定可能。
$ umask 0002 # 確認 $ umask 0002 # シンボリックモードで設定 $ umask u=rwx,g=rx,o=rx # 確認 $ umask 0022
ちなみに、umaskの設定はユーザ毎となる。
以下はそのうち更新する。。。
ACL
ファイルの暗号化(GnuPG)
ファイルシステムの暗号化
【CentOS6】サーバをセキュアにするために〜その1〜
ブートローダの設定
更新中。。。
システムの自動更新
自動的にソフトウェアを更新してくれるyum-cronを入れておくとよい
yum-cronのインストール
$ yum install -y yum-cron 読み込んだプラグイン:fastestmirror インストール処理の設定をしています Loading mirror speeds from cached hostfile * base: ftp.riken.jp * extras: ftp.riken.jp * updates: ftp.riken.jp 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> Package yum-cron.noarch 0:3.2.29-69.el6.centos will be インストール --> 依存性解決を終了しました。 依存性を解決しました ================================================================================ パッケージ アーキテクチャ バージョン リポジトリー 容量 ================================================================================ インストールしています: yum-cron noarch 3.2.29-69.el6.centos base 44 k トランザクションの要約 ================================================================================ インストール 1 パッケージ 総ダウンロード容量: 44 k インストール済み容量: 28 k パッケージをダウンロードしています: yum-cron-3.2.29-69.el6.centos.noarch.rpm | 44 kB 00:00 rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションのテストを成功しました トランザクションを実行しています インストールしています : yum-cron-3.2.29-69.el6.centos.noarch 1/1 Verifying : yum-cron-3.2.29-69.el6.centos.noarch 1/1 インストール: yum-cron.noarch 0:3.2.29-69.el6.centos 完了しました! $
yum-cronの設定
yum-cronの設定は以下ファイルに定義されている
/etc/sysconfig/yum-cron
# if MAILTO is set and the mail command is available, the mail command # is used to deliver yum output # by default MAILTO is unset, so crond mails the output by itself # example: MAILTO=root MAILTO=root
今回はデフォルトからMAILTOだけ変更する
yum-cronの起動と自動起動設定
# yum-cronの起動 $ service yum-cron start 夜間 yum 更新の有効化中: [ OK ] # 確認 $ service yum-cron status 夜間 yum 更新が有効です。 # yum-cronの自動起動 $ chkconfig yum-cron on # 確認 $ chkconfig | grep yum-cron yum-cron 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ユーザの管理
sudo
sudoの設定はvisudoコマンド(※)にて行う
※/etc/sudoersは直接編集できない
sudoersファイルの書式
ユーザ名 ホスト名=(実行ユーザ名) [NOPASSWORD:]コマンド
例)hogeユーザにshutdownコマンドを許可する
hoge ALL=(ALL) /sbin/shutdown
例)hogeユーザに全てのコマンド許可する
hoge ALL=(ALL) ALL
パスワード管理
更新中。。。
アンチウィルスソフトの導入
今回はオープンソースのclam AntiVirus(以降clamavとします)を利用します。
インストール
インストールの前提としてEPELリポジトリを追加が必要です。
インストール
$ yum -y install clamd 読み込んだプラグイン:fastestmirror インストール処理の設定をしています Loading mirror speeds from cached hostfile * base: ftp.riken.jp * epel: ftp.riken.jp * extras: ftp.riken.jp * rpmforge: ftp.kddilabs.jp * updates: ftp.riken.jp 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> Package clamd.x86_64 0:0.99-3.el6 will be インストール --> 依存性の処理をしています: clamav = 0.99-3.el6 のパッケージ: clamd-0.99-3.el6.x86_64 --> 依存性の処理をしています: libclamav.so.7(CLAMAV_PUBLIC)(64bit) のパッケージ: clamd-0.99-3.el6.x86_64 --> 依存性の処理をしています: libclamav.so.7(CLAMAV_PRIVATE)(64bit) のパッケージ: clamd-0.99-3.el6.x86_64 --> 依存性の処理をしています: libclamav.so.7()(64bit) のパッケージ: clamd-0.99-3.el6.x86_64 --> トランザクションの確認を実行しています。 ---> Package clamav.x86_64 0:0.99-3.el6 will be インストール --> 依存性の処理をしています: clamav-db = 0.99-3.el6 のパッケージ: clamav-0.99-3.el6.x86_64 --> トランザクションの確認を実行しています。 ---> Package clamav-db.x86_64 0:0.99-3.el6 will be インストール --> 依存性解決を終了しました。 依存性を解決しました ========================================================================================================================================================================== パッケージ アーキテクチャ バージョン リポジトリー 容量 ========================================================================================================================================================================== インストールしています: clamd x86_64 0.99-3.el6 epel 165 k 依存性関連でのインストールをします。: clamav x86_64 0.99-3.el6 epel 1.4 M clamav-db x86_64 0.99-3.el6 epel 102 M トランザクションの要約 ========================================================================================================================================================================== インストール 3 パッケージ 総ダウンロード容量: 104 M インストール済み容量: 106 M パッケージをダウンロードしています: (1/3): clamav-0.99-3.el6.x86_64.rpm | 1.4 MB 00:01 (2/3): clamav-db-0.99-3.el6.x86_64.rpm | 102 MB 00:30 (3/3): clamd-0.99-3.el6.x86_64.rpm | 165 kB 00:00 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 合計 3.1 MB/s | 104 MB 00:33 rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションのテストを成功しました トランザクションを実行しています インストールしています : clamav-db-0.99-3.el6.x86_64 1/3 インストールしています : clamav-0.99-3.el6.x86_64 2/3 インストールしています : clamd-0.99-3.el6.x86_64 3/3 Verifying : clamav-db-0.99-3.el6.x86_64 1/3 Verifying : clamav-0.99-3.el6.x86_64 2/3 Verifying : clamd-0.99-3.el6.x86_64 3/3 インストール: clamd.x86_64 0:0.99-3.el6 依存性関連をインストールしました: clamav.x86_64 0:0.99-3.el6 clamav-db.x86_64 0:0.99-3.el6 完了しました! # 確認 $ clamscan --version ClamAV 0.99/21397/Mon Feb 22 06:37:19 2016
ウィルスデータベースの更新
手動で更新を行う場合は「freshclam」を叩く。
$ freshclam ClamAV update process started at Mon Feb 22 13:13:32 2016 main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo) Downloading daily-21397.cdiff [100%] daily.cld updated (version: 21397, sigs: 1850960, f-level: 63, builder: neo) bytecode.cvd is up to date (version: 271, sigs: 47, f-level: 63, builder: anvilleg) Database updated (4275232 signatures) from database.clamav.net (IP: 203.178.137.175)
ただ、ウィルスデータベースの更新は、clamavをインストールした際、定期実行されるようになっているので、基本的に手動で行う必要はないです。
$ ls -ltr /etc/cron.daily/ #〜〜〜〜〜〜〜〜〜〜(省略)〜〜〜〜〜〜〜〜〜〜〜 -rwxr-xr-x. 1 root root 396 12月 8 05:31 2015 freshclam
デーモンの設定
以下に設定ファイル
/etc/clamd.conf
変更箇所抜粋
# /etc/clamd.conf.defaultは変更前のclamd.conf $ diff /etc/clamd.conf.default /etc/clamd.conf 165,166c165,168 < #ExcludePath ^/proc/ < #ExcludePath ^/sys/ --- > # 以下ディレクトリ配下のファイルにはアクセスできずエラーが大量に発生するためスキャン対象外とする > ExcludePath ^/proc/ > ExcludePath ^/sys/ 195c197,199 < User clam --- > # 作業ユーザで実行するとパーミッション絡みで面倒なので妥協してrootで実行 > User root 290c294,296 < DetectBrokenExecutables yes --- > # 破損ファイルの検出は誤検出が多いそうなので切っておく > DetectBrokenExecutables no
デーモンの起動
$ service clamd start Starting Clam AntiVirus Daemon: [ OK ] # 自動起動も有効にしておく $ chkconfig clamd on $ chkconfig | grep clamd clamd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
スキャン実行
感染したファイルがない場合
$ clamdscan / /: OK ----------- SCAN SUMMARY ----------- Infected files: 0 Time: 215.179 sec (3 m 35 s)
以下サイトからテスト用擬似ウィルスファイルをダウンロードできるので、テストしてみる
$ curl -L -O http://www.eicar.org/download/eicar.com # 確認 $ ls -l /home/hoge/eicar.com -rw-r--r--. 1 root root 68 2月 22 17:25 2016 /home/hoeg/eicar.com eicar.com
感染したファイルがある場合
$ clamdscan / /home/hoge/eicar.com: Eicar-Test-Signature FOUND ----------- SCAN SUMMARY ----------- Infected files: 1 Time: 12.276 sec (0 m 12 s)
なお、clamdscanは前回のスキャンから変更のあったファイルだけ差分でスキャンするため、2回目のスキャン時間は大幅に短縮される
見つかった感染ファイルを自動で削除する場合
# --removeオプションを付けると感染ファイルが見つかった際に自動的に削除してくれる $ clamdscan --remove / /home/hoge/eicar.com: Eicar-Test-Signature FOUND /home/hoge/eicar.com: Removed. ----------- SCAN SUMMARY ----------- Infected files: 1 Time: 12.318 sec (0 m 12 s) # 確認 $ ls -l /home/hoge/eicar.com ls: cannot access /home/hoge/eicar.com: そのようなファイルやディレクトリはありません
定期実行
ウィルススキャンを定期的に実行し、感染ファイルが見つかった場合メールを飛ばす簡単なスクリプトを作成します。
前提としてmailxでメールを飛ばせるものとします。
mailx参考:mktktmr.hatenablog.jp
ウィルススキャン実行スクリプト
clamdscan.sh
#!/bin/sh MAILTO='hoge@sample.com' MAIL_SUBJECT='Virus is detected' SUMMARY=`clamdscan --stdout /` if [ $? -eq 1 ]; then echo "$SUMMARY" | mail -s "$MAIL_SUBJECT" "$MAILTO" fi exit 0
実行権限つけて。。。
$ chmod 700 clamdscan.sh
適当な場所に移動
$ mv clamdscan.sh /root/bin/
cronで定期実行するようにする
$ crontab -e
毎週月曜日の3時に実行
0 3 * * 1 /root/bin/clamdscan.sh > /dev/null 2>&1