※当サイトの記事には、広告・プロモーションが含まれます。

バーチャルホストの設定(ローカル環境)と、XAMPPを再インストールしたら、XAMPPの初期画面が表示されなくなっていた件

XAMPPのApache( Apache HTTP Server )が久々にStartできなくなって、現状のXAMPPを破棄し、新規にXAMPPをインストールしようとして、htdocsフォルダを避難させていたのですが、XAMPPにはMYSQLも含まれていることなどすっかり失念していたため、データベースのデータが消えたのを知ったのはXAMPPの再インストールが無事に終わった後という何とも悲しい結末を・・・

そして、なぜか、XAMPP Control PanelのApacheのstartボタンをクリックしてもXAMPPの初期画面が表示されず、『http://localhost/dashboard/』に飛んでます。

⇩ 下記画面に飛んでしまう

f:id:ts0818:20150917185130p:plain

XAMPPのセキュリティの関係で2015年7月頃から仕様が変わったそうです。

XAMPPの初期画面へは『http://localhost/security/splash.php』でいけるそうです。

⇩ 『http://localhost/security/splash.php』で初期画面行けます

f:id:ts0818:20150917185131j:plain

⇩ XAMPPに関して、詳しくは下記のサイトへ

XAMPPの仕様が変わったこと

2015年7月からXAMPPの導入手順が分かりにくくなりました!対応の方法| はぴすぷ

XAMPPのセキュリティ画面の文字化け

XAMPPのセキュリティ画面の文字化けを解決|ふーたらのページ (GALAXY S4やAndroidやドコモとiPad miniもね)

XAMPPのphpMyAdminを最新にする

XAMPPのphpMyAdminを最新版にアップグレード - XAMPPの使い方-PC設定のカルマ

XAMPPのsecurityフォルダ(セキュリティ画面)じゃない文字化け(phpフォルダのphp.iniファイルとmysqlフォルダのbinフォルダのmy.iniファイル)

XAMPPの文字化け回避メモ

 

 

ということで、今回は『バーチャルホスト』にチャレンジしてみました。

 バーチャルホスト( virtual host ) /  仮想ホスト

バーチャルホストとは、1つのサーバで複数のドメインを運用する技術です。 サーバの代表となるドメインが実ホスト、それ以外がバーチャルホストです。 実ホストが大家さんでバーチャルホストが部屋(ページ)を借りている住人がバーチャルホストだと思ってください。 ⇒         ・小悪魔女子大生のサーバエンジニア日記

バーチャルホストとは、1台のWebサーバで複数のドメイン名Webサイトを運用すること。Webサーバソフトの機能の一つ。

 

ドメイン( domain )

 ネット上のコンピュータ同士はIPアドレスによってお互いを識別し、通信を行っているが、数字の羅列であるIPアドレスは人間にとっては扱いにくいため、別名としてドメインを運用するようになった。

ドメインIPアドレスを対応させるシステムはDNSDomain Name System)と呼ばれ、全世界のDNSサーバが連携して運用されている。

一つのドメインに複数のIPアドレスを対応させたり、一つのIPアドレスに複数のドメインを対応させることもできる。

 

サブドメイン( subdomain )

サブドメインとは、ドメイン名の一階層下に来るドメイン
(例:『〇〇.△△△.jp』の〇〇の部分を意味します。) 

サブドメインとは - はてなキーワード - はてなダイアリー

サブドメインってなに?|レンタルサーバー大学

 

サブディレクトリ( sub directory )

 サブディレクトリとは、ディレクトリの一階層下に来るディレクト
(例:『△△△. com/〇〇』
の〇〇の部分を意味します。)

サブドメインとサブディレクトリの違い・使い分け - SEO HACK

 

IPアドレス

IPアドレスとは、インターネットやLANなどのIPネットワークに接続されたコンピュータなどに割り 振られる識別番号のことです。

IPアドレスは、IPネットワーク上の住所または電話番号のようなもの。

