BigAdmin System Administration Portal
特集記事: Solaris 10 OS および Solaris Express 向け SAMP (Solaris、Apache 2、MySQL 5、および PHP 5) の設定
Print-friendly VersionPrint-friendly Version

Solaris 10 OS および Solaris Express 向け SAMP (Solaris、Apache 2、MySQL 5、および PHP 5) の設定

執筆者: Neal Pollack (2006 年 10 月)

インターネットには、SAMP サーバー (Solaris、Apache 2、MySQL、PHP) 向け Solaris 10 OS の使用方法を説明したドキュメントやブログが、数多くあります。 しかし、これらの記事の多くは、古いバージョンのソフトウェアパッケージ向けか、人気のある PHP 言語を説明していません。 プロセスの理解を助ける詳細や例がまったくないものもあります。

説明を始める前に、Solaris 10 OS または Solaris Express のインストールには、Apache 2.0.x と MySQL 4 が含まれることを明記しておきます。 Solaris 10 OS の Companion CD には、PHP 4 も収録されています。 ただし、現時点では、PHP 5 や MySQL 5 は、Solaris OS にはバンドルされていません。

この記事では、PHP5 の最新コピーを構築し、Blastwave の MySQL5 および Solaris OS に付属している Apache2 バージョンに統合する方法を技術ユーザーに紹介します。 しかし、ソフトウェアを一切コンパイルしない、これらのパッケージの最適化された高パフォーマンスの Sun ビルドを好まれる方は、http://cooltools.sunsource.net/coolstack/index.htmlhttp://sunfreeware.com/coolstack.html で提供されている、Sun の「すぐに実行できる」Cool Stack パッケージをチェックしてください。

BigAdmin ポータルのコミュニティーの投稿には、上記のパッケージによる SAMP サーバーの設定に関する古い記事があります。 ただし、この記事では、重要な詳細が十分説明されておらず、古い Apache 1.3 が使用されています。 同じように BigAdmin ポータルで参照できる、Mel Lester による別の記事は、うまくまとめられており、詳細が多く紹介されており、ほとんど私たちが求めている内容です。 唯一の例外は、Lester の記事では、この記事で対象とする最新の MySQL バージョン 5.x ではなく、Solaris 10 OS にバンドルされているバージョンの MySQL 4 を使用していることです。

多くの人がソフトウェアを再構築しようとする主な理由は、パフォーマンスの拡張、バグやセキュリティーの修正、および各種 PHP Web アプリケーションで必要な機能を提供するコンパイル時オプションが含まれる、最新バージョンのパッケージを取得できるということです。

この演習のインストールでは、次に示すソフトウェアを使用します。

  • Solaris のインストールとともに提供される Apache
  • インストールに pkg-get を使用する Blastwave.org の MySQL 5
  • ダウンロードおよびコンパイルされる php.net の最新の PHP 5

構築には 32 ビットモードを使用し、ほとんど GNU のツールチェーンを使用します。

これ以降の手順では、Solaris 10 OS、Apache、PHP 5、および MySQL 5 Web アプリケーションを使用する準備を整えるため、上記の 3 つのアプリケーションを統合します。

手順は、次のようになります。

1. Solaris 10 OS、Solaris Express/Nevada、または OpenSolaris をインストールします。

2. システムがネットワークに接続されていて、インターネットに接続でき、静的 IP アドレスを使用していることを確認します。 ネットワーク構成に関する補助が必要な場合は、『System Administration Guide: IP Services』を参照してください。

3. Blastwave.org の MySQL 5 をインストールします。 Web ブラウザを開いて、Blastwave.org の詳細なガイドを表示し、手順 1 ~ 7 を実行します。 ただそれだけで、pkg-get コマンドを使用して、ネットワーク経由で MySQL 5 などのパッケージをインストールする準備が整います。

4. MySQL 5 パッケージをインストールする準備が整います。 コンソールまたは xterm ウィンドウから、root としてログインし、次に示すコマンドを実行します。

