syokunin のすべての投稿

Sessionについて

session.save_pathで指定されたディレクトリ(ディフォルト/tmp)に
セッションに関連した情報をシリアライズしたファイルを作成する。

また、セッションスタートごとに、設定値によりgarbage collectinルーチンが実行される。

garbage collectinルーチンでは設定により、設定時間を経過したファイルを削除する。

============================================
session.gc_maxlifetime
ファイルを削除する時間

session.gc_probability
garbage collectinルーチンを起動する確立(分子)
session.gc_divisor
garbage collectinルーチンを起動する確立(分母)

============================================
session.gc_maxlifetime = 1440
session.gc_probability = 1
session.gc_divisor = 100

※セッションスタート100回中1回
garbage collectinルーチンが実行される。
また、実行時1440秒を経過したファイルを削除する。

============================================
session_set_save_handler
で独自のセッション保存関数を利用できる。
DBにセッションを格納する場合など便利。

※複数サーバのセッションを一元管理するときはDBを利用することになるだろうし、
セッションはファイルで管理するよりDBを利用したほうが効率的らしい。

PHPのXSLT と DOM サポート

[XSLT]
expatインストール

http://sourceforge.net/projects/expat/
よりダウンロード

tar zxvf expat-2.0.1.tar.gz
cd expat-2.0.1/
./configure
make
make install

Sablotronインストール

http://www.gingerall.org/sablotron.html
よりダウンロード

tar zxvf Sablot-1.0.3.tar.gz
cd Sablot-1.0.3
./configure
make
make install

[DOM]
libxmlインストール
ftp://ftp.gnome.org/pub/GNOME/sources/libxml2/
よりダウンロード

tar zxvf libxml2-2.6.29.tar.gz
cd libxml2-2.6.29
./configure
make
make install

PHPのConfigure時に以下のオプションを指定
[DOM]
–with-dom \
–with-zlib-dir \
[XSLT]
–enable-xslt \
–with-xslt-sablot

Squid URLフィルタ(アクセス制限)

■squid.confに以下を記述
acl [domain_filename] dstdomain “[path/to/domain_filename]”
acl [regex_filename] url_regex “[path/to/regex_filename]”

http_access deny blacklist
http_access deny blacklist_regex

※dstdomainで指定したファイルにはアクセス制限する
URLに含まれる文字列を。(ドメイン名など)
例)hoge.com
※url_regexで指定したファイルにはアクセス制限する
URLに含まれる文字列を正規表現で記述。
^http://.*\.mpg$

Squid インストール

■Squid用ユーザー、グループ、ディレクトリ作成
# groupadd squid
# useradd -d /usr/local/squid -g squid -m squid
# chown -R squid:squid /usr/local/squid

■インストール
http://www.squid-cache.org/
より最新のSTABLEを/usr/local/squidへダウンロード
(今回はsquid-2.6.STABLE12.tar.gz)

[ダウンロード]
# su squid
$ cd /usr/local/squid
$ wget http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE12.tar.gz
[展開]
$ tar zxvf squid-2.6.STABLE12.tar.gz
[configure]
$ cd squid-2.6.STABLE12
$ ./configure –enable-err-language=Japanese
※オプションはエラーを日本語で
[インストール]
$ make
$ make install

■設定
$ vi /usr/local/squid/etc/squid.conf

[ポート]
http_port 3128
※環境により書き換え
※ルータ化と組み合わせて透過型プロキシーとする場合は
http_port 3128 transparent
といったようにtransparentオプションを付ける
[キャッシュデータ]
cache_dir ufs /usr/local/squid/var/cache 100 16 256
ufs: 保存データ形式
/usr/local/squid/var/cache: 保存場所
100: キャッシュサイズ上限
16 256: サブディレクトリの階層構造16×256
[実行ユーザー/グループ]
cache_effective_user squid
cache_effective_group squid
[アクセスコントロール]
acl my_network src 192.168.0.0/255.255.255.0
http_access allow my_network
※aclで対象を定義してhttp_accessで実際に許可する考え方
[管理者メールアドレス]
cache_mgr foo@host.name
[AnonymousFTPユーザ]
ftp_user anonymous@host.name
[ログ]
access_log /usr/local/squid/var/logs/access.log squid
cache_log /usr/local/squid/var/logs/cache.log
cache_store_log /usr/local/squid/var/logs/store.log
[その他]
visible_hostname host.name
※設定しないとエラー
forwarded_for off
アクセス元IPの抑制

■キャッシュディレクトリ作成
$ mkdir /usr/local/squid/var/cache
[キャッシュ構造を作成]
$ /usr/local/squid/sbin/squid -z

■起動
/usr/local/squid/bin/RunCache &
で起動するが、
ディフォルトでDNSチェックをする。
なので、ネットワーク未接続時などを考慮し、
同スクリプト内の、
echo “Running: squid -sY $conf >> $logdir/squid.out 2>&1”
にDオプション追加
echo “Running: squid -sYD $conf >> $logdir/squid.out 2>&1”

その他オプションは、
/usr/local/squid/sbin/squid –helpで

Linux ルーター

■NICを2枚挿した状態でVineをインストール

==========================================================
[DHCPサーバー]

■/etc/dhcpd.conf
※なければ作成

ddns-update-style interim;
ignore client-updates;

