MAMPでWebサーバ構築5

MAMP

今回は、MySQLについて。
デフォルトパスワードを任意のパスワードへ変更します。

スタートページ「http://localhost:8888/MAMP/?language=Japanese」を開いてみると、「phpMyAdmin」へのリンク、ホスト、ポート、ユーザ名、パスワード、ソケット等の情報が見て取れます。

phpMyAdminはPHPで書かれたMySQL管理用スクリプトです。これを使えば、Webブラウザを使ったデータベース管理が可能となります。


さて、デフォルトの状態では、MySQLにアクセスするためのユーザ名がroot、パスワードがrootに設定されていますが、これをそのまま使い続けるのは好ましいことではありません。そこで、ターミナルを使ってパスワードを変更します。

MAMPによってインストールされたmysqlコマンドは次の所にあります。

/Applications/MAMP/Library/bin/mysql

ここにはパスが通っておらずコマンドを入力するのが面倒なので、パスが通った「/usr/bin」にシンボリックリングを張ることにします。
コマンドは次のとおり。sudoコマンドを使うので管理者用パスワードの入力が必要です。

$ cd /usr/bin
$ sudo ln -s /Applications/MAMP/Library/bin/mysql mysql

次は、mysqlコマンドを使ってサーバにログインする方法です。
ターミナルに次のコマンドを打ち込みます。パスワードを聞いてきたら、デフォルトパスワードの「root」を入力します。

$ mysql -u root -p

次のようなプロンプトが帰ってきたらログイン成功です。

mysql>

次のコマンドで新しいパスワードを設定します。なお、','に囲まれた部分に任意のパスワードを入力してください。

mysql>set password = password('新しいパスワード');

「Query OK,」とメッセージが帰ってきたら、パスワードの変更が成功です。

または、次のコマンドでパスワードを設定します。

mysql>set password = old_password('新しいパスワード');

上の2つのコマンド、'password'と'old_password'の部分が違いますが、ともにパスワードを設定するもの。
MySQLの新旧バージョンでパスワードのハッシュ長が異なることから、互換性を取るために2通りのパスワード設定のコマンドがあります。
セキュリティの面では、'password'の方が好ましいのですが、'old_password'を選択しました。なぜなら、MovableTypeのデータベースとしてMySQLを使うとき、'old_password'じゃないとダメっぽいからです。

さて、話を元に戻します。
MySQLコマンドを終了するには、ターミナルに次のように入力します。

mysql> exit

以上でパスワードの変更が終了です。

MySQLのデータベースにアクセスするためにパスワードを変更したので、これを利用するPHPスクリプトについては、パスワード周りのコードを修正しなければなりません。

まずは、MAMPのトップページ「http://localhost:8888/MAMP/?langpage=Japanese」。これをブラウザで表示すると、次のようなエラーが表示されます。MySQLのパスワードを変更したことにより、データベースにアクセスできなくなったからです。

Error: Could not connect to MySQL server!

これを修正するために次のように変更します。
ファイル"/Applications/MAMP/bin/mamp/index.php"の15行目

修正前
 $link = @mysql_connect(':/Applications/MAMP/tmp/mysql/mysql.sock', 'root', 'root');

修正後
 $link = @mysql_connect(':/Applications/MAMP/tmp/mysql/mysql.sock', 'root', '新しいパスワード');

次に、MySQL管理スクリプト「phpMyAdmin」です。
phpMyAdminのアドレス「http://localhost:8888/phpMyAdmin/」にアクセスすると、やはりパスワード違いによりデータベースを開くことができません。
そこで次のように修正します。

ファイル"/Applications/MAMP/bin/phpMyAdmin/config.inc.php"の86行目

修正前
 $cfg['Servers'][$i]['password'] = 'root';

修正後
 $cfg['Servers'][$i]['password'] = '新しいパスワード';

以上が、MySQLのパスワード変更に伴うスクリプト変更です。

