FreeBSDでLAMPをセットアップするBeginner's Guide(2/3 ページ)

» 2008年08月14日 11時18分 公開
[Martin Munch,Open Tech Press]
SourceForge.JP Magazine

PHP

 この時点で、Webサーバは静的コンテンツを公開できる状態になっている。しかし、ほとんどのWebサイトには、フォーラムやチャット、ギャラリーなど、PHPによる動的コンテンツが含まれている。

 PHPのインストールは簡単ですぐに終わる。PHP本体のパッケージとPHPエクステンションのコンパイルとインストールを行うが、次のようにしてPHP v5のインストール時に忘れずにApacheモジュールもコンパイルする。

cd /usr/ports/lang/php5

make config install distclean

cd /usr/ports/lang/php5-extensions

make config install distclean


 ApacheでPHPサイトを扱うには、PHPファイルの処理方法を指定する必要がある。具体的には、「/usr/local/etc/apache2/httpd.conf」ファイルの「LoadModule」行のすぐ後ろに次のエントリを追加する。

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps


 また次のように、ディレクトリインデックス(DirectoryIndex)に「index.php」を追加しておく。

DirectoryIndex index.php index.html index.htm


 PHPには、大半の用途でセキュアといえる推奨設定内容を記載したファイルが用意されているので、これを利用する。ただし「allow_url_fopen」(リモートFTP/HTTPサイトのファイルをローカルファイルと同じように操作できるようにする)は、使い方を誤ると問題になるので無効にしておく。

cp /usr/local/etc/php-ini-recommended /usr/local/etc/php.ini


MySQL

 これでPHPのインストールと設定も終わった。だが、大半のPHPアプリケーションはデータベースも利用する。安定したオープンソースのデータベースシステムMySQLなら、無料で使える。

 次のようにして、SSLサポートを有効にしてMySQLのコンパイルとインストールを行い、OS起動時にMySQLサーバが自動で立ち上がるように「/etc/rc.conf」にエントリを追加しておく。

cd /usr/ports/databases/mysql51-server

make install WITH_OPENSSL=yes

make distclean

echo 'mysql_enable="YES"' >> /etc/rc.conf


 また、rootパスワード(以下の例では「p3Df1IsT」)も設定する。ただし、シェル上でパスワードを設定すると(利用するシェルに応じて「~/.bash_history」や「~/.histfile」に)履歴が残るため、セキュリティ上の理由からシェルのコマンド履歴を消去しておく(特にrootアカウントを共有している場合)。

/usr/local/etc/rc.d/mysql-server start

mysqladmin -u root password p3Df1IsT

mysql -u root -p

rm /root/.history


 MySQLにログインしたら、そのコマンドプロンプトから以下のコマンド列を実行することで、すべての匿名アカウントを削除する。4番目のコマンドはパスワードのないユーザーの一覧を表示するもので、それぞれについてパスワードを設定するかそのユーザーを削除するかを選択できる。最後のコマンドでは、デフォルトのrootアカウントの名前を「mmu002」に変更している。rootアカウントを変更しておくと、何者かにrootパスワードを狙われた場合に都合がよい。というのも、クラッキングは「root」というユーザー名とデフォルトのパスワードや辞書に載っているような単語のパスワードの組み合わせを使って仕掛けられることが多いからだ。この場合は、デフォルトのrootアカウントが存在しないため、クラッキングはずっと困難になる。また、アカウント名には推測しづらいものを用いる。

use mysql

DELETE FROM user WHERE user="";

FLUSH PRIVILEGES;

SELECT * FROM user WHERE Password="";

UPDATE user SET user='mmu002' WHERE user='root';


 FreeBSDのデフォルトの状態ではMySQL設定ファイルが用意されていないので、以下のように「/etc/my.cnf」ファイルを自分で作成してデフォルトのポートを29912番に変更する必要がある。ここでは、127.0.0.1(ローカルホスト)からの接続のみを受け入れるようにする。最後の行は、ユーザーが実際に読み書きでアクセスするデータベースだけを表示するもので、このオプションを指定しないと、MySQLによってすべてのデータベースが全ユーザーに表示される。

[client]

port=29912

[mysqld]

port=29912

bind-address=127.0.0.1

skip-name-resolve

safe-show-database


 タイトルに沿った解説は以上だが、LAMPに関する記事でphpMyAdminに触れないわけにはいかないだろう。

関連キーワード

Beginner's Guide | FreeBSD | PHP | MySQL | Apache | LAMP


Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