IPアドレスは、コンピュータ内部では2進数で処理されることから、32ビットの整数値で表されます。

Webサーバーとは何か?IPアドレスとはなにか?

 

ホスト( host )

 TCP/IPネットワークのドメイン名は、ネットワークを階層構造で管理しており、各階層のネットワーク名を「.」で区切って並べて表記する。

このうち、もっとも左にある識別子が個々のコンピュータを識別する名称であり、これをホスト名という。

 

ルートディレクトリ( root directory )

ルートディレクトリとは、ツリー型ディレクトリ構造の最上層にあるディレクトリのこと。

コンピュータ上のすべてのファイルは必ずどこかのディレクトリに所属し、ルートディレクトリ以外のディレクトリは必ず他のディレクトリに所属している。

このような構造を木の枝の分かれ具合に例えた表現が「ツリー(tree)型ディレクトリ構造」である(treeは英語で「木」という意味)。

そして、このツリー構造の一番上にあるディレクトリを、木を支えている根っこに例えた表現が「ルートroot)」ディレクトリである(rootは英語で「根」という意味)。

ドキュメントルート( document root )/  仮想ルートディレクト

 Webサーバー上に公開するためのルートディレクト

 

 

ローカル環境でサイトをチェックする際に、複数のサイトの制作・管理ができるようになるのが、Apacheバーチャルホスト機能だそうです。

バーチャルホストの設定方法としては

  • IPベース( IPVirtual )
  • Nameベース( NameVirtual )
  • ポートベース( PortVirtual )

の三通りほどあるそうです。

⇩ 詳しくは下記のサイトへ

IPベースの参考

IPベースの仮想ホスト- 仮想ホストの設定- Apache入門

Nameベースの参考

XAMPP:VirtualHost(バーチャルホスト)の設定|ARTICLE|goma

名前ベースの仮想ホスト- 仮想ホストの設定-Apache入門

XAMPP バーチャルホストの設定|Webエンジニアブログ

ポートベースの参考

VirtualHostの設定-tech tech -テクテクブログ-

xamppのバーチャルホスト設定|ポートベース編-スグラボ

XAMPPでバーチャルホストの設定をする(ポートベース)|備忘録

 

Nameベースでのバーチャルホスト

今回はNameベースでのバーチャルホストの設定方法です。

環境:

Windows 7

XAMPP for Windows version 5.6.12

Server version: Apache/2.4.16 ( Win32 )

