PHP入門 ~初心者でもできるブログ作り~ -2ページ目

webサーバーの構築 part.2

人気ブログランキング ← こちらもよろしくお願いします。

 

[今回の範囲:教科書7~15p]

 

 

WindowsXP Personalをご利用になられている方にはあまり関係ない話なのですがProfessionalをご利用になられている方の場合、もしかしたらwebサーバーとしてIISがインストール~起動しているかもしれません。

 

これからはApacheをwebサーバーとして使っていくことになりますので、IISがインストールされているという方は教科書の7~9pを参考にしてIISを停止させて下さい。

 

今回の内容は教科書通り(10~15p)に進めていけばWindowsで簡単にApacheを利用できるようになりますので、ここではなぜIISを停止しなければならないのか?という点について講義をしたいと思います。

 

 

サーバープログラムにはそれぞれ一意の『ポート』が割り当てられることになっています。このポートはサーバー管理者が自由に設定してかまわないものなのですが慣習的にwell-knownポート(IT用語辞典)を使うのが慣例になっています。

 

webサーバーの場合でしたら80ポート、ネームサーバーなら53ポートというように一般に使われるポートというのは決まっています。そしてそれぞれのサーバーにwell-knownポートを割り当てていれば、そのサーバーへアクセスする際にポート番号を指定する必要がなくなるという特徴があります。ポートは0~65535までの数字が使われることになっていて、そのうちwell-knownポートは主に1023以下の数字に広く分布しています。逆に1024以上のポートを持つものとして有名なものにはPostgreSQLの5432ポートなどがあります。

 

インターネット上でのデータの送受信はIPアドレスとポートを組み合わせた『ソケット』を通じて行うのですが、そのためにポート番号が必要となってきます。

 

なにやら難しそうな話に思えるかもしれませんが、実は簡単な仕組みです。

 

例えば私のこのブログへアクセスするには http://websystem.ameblo.jp/ というurlを指定することになりますが、これだけで今までに説明した内容が全て含まれているのです。

 

ではこのurlの意味について説明してみます。

 

【 http:// 】

 

これは『httpプロトコルでアクセスしますよ』と宣言している箇所になります。

プロトコルというのはサーバープログラム毎に定められた世界標準の規約のことです。この規約に準拠していればどんなサーバープログラムを作っても使っても良いということになります。前述したIISもそしてApacheもhttpプロトコルに準拠したwebサーバープログラムです。

 

【 websystem.ameblo.jp 】

 

この箇所はhttpプロトコルでアクセスしたいサーバーのアドレスを指定しています。ここで指定するのはIPアドレスでもドメイン名でも構いません。通常ドメイン名を指定しますが、その際は自動的にネームサーバーにそのドメインのIPアドレスを問い合わせているのです。

 

 

さて、実際に『ソケット』を生成するためにはポート番号が必要なのですが、今回例に使ったurl内にはポート番号が明示されていません。しかし誰でもこのurlを指定すれば私のブログにアクセスすることができます。

 

なぜならwebサーバーへアクセスするにはhttpプロトコルを使います。そして特に指定をしない限りwebサーバーではwell-knownポートで定められている80ポートを使うことになっていますね。この80ポートでwebサーバーにアクセスできるのならポート番号は指定しなくてもよいという約束事があるのです。

 

もちろんアクセスする時にポート番号を明示しても全く問題はありません。

 

http://websystem.ameblo.jp:80/

 

このようにサーバー名の後に : を入れてポート番号を指定するのが本来の正しい表記方法となります。

 

 

まず『どのプロトコルを使いたいのか?』を指定して、そのプロトコルでデータをやり取りするためにソケットを作る。ソケットを作るためにはIPアドレスとポート番号を組み合わせなければならない。これらの約束事に従っていけば希望するデータのやり取りが可能になるという仕組みなのです。

質問も大歓迎です

全ての質問に完璧な回答ができるかは分かりません。もちろん本職ですから大抵の質問にはお答えできると思いますが、仮に未知との遭遇ということになれば、お答えするためにちょっとだけお時間をいただくことになるかもしれません(調査&確認のため)。

 

ですから教科書を基本として進めていく講義の中で質問がございましたらご遠慮なくコメントから質問して下さい。

サーバーとは? 番外編

子供に「新聞を取ってきて」と頼む ← リクエスト

 