MAMPではじめるMac OS Xサーバサイドプログラミング Image
発送可能時期:通常24時間以内に発送
売り上げランキング:20197
発売日:2006/06
出版社:ラトルズ
著者等:掌田 津耶乃
投稿者 Jun : 22:58 | コメント (0) | トラックバック (0)

MAMPでWebサーバ構築4

MAMP

MacOSはマルチユーザOS。ユーザごとにWebページを持つことができます。

MacOSにはもともとApacheが搭載されいて、「システム環境設定」の「共有」の「パーソナルWeb共有」を有効にするとApacheが起動し、ユーザごとのWebページを表示することができます。URLはというと、「http://localhost/~(ユーザ名)/」となります。
例えばユーザ名が「jun」の場合、「http://localhost/~jun/」です。

ところで、そのWebページがディスク上のどこに保存されているかというと、ユーザのホーム・ディレクトリ直下の「Sites」ディレクトリになります。
ユーザjunの場合には、「/Users/jun/Sites/」です。

さて、MAMPの場合はどうでしょう? 
Apacheの環境設定ファイル「/Applications/MAMP/conf/apache/httpd.conf」の中身をのぞいてみると、427行目に次のような記述があります。

UserDir public_html

よって、ホーム・ディレクトリ直下の「public_html」ディレクトリが、Webページを置くディレクトリになります。
ユーザ名が例えばjunの場合には、「/Users/jun/public_html/」。

私の場合、元々ある「Sites」をそのまま使っちゃおうってことで、427行目を次のように変えてみました。

UserDir Sites

また、ユーザの環境を設定する部分も、上の変更に連動して次のように変えてみました。433行目です。
今のところ、この部分はコメントアウトされているので何も影響を与えませんが、将来いじるかも知れないので念のためです。

変更前
#<Directory /home/*/public_html>
変更後
#<Directory /Users/*/Sites>

設定ファイルを変えたので、MAMP.appでサーバを再起動し、「http://localhost:8888/~(ユーザ名)/」にアクセスしてみます。
ユーザjunの場合、「http://localhost:8888/~jun/」となります。
次のように、表示されるでしょう。もともとSitesディレクトリに入っているindex.htmlが表示されるはずです。

スタートページ


MAMPではじめるMac OS Xサーバサイドプログラミング Image
発送可能時期:通常24時間以内に発送
売り上げランキング:93022
発売日:2006/06
出版社:ラトルズ
著者等:掌田 津耶乃
投稿者 Jun : 21:52 | コメント (0) | トラックバック (0)

MAMPでWebサーバ構築3

MAMP

PHPにはPEARっていう拡張ライブラリのようなパッケージ群があります。
PHPがインストールされているならば、既にいくつか入っているはず。

今日はPEAR関係のセットアップ。
いよいよ、ターミナル使うぞ。

ターミナルを立ち上げたら、「which pear」って入力してみましょう。
pearコマンドが「/usr/bin」に存在するのが分かります。

$ which pear
/usr/bin/pear


このpearってMacOSが元々持っているPHPのもので、MAMPによってインストールされたものじゃありません。
MAMPがインストールしたPEARはどこかというと、PHP4,PHP5の両方の環境で使えるように、次の2カ所にインストールされています。

PHP4用 /Applications/MAMP/bin/php4/bin/pear
PHP5用 /Applications/MAMP/bin/php5/bin/pear

これらのディレクトリにはパスが通ってないし、かといってこの長ったらしいパスをいちいち入力するのも面倒なので、/usr/binにリンクを張ることにします。
私の場合、元々MacOSに付いているpearは使わず、MAMPのPHP5のみ利用するので、次のようにターミナルに入力しました。
これで、オリジナルpearがpear_originalにリネームされ、MAMPがインストールしたPHP5用pearが、/usr/bin/pearとしてリンクされます。
なお、sudoを使いますので、管理者のパスワードを適宜入力すること。

$ cd /usr/bin
$ sudo mv pear pear_original
$ sudo ln -s /Applications/MAMP/bin/php5/bin/pear ./pear

次に、pearコマンドを使った、パッケージのマネージメントを2,3紹介。
まずは、list。現在インストールされてるpearパッケージが一覧表示されます。
Archive_Tar、Console_Getopt、PEARが既にインストール済みなのが分かります。

