:::: MENU ::::
Posts tagged with: CentOS

CentOSにAVGインストール

CentOS 6.3にアンチウィルスソフト「AVG」をインストールした。

ダウンロード

$ wget http://download.avgfree.com/filedir/inst/avg2013flx-r3110-a6015.i386.rpm 

インストール

$ sudo rpm -ivh avg2013flx-r3110-a6015.i386.rpm

OS起動・再起動時に自動起動するように

$ sudo chkconfig avgd on

手動で起動

$ sudo service avgd start Starting avgd [失敗]

手動で定義ファイルアップデート

$ sudo avgupdate /usr/bin/avgupdate: /opt/avg/av/bin/avgupdate: /lib/ld-linux.so.2: bad ELF interpreter: そのようなファイルやディレクトリはありません /usr/bin/avgupdate: line 17: /opt/avg/av/bin/avgupdate: 成功です

何だかエラーで起動しませんねー ld-linux.so.2がないらしいので、インストール

sudo yum install ld-linux.so.2

再度、手動起動

$ sudo service avgd start Starting avgd [ OK ] 

上手く起動したので、ウィルス定義も再度更新

$ sudo avgupdate
AVG command line update Copyright (c) 2013 AVG Technologies CZ

Running update. Initializing... Downloading file: avg13infolx.ctf Analyzing... Downloading file: u13iavi6100u5196nw.bin 1 / 2 16.46 M Downloading file: lx13core2639b2637pe.bin 1 / 2 16.46 M Analyzing... Preparing installation... Updating... 100% [===================================]

Update was successfully completed.

ウィルス定義更新を毎日更新

$ sudo crontab -e 0 0 * * * /usr/bin/avgupdate > /root/avgupdate.log 2>&1

これで準備は整いました。

ウィルススキャン

まずは、homeディレクトリでもスキャンしてみる。

$ /usr/bin/avgscan /home

Virus database release date: Tue, 12 Feb 2013 21:21:00 +0900

Files scanned : 4671(4502)
Infections found : 0(0)
PUPs found : 0
Files healed : 0
Warnings reported : 0
Errors reported : 0

tail avgscan.log
Virus database release date: Tue, 12 Feb 2013 21:21:00 +0900

ウィルスチェックを定期的に実行

スキャンするディレクトリを複数指定しますが、/devや/mntは指定しない方がよいでしょう。

$ sudo crontab -e
0 1 * * * /usr/bin/avgscan /home /sbin /bin /usr --report=/root/avg_report.txt > /root/avgscan.log 2>&1

これで、完了です。

ウィルス定義更新とウィルスチェックをcronに登録しましたが、/etc/cron.dailyや/etc/cron.weeklyに自作スクリプト入れても構いません。

私は、/etc/cron.daily下にavg.shのファイルを作りましたけど・・・

こんな感じなので、ご参考まで。


cat /etc/cron.daily/avg.sh

#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
DATE=`date +%Y%m%d`
TARGET="/home /var/www"
REPORT=/var/log/avg.$DATE.txt
LOG=/var/log/avg.$DATE.log

/usr/bin/avgupdate
/usr/bin/avgscan $TARGET --report=$REPORT > $LOG 2>&1


Squirrelmailでログインできない(画面が真っ白)の原因と対策

ウェブメール老舗のSquirrelmailを運用していたが、急にログインが出来ない症状が出たので調査した。

環境

  • OS: CentOS 5.9
  • WebServer: Apache 2.2.3
  • PHP: 5.4.10
  • WebMail: Squirrelmail 1.4.16

不具合の原因

  • 突然、ログインが出来ない
  • ログインページからリダイレクト直後にエラーが表示される
  • ブラウザーによっては、ログインページが真っ白になる

調査

apacheやphpのログを確認したところ、下記のエラーが出ていた。

Fatal error: Call to undefined function session_unregister() in /var/www/html/webmail/functions/global.php on line 244

いろいろ、ググったところ、function/auth.phpとplugins/compatibility/function.php内のfunction sqauth_save_password($pass)関数が競合しているので、どちらかをコメントアウトすれば良いかも?との記事を見つけたが、解決に至らずに、原因は別にあった。

どうやら、http://php.net/manual/en/function.session-unregister.phpによると、session_unregister関数はPHP 5.3.0で非推奨となり、PHP 5.4.0で削除されたとの事。

session_unregisterが使えなくなったと言う事が判明したので、はて?次は何をするべきか、公式のSquirrelmailで情報を探ってみた。

Squirrelmailの公式ホームページによると、

