カテゴリー : サーバー

CentOS 5 操作備忘録 1

少し時間を空けただけで操作を忘れてしまう、そんなおバカな自分の参照用です。

インストールパッケージの確認

#yum list | grep xxxxxx

grep で見たいパッケージを絞らないと大変な事に。

ホスト名の変更

/etc/hosts と /etc/sysconfig/network の2ファイルの行を変更する。

/etc/hosts
127.0.0.1    xxxxxx localhost.localdomain localhost

/etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=xxxxxx

書き換えたらリブート。

管理ユーザー設定

/etc/group の wheel グループに管理ユーザーを追加して、root になれるユーザーを管理者のみとする。

/etc/group
wheel:x:10:root,xxxxxx

/etc/pam.d/su
#auth    required    pam_wheel.so use_uid のコメント「#」を削除

root に移行するとき「su -」としないと、環境が切り替わらないので「-」を忘れずに。

SELinuxの無効化

SELinux の動作確認、停止、設定ファイルで disabled に変更する。

#getenforce
Enforcing
#setenforce 0

/etc/sysconfig/selinux
SELINUX=enforcing -> disabled

パケットフィルタリングの停止

ファイアウォールはルーターに任せてしまおう、ってことで、iptables を停止し、サービスも起動しないように変更。

#/etc/init.d/iptables stop
#chkconfig iptables off
#chkconfig ip6tables off

SSHで外から接続

root でのログインはできないようにする。ルーターの22番ポートを通すように。

/etc/ssh/sshd_config
PermitRootLogin no

ntpサーバー設定

同期をとるサーバーを指定してサーバー設定。

/etc/ntp.conf
server ntp.nict.jp
server ntp.mfeed.ad.jp
server ntp.ring.gr.jp

#chkconfig ntpd on
#ntpq -p で確認

Apache 2.2.15 VirtualHostの設定

Apache 2.2.15、PHP 5.3.2 で、バーチャルホストを設定して WordPress 動作させようとした際、ちょっと躓いたのでその覚書です。

ルートディレクトリが「www.example.com」で、バーチャルホスト「www.example.com」を設定する際の httpd.conf と extra/httpd-vhosts.conf の設定について。

httpd.conf
extra/httpd-vhosts.conf の読み込み指示がコメントアウトされているので、有効にする。

URIにファイル名が指定されなかった場合のデフォルト指定で、<IfModule dir_module> の DirectoryIndex に、index.php を追加する。セパレータは空白でOK。

httpd-vhost.conf

<VirtualHost *:80>
	ServerAdmin webmaster@www.example.com
	DocumentRoot "D:/httpd/www/htdocs"
	ServerName www.example.com
	ErrorLog "D:/httpd/www/logs/error.log"
	CustomLog "D:/httpd/www/logs/access.log" common
	<Directory "D:/httpd/www/htdocs">
		Options FollowSymLinks
		AllowOverride All
		Order Deny,Allow
		Allow from all
	</Directory>
</VirtualHost>

10行目の「Order Deny,Allow」の設定が「Order Allow,Deny」になっていると、「http://www.example.com/」のアクセスで、 DocumentRoot で設定したディレクトリの index.html が読み込まれ、「http://www.example.com/index.html」で、VirtualHost で設定したディレクトリの index.html が読み込まれるという動作をする。

WinXPにApache2.2.15、PHP5.3.2をインストールするときはThread Safe版で

Windows XP 上で、Apache と PHP のバージョンアップをしようといつものように作業を進めていた所、再起動で PHP のプログラムが動作しない。そう言えば、PHP のインストールのとき Webサーバの選択で IIS とその他しか選択肢がなかった。前は Apache やそれ以外のものがあったはずなのに。Apaceh の config.httpd を見ると php5 の dll の指定も登録されていない。

そこで直接 config.httpd に書き込もうかと思い、php のディレクトリで dll ファイルの確認をした所、 php5apache2_2.dll ファイルがない。google 先生に質問しても、なかなかそれらしい情報が見当たらない。で、ようやく見つけたディレクトリ構成の図に、「non thread safe 版には含まれてない」というコメントがあった。

と言うことで、Windows XP + Apache2.2.15 + PHP5.3.2 のときは、VC6 x86 Thread Safe 版がよろしいかと。

ところで、インストールも無事終了し再起動した所、う・ご・か・な・い orz