$ pear list
Installed packages, channel pear.php.net:
=========================================
Package        Version State
Archive_Tar    1.3.1   stable
Console_Getopt 1.2     stable
PEAR           1.4.9   stable

次は、upgrade-all。インストール済みのパッケージの最新バージョンを、自動的にダウンロードしてインストールしてくれます。

$ sudo pear upgrade-all
Will upgrade pear
Did not download optional dependencies: pear/XML_RPC, use --alldeps to download automatically
pear/PEAR can optionally use package "pear/XML_RPC" (version >= 1.4.0)
downloading PEAR-1.4.10.tgz ...
Starting to download PEAR-1.4.10.tgz (284,880 bytes)
..........................................................done: 284,880 bytes
upgrade-all ok: channel://pear.php.net/PEAR-1.4.10
PEAR: Optional feature webinstaller available (PEAR's web-based installer)
PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)
To install use "pear install pear/PEAR#featurename"

listで確認すると、確かにバージョンが上がりました。

$ pear list
Installed packages, channel pear.php.net:
=========================================
Package        Version State
Archive_Tar    1.3.1   stable
Console_Getopt 1.2     stable
PEAR           1.4.10  stable

次に、パッケージを新規インストールするinstallです。
ここでは、私がよく使うパッケージ「Cache_Lite」をインストールしてみます。

$ sudo pear install Cache_Lite
downloading Cache_Lite-1.7.2.tgz ...
Starting to download Cache_Lite-1.7.2.tgz (29,055 bytes)
.........done: 29,055 bytes
install ok: channel://pear.php.net/Cache_Lite-1.7.2

listで確認すると、確かにCache_Liteが追加されていますね。

$ pear list
Installed packages, channel pear.php.net:
=========================================
Package        Version State
Archive_Tar    1.3.1   stable
Cache_Lite     1.7.2   stable
Console_Getopt 1.2     stable
PEAR           1.4.10  stable

以上、pearコマンドによるパッケージ管理を簡単に紹介しました。
pearコマンドには、その他様々な命令がありますが、ターミナル上で「pear」と入力すればヘルプを見ることができます。
是非一読ください。

MAMPではじめるMac OS Xサーバサイドプログラミング Image
発送可能時期:通常24時間以内に発送
売り上げランキング:38751
発売日:2006/06
出版社:ラトルズ
著者等:掌田 津耶乃
投稿者 Jun : 17:26 | コメント (2) | トラックバック (2)

MAMPでWebサーバ構築2

MAMP

前回の続き。
Apacheの設定ファイルを手動でいじります。

Apacheの設定ファイルの場所は次のとおりです。
このファイルをテキスト・エディタで編集します。

/Applications/MAMP/conf/apache/httpd.conf

さて、Webブラウザで「http://localhost:8888/」にアクセスすると次のように表示されるでしょう。

Index of /

サーバのDocumentRoot(前回のエントリー参照)に設定したパス「/Apprications/MAMP/htdocs/」に、index.htmlやindex.phpが存在しないため、そのディレクトリ内のファイルリストを表示されています。(実際はファイルが何一つないので表示されていませんけど)
クローズドな環境であれば丸見えでもOKですが、サーバを外部に公開するならばリストをさらすのはあまり好ましくないでしょう。
で、これを制御するがOptionsディレクティブで指定するIndexes。これを除外します。
また、私好みの環境として、FollowSymLinks、ExecCGI、MultiViewsもいじりました。
この辺の詳しいドキュメントはこちら

サーバ全体のデフォルト設定はhttpd.confの378行目あたり。

変更前
<Directory />
Options Indexes FollowSymLinks
AllowOverride All
</Directory>

変更後
<Directory />
Options ExecCGI MultiViews
AllowOverride All
</Directory>

DocumentRootの変更は406行あたり。<Directory "/Applications/MAMP/htdocs">と</Directory>に囲まれた部分です。
コメントアウトすることで、デフォルト設定と一緒にしてみました。

