2009年12月31日木曜日

LDAP アプリケーションの流れ

LDAPでアプリケーション(PHP)を作るときの大まかな流れのメモです。

1.LDAPサーバに接続
$link_id = ldap_connect("localhost", 389)

2.LDAPユーザでの認証
ldap_bind($link_id, "cn=Manager,dc=sample,dc=com", "XXXX")

3.情報検索
$sr=ldap_search($link_id, "ou=People,o=System,dc=sample,dc=com", "uidなど")

データ数
ldap_count_entries($link_id, $sr)

4.情報表示
$info = ldap_get_entries($link_id, $sr)
$info[i]["gidnumber"][0] のように参照 i番目の検索情報のgidnumber(全部小文字)を表示
最後の[0]はgidnumberの情報数による

5.情報削除
ldap_close($link_id);

ほとんどDBでのものと変わりませんね。

6. 表示
6-1. var_dump で表示
echo '<pre>';
var_dump( $info );
echo '</pre>';

6-2. foreacheで表示
foreach( $info[0] as $key => $value ){
  echo $key. ":" .$value."<br />\n"; // 改行しながら値を表示
}

6-3. テーブルで表示
echo "<th bgcolor='#cceecc'>配列名</th><th bgcolor='#cceecc'>要素数</th><th bgcolor='#cceecc'>フィールド名</th><th bgcolor='#cceecc'>内容1</th><th bgcolor='#cceecc'>内容2</th><th bgcolor='#cceecc'>内容3</th><tr>";

foreach($info[0] as $t_key => $value_arr){

$num = 0;
//配列で1行表示
foreach($value_arr as $key => $value){

if($num > 1)
echo "<td>".$value."</td>";
else
echo "<td>".$t_key."</td><td>".$value."</td>";
$num++;

}
echo "</tr>";
}
echo "</table>";

2009年12月27日日曜日

muninのインストール

muninのインストールメモです。

1.インストール
yum -y install munin munin-node
/etc/munin/munin.confの
htmldir /var/www/html/munin 
/var/www/vhost/default/htdocs としても動かない
vi /etc/httpd/conf.d/munin.confを作成し
Alias /munin /var/www/html/munin
を設定し対応した。
http://ホスト名/munin で見られます

2.管理対象ホストの設定
[ホスト名.jp]
address XXX.XXX.XXX.XXX
use_node_name yes
これを必要なだけ

3.エージェントの設定
各管理対象ホストで行います。
vi /etc/munin/munin-node.conf

allow ^127\.0\.0\.1$
allow ^XXX\.XXX\.XXX\.XXX$ #ここにmuninサーバ(情報収集サーバのIPを記述)

service munin-node start
ポートがデフォルト4949です。ファイヤウォールの設定を忘れない。
以上です。

参考
http://blog.promob.jp/wed/2009/04/munin-1.html

2010/06/27追加
クライアント情報が更新されなくて困った
chown -R munin:munin /var/lib/munin
などがユーザがmuninになっていなくて権限がなかった様子。
念のため
chown -R munin:munin /var/run/munin
chown -R munin:munin /var/log/munin
chown -R munin:munin /var/www/munin
もやっておいた。chmod 777 も発行(やりすぎ?)
これで更新された。

2010/08/12
Webminでポートを開けたが、「設定を適用する」を押して更新しましょう。

2009年12月25日金曜日

gangliaの導入

gangliaの導入メモです。

1.EPELリポジトリの設定
wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-3.noarch.rpm
rpm -i epel-release-5-3.noarch.rpm

2.gangliaインストール
yum install rrdtool
yum install ganglia
yum install ganglia-gmond
chkconfig gmond on
yum install ganglia-gmetad ⇒CentOS5.2(will)ではエラー発生(EPELから)CentOS5.3(s@@ses)ではインストールできた
chkconfig gmetad on
yum install ganglia-web ⇒CentOS5.2(will)ではエラー発生(EPELから)CentOS5.3(s@@ses)ではインストールできた

service gmetad start
service gmond start

3.設定
本体:/usr/share/ganglia にインストールされた
/etc/httpd/conf.d/ganglia.conf が自動生成されていた
ganglia.confには
Alias /ganglia /usr/share/ganglia
が記述されている。
これでhttp://ホスト名/ganglia で接続できる。

gmondはノードの情報を取得し,XML形式でネットワーク内にブロードキャストする.
ということはWANを介して監視は難しい。同じネットワーク内での監視に使える?
 

参考
http://blog.goo.ne.jp/u1low_cheap/e/6a081f4321788a7adacb6baaec1cf2cd
http://doruby.kbmj.com/unikki/20080512/_ganglia_
http://www.sssg.org/blogs/naoya/archives/1602

2009年12月22日火曜日

nagiosのインストール

サーバ監視ツール「nagios」のインストールメモです。
1.yumでインストールできるように設定
wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

2.実行ユーザの作成
groupadd nagios
useradd nagios -g nagios

3.インストール
yum install nagios

4.Basicパスワードの設定
htpasswd -c /etc/nagios/htpasswd.users nagiosadmin
パスワードは今回は「nagios」

