このページではLinuxApache/httpdPHP及びMySQLを用いたLAMPシステムのApachePHPの設定について初心者/ビギナー向けに解説します。
補助ツールのセットアップ
CMS/LAMPシステムの構築

CMS/LAMPシステムとは

ApacheとPHPの設定

MySQLの導入と基本設定

MySQLのコントロール

HTTPSのためのルーター設定

phpMyAdminのインストール

データベースの作成と削除

XOOPS Cubeのインストール

WordPressのインストール

MovableTypeのインストール

osCommerceのインストール

データベースのバックアップ

データベースのリストア

まずApacheのセキュリティの設定を見直すこと

CMS サーバー インストール して利用する アプリケーション ですが、「サーバーの管理者がインストールを行って管理する」という一般的なサーバーアプリケーションの運用スタイルはとらないのが普通です。

サーバー管理者が行うのは、 構築中のLinuxサーバー にCMSが導入できる環境を整えるまでが仕事で、CMSは通常、個々の コンテンツ を構築する クライアント ユーザーが好みのものを選んでサーバーに アップロード して使用する、という利用スタイルが一般的です。

つまり、「 構築中のLinuxサーバー でコンテンツを運用するのは自分一人だけ。」というのであればあまり心配しなくてもかまいません。

しかしコンテンツスペースを第三者に貸し出す場合にはCMSの導入から先を他人に委ねることになります。

従ってCMSを導入する際には、 Apache セキュリティ についてもう一度見直しを行う必要があります。

Apacheでユーザーディレクトリを公開して第三者にコンテンツスペースを貸し出す場合は、まず、 セキュリティ重視のユーザーディレクトリの設定 のような高めのセキュリティ設定からスタートし、そのセキュリティ設定がCMSの利用に影響を及ぼす場合にのみ段階的にセキュリティを緩和してゆくのが定石といえるでしょう。

もちろん、貸し出すのが バーチャルホスト Apacheのバーチャルホスト設定について である場合も考え方は同じです。

PHPの設定の確認と修正

構築中のLinuxサーバー がこの コンテンツ に従ってセットアップされていれば、既に PHP はきちんと導入されているはずですので、その動作と設定を確認してみましょう。

まず サブネット 内の適当な クライアント機 から SSHクライアント 構築中のLinuxサーバー ログイン します SSHクライアントでサーバーに接続する(WBEL3) SSHクライアントでサーバーに接続する(CentOS3) SSHクライアントでサーバーに接続する(WBEL4) SSHクライアントでサーバーに接続する(CentOS4)

それから su コマンド アカウント "root" に変更し、 echo コマンドをつかってPHPの設定確認用のPHP スクリプト "phpinfo.php" Apache のドキュメントルート Apacheのドキュメントルートについて に作成します。

[tanaka@web1 tanaka]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 root]# echo "<?php phpinfo() ?>" > /var/www/html/ph
pinfo.php
Enter 出力のりダイレクトについて
[root@web1 root]#

コマンドがちょっと複雑でわかり難いかもしれませんが、要は、 "<?php phpinfo() ?>" という内容の テキスト ファイルを作成しているだけです。

次に、 HTTP でアクセス可能な任意の クライアント から、 構築中のLinuxサーバー webブラウザ

http://www.obenri.com/phpinfo.php

http://192.168.100.11/phpinfo.php

のようにアクセスしてみてください。

PHPがきちんとインストールされ、Apacheが稼動していれば以下のようなページが表示されます。

システムにインストールされているPHPの設定
システムにインストールされているPHPの設定(WBEL3の例)

WBEL CentOS インストール されているPHPは、日本語への対応を含めて一般的なCMSならばそのまま利用できるような デフォルト 設定になっています。

従って通常はPHPの設定を変更する必要はありませんが、導入するCMSの説明の中に設定に関する指示がある場合には適宜修正する必要があります。

また、CMSの導入後にエラーが発生するときは、そのエラーメッセージに従って適宜設定を変更する必要があるかもしれません。

PHPの設定は、その初期設定ファイルである "/etc/php.ini" picoエディタ などで修正して行います。

"/etc/php.ini" は結構大きな設定ファイルですので、 cp コマンドでバックアップを作成してから作業するようにします。

[root@web1 root]# cp -p /etc/php.ini /etc/php.ini.orgEnter
[root@web1 root]# pico /etc/php.iniEnter
デフォルトの/etc/php.ini
デフォルトの"/etc/php.ini"

利用するCMSに特に指定がない限りは、php.iniはデフォルトのままでも大丈夫なこともありますが、最近のCMSはかなり大きな仕事をPHPに依存することがあり、PHPがデフォルトで使用する メモリ の容量では不足することがあります。