変更前
Options All

変更後
#Options All

さて、設定ファイルの変更後はApacheサーバを再起動します。
つまり、MAMP.appでサーバを一旦停止し、再度起動します。

それでは、もう一度「http://localhost:8888/」にアクセスしてみましょう。
「Forbidden」のページが表示され、ディレクトリの一覧が出てこなくなります。

Forbidden

--- 以下、2006/8/21追記 ---
もう一つ重要な設定を忘れていましたので、追記しておきます。
perlなんかで書かれたcgiプログラムを、cgiとして認識させるために、次のように変更します。

959行目あたり。

変更前
#AddHandler cgi-script .cgi

変更後
AddHandler cgi-script .cgi

これで拡張子がcgiであるファイルがcgiとして認識されます。

MAMPではじめるMac OS Xサーバサイドプログラミング Image
発送可能時期:通常24時間以内に発送
売り上げランキング:38751
発売日:2006/06
出版社:ラトルズ
著者等:掌田 津耶乃
投稿者 Jun : 15:05 | コメント (0) | トラックバック (0)

MAMPでWebサーバ構築1

MAMP

この前書いたMAMPについて、設定のいじり方を書き留めておきます。
まず手始めに、MAMPのコントロールアプリ、MAMP.appから。

アプリケーションを立ち上げたところ。
左側がApacheとMySQLの稼働状態。
右側が読んで字のごとく。

「環境設定」ボタンを押すと設定のプルダウン・メニューが表示されます。

MAMP.app

環境設定の最初のペイン「起動・停止」
好みのチェック・ボタンを設定します。
スタートページの場所はこのまま。

起動・停止

続きまして、「ポート」ペイン
デフォルトでは、ApacheとPHPの使用ポートが、それぞれ8888と8889に設定されています。
「...標準ポートに設定」ボタンを押すと、一般的なポート番号80と3306に変更されます。
「...初期値に戻す」で8888と8889が設定されます。
それ以外を設定したければ、入力窓に書き込みます。

ポート

「PHP」ペイン
PHP4とPHP5のいずれかを選択します。
Zend OptimizerとeAcceleratorは好みで。ちなみに私のマックがintelだからかどうか知りませんが、Zend Optimizerは選択できませんでした。

PHP

最後は「Apache」ペイン。
Document Rootのディレクトリを設定します。

Apache

このように、MAMP.appでごく限られた設定しか変更できません。
その他の設定は、テキスト・エディタを使い、設定ファイルを直接編集します。


MAMPではじめるMac OS Xサーバサイドプログラミング Image
発送可能時期:通常24時間以内に発送
売り上げランキング:177400
発売日:2006/06
出版社:ラトルズ
著者等:掌田 津耶乃
投稿者 Jun : 16:00 | コメント (1) | トラックバック (0)

MAMP

MAMP

Macintosh+Apache+MySQL+PHPでMAMP

MacOS Xには初めからApacheが入ってるし,ちょっと設定変えたらPHPが動く。MySQLだってインストールできるしね。
けれど,面倒くさい。

これを使えばインストールから起動までものの3分。
あっという間にPHPの開発環境のできあがり。

ダウンロードはここから

インストール手順は次のとおり。
1.ダウンロードしたファイルを展開して,ディスクイメージをマウント。
2.MAMPフォルダをアプリケーションフォルダに丸ごとコピー。
3.MAMP.appを起動。

これでApacheとMySQLとPHPが起動して,Webブラウザ上でスタートページが立ち上がります。
MySQLをいじるためのphpMyAdminもインストール済み。いたれりつくせり。
本格運用しようとすると,設定ファイルをそれなりにいじる必要がありますが,PHPのテスト環境として使うのであれば何もいじらなくてもこれで十分。

設定ファイルを含む全ファイルがすべてMAMPフォルダの中にあるから,どこにどのファイルがあるか迷わなくていいし,アンインストールしたければMAMPフォルダごとゴミ箱捨てちゃえばOKってのも安心でいいですね。