# /opt/csw/bin/pkg-get -i mysql5 mysql5client mysql5devel mysql5rt
# /opt/csw/bin/pkg-get -i mysql5test

注: mysql5devel パッケージのインストールは、非常に重要です。このパッケージをインストールしていないと、あとで、PHP 5 の構築が難しくなります。

5. 次に、MySQL 5 を設定します。

Blastwave.org は、ガイドを提供しています。 http://www.blastwave.org/packages.php/mysql5 にアクセスして、「View news and info about the software package」というグレーのボタンをクリックします。 この記事では、このガイドに記載されているガイドラインを繰り返し、説明の一部を発展させました。 著作物の使用を許可してくれた Blastwave の寛大さに謝意を表します。

A. 構成ファイル /opt/csw/mysql5/my.cnf を次のように作成します。 /opt/csw/mysql5/share/mysql/ 内の my-*.cnf ファイルの 1 つを /opt/csw/mysql5/my.cnf にコピーし、InnoDB を有効にするなど、使用環境に合った任意の変更を加えます。 /opt/csw/mysql5/var は、my.cnf に対して推奨されていない場所です。 コピーするファイルが不明な場合は、my-small.cnf を使用してください。

B. 次の手順でデータベースを初期化する前に、MySQL のユーザーとグループを設定することが重要です。 この処理は、Blastwave パッケージインストールスクリプトによって実行されます。 ただし、ソースから MySQL を構築している場合は、MySQL のユーザーとグループを次のように作成する必要があります。

# groupadd mysql
# useradd -c "MySQL Server" -d /dev/null -g mysql -s /bin/false mysql 

C. 次のように、MySQL データベースを初期化して、アクセス権を修正します。

cd /opt/csw/mysql5
./bin/mysql_install_db
chown -R mysql:mysql ./var

注意: 上記の chown の手順をスキップすると、MySQL は起動しません。

D. MySQL 5 を起動します。 サーバーを起動して、上記の手順が正しく実行されていることを確認するだけであれば、次のコマンドを実行できます。

# cd /opt/csw/mysql5 ; /opt/csw/mysql5/bin/mysqld_safe &

次に、ps コマンドでサーバーが起動されたかどうかを確認し、kill コマンドと PID を使用して、サーバーを停止できます。

注意: 先に進む前に、前述のプロセスを必ず終了してください。このプロセスを終了しないと、次の手順で SMF サーバーを有効にしたときに、MySQL が正しく起動しません。

次のコマンドが有効なはずです。

# pkill mysql

再起動後の起動を確認したら、次の内容を読み進めてください。

注: Solaris Express、Nevada、および Solaris 10 アップデートの最新のビルドは、SMF を使用して、mysql などのデーモンを起動します。 これ以降で紹介されているプロセスは、さまざまな場合があります。 使用している Solaris のバージョンが SMF を使用している場合は、次に示されている svcadm コマンドを使用して、MySQL 5 を起動または停止します。

古い RC ファイルの方法:

 # /etc/init.d/cswmysql5 start

新しい SMF の方法:

RC ファイルの代わりに SMF を使用するバージョンの Solaris に、MySQL 5 パッケージをインストールした場合は、そのパッケージが MySQL 5 の SMF 目録をインストールしたことがわかります。サービスの状態は、次のコマンドを使用することによって確認できます。

 # svcs -a | grep mysql
 disabled 13:36:01 svc:/network/cswmysql5:default
MySQL 5 サーバーが起動することを確認するためや、再起動時には、次のコマンドを実行します。

# svcadm enable svc:/network/cswmysql5:default

次のコマンドを再度使用して、確認を実行できます。

# svcs -a | grep mysql
online 15:12:43 svc:/network/cswmysql5:default

サーバーは、コマンド # svcadm disable svc:/network/cswmysql5:default で停止でき、停止されたサーバーは、svcadm enable コマンドをユーザーが実行するまで、再起動しても停止状態のままとなります。