ANNOUNCE: PHP 5.4 Compatibility
Dec 01, 2012 by Paul Lesniewski
With the recent release of PHP version 5.4, some community members have helped identify some small issues which we’ve fixed and made available in our daily snapshot packages located on our downloads page. Especially if you use the Mail Fetch plugin and want to upgrade to PHP 5.4, you should download one of our snapshot packages.

UPDATE:If you are running SquirrelMail under PHP 5.4, please help test and refine the patches found here. There is one patch for each of the two SquirrelMail SVN snapshot versions available on our downloads page.

との事なので、Squirrelmailのバージョンを上げて、一部パッチを当てることで解決しそう。

対策

  1. 現ディレクトリのバックアップ
     # mv /var/www/html/webmail /var/www/html/webmail.bak
  2. 最新版の取得(要Subversion)安定版
    # svn checkout http://squirrelmail.svn.sourceforge.net/svnroot/squirrelmail/branches/SM-1_4-STABLE/squirrelmail /var/www/html/webmail

     

    開発版

    # svn checkout http://squirrelmail.svn.sourceforge.net/svnroot/squirrelmail/trunk/squirrelmail /var/www/html/webmail
  3. 属性変更
    Apacheのユーザ・グループに属性を合わせる必要があるので、

    # chown -R apache:apache webmail 
  4. プラグイン導入
    必要なプラグインをPluginsディレクトリへインストール
  5. 再設定
    サーバ設定やプラグイン等を再設定します

    # cd /var/www/html/webmail/config/
    # ./conf.pl 

    データディレクトリが別ディレクトリに保存してあれば、再設定すると良いですが、webmail内に格納してあったら、バックアップディレクトリからコピーしておきましょう。

  6. パッチ適用
    必ずしもパッチを当てる必要はありません(表示がおかしくなった場合のみ)
    /var/lib/squirrelmail/dataにデータフォルダがある場合:
    (正規表現でエラーが出る場合には、メタ文字に¥マークを付けると良い)

    find /var/lib/squirrelmail/data/ -name *.pref -exec sed –in-place ‘s/trash_folder=Trash/trash_folder=INBOX.Trash/g’ {} \;
    find /var/lib/squirrelmail/data/ -name *.pref -exec sed –in-place ‘s/draft_folder=Drafts/draft_folder=INBOX.Drafts/g’ {} \;
    find /var/lib/squirrelmail/data/ -name *.pref -exec sed –in-place ‘s/sent_folder=Sent/sent_folder=INBOX.Sent/g’ {} \;

    DB使っている場合:

    UPDATE userprefs SET prefval = ‘INBOX.Trash’ WHERE prefkey = ‘trash_folder’ AND prefval = ‘Trash’;
    UPDATE userprefs SET prefval = ‘INBOX.Drafts’ WHERE prefkey = ‘draft_folder’ AND prefval = ‘Drafts’;
    UPDATE userprefs SET prefval = ‘INBOX.Sent’ WHERE prefkey = ‘sent_folder’ AND prefval = ‘Sent’;

この辺りまで来たら、もう少しです。

設定や環境に不具合がないか、確認URLで表示させてみます
http://your-squirrelmail-location/src/configtest.phpのように、webmailをインストールしたアドレスにsrc/configtest.phpを付加して確認します。

configtest.phpにアクセスして、エラー箇所がなければ、無事に起動することができました。

補足

参考までに、私の環境では下記のエラーが表示されました。

 ERROR: You have configured PHP not to allow short tags (short_open_tag=off).
This shouldn’t be a problem with SquirrelMail or any plugin coded coded according to the SquirrelMail Coding Guidelines, but if you experience problems with PHP code being displayed in some of the pages and changing setting to “on” solves the problem, please file a bug report against the failing plugin. The correct contact information is most likely to be found in the plugin documentation.

↑ php.ini内のshor_open_tag=offになっているので、Onにする。設定保存後は要Apache再起動

ERROR: You have set ja_JP as your default language, but I cannot find this translation (should be in ../locale/ja_JP/LC_MESSAGES/squirrelmail.mo). Please note that you have to download translations separately from the main SquirrelMail package.

↑ conf.plで設定した言語のロケールがないエラーなので、別途導入

  1. 最新版のロケールをダウンロード
    http://sourceforge.net/projects/squirrelmail/files/locales/
  2. 解凍
    # tar jxvf ja_JP-1.4.18-20090526.tar.bz2 
  3. インストール
    # ./install

    webmailのパスを指定(/var/www/html/webmail)

  4. poファイル作成
    # cd /var/www/html/webmail/po
    # compilepo ja_JP 

VundleでVimプラグイン導入