MAMPではじめるMac OS Xサーバサイドプログラミング Image
発送可能時期:通常24時間以内に発送
売り上げランキング:177400
発売日:2006/06
出版社:ラトルズ
著者等:掌田 津耶乃
投稿者 Jun : 12:50 | コメント (0) | トラックバック (1)

PHPとテンプレートエンジンSmarty

今日は、かなり久しぶりにPHPの話題。

Webのサーバーサイドスクリプト言語であるPHP。比較的取っつきやすくて動的なWebページを作成するにはうってつけ。今ではかなり幅広く普及した感があります。
ところで、Web上のスクリプト言語である以上、PHPで何らかのデータ処理を行った結果を、最終的にHTMLで吐き出すって作業を避けることができません。ロジカルな部分であるPHPと描画のためのHTMLの両方を扱わざるを得ず、その結果、両者がぐちゃぐちゃに入り交じった可視性の悪いファイルが出来上がることが必至です。

このような開発者泣かせの問題を解決する手段として、テンプレートエンジンSmartyがあります。

Smartyを使うとどのような利点があるかを示すために、日付及び時刻を表示するためのPHPスクリプトを作ってみました。

まずはベタなPHPのみのスクリプト。

サンプル1 (実行結果はここをクリック

<?php

// 現在のタイムスタンプ
$now = time();

// 日付と時刻を文字列に変換
$dateStr = date('Y-m-d(D)', $now);
$timeStr = date('H:i:s', $now);

// このファイルのパス
$myself = $_SERVER['PHP_SELF'];

echo "<html>";
echo "<head><title>sample1</title></head>";
echo "<body>";
echo "<p>Date:$dateStr</p>";
echo "<p>Time:$timeStr</p>";
echo "<a href=\"$myself\">update</a>";
echo "</body>";
echo "</html>";

?>

サンプル1は、変数$nowに現在のタイムスタンプを代入し、それを元に日付及び時刻を所定のフォーマットの文字列に変換し、それをブラウザ上に表示するというものです。ページをリロードするかupdateをクリックすることにより、表示が変化することが分かると思います。

この例では、PHPのecho文によってHTMLコードがWebブラウザに渡されています。HTMLコードがPHPスクリプトの中にどっぷりと埋め込まれ、PHPとHTMLがごちゃごちゃして非常に可視性が悪いです。

もう一つ例を挙げておきます。

サンプル2(実行結果はここをクリック

<?php

// 現在のタイムスタンプ
$now = time();

// 日付と時刻を文字列に変換
$dateStr = date('Y-m-d(D)', $now);
$timeStr = date('H:i:s', $now);

// このファイルのパス
$myself = $_SERVER['PHP_SELF'];

?>

<html>
<head><title>sample2</title></head>
<body>
<?php echo "<p>Date:$dateStr</p>" ?>
<?php echo "<p>Time:$timeStr</p>" ?>
<a href="<?php echo $myself ?>">update</a>
</body>
</html>

サンプル1と全く同じ結果が得られるものですが、ソースファイルが若干違います。
前半部分はPHPによるロジカルな部分。後半部分はHTMLコードです。とはいえ、現在時刻等の動的な値を描画するために、PHPスクリプトが後半のHTMLの中に埋め込まれていて、やはりすっきりしません。

いよいよ、テンプレートエンジンSmartyの登場です。
Smartyを使うと、ロジカルなPHPと描画のHTMLを別々に分離することができます。
Smartyを使ったスクリプトを次に示します。

サンプル3(実行結果はここをクリック

<?php

// 現在のタイムスタンプ
$now = time();

// 日付と時刻を文字列に変換
$dateStr = date('Y-m-d(D)', $now);
$timeStr = date('H:i:s', $now);

// このファイルのパス
$myself = $_SERVER['PHP_SELF'];

// Smarty
require_once 'Smarty/Smarty.class.php';
$smarty = new Smarty();

$smarty->assign('dateStr', $dateStr);
$smarty->assign('timeStr', $timeStr);
$smarty->assign('myself', $myself);

$smarty->display('sample3.tpl');

?>

後半がSmartyによる処理部分。
assignメソッドで動的に表示したい変数、$dateStrとか$timeStrとかをSmartyへ渡し、displayメソッドでWebブラウザへ出力します。
ここにある「$smarty->display('sample3.tpl');」が、ミソ。
sample3.tplがテンプレートです。Smartyは、assignメソッドで受け取った変数を、テンプレートファイルで展開し、その結果をWebブラウザに出力します。

テンプレートファイル sample3.tpl

<html>
<head><title>sample3</title></head>
<body>
<p>Date:{$dateStr}</p>
<p>Time:{$timeStr}</p>
<a href="{$myself}">update</a>
</body>
</html>

動的変数を表すために、{}で囲まれた特殊なタグを使いますが、それ以外は純粋にHTMLであることが分かるでしょう。サンプル1や2のようにecho文がありません。これでPHPとHTMLの分離がスッキリ。
Webページの表示を変更したければテンプレートをいじれば良し。逆にロジカルな部分を修正したければPHPをいじれば良い。開発者にとってメンテナンスが非常に楽ですね。


Smarty入門~PHP5+テンプレート・エンジンでつくるMVCアプリケーション~ Image
発送可能時期:通常24時間以内に発送
おすすめ度:Rating:4.0
売り上げランキング:13616
発売日:2005/03/15
出版社:翔泳社
著者等:山田 祥寛
投稿者 Jun : 23:59 | コメント (0) | トラックバック (0)

新サイト作ってみました。

AmazonのWebサービス(ECS)PHPPEARServices_AmazonSmartyでブログ風に仕上げました。

→あまじゅん

投稿者 Jun : 23:00 | コメント (0) | トラックバック (1)

PEARの本

PHPでPEAR使うんなら読むべし。

PEAR入門 PHP標準ライブラリを極める!
山田 祥寛
翔泳社 (2005/09/09)
売り上げランキング: 9,010
おすすめ度の平均: 4.33
3 PEARの本がでましたね。
5 まさにPEARの入門書
5 楽できそう
いきなりデータベース扱う所からスタートする本書に、一度は挫折しながらも、今では、なーるほどと思いつつ再読してます。
本書では、PEARのほんの一部ライブラリにのみしか言及されていませんが、PEAR関係の書籍ってこれ以外皆無だし、PEARのオフィシャルサイトドキュメントが貧弱なので、とっかかりにうってつけの本だと思いますよ。
投稿者 Jun : 22:22 | コメント (0) | トラックバック (0)

PHPインストールする4

昨日の続きです。
PHPをソースからインストールするのをあきらめて、MacOS用のインストーラを使うことにした。

ダウンロードはこちらから。どうせなら最新にということで、PHP5.1.2をインストール。
Mac用のインストーラだから簡単簡単。最初からこれでいけば良かった。
PHPインストーラ

phpinfoをブラウザで表示させたところ。PHPのバージョンは5.1.2。
phpinfo


PEARも全く問題なく動作。
試しにCache_Liteパッケージをインストールしてみる。

$ sudo pear install -a Cache_Lite
downloading Cache_Lite-1.6.0.tgz ...
Starting to download Cache_Lite-1.6.0.tgz (25,865 bytes)
.........done: 25,865 bytes
install ok: channel://pear.php.net/Cache_Lite-1.6.0
PowerMacG4:/usr/local/bin jun$ pear list
Installed packages, channel pear.php.net:
=========================================
Package Version State
Archive_Tar 1.3.1 stable
Cache_Lite 1.6.0 stable
Console_Getopt 1.2 stable
PEAR 1.4.6 stable

Marcさんは神です。

投稿者 Jun : 14:41 | コメント (0) | トラックバック (0)

ナビゲーション

ブログを検索


Google

カウンタ

o-ume8 COUNTER
o-ume8 COUNTER
since 2003/11/14

iTunes Store Top Albums

iTunes_logow_125-40.gifiTMS

iTunes Store Top Songs

iTunes_logow_125-40.gifiTMS
pagecontainer bottom image