(※Apache 2.4系とApache 2.0系、Apache 2.2系では<Directory>内の記述の仕方に違いがあるようです。詳しく説明してくれている参考サイト ⇒

おほ。2.4系じゃ .htaccess ファイルの許可の仕方も変わってるんだなあ | 電気ウナギ的○○

Apache 2.2 から Apache 2.4 へ | Ohjiro's Note

Apache2.2以前 から Apache2.4 に移行でのアクセス制限の書き方の違い パソコン鳥のブログ/ウェブリブログ

 

Cドライブ直下にXAMPPを置いてる場合( C:¥xampp )。xamppフォルダの中のapacheフォルダの中のファイルを修正します。

 

修正するファイル

httpd.confファイル

『#Include conf/extra/httpd-vhosts.conf』の先頭に記述されている『#』を外して『httpd-vhosts.conf』を読み込むように設定します。コメントアウトを外す) 

C:¥xampp¥apache¥conf¥httpd.conf

# Virtual hosts
   Include conf/extra/httpd-vhosts.conf

 

httpd-vhosts.confファイル( Apache2.2系以前はhttpd.confファイルに記述 

まずは、バックアップとしてhttp-vhosts.confファイルをコピーし別の名前で保存します。(http-vhosts.confファイルの編集に失敗したら、バックアップのデータでhttp-vhosts.confファイルを初期の状態にもどせるように。)

 

『#NameVirtualHost *:80 』の先頭の『#』を取り除きます。(コメントアウトを外す)

 

これは『名前ベースのバーチャルホストを使用しますよ』という宣言です。
( ※Nameベース以外のバーチャルホストの設定時コメントアウトしたままにしないとエラーになってしまうようです。)

 

『*:80』はサーバのIPアドレスとポート番号で、『*』はすべてを表します。

 

( ※Apache2.4系からNameVirtualHostの記述は不要のようです。
#NameVirtualHost *:80 は
コメントアウトした状態で可。)

Apache2.4.3でバーチャルホストの設定にハマる | もと東大生もと社長の自由奔放ブログ Just do it now!

 

今回、アドレスバーに以下のドメインサブドメインを入力した時に

で参照したいとします。『http://』以下のドメインサブドメインの末尾の『/』を除いた部分が下記のServerNameになります。

 

C:¥xampp¥apache¥conf¥extra¥httpd-vhosts.conf

<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/hoge"
ServerName hoge.localhost
</VirtualHost>
<Directory "C:/xampp/htdocs/hoge">
AllowOverride All
Require all granted
</Directory>

##複数ドメインをバーチャルホストにする場合、同ファイルに以下のように書き足していきます

<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/fuga"
ServerName fuga.localhost
</VirtualHost>
<Directory "C:/xampp/htdocs/fuga">
Require all granted
</Directory>

 

各ディレクティブの説明

Apacheは、httpd.confというテキストファイルに『ディレクティブ(命令、コマンドの意)』と呼ばれる専用の命令を記述することで設定するようです。

⇩ Apache、ディレクティブに関しては下記サイトが詳しいです

[Think IT]第8回:Apacheの設定とチューニングポイント(1/3)

 

<VirtualHost IPアドレス:ポート番号>
    ServerName 仮想ホスト名(必須)
    DocumentRoot ドキュメントルートまでの絶対パス(必須)
    ServerAdmin 管理者のメールアドレス
 
    # 必要ならここにディレクトリ固有の設定を記述
    <Directory "ドキュメントルートのパスなど">
        Options All            ←
        AllowOverride All      ← .htaccessによる設定の上書きの許可(AllOverride Allで当該ディレクトリ内全ての項目を設定可能、AllowOverride Noneで.htaccessによる設定の上書きを全て禁止)
        Require all granted    ← アクセスを無条件に許可する
    </Directory>
</VirtualHost>

hostsファイル

IPアドレスとホスト名の対応を定義しているのが『hosts』ファイルです。

127.0.0.1IPアドレス』『半角スペース』『localhost( ホスト名 )』で記述。

『hosts』ファイルに記述することでDNS( Domain Name System )サーバなどを参照することなくIPアドレスに対してホスト名を登録できます。

 

『テラパッド』などのテキストエディターで『管理者権限』でhostsファイルを開きます。

ファイル下部にIPアドレスの後に半角スペースを入れ、ServerNameで指定した書き足し。

C:¥WINDOWS¥system32¥drivers¥etc¥hosts

127.0.0.1 localhost
127.0.0.1 hoge.localhost  
127.0.0.1 fuga.localhost   

 

新しい設定は『Apacheを再起動する』もしくは『設定ファイルを読み直す』ことでApacheに反映されます。

以上がバーチャルホストについてでした。

 

WindowsApacheのログ問題

 Linux環境ではlogrotateによりOSでログのクリアやローテーションが行えますが、  Windows環境ではOS標準の機能ではログのクリアの仕組みはありません。

(※Windows環境ではログが際限なく増えていき、知らない間にディスク容量を圧迫)

 

 

ログローテーションlog rotation ログローテート / log rotate

ログローテーションとは、システムが残す記録(ログ)が際限なく増えることを防ぐために、一定の容量や期間ごとに古いログを削除したり新しいログで上書きすること。また、そのような機能。

ログはシステムに起こった出来事を時系列に記録したもので、年月の経過に伴い蓄積されていく。通常はディスク容量などは有限であるため、ログが蓄積すると空き領域を圧迫したり使い果たしてしまうことがある。

このような事態を防止するために、一定の期間を過ぎたログを削除したり、ログデータの総量が一定の容量を超えたら最も古いログを削除したりするのがログローテーションである。ログを残すソフトウェアにそのような機能が備わっている場合と、専用のツールを導入して管理する場合がある。

 

Apacheのログローテーションの仕組み(rotatelogs)では、ログのローテーションは行いますが、クリアは行わないためWindows環境では手動で削除するか、タスク等に追加して自動(バッチ等)で削除する必要があります。

 

 

バッチ処理batch processing 一括処理 / バッチ実行 / 一括実行

バッチ処理とは、一定期間(もしくは一定量)データを集め、まとめて一括処理を行う処理方式。

または、複数の手順からなる処理において、あらかじめ一連の手順を登録しておき、自動的に連続処理を行う処理方式。

企業における売上データや受注データの集計処理など、一定期間ごとに大量のデータを集めて処理する場合に有効な処理方式である。

パソコンでは、起動時の環境構築や自動設定、アプリケーションの自動実行などにバッチ処理が用いられる。

ディスプレイなどの表示、指示に従ってユーザがコンピュータを対話的に操作することをインタラクティブ処理、リアルタイム処理という。

 

タスクtask

タスクとは、OSから見た処理の実行単位。通常はスレッドが実行単位となるが、OSによってはプロセス(複数のスレッドを含むプログラム全体)を1つの実行単位としてみる場合もある。

一つのアプリケーションソフトが行っている作業全体を一つのタスクと扱う場合が多く、この場合は「プロセス」に近い意味合いになる。

同じアプリケーション内で実行されていても、同時に実行できない作業単位を一つのタスクと扱うようなこともあり、この場合は「スレッド」と似た意味合いになる。

このように、「タスク」という言葉がどの程度までの作業をひとつにまとめた表現なのかは明確には決まっておらず、ユーザから見たひとまとまりの「仕事」を漠然と指す語として用いられる。

近年では、同時に複数の処理を並行して実行できるOSが主流となっており、そのような機能を「マルチタスク」と呼ぶ。マルチタスクOSと言った場合、プロセス間の同時実行が可能なのか、プロセス内のスレッドを複数同時実行できるだけなのかは判別できない。

 

対応

httpd.confファイルの編集

apacheのログローテーション(rotatelogs)により、日次でログファイルを分割します。

⇩ apachehttpd.confを書き換え。

C:¥xampp¥apache¥conf¥http.conf

□変更前
   ErrorLog logs/error.log
   CustomLog logs/access.log common

□変更後
   ErrorLog "| bin/rotatelogs.exe logs/error_%Y%m%d.log 86400"
   CustomLog "| bin/rotatelogs.exe logs/access_%Y%m%d.log 86400" common

 

  • %Y%m%d → 現在の日付をYYYYMMDD形式で取得する。
  • 86400 → 1日を秒にした値。ログのローテーションのタイミング。今回は1日おき。
  • commonはログ形式( LogFormat )。デフォルトはcommonとcombinedの2つ。

LTSVというログ形式( LogFormat )

Labeled Tab-Separated Values という、テキストのフォーマットの仕様です。

CSV や TSV や JSON そのほかと同じ、テキストデータのフォーマット名。

主にログ、特に httpdアクセスログなどに適用すると便利です。

⇩ LTSVについて詳しくはは以下サイトへ

LTSVの何が良いのか

LTSV FAQ - LTSV って何? どういうところが良いの?|naoyaのはてなダイアリー

Apacheのログ形式をLTSVにする時に気をつけたいこと

ApacheログをLTSV形式にする際の2つの落とし穴と対処法+Apache&FluentdのLTSV設定サンプル|Y-Ken Studio

 

 

バッチファイル作成

・タスク実行のバッチファイルにより日次で45日以上前のファイルを削除します。

 ⇩下記バッチファイルを作成しタスク登録( 格納場所はログと同じ場所にしました ) 

C:¥xampp¥apache¥logs¥fresh.bat

 @echo off
  for /f "skip=45" %%F in ('dir /b /o-n access_????????.log') do del %%F
  for /f "skip=45" %%F in ('dir /b /o-n error_????????.log') do del %%F

 

WindowsバッチファイルのFOR文ループ処理で一定ファイル数超えたら一番古いファイルを削除する

FOR [オプション] %%変数 IN ('セット') DO コマンド [変数] %%変数

 

なお、FOR文における変数の指定方法は、

  •   コマンドラインで実行する場合は「%変数」
  •   バッチファイルで実行する場合は「%%変数」

となります。

各パラメータには以下を指定します。

オプション オプションには「/d」「/r」「/l」「/f」の4つがあり、コマンド拡張機能が有効であるときに指定可能です。
%%変数 「a〜z」または「A〜Z」までの任意の1文字が利用でき、大文字と小文字は区別されます。
(セット) 複数のファイル、ディレクトリ、文字列、値などのファイルセットを指定します。ワイルドカードも使用可能。
コマンド 各ファイルごとに実行するコマンドを指定します。

 

FOR文は三つに区切ると判りやすくなります。

FOR %%変数 子の変数の中に処理対象がある場合には、処理を繰り返しなさいという意味の命令文です。
IN (セット) コマンドに渡したい処理対象(変数)を指定します。
DO コマンド 変数 変数(処理対象)を用いて、コマンドを実行します。

 

FOR文のオプション

/d 検索対象がファイルではなくディレクトリになります。また、セットにワイルドカードが使われている場合もディレクトリ名のみにマッチされます。
/r [ドライブ名:[パス名]] カレントディレクトリもしくは[ドライブ名]:[パス名]で指定したディレクトリ以下の階層に対してもforコマンドを実行します。(再帰的処理)
/l セットに範囲を指定できます。「開始値、増分、終了値」を指定した反復ステップ処理を実行します。
/f [解析文字列] セットの文字列に「解析文字列」で指定した指定どおりにトークンを切り出して、doコマンドに引き渡して実行します。セットがテキストファイル名の場合、テキストファイルの各行に対して順に処理が行われます。

 

「/f」オプションの解析文字列 は以下の通りです。

EOL=行末文字 行末文字(1文字)を指定します。この文字以降は無視される
SKIP=n ファイルの先頭からn行を無視します。
DELIMS=区切り文字セット 区切り文字セットを指定します。デフォルトの区切り文字セットはスペースとタブとなります。
USEBACKQ バッククォート(`)で囲まれた文字列をコマンドとして実行します。
TOKENS=番号1,番号2,番号n コマンド側に渡す変数の部分を指定します。

 

  • /f → 反復ファイル解析。'セット'の出力分だけ反復。
  • "skip=45" → タイムスタンプを確認して45個まで残して後ろの処理をする。
    ファイルの先頭からスキップする行数を指定。
  • 変数 %%F は、フォルダを反復処理して、毎回新しいファイルを選択するようバッチ ファイルで指定します。
  • 'dir /b /o-n error_〇〇〇〇〇〇〇〇.log' → 新しい順にファイルを取得します。
  • /b → ファイル名のみを表示します (見出しや要約が付きません)。
  • /o → ファイルを並べ替えて表示します。ソート処理。
  • n → 名前順 (アルファベット)。ソートの指定(パターン)。全部で5つ。
  • o-n → ソート順の前に「-」を付けると並び替える方法が反転します。
  • do del→ 削除する。

 

⇩ コマンドプロンプトのdirのオプションなど

ファイルの一覧表示(DIR)-ファイル-コマンドプロンプトの使い方

⇩ バッチファイルの作り方のサイト

【bat】Windowsのバッチファイル(*.bat)の書き方自分用まとめ-Qiita

今回はこのへんで。