E. 必ず MySQL root ユーザーのパスワードを設定します。

設定するパスワードは、Solaris のルートユーザーのパスワードと同じにするべきではありません。 このために、サーバーを起動して、次に示すコマンドを実行します。

ローカルパスワードを設定するには、次のように記述します。

# /opt/csw/mysql5/bin/mysqladmin -u root password 'new-password'
	
# /opt/csw/mysql5/bin/mysqladmin -u root -h <YOUR-HostName-Here> \
password 'new-password'

後述の手順 5、パート I のセキュリティーに関する説明に従ってネットワークアクセスを無効にしている場合は、上記のコマンド行は、実行できず、また必要ありません。

詳細な手順は、MySQL 5 のマニュアルを参照してください。

F. 任意。 この手順には、ある程度時間がかかります。 次に示すコマンドを使用すると、MySQL デーモン向けのテストスイートを実行できます。

# cd /opt/csw/mysql5/mysql-test
# ./mysql-test-run

G. インストールをチェックします。

# ./bin/mysql -p

MySQL root のパスワードを入力するプロンプトが表示されます。 mysql プロンプトが表示されるはずです。 STATUS などのコマンドを試して、サーバーが応答するかどうかを確認します。 次に、mysql プロンプトから、次のようにテストクエリーを実行します。

show databases;

mysqltest データベースが返されます。

quit

注: 起動オプションは、/opt/csw/mysql5/etc/mysql5rc または /etc/opt/csw/mysql5rc のいずれかを作成して編集することで、上書きできます。

mysql5rc のテンプレートは、/opt/csw/mysql5/share/mysql にあります。 rc ファイルをシステム用に作成する場合は、このテンプレートを使用する必要があります。 次に例を示します。

  1. # mkdir -p /etc/opt/csw
    アクセス権、chown root:bin /etc/opt/cswchmod 0755 /etc/opt/csw を使用します。
  2. # cp /opt/csw/mysql5/share/mysql/mysql5rc /etc/opt/csw/
    mysql5rc ファイルが使用可能でない場合、デーモンは、デフォルトを使用して起動します。 はじめての実験的なシステムの場合は、この手順は気にしないでください。任意の手順です。

H. 参考資料

I. MySQL セキュリティーは、この記事の範疇ではありません。 しかし、考慮すべき基本手順をいくつか紹介しておきます。

  • MySQL ルートユーザーがパスワードを設定しており、設定されているパスワードが、ホストシステムのルートパスワードとは異なることを確認します。
  • データベースディレクトリへの読み取りアクセスと書き込みアクセスを持っているのは、MySQL ユーザーだけであることを確認します。
  • PHP 向けの Web サーバー上で MySQL を使用しており、PHP/Apache と MySQL 間で、localhost 接続だけが必要な場合は、/opt/csw/mysql5/my.cnf 構成ファイルの [mysqld] セクションに行 skip-networking を追加します。 これにより、MySQL サーバーデーモンへのすべての TCP/IP リモート接続が無効になります。
  • 特に新しい SQL 注入攻撃が発生した場合に、ローカルファイルからの承認されていない読み取りを許可する可能性がある LOAD DATA LOCAL INFILE コマンドを使用できないようにします。 my.cnf ファイルの [mysqld] セクションに、set-variable=local-infile=0 を追加します。
  • users テーブル内の匿名ユーザーアカウントを削除します。

上記の手順は、単なる表面的な対策ですが、インストール後の大幅な改善に役立ちます。 好みのインターネット検索エンジンに「Securing MySQL」と入力して、Web 上にある MySQL のセキュリティーに関する記事を参照してください。

6. MySQL 5 のインストールとテストは、これで完了です。 次は、PHP 5 を構築します。 Mel Lester からの許可を受けて、Web サイトの一部を引用します。 使用しているオプションやパスが異なるため、PHP 構成の一部を変更します。