こういう場合は具体的なエラーは表示されませんが、例えば操作中に「ページが見つからない。」あるいは「真っ白な画面で何も表示されない。」といった状況になりますので、こういう場合はPHPの使用メモリ量を増やす必要があります。

PHPが使用するメモリの容量の設定は、WBEL3やCentOS3では 232行目あたり WBEL4及びCentOS4では 246行目あたり にあります。

memory_limit = 8M   ; Maximum amount of memory a script may consume (8MB)

このようにデフォルトでは8 MB になっていますので、例えば、

memory_limit = 16M   ; Maximum amount of memory a script may consume (8MB)

のように増やすときちんと動作するようになります。

"/etc/php.ini" ディレクティブ を修正して保存したら、必ずApacheの再起動または設定の再読み込み作業 Apacheのコントロールについて を行ってください。

PHPはApacheのモジュールとして動作していますので、これで設定の変更を有効にすることができます。

また、PHPは通常、例えば以下のように HTML 形式で書かれたテキストの中に、 赤字 のようにPHPスクリプトの位置を指定して埋め込む形で記述されます。

<html>


<head>


</head>
<body>



現在あなたが利用しているグローバルIPアドレスは
<?php
$youraddress = $_SERVER['REMOTE_ADDR'];
echo $youraddress;?>

です。


</body>
</html>

PHPスクリプトを埋め込んだHTMLファイルは、特定の拡張子のファイルとすることでPHPスクリプトが埋め込まれていることを判定し、実行するようになっています。

その判定を行うための設定は、 "/etc/httpd/conf.d/php.conf" に記述されています。

[root@web1 root]# pico /etc/httpd/conf.d/php.confEnter
デフォルトの/etc/php.ini
デフォルトの"/etc/httpd/conf.d/php.conf"

この "/etc/httpd/conf.d/php.conf" の内容から "#" でコメントアウトされた部分を除くと(つまり有効な設定のみを抜き出すと)以下のようになります。

LoadModule php4_module modules/libphp4.so  ←PHPモジュールを有効にする設定

<Files *.php>       ←ファイル名"*.php"に関するコンテナの定義 Filesコンテナについて
  SetOutputFilter PHP    ←出力フィルタ"PHP"をセット
  SetInputFilter PHP     ←入力フィルタ"PHP"をセット
  LimitRequestBody 524288  ←リクエストするデータサイズの制限
</Files>

DirectoryIndex index.php  ←省略可能なファイル名の設定 DirectoryIndexディレクティブについて

つまりPHPに関するApache上のデフォルトの設定では、

1."*.php"という名前のファイルをPHPスクリプトとして処理する。

2. クライアント から受け付けるリクエストのデータ容量を約500 KB に制限する。

3.ファイル名"index.php"は省略可能

となっています。

通常はこの設定でも何ら問題はないのですが、CMSの種類によっては "*.php3" "*.php4" のように、拡張子の後ろにバージョンの数字を付加したファイル名でPHPスクリプトを扱うものがありますから、このままでは "*.php3" "*.php4" はただのテキストファイルとして処理され、webブラウザでアクセスすると画面にその内容が表示されるだけになってしまいます。

そこでCMSを利用する場合には、とりあえず以下のように設定を追加しておくとよいでしょう。

LoadModule php4_module modules/libphp4.so

<Files *.php>
  SetOutputFilter PHP
  SetInputFilter PHP
  LimitRequestBody 524288
</Files>

<Files *.php?>
  SetOutputFilter PHP
  SetInputFilter PHP
  LimitRequestBody 524288
</Files>


DirectoryIndex index.php
CMSによっては "DirectoryIndex" ディレクティブにも追加を行う必要があるかもしれません。

これで、 "*.php" の後に任意の一文字がくっついたファイルもPHPスクリプトとみなされて実行可能になります。

また、クライアントからの写真データの アップロード など受け付けるCMSを運用する場合、ひょっとしたら500KBというデータ量の制限によって満足に働くことができないかもしれません。

こういう場合は、

LoadModule php4_module modules/libphp4.so

<Files *.php>
  SetOutputFilter PHP
  SetInputFilter PHP
  LimitRequestBody 2100000
</Files>

<Files *.php?>
  SetOutputFilter PHP
  SetInputFilter PHP
  LimitRequestBody 2100000
</Files>

DirectoryIndex index.php

のように修正することで許容できるデータ容量を調整することができます。

"/etc/httpd/conf.d/php.conf" への設定の追加や修正を行ったら、必ずApacheの再起動または設定の再読み込み作業 Apacheのコントロールについて を行って設定を有効化してください。

このサイトに対するご意見、ご要望、苦情、泣き言、献上品、資金援助などがございましたら こちら からお寄せください(お返事できなかったらごめんなさい)。もちろん リンクフリー です。趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。また、本サイトの更新情報をメールで知らせてほしい方は ここ からご登録ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
Powered by White Box Enterprise Linux