subnet 192.168.0.0 netmask 255.255.255.0 {
option routers [GWとして通知するIP];
option subnet-mask 255.255.255.0;
option domain-name “[ドメイン名]”;
option domain-name-servers [DNSアドレス];

option time-offset -18000;

#DHCPで割り振る範囲
range dynamic-bootp 192.168.0.128 192.168.0.160;
#割り当て期間
default-lease-time 21600;
#最大割り当て期間
max-lease-time 43200;
}

※[GWとして通知するIP]は自身がルーターなら自身のアドレス

■dhcpd.leases
割り当てIPを記述するファイル。
なければ、作成。
/var/lib/dhcp/dhcpd.leases

/var/lib/dhcpd/dhcpd.leases

※Vineは前段

■/etc/sysconfig/dhcpd
DHCPDARGS=eth0
などと、DHCPを利用するNICを指定

■起動
/etc/rc.d/init.d/dhcpd start

(chkconfig dhcpd onでサーバー起動時起動)

==========================================================
[スタティックルーティング]

■/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=[HostName]
GATEWAY=[IP]

※上位がDHCPの場合
NETWORKING=yes
HOSTNAME=[HostName]
GATEWAY=[空欄]
BOOTPROTO=DHCP

※上位がPPPoEの場合
NETWORKING=yes
HOSTNAME=[HostName]
GATEWAY=[空欄]

■/etc/sysconfig/static-routes
eth0 net 192.168.0.0 netmask 255.255.255.0 gw [GW WAN IP] metric 1
eth1 net [GW WAN IP] netmask [GW WAN MASK] gw [GW LAN IP] metric 1

※metric=ホップ数

■/etc/sysctl.conf
net.ipv4.ip_forward = 1

※他OSでは
/etc/sysconfig/networkに
FORWARD_IPV4=yes
の場合もある。

■ネットワークリスタート
/etc/rc.d/init.d/network restart

==========================================================
[IPTABLES]

■マスカレードを設定
iptables -t nat -A POSTROUTING -j MASQUERADE
※上位がPPPoEの場合
iptables -t nat -A POSTROUTING -o ppp+ -j MASQUERADE

※POSTROUTING=IP変換
※-j MASQUERADE=マスカレード適用

#一旦設定削除
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD

#基本、自身が送出するパケット以外禁止
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

#eth0(LAN)と自身からのパケットを許可
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A FORWARD -i lo -j ACCEPT
iptables -A FORWARD -i eth0 -j ACCEPT

#場合によってはICMP許可
iptables -A INPUT -p icmp -j ACCEPT
iptables -A FORWARD -p icmp -j ACCEPT

#セーブ
/etc/init.d/iptables save

#サーバー併用時はサービスポートを空けておく

==========================================================
[PPPoE]

RP-PPPoEを設定する
※今回は市販のブロードバンドルータの後ろにサーバー構築するので割愛。

==========================================================
[その他]
ネットワーク関連ファイル

/etc/hosts
ホスト名、IPアドレス、DNSを利用しないホスト名
/etc/resolv.conf
DNSサーバーのIP
/etc/sysconfig/network
ホスト名、ドメイン名、GWのIPなどネットワーク全般
cd /etc/sysconfig/network-scripts/ifcfg-eth0~
NICの情報

phpPgAdmin設置

http://phppgadmin.sourceforge.net/
よりダウンロードし、任意のディレクトリに展開。

conf/config.inc.phpを設定する。
$conf[‘servers’][0][‘host’] = ‘localhost’;
$conf[‘servers’][0][‘port’] = ‘5432’;
$conf[‘servers’][0][‘defaultdb’] = ‘[データベース名]’;
$conf[‘extra_login_security’] = ‘true;
※ログインできないときはfalse
$conf[‘show_comments’] = ‘true’;

Basic認証

Basic認証

.htaccess の記入例

AuthUserFile [.htpasswdのパス]
AuthGroupFile /dev/null
AuthName “Please enter your ID and password”
AuthType Basic
require valid-user

.htpasswd の記入例
[ユーザー名]:[cryptしたパスワード]

PEARコマンド

■インストール

pear install [モジュール名]

stable(安定版)以外は「-f」オプションで強制的にインストール可能。
pear install -f [モジュール名]

■アップグレード
pear upgrade [モジュール名]

pear upgrade-allで全部一括。

■インストール済み表示
pear list

■アンインストール

pear uninstall

■全モジュールリスト
pear list-all

検索エンジンのUserAgentメモ

検索エンジンのUserAgentメモ

■Google Wireless Transcoder
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Google Wireless Transcoder;)

PEAR::Net_UserAgent_Mobileでの判断
NonMobileと判断

■Google 一般ロボット
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

PEAR::Net_UserAgent_Mobileでの判断
NonMobileと判断

■Google 携帯用ロボット
DoCoMo/1.0/N505i/c20/TB/W20H10 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)

PEAR::Net_UserAgent_Mobileでの判断
DoCoMoと判断

Nokia6820/2.0 (4.83) Profile/MIDP-1.0 Configuration/CLDC-1.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)もある

PEAR::Net_UserAgent_Mobileでの判断
実績なし

■Yahoo 一般ロボット
Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)

PEAR::Net_UserAgent_Mobileでの判断
NonMobileと判断

■Yahoo 携帯用ロボット

KDDI-CA23 UP.Browser/6.2.0.5 (compatible; Y!J-SRD/1.0; http://help.yahoo.co.jp/help/jp/search/indexing/indexing-27.html)

PEAR::Net_UserAgent_Mobileでの判断
EZwebと判断

Y!J-MBS/1.0もある。

PEAR::Net_UserAgent_Mobileでの判断
実績なし