具体的には、コンパイルして /opt/csw/mysql5 にある Blastwave MySQL 5 へのパスを使用する前に、PHP 5 の構成を変更し、ほかのオプションもいくつか追加します。 この手順では、PHP 5 を構築するために必要な GNU ツールをインストールしたかどうかも確認できます。

A. root として大域ゾーンにログインし、次のように、/opt/csw/bin/usr/sfw/bin$PATH にあることを確認します。

global# echo $PATH
  /opt/csw/bin:/usr/sfw/bin:/usr/sbin:/usr/bin:/usr/openwin/bin: \
  /usr/dt/bin:/usr/ccs/bin

それでは説明します。 まず、root.profile を変更して、/ ディレクトリをごみでいっぱいにはしない方がよいでしょう。 Solaris 10 OS、Solaris Express、または OpenSolaris の場合は、ディレクトリ /root を作成し、bash または ksh シェルを使用し、/root をホームディレクトリとする別の root アカウントを /etc/password に作成します。 ただし、これは、あなたと Google にとっての 1 つの選択であり、課題です。 どのような決定をする場合でも、パスが上述のコンポーネントを含むことを確認します。 それから先に進みます。

B. 上記の手順 3 でインストールされた Blastwave.org の pkg-get コマンドを使用して、GNU autoconfautomake、および gsed パッケージをインストールします。 インストールされるソフトウェアのバージョンは、次に示すソフトウェアのバージョンに比べ、同じレベルかより新しい場合もあります。

global# pkg-get -i autoconf
...
global# which autoconf && autoconf --version | head -2
/opt/csw/bin/autoconf
autoconf (GNU Autoconf) 2.59
Written by David J. MacKenzie and Akim Demaille.

global# pkg-get -i automake
...
global# which automake && automake --version | head -2
/opt/csw/bin/automake
automake (GNU automake) 1.8.3
Written by Tom Tromey <tromey@redhat.com>.

global# pkg-get -i gsed
...
global# which gsed && gsed --version | head -2
/opt/csw/bin/gsed
GNU sed version 4.1.4
Copyright (C) 2003 Free Software Foundation, Inc.

C. PHP をインストールするために必要なほかのオープンソースソフトウェアの可用性を確認します。 必要であれば、PHP マニュアルの「Solaris specific installation tips」セクションを参照します。 インストールされるソフトウェアのバージョンは、次に示すソフトウェアのバージョンに比べ、同じレベルかより新しい場合もあります。

global# which gcc && gcc --version | head -2
/usr/sfw/bin/gcc
gcc (GCC) 3.4.3 (csl-sol210-3_4-branch+sol_rpath)
Copyright (C) 2004 Free Software Foundation, Inc.

global# which gmake && gmake --version | head -2
/usr/sfw/bin/gmake
GNU Make 3.80
Copyright (C) 2002 Free Software Foundation, Inc.

global# which flex && flex --version | head -2
/usr/sfw/bin/flex
flex version 2.5.4

global# which bison && bison --version | head -2
/usr/sfw/bin/bison
bison (GNU Bison) 1.875
Written by Robert Corbett and Richard Stallman.

global# which gm4 && gm4 --version | head -2
/opt/csw/bin/gm4
GNU M4 1.4.3
Written by Rene' Seindal.

global# which perl && perl -v | head -2
/opt/csw/bin/perl

This is perl, v5.8.7, built for sun4-solaris-thread-multi

global# which gunzip && gunzip -V | head -2
/usr/bin/gunzip
gunzip 1.3.3-patch.1
(2002-03-08)

global# which gtar && gtar --version | head -2
/usr/sfw/bin/gtar
tar (GNU tar) 1.14
Copyright (C) 2004 Free Software Foundation, Inc.

D. ソースから libxml2 を構築して、オープンソースツールをテストします。

最新バージョンを xmlsoft からダウンロードします。

