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.html や http://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 アプリケーションで必要な機能を提供するコンパイル時オプションが含まれる、最新バージョンのパッケージを取得できるということです。 この演習のインストールでは、次に示すソフトウェアを使用します。
構築には 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 を実行します。 ただそれだけで、 4. MySQL 5 パッケージをインストールする準備が整います。 コンソールまたは xterm ウィンドウから、 # /opt/csw/bin/pkg-get -i mysql5 mysql5client mysql5devel mysql5rt # /opt/csw/bin/pkg-get -i mysql5test 注: 5. 次に、MySQL 5 を設定します。 Blastwave.org は、ガイドを提供しています。 http://www.blastwave.org/packages.php/mysql5 にアクセスして、「View news and info about the software package」というグレーのボタンをクリックします。 この記事では、このガイドに記載されているガイドラインを繰り返し、説明の一部を発展させました。 著作物の使用を許可してくれた Blastwave の寛大さに謝意を表します。
A. 構成ファイル 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
注意: 上記の D. MySQL 5 を起動します。 サーバーを起動して、上記の手順が正しく実行されていることを確認するだけであれば、次のコマンドを実行できます。 # cd /opt/csw/mysql5 ; /opt/csw/mysql5/bin/mysqld_safe &
次に、 次のコマンドが有効なはずです。 # pkill mysql 再起動後の起動を確認したら、次の内容を読み進めてください。 注: Solaris Express、Nevada、および Solaris 10 アップデートの最新のビルドは、SMF を使用して、 古い RC ファイルの方法: # /etc/init.d/cswmysql5 start
新しい RC ファイルの代わりに SMF を使用するバージョンの Solaris に、MySQL 5 パッケージをインストールした場合は、そのパッケージが MySQL 5 の SMF 目録をインストールしたことがわかります。サービスの状態は、次のコマンドを使用することによって確認できます。 # svcs -a | grep mysql disabled 13:36:01 svc:/network/cswmysql5:defaultMySQL 5 サーバーが起動することを確認するためや、再起動時には、次のコマンドを実行します。 # svcadm enable svc:/network/cswmysql5:default 次のコマンドを再度使用して、確認を実行できます。 # svcs -a | grep mysql online 15:12:43 svc:/network/cswmysql5:default
サーバーは、コマンド E. 必ず MySQL 設定するパスワードは、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 show databases;
quit 注: 起動オプションは、
H. 参考資料 I. MySQL セキュリティーは、この記事の範疇ではありません。 しかし、考慮すべき基本手順をいくつか紹介しておきます。
上記の手順は、単なる表面的な対策ですが、インストール後の大幅な改善に役立ちます。 好みのインターネット検索エンジンに「Securing MySQL」と入力して、Web 上にある MySQL のセキュリティーに関する記事を参照してください。 6. MySQL 5 のインストールとテストは、これで完了です。 次は、PHP 5 を構築します。 Mel Lester からの許可を受けて、Web サイトの一部を引用します。 使用しているオプションやパスが異なるため、PHP 構成の一部を変更します。 具体的には、コンパイルして
A. global# echo $PATH /opt/csw/bin:/usr/sfw/bin:/usr/sbin:/usr/bin:/usr/openwin/bin: \ /usr/dt/bin:/usr/ccs/bin それでは説明します。 まず、 B. 上記の手順 3 でインストールされた Blastwave.org の 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. ソースから 最新バージョンを 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 ...
注: Solaris Nevada のビルド 42 以降には、アップデート済みの --with-libxml-dir=/usr/local 次のように変更します。 --with-libxml-dir=/usr E. ファイル global#cp /etc/apache2/httpd.conf-example /etc/apache2/httpd.conf
好みのテキストエディタで、
F. PHP の最新の本番バージョンを www.php.net からダウンロードして、コンパイルします。 ここでも、 global# gunzip -cd php-5.1.6.tar.gz | gtar xvpf - ... global# cd php-5.1.6 ここが、元の Web ページと異なる点です。 元の記事では、 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
単純なサーバー設定では、上記の構成オプションで十分です。 ほかにも多数のオプションがあり、どれを使用するかは、ユーザーの選択やドキュメントに委ねられています。 オプションの一部は、 注:
備考: ほかの人がどのような さて、次のように構築を行います。 ... 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-dist を php-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. 構成ファイルを編集します。
PHP 5 では、MySQL インタフェースモジュールは、一切、自動的にロードされないようになりました。 このモジュールおよび必要なその他すべての拡張モジュールを明示的にロードする必要があります。 このためには、 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
; 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. 次に、 ;;;;;;;;;;;;;;;;;;;;;; ; Dynamic Extensions ; ;;;;;;;;;;;;;;;;;;;;;; 次の行を追加します。 extension=mysql.so これで、Apache/PHP 5 がなぜ MySQL に接続できないのかを理解しようと頭を悩ませることはありません。 3.
LoadModule php5_module libexec/libphp5.so
Apache に、Web ページファイル名の AddType application/x-httpd-php .php
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/S50apacheApache 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 -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 サーバーの
<html>
<body>
<p>Hello World</p>
<?php phpinfo(); ?>
</body>
</html>
Apache 注: このファイルは、攻撃者にとって有益な、サイトに関する大量の情報を示しているので、テスト後は、削除するか、HTTP 認証で保護することをお勧めします。 そろそろ、上記の
コードの大部分は、PHP のマニュアル内の関数使用例から引用されています。 次の PHP コードをファイル (Web ページ) にコピーして、 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 ブラウザで 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 のデフォルトインストールおよび構成ファイル A. 上記の手順 7 で作成した B. 次に示すような、PHP の保護に関するチュートリアルを参照することを強くお勧めします。
そのような時間がない場合は、推奨されており、より安全な構成ファイル (# 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 SubscriptionsBigAdmin Areas
BigAdmin Sun Center
BigAdmin Topics |