5.サーバ再起動
service httpd restart
chkconfig httpd on
chkconfig nagios on

6.プラグインのインストール
yum install nagios-plugins

7.設定ファイルの確認
nagios -v /etc/nagios/nagios.cfg
service nagios start

8.ブラウザで確認
http://<<ホスト名>>/nagios/

9.ホスト情報設定
/etc/nagios/nagios.cfg が設定ファイル
29 # You can specify individual object config files as shown below:
30 cfg_file=/etc/nagios/objects/commands.cfg
31 cfg_file=/etc/nagios/objects/contacts.cfg
32 cfg_file=/etc/nagios/objects/timeperiods.cfg
33 cfg_file=/etc/nagios/objects/templates.cfg
34
35 # Definitions for monitoring the local (Linux) host
36 cfg_file=/etc/nagios/objects/localhost.cfg

とnagios.cfgにあるので、ここに設定ファイルを追加すればよい。
すでにtemplates.cfgがあるので、共通設定はそれを使う

/etc/nagios/objects の中にホスト等設定ファイルがある

9-1 hosts.cfg作成
vi /etc/nagios/objects/hosts.cfg
define host{

use generic-host これはテンプレートより
host_name XXX
alias XXX
address XXX.XXX.XXX.XXX
check_command check-host-alive
max_check_attempts 10
notification_interval 120
notification_period 24x7
    contact_groups admins
}
define hostgroup{ hosts.cfgの中に一緒に書いた
hostgroup_name XX
alias XX Service
members XXX
}

9-2 contacts.cfgを確認そのまま使用
30 define contact{
31 contact_name nagiosadmin ; Short name of user
32 use generic-contact ; Inherit default values from generic-contact template (defined above)
33 alias Nagios Admin ; Full name of user
34
35 email nagios@localhost ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
36 }

51 define contactgroup{
52 contactgroup_name admins
53 alias Nagios Administrators
54 members nagiosadmin
55 }


9-3 service.cfg
define service{
use generic-service ;使用するサービステンプレート名を指定 templates.cfgのを利用
host_name XXX ;ホスト名(hosts.cfgと依存)
service_description PING ;サービスチェックの説明
check_command check_ping!100.0,20%!500.0,60%
     ;チェック方法の定義(checkcommands.cfgと依存)
}

9-4 nagios.cfgにファイルを追加
  
34 cfg_file=/etc/nagios/objects/hosts.cfg
35 cfg_file=/etc/nagios/objects/service.cfg

9-5 確認
nagios -v nagios.cfg
service nagios restart

備考
しばらくしたら全サービスが(pingを含めて)
Return code of 127 is out of bounds - plugin may be missing というエラーがでてcriticalになってしまった。
yum install nagios-plugins-all
で対応できた。


参考
http://umiushi.dip.jp/wordpress/linuxconfig/nagios-menu/nagios30_02/
http://www.fireproject.jp/feature/nms/nagios/intro.html#4
http://www.b-dash.net/solaris/nagios.html
http://news23h.plala.jp/tecnote/index.php?Nagios%A4%F2%BB%C8%CD%D1%A4%B7%A4%C6%A4%CE%A5%B5%A1%BC%A5%D0%B4%C6%BB%EB

2010/06/27 追加
デフォルトで設定していたがlocalhostすら見れなかった。
”It appears as though you do not have permission to view information for any of the services you ・・・" のエラー
vi /etc/nagios/cgi.cfg として
use_authentication=1 ⇒use_authentication=0 としたらなおった。
もちろん service nagios restart

参考
http://machink.exblog.jp/10978541/

phpldapadminの導入

phpldapadminをインストールしたときのメモです。

1.phpldapadminのダウンロード
http://sourceforge.net/projects/phpldapadmin/ からダウンロードしました。

2.展開・設置
展開後、/usr/local/share にphpldapadminとして設置

3.phpldapadmin/config.php を作成
cp config.php.example config.php (サンプルをコピー)

4./etc/httpd/conf.d/phpldapadmin.conf を作成
echo "Alias /phpldapadmin /usr/local/share/phpldapadmin" > /etc/httpd/conf.d/phpldapadmin.conf

5.yum install php-ldap

6.service でhttpd と ldapを再起動

7.http://ホスト名/phpldapadmin で接続にいったら下のエラーがでた。
Function error called incorrectly [You are running in SAFE_MODE, but LANG is not in the safe_mode_allowed_env_vars. Please add LANG to safe_mode_allowed_env_vars]

vi /etc/php.ini を編集
safe_mode = On ⇒ Off に変更
service httpd ldap restart

8.ログイン画面で
DN: uid=ldapuser,ou=People,dc=example,dc=com
userPassword: ldapuser
でユーザでのログインは成功
管理者でのログインは?
 
参考
http://blog.suz-lab.com/2009/05/openldap-phpldapadmin.html
http://rewse.jp/fukugan/article.php?id=996

2009年12月20日日曜日

LDAPサーバの構築

LDAPサーバは何度か作っていますが、再度必要になったのでメモしておきます。