この時点では、次のバージョンの圧縮ソースがありました。

# wget ftp://xmlsoft.org/libxml2/libxml2-2.6.26.tar.gz

次の手順を実行するディレクトリを次のように選択します。

global# gunzip -cd libxml2-2.6.26.tar.gz | gtar xvpf -
global# cd libxml2-2.6.26
global# ./configure
...
global# gmake
...
global# gmake install
...

libxml2 ソフトウェアの構築とインストールが完了し、このソフトウェアが /usr/local に保存されます。

注: Solaris Nevada のビルド 42 以降には、アップデート済みの libxml2 パッケージが含まれており、上記の手順は不要なことが確認されています。 ビルド 42 以降から派生した OpenSolaris ビルドを含め、Solaris Nevada のビルド 42 以降を実行する場合は、パート 6D の libxml2 の構築をスキップし、次のパート 6F の PHP5 構成行の一部を変更できます。

--with-libxml-dir=/usr/local

次のように変更します。

--with-libxml-dir=/usr 

E. ファイル /etc/apache2/httpd.conf が存在しない場合は、次のように記述します。

global#cp /etc/apache2/httpd.conf-example /etc/apache2/httpd.conf

好みのテキストエディタで、/etc/apache2/httpd.conf を次のように編集します。

  • 必要な場合、デフォルトが 127.0.0.1ServerName にホスト名を設定します。
  • ServerAdmin に有効な電子メールアドレスを設定します。

F. PHP の最新の本番バージョンを www.php.net からダウンロードして、コンパイルします。 ここでも、/src/build などの任意のディレクトリを選択します。 この記事の執筆時点では、PHP の最新の本番バージョンは、http://www.php.net/downloads.php#v5 で提供されています。 この記事では、gzip 形式で圧縮されたバージョンのダウンロードを選択したので、次のコマンドで先に進めます。

global# gunzip -cd php-5.1.6.tar.gz | gtar xvpf -
...
global# cd php-5.1.6

ここが、元の Web ページと異なる点です。 元の記事では、/usr/sfw にある古い MySQL 4 が使用されていますが、この記事では、/opt/csw/mysql5 にある最新の MySQL 5 を使用します。 したがって、選択した構成オプションは、次のようになります。

 global# ./configure --with-apxs2=/usr/apache2/bin/apxs --enable-dbase \
 --with-libxml-dir=/usr/local --with-config-file-path=/etc/apache2 \
 --with-mysql=shared,/opt/csw/mysql5 \
 --with-mysqli=shared,/opt/csw/mysql5/bin/mysql_config \
 --with-xpm-dir=/usr --with-gd --with-tiff-dir=/usr --with-bz2=/usr/lib \
 --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib --enable-mbstring \
 --enable-calendar--enable-bcmath --enable-ftp --enable-exif

単純なサーバー設定では、上記の構成オプションで十分です。 ほかにも多数のオプションがあり、どれを使用するかは、ユーザーの選択やドキュメントに委ねられています。 オプションの一部は、command# ./configure --help を入力したり、PHP サイトの「付録 F. Configure オプション」の中心となる構成オプションを参照したりすることで、確認できます。

注: openssl を有効化する場合は、openssl ライブラリが同じバージョンとなるように、Apache と MySQL を再コンパイルする必要があります。そうしないと、PHP から MySQL への接続が失敗します。 セッションにクッキーを使用する予定の場合は、mcrypt ライブラリをシステムに追加し、PHP コンパイルオプション --with-mycrpt を使用することによって、パフォーマンスが高まることがあります。

備考: ほかの人がどのような config オプションを使用しているのか関心がある場合は、単純に、好みのインターネット検索エンジンに phpinfo() を入力してください。 :-)

さて、次のように構築を行います。

 ...
 global# gmake
 ...
 global# gmake install

 ...
 Installing PHP SAPI module: apache2handler
 /var/apache2/build/instdso.sh SH_LIBTOOL='/var/apache2/build/libtool' libphp5.la 