子供が新聞を取ってきてくれる ← レスポンス

 

 

インターネット環境に置き換えるなら子供がサーバーですね。

webサーバーの構築 part.1

人気ブログランキング

 

[今回の範囲:教科書5~6p]

 

 

前回の内容は教科書の2~4pの内容と一緒でしたね。特に意識したわけではないのですが、やはり最初のテーマとしてふさわしいんでしょうね。

 

さて今回からは教科書に沿って話を進めてみたいと思います。教科書の5pを開いてみて下さい。

 

教科書の内容に移る前に「webサーバー」ではなく単に「サーバー」について解説してみたいと思います。

 

サーバー(server)とはその名の通り、「供給するもの」という意味ですね。そしてインターネット上に各種あるサーバーはまさにその名の通りの働きをします。サーバーの働きは次の動作が基本になります。

 

・リクエスト

・レスポンス

 

これらの動作については具体例を示して説明してみたいと思います。

 

まずwebサーバーについて考えてみましょう。みなさんがブラウザや携帯電話の端末等を使ってwebサイトを閲覧する時に陰で働いているのがwebサーバーとなります。

 

webサイトにアクセスするにはurlを直接指定したりサイト上のリンクをクリックしたりしますね。みなさんが普段何気なく行っているこの動作をwebサーバーに対する「リクエスト」と言います。

 

サーバーにはリクエストがいつ届くか分かりませんので常にリクエストに対応できるように準備されています。そしてリクエストを受け付けるとユーザーから指定されたwebページの内容を探し出し、見つかればそのままユーザーに提供します。見つからない時は事前に設定しておいたエラーページの内容を提供します。この動作をwebサーバーの「レスポンス」と言います。

 

さてエラーページが表示された場合、果たしてwebサーバーは正常に作動したと言えるのでしょうか?

 

答えは「yes」です。納得できない方がいるかもしれませんので簡単に説明してみます。webページが見つからないのはwebサーバーのせいではないですよね。webサイトを管理している人のミスが原因です。しかしたとえ人のミスだと言ってもwebページが見つからないからと言って何もしないわけにはいかないですよね。ですからwebサーバーはそのような時にエラーページを表示させるようにしてユーザーにレスポンスを返すのです。つまりwebサーバーは一連の基本動作を正しく行ったと言えるわけですね。

 

webサーバーを例に挙げてサーバーの仕組みについて簡単に説明してみましたが、そんなに難しいことじゃないですよね。

 

それでは本題のwebサーバーについて話題を移します。

 

ひとえにwebサーバーと言っても色々な種類があります。そんな中で一般的にwebサーバーとして利用されているのはApacheです。読み方は「アパッチ」です。

 

そしてこのApacheは2つの系統に分かれます。一方は1.3系で、もう一方は2.0系です。古くからあるのが1.3系で今でもバージョンアップが行われています。普通の感覚ですと新しい方を選んでしまいたくなるかもしれませんが教科書にも書かれている通り私も1.3系の使用をお勧めします。

 

なぜ1.3系なのかについては教科書に触れられている点以外でも理由があります。その理由とは「欠陥がほとんどなくなってきている」(業界用語で『枯れている』と言います)からです。2.0系は数年前に発表されたものでどんどん改良が進められていますが、まだ未知の欠陥が潜んでいる可能性が高いです。

 

一方で1.3系は完全かと言えば決して完全ではないかもしれません。しかし長年に渡って多くの人に利用されてきたことによって優秀な対策が豊富にあります。

 

インターネットという不特定多数の人からのアクセスを想定しなければならない環境では便利さ以上に安全さが重要です。このブログでも教科書通り1.3系でwebサーバーを構築していくことにしたいと思います。

webサーバーの構築 part.1

人気ブログランキング

 

[今回の範囲:教科書5~6p]

 

 

前回の内容は教科書の2~4pの内容と一緒でしたね。特に意識したわけではないのですが、やはり最初のテーマとしてふさわしいんでしょうね。

 

さて今回からは教科書に沿って話を進めてみたいと思います。教科書の5pを開いてみて下さい。

 

教科書の内容に移る前に「webサーバー」ではなく単に「サーバー」について解説してみたいと思います。

 