かなり以前から、Unix/Linuxでvi/vimを使っているんですが、恥ずかしながら、私も「いまさら聞けない .vim/bundle によるプラグイン管理」と同じ心境で、プラグインとは無縁の環境にありました。

今までに、プラグイン導入を試みたことはあるのですが、うまく動作しない事があり、ずっと諦め状態だったのです。

なので、今更ながら、Vimのプラグイン導入に挑戦です。

Vundleを使って、プラグイン管理(導入)します。(VimとGitが既にインストールされている事が前提です)

導入方法は、VundleのReadmeを見れば、ほぼ分かると思いますが、メモっておきます。

    1. Vundleを導入します
      $ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
    2. 自分のホームディレクトリ下に、.vimrcを作成・修正し、下記のように記述します
      $ vim ~/.vimrc
      set nocompatible " be iMproved
      filetype off " required! set rtp+=~/.vim/bundle/vundle/
      call vundle#rc() " let Vundle manage Vundle
      " required!
      Bundle 'gmarik/vundle' " My Bundles here:
      "
      " original repos on github
      Bundle 'tpope/vim-fugitive'
      Bundle 'Lokaltog/vim-easymotion'
      Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
      Bundle 'tpope/vim-rails.git'
      " vim-scripts repos
      Bundle 'L9'
      Bundle 'FuzzyFinder'
      " non github repos
      Bundle 'git://git.wincent.com/command-t.git'
      " … filetype plugin indent on " required!
      "
      " Brief help
      " :BundleList - list configured bundles
      " :BundleInstall(!) - install(update) bundles
      " :BundleSearch(!) foo - search(or refresh cache first) for foo
      " :BundleClean(!) - confirm(or auto-approve) removal of unused bundles
      "
      " see :h vundle for more details or wiki for FAQ
      " NOTE: comments after Bundle command are not allowed..
    3. 上記の.vimrcを保存したら、vimを終了し、起動し直します
    4. vimが起動したら、ESCキーを押し、:(半角コロン)キーを押す
      下部に:(半角コロン)が表示されたら、
      BundleInstallと打ち込むと、.vimrcで指定したプラグインが導入されます

    5. 導入途中では、下部にProccessing…と表示され、全て導入が終わるとDoneと表示され完了です。

 

プラグインの追加は、.vimrc内に、

Bundle ‘プラグイン’

のように明記して、BundleInstallするだけです。

また、プラグインの更新はBundleInstallに!(半角)を追加するだけで、更新されます。

BundleInstall!

後は、使いたいプラグインを探して、プラグインの使い方を覚えるだけですね。

分かってみれば、すごく簡単でした。


コマンドライン(cui,fdisk)でHDD追加

今更感があるが、Linuxで稼働中のサーバにHDDを追加する場合が、たまにあるのでメモっておく。

追加のHDDは、既に物理的に接続されているものとする。

HDDを確認


# fdisk -l
….
ディスク /dev/sdb: 53.7 GB, 53687091200 バイト
ヘッド 64, セクタ 32, シリンダ 51200
Units = シリンダ数 of 2048 * 512 = 1048576 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0xa128e904

/dev/sdbのHDDが追加されたのを確認し、

領域作成


# fdisk /dev/sdb
コマンド (m でヘルプ): 1
コマンドの動作
a ブート可能フラグをつける
b bsd ディスクラベルを編集する
c dos 互換フラグをつける
d 領域を削除する
l 既知の領域タイプをリスト表示する
m このメニューを表示する
n 新たに領域を作成する
o 新たに空の DOS 領域テーブルを作成する
p 領域テーブルを表示する
q 変更を保存せずに終了する
s 空の Sun ディスクラベルを作成する
t 領域のシステム ID を変更する
u 表示/項目ユニットを変更する
v 領域テーブルを照合する
w テーブルをディスクに書き込み、終了する
x 特別な機能 (エキスパート専用)

コマンド (m でヘルプ): t

領域が定義されていません

コマンド (m でヘルプ): n

コマンドアクション
e 拡張
p 基本パーティション (1-4)
p
パーティション番号 (1-4): 1
最初 シリンダ (1-51200, 初期値 1):
初期値 1 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-51200, 初期値 51200):
初期値 51200 を使います

 

マンド (m でヘルプ): t
選択した領域 1
16進数コード (L コマンドでコードリスト表示): L