/usr/apache2/libexec
 /var/apache2/build/libtool --mode=install cp libphp5.la /usr/apache2/libexec/
 cp .libs/libphp5.so /usr/apache2/libexec/libphp5.so
 chmod +x /usr/apache2/libexec/libphp5.so
 cp .libs/libphp5.lai /usr/apache2/libexec/libphp5.la
 libtool: install: warning: remember to run 'libtool --finish /build/php-5.1.2/libs'
 chmod 755 /usr/apache2/libexec/libphp5.so
 [activating module 'php5' in /etc/apache2/httpd.conf]
 Installing PHP CLI binary: /usr/local/bin/
 Installing PHP CLI man page:/usr/local/man/man1/
 Installing build environment: /usr/local/lib/php/build/
 Installing header files: /usr/local/include/php/
 Installing helper programs: /usr/local/bin/
  program: phpize
  program: php-config
 Installing man pages: /usr/local/man/man1/
  page: phpize.1
  page: php-config.1
 Installing PEAR environment:/usr/local/lib/php/
 [PEAR] Archive_Tar - installed: 1.3.1
 [PEAR] Console_Getopt - installed: 1.2
 pear/PEAR can optionally use package "pear/XML_RPC" (version >= 1.4.0)
 [PEAR] PEAR - installed: 1.4.6
 Wrote PEAR system config file at: /usr/local/etc/pear.conf
 You may want to add: /usr/local/lib/php to your php.ini include_path
 Installing PDO headers: /usr/local/include/php/ext/pdo/
 #

G. ファイル php.ini-distphp-5.1.6 ソースディレクトリから Apache の config ディレクトリに次のようにコピーします。

global# cp php.ini-dist  /etc/apache2/php.ini

Apache Web サーバーをゾーン内で設定する場合は、次のようなパスまたは使用している任意のゾーンがあるでしょう。

global# cp php.ini-dist /zones/zone0/root/etc/apache2/php.ini

次に、構成ファイルを編集して、スタック全体をテストします。

H. 構成ファイルを編集します。

/etc/apache2/php.ini ファイルを編集して、PHP オプションを設定します。

PHP 5 では、MySQL インタフェースモジュールは、一切、自動的にロードされないようになりました。

このモジュールおよび必要なその他すべての拡張モジュールを明示的にロードする必要があります。 このためには、php.ini ファイルを編集して、次に示す 2 行を追加します。

1. PHP 5 のビルドが必要なモジュールを作成したことを次のように確認します。

# ls -l /usr/local/lib/php/extensions/no-debug-non-zts-20050922/  
total 1088
-rwxr-xr-x1 root root103144 Aug 29 21:48 mysql.so
-rwxr-xr-x1 root root429948 Aug 29 21:48 mysqli.so

php.ini 内で、次の記述で始まる行を探します。

; Directory in which the loadable extensions (modules) reside.
extension_dir =

この行を次のように編集します。

extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20050922/"

PHP 5 を別の場所にインストールした場合は、この行を適宜調整してください。

2. 次に、php.ini ファイルの次のようなブロックを探します。

  ;;;;;;;;;;;;;;;;;;;;;;
  ; Dynamic Extensions ;
  ;;;;;;;;;;;;;;;;;;;;;;

次の行を追加します。

  
extension=mysql.so

これで、Apache/PHP 5 がなぜ MySQL に接続できないのかを理解しようと頭を悩ませることはありません。

3. /etc/apache2/httpd.conf ファイルを編集し、PHP モジュールをロードします。

php5_module が含まれている行を探します。 LoadModule 文の右側にあるパスは、システム上の PHP モジュールのパスを指している必要があります。 このパスは、システム上の /usr/apache2相対パスです。 したがって、実際には、/usr/apache2/libexec/libphp5.so となります。 上記のように、gmake を実行して PHP 5 をインストールした場合は、すでに次の記述が追加されているはずですが、必ずチェックしてください。

