カテゴリー: Web

XAMPPのインストール

XAMPPでweb開発をしていきます。

目標

本記事の目標は、XAMPPとは何か、どのようにインストールするかを理解することです。

実際の開発は次の記事で行います。

環境

Windows10
XAMPP 7.4.10

XAMPPとは何か?

XAMPPは、フリーのPHP開発環境です。XAMPPは、ウェブ開発のための基本的なフリーソフトウェアを備えており、例えば、ApacheMariaDB (SQLサーバーとして使用)、PHPPerlphpMyAdminOpenSSLなどが含まれています。

現在使用しているXAMPPに、何が含まれているかは、公式サイトをご確認ください。

ちなみに、XAMPPは、関連技術である、cross platform(X)、Apache、MariaDB、PHP、Perlの頭文字をとった単語です。

XAMPPのインストールの仕方

1. ダウンロード

公式サイトの”Download“にアクセスして、好きなバージョンのXAMPPをダウンロードします。

(さらに…)

http request/responseとは

目標

http request と response メッセージの仕組み、意味について理解する。

HTTPとは

HTTPは、Hypertext Transfer Protocolの略で、HTMLやXMLで書かれたハイパーテキストやその他のデータの転送プロトコル(データ転送の決まり事)です。

HTTP は、リクエスト/レスポンスタイプのデータ通信プロトコルです。Webブラウザなどのクライアントはサーバーにリクエストを送信し、サーバーはレスポンスを送信します。

HTTP リクエスト

以下はサーバーに送信されるHTTPリクエストの例です (内容については後ほど解説します)。

GET / HTTP/1.1
Accept: image/image01.png, */*
Accept-Language: ja
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (Compatible; MSIE 6.0; Windows NT 5.1;)
Host: www.example.com
Connection: Keep-Alive
GET /index.html HTTP/1.1 
Host: localhost:8080
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) 
Referer: http://localhost:8080/
Accept-Encoding: gzip, deflate
Accept-Language: ja,en-US

HTTPレスポンス

以下は、サーバーから送信されるHTTPレスポンスの例です。

HTTP/1.1 200 OK
Date: Sat, 09 Oct 2010 14:28:02 GMT
Server: Apache
Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT
ETag: "51142bc1-7449-479b075b2891b"
Accept-Ranges: bytes
Content-Length: 29769
Content-Type: text/html

<!DOCTYPE html... 

HTTPリクエストの構成

HTTPリクエストは、先頭のReques line、HTTPヘッダー、HTTPボディで構成されます。

Request lineについて

Request lineは、HTTPリクエストの先頭行です。

 GET /index.html HTTP/1.1 

Request lineは、リクエストメソッド(request method)、リクエストURI(request URI)、HTTPバージョン(HTTP version)で構成されています。

Request Methods

リクエストメソッドには以下のようなものがあります。

  • GET
  • HEAD
  • POST
  • PUT
  • DELETE
  • CONNECT
  • OPTIONS
  • TRACE
  • PATCH

各メソッドの詳細については、HTTP リクエストメソッド を参照してください

HTTPレスポンスの構成

HTTPレスポンスはStatus line、HTTPヘッダー、HTTPボディで構成されます。

Status lineについて

Status lineは、HTTPレスポンスの先頭行です。

HTTP/1.1 200 OK

Status lineは、HTTPバージョン(HTTP version)、ステータスコード(Status Code)、Reason Phraseで構成されます。

ステータスコード

ステータスコードは5つのクラスを持っています。

  • 情報レスポンス (100–199)
  • 成功レスポンス (200–299)
  • リダイレクト (300–399)
  • クライアントエラー (400–499)
  • サーバエラー (500–599)

ステータスコードの詳細は、 HTTP レスポンスステータスコード を参照してください。

HTTPヘッダーとは

HTTPヘッダーは、リクエスト、レスポンスどちらにも”フィールド: 値”という形式で、複数のフィールドとその値を含んでいます。

GET / HTTP/1.1
Accept: image/image01.png, */*
Accept-Language: ja
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (Compatible; MSIE 6.0; Windows NT 5.1;)
Host: www.example.com
Connection: Keep-Alive

HTTPヘッダーには4つのタイプ(General header (一般ヘッダー), Request header (リクエストヘッダー), Response header (レスポンスヘッダー), Entity header(エンティティヘッダー) )があります。

General header (一般ヘッダー)

General header (一般ヘッダー)の例

  • Connection: Keep-Alive or Close
    • 現在のトランザクションが完了したあとも、ネットワーク接続を開いたままにするかどうかを制御します
  • Date: <day-name>,<day>,<month>, <year>, <hour>:<minute>:<second> GMT
    •  メッセージが発信された日時が含まれています
  • Cache-Control: public, no-cache, no-store, proxy-revalidate and so on
    • リクエストとレスポンスの両方について、キャッシュのためのディレクティブ (指示) 

Request header (リクエストヘッダー)

Request header (リクエストヘッダー)の例

  • Accept-***:
    • クライアントが受け入れることができるアイテム
    • Accept-Charset: utf-8, iso-8859-1 など文字コード
    • Accept-Language: en-US, ja などの言語
    • Accept-Encoding: gzip, deflate, br などのエンコード
  • If-***
    • 条件付きリクエスト
    • If-Match: ETag
    • If-Modified-Since: <曜日>,<日>,<月>, <年>, <時間>:<分>:<秒> GMT
  • User-Agent: <エージェント名>/<バージョン> <システムとプラットフォーム>
    • リクエストしているユーザーエージェント(Mozilla、Safariなど)のバージョン、アプリケーション、オペレーティングシステム、ベンダーなどを指定
  • Referer: <URL>
    • 現在要求されているページへのリンクがたどられた前のWebページのアドレス

Response header (レスポンスヘッダー)

Response header (レスポンスヘッダー)の例

  • Age: <時間>
    • オブジェクトがプロキシキャッシュにある時間(秒)
  • Location: <URL>
    • ページをリダイレクトするURL

Entity header(エンティティヘッダー)

Entity header(エンティティヘッダー)の例

  • Content-Length: <サイズ>
    • 受信者に送信されるエンティティ本体のサイズ(バイト)
  • Allow: GET, POST and HEADなど<HTTPメソッド>
    • リソースでサポートされている一連のメソッド

HTTP リクエスト及びレスポンスのボディとは

HTTPリクエストのボディはパラメータを含んでいます。もしRequest lineのリクエストメソッドがパラメータを必要としない場合には、ボディは空白です。 これは、HTTPリクエストのボディの例です。(name と ageがパラメータです)

name=taro&age=18

HTTPレスポンスのボディはHTMLで書かれたハイパーテキストなど、リクエストされたコンテンツそのものです。以下は、HTTPレスポンスのボディの例です。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>The HTML5 Herald</title>...