サーバー(server)とはその名の通り、「供給するもの」という意味ですね。そしてインターネット上に各種あるサーバーはまさにその名の通りの働きをします。サーバーの働きは次の動作が基本になります。

 

・リクエスト

・レスポンス

 

これらの動作については具体例を示して説明してみたいと思います。

 

まずwebサーバーについて考えてみましょう。みなさんがブラウザや携帯電話の端末等を使ってwebサイトを閲覧する時に陰で働いているのがwebサーバーとなります。

 

webサイトにアクセスするにはurlを直接指定したりサイト上のリンクをクリックしたりしますね。みなさんが普段何気なく行っているこの動作をwebサーバーに対する「リクエスト」と言います。

 

サーバーにはリクエストがいつ届くか分かりませんので常にリクエストに対応できるように準備されています。そしてリクエストを受け付けるとユーザーから指定されたwebページの内容を探し出し、見つかればそのままユーザーに提供します。見つからない時は事前に設定しておいたエラーページの内容を提供します。この動作をwebサーバーの「レスポンス」と言います。

 

さてエラーページが表示された場合、果たしてwebサーバーは正常に作動したと言えるのでしょうか?

 

答えは「yes」です。納得できない方がいるかもしれませんので簡単に説明してみます。webページが見つからないのはwebサーバーのせいではないですよね。webサイトを管理している人のミスが原因です。しかしたとえ人のミスだと言ってもwebページが見つからないからと言って何もしないわけにはいかないですよね。ですからwebサーバーはそのような時にエラーページを表示させるようにしてユーザーにレスポンスを返すのです。つまりwebサーバーは一連の基本動作を正しく行ったと言えるわけですね。

 

webサーバーを例に挙げてサーバーの仕組みについて簡単に説明してみましたが、そんなに難しいことじゃないですよね。

 

それでは本題のwebサーバーについて話題を移します。

 

ひとえにwebサーバーと言っても色々な種類があります。そんな中で一般的にwebサーバーとして利用されているのはApacheです。読み方は「アパッチ」です。

 

そしてこのApacheは2つの系統に分かれます。一方は1.3系で、もう一方は2.0系です。古くからあるのが1.3系で今でもバージョンアップが行われています。普通の感覚ですと新しい方を選んでしまいたくなるかもしれませんが教科書にも書かれている通り私も1.3系の使用をお勧めします。

 

なぜ1.3系なのかについては教科書に触れられている点以外でも理由があります。その理由とは「欠陥がほとんどなくなってきている」(業界用語で『枯れている』と言います)からです。2.0系は数年前に発表されたものでどんどん改良が進められていますが、まだ未知の欠陥が潜んでいる可能性が高いです。

 

一方で1.3系は完全かと言えば決して完全ではないかもしれません。しかし長年に渡って多くの人に利用されてきたことによって優秀な対策が豊富にあります。

 

インターネットという不特定多数の人からのアクセスを想定しなければならない環境では便利さ以上に安全さが重要です。このブログでも教科書通り1.3系でwebサーバーを構築していくことにしたいと思います。

CGIって何ですか?

人気ブログランキング

 

教科書の説明に入る前に基本的な事柄を確認しておきましょう。

 

 

『CGIとは?』

 

CGIとはcommon gateway interfaceの略称で、webサーバー上で動くプログラムだと理解しておけばほぼ間違いありません。CGIを作るのに良く使われる言語にはperlやC、そしてこのPHPなどがあります。もちろんJAVAも使えます(JAVA ServletやJSPもCGIの一種です)。

 

では、CGIってどういうサイトで使われているのでしょう?

 

はっきり言って無数にあります。Yahoo!Googleで何かを検索したとします。その時に検索結果を表示させているのがCGIです。他にも掲示板やブログのようなものも全てCGIによって成り立っています。

 

誤解を恐れずに言うならば、ブログのプログラムを自力で作れるようになれば、どんなCGIでも作れるようになります。ブログが一般的になるまでは「掲示板を作れるようになれば・・・」と私は言っていたのですが、今なら「ブログを作れるように・・・」と言う方がより分かりやすく身近に感じるでしょう。

 

実際ブログにはCGIとしての重要なエッセンスが豊富に含まれています。

 

・入力した内容(日記やコメント)をサーバーに送信する

・送信されてきた内容を受け取る

・トラックバックでネットワーク操作をする

 

などなど基本的なエッセンスばかりです。

 