LoadModule php5_module libexec/libphp5.so

Apache に、Web ページファイル名の.php 拡張子を PHP として解析させます。 /etc/apache2/httpd.conf ファイルの AddType セクションを探して、次の行を追加します。

AddType application/x-httpd-php .php

httpd.conf に前述の行を追加する代わりに、application/x-httpd-php php phtml/etc/apache2/mime.types ファイルに追加することを好むユーザーもいます。 どちらの方法でも問題ありません。

I. Apache 2 を起動してテストします。

警告: SAMP 関係のほかの記事や Companion CD スクリプトを使用して、または手動で、事前に Apache 1.3 をアクティブにしている場合は、次に示す手順を実行しようとすると、結果として衝突が起こります。 先に進む前に、Apache 1.3 を無効にすることが重要です。

Apache 1.3 が無効なことを次のように確認します。

 #svcs -a | grep apache
 legacy_run Sep_11lrc:/etc/rc3_d/S50apache

Apache 1.3 の旧バージョンの rc 起動スクリプトが、/etc/rc3_d/S50apache であることが示されます。 スクリプトは、/etc/apache/httpd.conf で、Apache の構成ファイルの存在を検索し、ファイルがない場合は、Apache 1.3 を起動しません。 Apache 1.3 を無効にする場合は、前述のパスにファイルがないことを確認するか、少し極端かもしれませんが、起動スクリプトの名前を次のように変更します。

 /etc/rc3_d/S50apache

次のように変更します。

/etc/rc3.d/OFF-S50apache

起動時には、文字「S」で始まるスクリプトだけが、実際に実行されます。

Apache 2 を次のように起動します。

# svcadm enable apache2
# svcs | grep -i apache2
online   18:07:10 svc:/network/http:apache2

Apache 2 が正常に起動した場合は、ps コマンドを使用でき、次のような複数のプロセスが表示されるはずです。

# ps -ef | grep http
webservd 18592 38020Sep 11 ? 0:03 /usr/apache2/bin/httpd -k start
webservd 13093 38020Sep 08 ? 0:07 /usr/apache2/bin/httpd -k start

これらのプロセスが 10 個程度表示されても、心配しないでください。 また、次のようなプロセスが表示されても心配ありません。

root 49810 Jul 17 ? 1:28 /usr/apache/bin/httpd  \
                 -f /etc/apache/httpd-standalone-ipp.conf

単に、古い Apache 1.3 が、ネットワークポート 631 上で、Internet Print Protocol (IPP) リスナーによって使用されているだけです。 ポート 80 で実行されているのではないので、この記事の Web サーバー構成とは衝突しません。

7. Apache 2 Web サーバーの DocumentRoot ディレクトリに、テストに役立つ内容を保存します。 選択したテキストエディタを使用して、次のファイル (Web ページ) を作成し、phpinfo.php を呼び出します。

<html>
<body>
      <p>Hello World</p>
      <?php phpinfo(); ?>
  </body>
</html> 

Apache httpd.conf ファイルで定義されているように、DocumentRoot ディレクトリにファイルを保存します。 Web ブラウザで http://your-host-name/phpinfo.php を開き、すべて機能している場合は、PHP、Apache、および MySQL の構成に関する詳細情報が得られるはずです。

注: このファイルは、攻撃者にとって有益な、サイトに関する大量の情報を示しているので、テスト後は、削除するか、HTTP 認証で保護することをお勧めします。