0 空 24 NEC DOS 81 Minix / 古い bf Solaris
1 FAT12 39 Plan 9 82 Linux スワッ c1 DRDOS/sec (FAT-
2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 40 Venix 80286 84 OS/2 隠し C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 41 PPC PReP Boot 85 Linux 拡張領 c7 Syrinx
…..
16進数コード (L コマンドでコードリスト表示): 83

マンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。

フォーマット

# mkfs.ext4 /dev/sdb1

マウントしてみる (/optへマウント)


# mount /dev/sdb1 /opt
# df
/dev/sdb1 51606124 184136 48800552 1% /opt

恒久的にマウント

/etc/fstabへ追記

# vi /etc/fstab
…
/dev/sdb1 /opt ext4 defaults 1 2

fstabの書式に問題ないか、確認

# mount -a
# df

warning: database /etc/postfix/transport.db is older than source file

メールログを見てたら、下記の警告が出てた

warning: database /etc/postfix/transport.db is older than source file

定義したtransportよりtransportのDBが古いとの警告。

transportで定義したものは、postmapでDBを再構築しないといけないので、恐らく、その作業を忘れてたか?

って事で、DBを再構築してあげると解決

# postmap /etc/postfix/transport

Autofsでnsswitchが読めない?

数台あるLinux(CentOS,sl6)サーバのうち、2台ほどNFS接続する必要があり、設定してみたところ、Autofs(automount)が失敗し、下記のエラーが出た。

Aug 6 09:56:38 hoge automount[14683]: nsswitch_parse:173: couldn’t open /etc/nsswitch.conf
Aug 6 09:56:38 hoge automount[14683]: lookup_nss_read_master: can’t to read name service switch config.

nsswitch.confが読めないって?

http://www.mail-archive.com/centos@centos.org/msg86851.htmlによると、どうやらSELinuxが有効な環境で、Sudoをアップデートした際に、nsswitch.confの属性に悪さをしているとの事。

ちなみに、私の環境では、

# egrep -v "^#" /etc/selinux/config

SELINUX=disabled
SELINUXTYPE=targeted 

# rpm -aq sudo
sudo-1.7.4p5-12.el6_3.x86_64

# ls -Z /etc/nsswitch.conf
-rw-r--r--  root root system_u:object_r:rpm_script_tmp_t /etc/nsswitch.conf

解決策は、restoreconを使うと良いらしい。

# restorecon /etc/nsswitch.conf && service autofs restart
Stopping automount:                                        [  OK  ]
Starting automount:                                        [  OK  ]

# ls -Z /etc/nsswitch.conf
-rw-r--r--  root root system_u:object_r:etc_t          /etc/nsswitch.conf

私の場合、今後もSELinux絡みは、何かと面倒くさいので、SELinuxをdisabledにしちゃいました。


unzipで複数ファイルを一括解凍

分割zipファイルが大量にあったり、まとめて、あるフォルダ内の大量zipファイルを一気に解凍したい事がありますよね?

*(アスタリスク)使えば出来んじゃね?って、よく

$ unzip *.zip

とか、実行すると、下記のエラーが出ます。

caution: filename not matched: hove.zip

では、どうやるかと言うと、シングルクゥオーテーションで括ればよいです。

$ unzip '*.zip'

以上


Redhat6系でuconvはどこ?

CentOSやsl6 6系のyumパッケージで、uconvが見つからない。

yum searchで見つからないし、remi,epel,rpmforgeのリポジトリでも見つからないと思ったら、icuと言うパッケージに入ってた。

icuって病室みたいな名前だけど、International Components for Unicodeの略

# yum install icu

これで、uconvやmakeconvなどのなどがインストールされる。


Linuxにnamebenchをインストール

namebenchをLinuxにインストールした。
ソースからビルドしてインストールするので、Linux全般に導入可能。

尚、コンパイル・実行には、pythonで書かれているので、python必須

  1. ソースをダウンロード
    $ wget -c http://namebench.googlecode.com/files/namebench-1.3.1-source.tgz
  2. 解凍
    $ tar -xzvf namebench-1.3.1-source.tgz
  3. ビルドとインストール
    $ cd namebench-1.3.1
    $ python setup.py build
    $ sudo python setup.py install

実行するには、namebench.pyを走らせるだけ。

ちなみに、実行ファイルは/usr/bin/、データ等は、/usr/namebenchへインストールされてる。


CentOS6でswapをなるべく使わない設定

CentOS,sl6などのRedHat6系にて、メモリに余裕があるので、なるべくswapしないように設定。

現状のメモリ環境:

$ free
total used free shared buffers cached
Mem: 65970504 1007620 64962884 0 15688 188112
-/+ buffers/cache: 803820 65166684

デフォルトでは、swappinessの値は60に設定されており、0~100まで設定可能。

# cat /proc/sys/vm/swappiness
60

この設定を変更するには、下記コマンドを実行

# vi /etc/sysctl.conf
……..↓最終行に下記1行を追記
vm.swappiness = 1

# sysctl -p

ページ:12345