1.ldapサーバ、クライアントインストール
yum install openldap-servers
yum install openldap-clients

2.サービス起動
service ldap start
chkconfig ldap on

3.rootpwの作成
slappasswd -s secret (secretがパスワード)を実行して出力された
{SSHA}K************************* を
/etc/openldap/slapd.conf に書き込む

既存のものは#で無効にする
database bdb
suffix "dc=example,dc=com"
rootdn "cn=Manager,dc=example,dc=com"
rootpw {SSHA}9*******************************

アクセス権の設定
access to *
by self write  Manager に書き込みを許可
by * read    全ユーザーに読み出しを許可

service ldap restart

4./etc/openldap/passwd.ldif の作成
dn: dc=example,dc=com
objectClass: dcObject
objectClass: organization
dc: example
o: example

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

dn: uid=ldapuser,ou=People,dc=example,dc=com
objectClass: account
objectClass: posixAccount
uid: ldapuser
cn: ldapuser
userPassword: ldapuser
loginShell: /bin/bash
uidNumber: 1000
gidNumber: 1000
homeDirectory: /home/ldapuser

5.ldapaddコマンドによるユーザ情報の登録
ldapadd -x -D "cn=Manager,dc=example,dc=com" -w secret -f passwd.ldif

6.DBファイルのコピー
cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

7.nss_ldapのインストール
このままだと認証が有効にならないので、
yum install nss_ldap

7.認証の設定
システム⇒管理⇒認証からユーザ情報タブ⇒LDAPサポートを有効にする にチェック
同様に認証タブのLDAPサポートを有効にする にチェック

8.LDAPユーザでログイン
4で設定したユーザでログインをします。
ディレクトリがないと怒られるので、認証タブで”利用者の最初のログイン時にホームディレクトリを作成する”にチェックしておくといいです。

以上です。

参考
http://gihyo.jp/admin/serial/01/ldap/0001?page=1
http://lightmaterial.blogspot.com/2007/10/openldap-for-win32-1.html
http://forfuturedream.seesaa.net/article/134277780.html

2009年12月4日金曜日

IT資産管理サーバの構築メモ

IT資産管理を構築した時のメモです。

・対象CentOS5.2
使えるネットを利用
ドキュメントルート:/var/www/vhosts/default/htdocs
要注意です。

・フォントの問題
GUI化したときに、文字化けしました。
yum install fonts* で解決
fonts-japanese-XXXXがインストールされ文字化けがなくなりました。

・VSFTPの導入
普通にインストールして起動しようとしたら、起動できなかった。
システム→管理→サービスからオンデマンドのサービス→ftp_psaを無効にしたら起動した
/etc/vsftpd/ftpusers で#root とした
userlist_enable=YESなので/etc/vsftpd/user_list
で#rootとした
クライアントからは、PASVモードでないほうが確実

・CentOSにphp5.2を導入
phpMyAdminを導入したいのでphp5.2を導入したい(デフォルトではphp5.1)
導入済みのphpをremove(念のため)
取得先のGPG-KEY取得
rpm –import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

取得先を設定する
vi /etc/yum.repos.d/utterramblings.repo
[utterramblings]
name=Jason’s Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

このあとphpをインストールでOK
参考:http://www.kfactory.net/?p=833
エラーがでて、PHP5.2をどうしてもインストールできないのでやめ。(参考 http://blog.livedoor.jp/takeshiyako/archives/51527184.html)
対象をs@@sesに変更→うまくいきました。
will@net もうまくいきました。

・mysqlの導入
今回yumでいれたのですが、初期のログインできずにはまりました。
参考:http://blog.flek.jp/archives/175 (岩本君ありがとう)
今まではインストールしてそのままroot、パスワードなしでログインしていましたが、
できなくなっていました。
(i)サービスストップ
service mysqld stop
(ii)バックグラウンドジョブで以下を実行
mysqld_safe --skip-grant-tables &
jobs で動作を確認
(iii)mysql -u root
use mysql;
select user,host,password from user;
(iv)mysql> update user set password=PASSWORD(”xxxxxxxxxx”) where User=’root’;
mysql> flush privileges;
mysql> quit
(v)kill %1 (1はバックグラウンドジョブの番号)
(vi)service mysqld start
(vii)mysql -u root -p でログイン

文字化けが発生したので/etc/my.cnfに次を追加
[mysqld]の部分に
default-character = utf8 を追加⇒文字化け解消

・phpMyAdminの導入
http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/3.2.4/phpMyAdmin-3.2.4-all-languages.zip/download からダウンロードし、解凍したものをアップロード
名前変更 cp config.sample.inc.php config.inc.php
ログインしたら
「mysql 拡張をロードできません。PHP の設定を確認してください」がでたので
yum -y install php-mysql
で解決。
さらにmcrypt 拡張をロードできません。PHP の設定を確認してください。がでたので
yum -y install php-mcrypt でOK

ただし文字化け発生
config.inc.phpに次を追加
$cfg['Lang'] = 'ja-utf-8';


やっと導入が終わりました。