そろそろ、上記の phpinfo Web ページは、実際は、基本的に、Apache と PHP の連携をテストするだけであることに気付かれたでしょう。 出力は、有効な MySQL クライアントに関する情報を表示しますが、MySQL サーバーとの接続は、実際にはテストしません。 ここまでの作業を行なっている場合、ほぼ 99%、PHP/MySQL アプリケーションをインストールするだけで、正常な動作を期待できます。 ただし、どうしても完全性、正確さ、およびほぼすべてをテストすることにこだわるのであれば、次のような処理を実行するシンプルな PHP Web ページがあります。

  1. PHP ページから、MySQL への接続を試みます。
  2. すべての MySQL インストール後に存在するデータベース、mysql データベースの名前を選択します。
  3. mysql データベース内部に存在するテーブル名のリストを表示します。

コードの大部分は、PHP のマニュアル内の関数使用例から引用されています。 次の PHP コードをファイル (Web ページ) にコピーして、simple-test.php のような名前を付けます。 ファイルを編集して、MySQL サーバーに接続するためのパスワードを挿入します。 phpinfo.php を先ほど保存したのと同じ Web サーバー DocumentRoot に、ファイルを保存します。

PHP コードは次のとおりです。

<?php
$db_username = "root";// EDIT if needed: The username for mysql.
$db_password = "insert-yours-here"; // EDIT ME
    // Above is YOUR password used for mysql admin access.
$db_hostname = "localhost";
$db_name = "mysql";  // Install creates this admin database.

if (!mysql_connect($db_hostname, $db_username, $db_password)) {
   echo "Can't connect to MySQL Server";
   exit;
}else{
   echo "Connection to Mysql server succeeded.";
   echo "<br>";
}

// Now query the db and get the list of tables.
$result = mysql_db_query($db_name, "SHOW TABLES");

if (!$result) {
   echo "DB Error, could not list tables\n";
   echo 'MySQL Error: ' . mysql_error();
   exit;
}

echo "<p>The selected database is name is mysql</p>";
echo "<p>Here is the list of tables</p>";
while ($row = mysql_fetch_row($result)) {
   echo "Table: {$row[0]} <br>";
}

mysql_free_result($result);
?>

上記を正しくコピーでき、ソフトウェアが適切に構成されている場合は、Web ブラウザで http://yourserver.com/simple-test.php を開くことができ、次のような内容が表示されるはずです。

Connection to Mysql server succeeded.
The selected database is name is mysql.

Here is the list of tables

Table: columns_priv 
Table: db 
Table: func 
Table: help_category 
Table: help_keyword 
Table: help_relation 
Table: help_topic 
Table: host 
Table: proc 
Table: procs_priv 
Table: tables_priv 
Table: time_zone 
Table: time_zone_leap_second 
Table: time_zone_name 
Table: time_zone_transition 
Table: time_zone_transition_type 
Table: user 

8. PHP のセキュリティーについて検討しましょう。

システムを機能させているので、PHP のデフォルトインストールおよび構成ファイル php.ini 内にあるデフォルトオプションは、開発作業でのみ安全で、ネットワーク上で公開される本稼働サーバーでは安全ではないことに気を付けてください。 次に示す対策を取ることを強くお勧めします。

A. 上記の手順 7 で作成した phpinfo および simpletest PHP Web ページを削除します。 または、何らかの種類の HTTP 認証で、これらの Web ページが保存されているディレクトリを保護することによって、今すぐロックします。

B. 次に示すような、PHP の保護に関するチュートリアルを参照することを強くお勧めします。

そのような時間がない場合は、推奨されており、より安全な構成ファイル php.ini-recommended 内にある PHP ソースコードディレクトリに、最低限、目を通してください。 このディレクトリを基本的な起動構成ファイル php.ini-dist と比較して、本稼働サイトのセキュリティーとパフォーマンスについて、どのような変更が加えられているのかを確認するとよいでしょう。

(# diff php.ini-dist php.ini-recommended | less)

この記事が、いくつかの疑問を解消し、役立つヒントを提供できたのであれば、嬉しく思います。 Solaris OS 向けの SAMP サーバーを活用してください。


Unless otherwise licensed, code in all technical manuals herein (including articles, FAQs, samples) is provided under this License.


BigAdmin