これらのことを理解して実際に活用できるようになればもう一人前のCGIプログラマーです。

 

何も堅苦しく考えることはありません。これから始めるPHPというのはCGIのために開発された言語です。webサイトを簡単に作れることを目的として開発されていますので他の言語と比較しても覚えやすさは比べ物になりません。

 

少しずつ確実に身に付けてば必ず自由自在にPHPを操れるようになります。

この本を教科書として選んだ理由

深い意味はないのですが、プログラミング関連の本としては比較的安価な本だったからでしょうか。

 

まだ内容には目を通していませんが、素晴らしい内容であれば初めての方にも分かりやすいように、簡単な内容であればさらに詳しい技法などをお伝えしたいと思っています。

タイトルを変更します

一人よがりな内容のブログになっては自分でもつまらないので内容を一新してタイトルも変更しようと思います。

 

次回からは初心者の方がPHPでblogを開発できるよう1冊の本をもとにコーディング手法を解説していきたいと思います。

仕事をしていて嬉しいこと

人気ブログランキング

 

前回書いたような悲しいこともあれば、時間が経ち私が勧めていたことを理解してくれることもあります。そんな時は一気に気分が良くなります。

 

「最初から勧められた通りにしておけば良かった」

 

と言われると嬉しい反面

 

「じゃあ早速今までの遅れを取り戻しましょう」

 

と気も引き締まります。

 

 

こちらは何年も自分の専門分野で仕事をしていますので、経験に基づいたアドバイスをしているつもりです。

 

(あっ、これはまずいな)とか(これは面白いアイデアだな)とか直感で分かることがよくあります。こういう積み重ねに関する部分は一朝一夕に身に付くものではありませんので、昨日今日この業界に飛び込んできた人に負ける気はしません。

 

ただ怖いのは経験則と固定観念の微妙な関係です。積み重ねてきた経験をもとに仕事をしているつもりがいつの間にか固定観念による先入観で身動きが取れなくなるという・・・

 

このあたりの微妙なバランスを保てる人が良い仕事をするんでしょうね。

 

 

最近読み始めたベストセラー本なのですが、この本田健さんは本当に幸せな方ですね。読み進めていくうちにまるで自分まで幸せになったような、成功したかのような気持ちにさせてくれる本です。

 

何事もきっとよくなる

 

そのような信念の強さを見習いたいと思っています。

 

著者: 本田 健
タイトル: きっと、よくなる!

仕事をしていて悲しいこと

人気ブログランキング

 

何年も同じ仕事をしていると同じような案件を依頼されることが増えてきます。当然過去の経験を生かすことができますし、完成も早くて楽な仕事と言えば楽なのですが、悲しいこともたまにあります。

 

で、何が悲しいかと言うと、自己満足してしまって自己陶酔しているようなクライアントの希望を言われる時ですね。

 

何度も経験しているような案件の場合、こちらは当然長所も短所も知っているのですが、大した改善策がないどころか逆に短所をさらにひどくしてしまうような仕様を求めてくるクライアントがたまにいます。

 

「それは今までの案件の経験からするとやめておいた方が無難だと思いますが・・・」と提言してもほとんど無視されてしまいます。詳しい事情を説明しようとすると、

 

「こっちが考えたことにケチつける必要ないから、言った通りの仕様にしてくれ」

 

ポカーンですよ。機能低下に加えてユーザビリティも悪くさせてどうするんだろう?と悩んでしまいます。

 

そして運用を開始して数ヶ月ほどすると、電話が掛かってきます。

 

「全然アクセスが上がらない。あの機能が不便だという苦情ばかりだ!」

あの機能というのは当然「言った通りの仕様」の部分です。だから最初に言ったでしょうの世界です。

 

何度も同じような案件をやっていれば、やるごとに少しずつでも改善点を見つけながらより良いものになるよう改良を進めていくものです。ところがダウングレードのようなことを求められるような場合、良くなることなんてほとんどありません。むしろやる前から問題点がはっきり分かっている分、余計不安になります。

 

だからこそ言いづらいのを抑えて提言してみるわけです。

 

それなのにこちらの助言を無視した挙句に後になって「ちゃんと説明してくれなかった」みたいなことを言われると本当に悲しくなります。

 

説明しようとした時に遮ったのは誰ですか?って・・・