これは前回のメモのおかげで、すぐにクリアできた。折角なので、拡張モジュールを追加したり外したりしながらいくつか試してみた。そうした所、PostgreSQLを外すと起動するようになった。どうやら、PostgreSQL がインストールされていなかったのが、起動しなかった原因だったようだ。

WinXPにApache2.2.14、PHP5.3.1インストールでエラー

PHP 5.3 がリリースされたので、新しく追加された機能を利用してみようかと自宅サーバーにインストールを試みた。自宅サーバーは Windows XP に Apache 2.0.63 を実行していたので、2.2.14 に切り替えることにした。

Apache のインストールは何事もなく進んだのだが、PHP 5.3.1 でインストールディレクトリを変更し、拡張モジュールはデフォルトのままインストールし、Apache の再起動をするとエラーとなって動作しない。

Apache 2.2.14 には、open_ssl 付きと無しがある。また、PHP 5.3.1 には thread-safe と non thread-safe 版がある。組み合わせを替えてみたが、どれも結果は同じで動作しない。コントールパネルから管理ツールにあるイベントビューワを実行し、アプリケーション項目のメッセージを見ると、「エラー発生モジュール php5ts.dll、バージョン 5.3.1」と表示されている。

しばらく悩んだ末、PHP のインストールで拡張モジュールの指定を全て切ってインストールしたところ、見事に Apache が起動し PHP も利用できるようになった。再度、PHP のインストーラを起動し、必要となる拡張モジュール 「Multi-Byte String」と「MySQL」を含めて再起動してみた。これも無事再起動した。めでたし、めでたし。

もし自分と同じようなエラーが発生するようでしたら、拡張モジュールの実行が影響しているかもしれませんので、お試しあれ。

PHPでメールの自動送信を試してみる

確認したい動作は、PHPで作ったメール送信プログラムが、決められた時間に自動実行することである。これについて、動作を分解して次のように確認する。

  • サーバー上でPHPスクリプトを実行する
  • PHPスクリプトでメールを送信する
  • 決められた時間に自動送信する

実はこれを発展させて、メールの自動着信処理をしようかと考えている。本来 、メール着信をトリガーとしてプログラムを起動できればよいのだが、利用している XREA サーバーではできないようだ。なので、cron を利用した時間スケジュールでプログラムを起動して処理する、という方法の確認だ。

1.サーバー上でPHPスクリプトの実行

先ずは、SSH でログオンしてコマンドを実行できるか? である。XREA は幸い、[管理メニュー]-[ホスト情報登録]で[SSH登録]を実行すれば、そのPCから TeraTerm の SSH でコンソール接続できる。

<?php
echo "Language: " . mb_language() . "\n";
echo "Encoding: " . mb_internal_encoding() . "\n";
?>

のような PHP プログラムをサーバーにアップロードし、動作を確認する。

xxx@sxxx:/public_html> php mblang.php

と実行すると、

Content-type: text/html

Language: Japanese
Encoding: EUC-JP

と表示された。ここで、「Content-type: text/html」の表示抑止は「-q」パラメータを追加すればよい。

2.PHPスクリプトでメールを送信する

レンタルサーバーによるのだろうが、メール送信ではまることが多いので、この部分だけ取り出して実験してみる。PHP のプログラムは次の通り。

<?php
mb_internal_encoding('UTF-8');
$mailto = "xxx@xxx.xxx.com;
$subject = "メール送信テスト";
$message = "メールの送信時間:\n" . date("Y-m-d H:i:s") . "\n\n受信OK?";
$headers = "From: " . mb_encoding_mimeheader("オレオレ、オレだよ") . "<xxx@xxx.net> \n";
$headers .= "Reply-To: " . mb_encoding_mimeheader("オレオレ、オレだよ") . "<xxx@xxx.net> \n";
$result = mb_send_mail($mailto, $subject, $message, $headers);
?>

スクリプトの実行を試してみる。

xxx@sxxx:/public_html> php -q tstml.php

メーラーで確認すると、無事受信できていることが確認できた。

3.決められた時間に自動送信する

上の PHP プログラムをシェルスクリプトで実行できるようにする。テキストエディタで次のファイルを作成する。

#!/bin/sh

# cronml.sh
/usr/local/bin/php -q /virtual/xxx/public_html/cronml.sh

このファイルをアップロードしたら、「chmod +x cronml.sh」として実行可能フラグをセットする。

後は、XREAの[管理メニュー]-[CRONジョブ]を設定してお終い。めでたし、めでたし。

ところで、phpの起動時に「-q」パラメータを渡さないと、「Content-Type: text/html」がメールで送信されるのでご注意を。