ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

windowsでapacheのNAME virtualhostをやってみた

NAMEベースの バーチャルホスト を設定してみる。
(windows XP Home SP2 / apache2.2.3)

NAMEベースのバーチャルホスト:
 IP一つで二つの名前を持つようにすること(だと思う)
 ブラウザが送ってくるホスト名から応答ホストを決定する方式。(ということは、ブラウザがホスト名を送ってこないと動かないのか? ←あとで調べる)

apacheは、インストーラ形式のを普通にインストールしただけの状態。

まずhttpd.confの
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

のコメントをはずす。
# Virtual hosts
Include conf/extra/httpd-vhosts.conf

これでextra/httpd-vhosts.confが読み込まれるようになる。

次にextra/httpd-vhosts.confを見る。
VirtualHostディレクティブがすでに二つ書かれてるので、
中身を適当に書き換える。

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "C:/hogehoge/apache/htdocs"
ServerName vh1.localhost
ServerAlias www.dummy-host.
ErrorLog logs/vh1-error.log
CustomLog logs/vh1-access.log common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "C:/hogehoge/apache/htdocs_2"
ServerName vh2.localhost
ServerAlias www.dummy-host.
ErrorLog logs/vh2-error.log
CustomLog logs/vh2-access.log common
</VirtualHost>


あとは設定したDocumentRootに実ファイルをおく。(順番的にはファイル置いてから設定な気がするけど気にしない) 一応、それぞれのindex.htmlは、"It works! (hv1)" と "It works! (hv2)" というように区別できるように書いておいた。

これでapacheを再起動してみる。

http://vh1.localhost/にアクセス
サーバが見つかりません。

http://vh2.localhost/にアクセス
サーバが見つかりません。

だめでした。名前解決ができてない。

hostsにAliasを設定する。
XPなら "C:\WINDOWS\system32\drivers\etc\hosts" があるはず。
127.0.0.1 localhost

たぶんデフォルトだとこの状態なので、以下のように書き換える。
(このファイルに山ほどIPとホスト名があって、特に身に覚えがない場合、たぶん怪しいソフトにやられてますので、調べるなり何なりしましょう)

127.0.0.1 localhost vh1.localhost vh2.localhost



よし、見れるハズ。

http://vh1.localhost/にアクセス
It works! (hv1)

http://vh2.localhost/にアクセス
Forbidden
You don't have permission to access / on this server.

だめでした。403ということはアクセス制限っぽい何かでしょう。
さっき設定したエラーログに
[Mon Jan 15 20:37:15 2007] [error] [client 127.0.0.1] client denied by server configuration: C:/hogehoge/apache/htdocs_v/

こんなのが出てる。
extra/httpd-vhosts.conf に
<directory "C:/hogehoge/apache/htdocs_v">
order deny,allow
deny from ALL
allow from ALL
</directory>


を追記しないとダメっぽい。

さて、見れるハズ。

http://vh1.localhost/にアクセス
It works! (hv1)

http://vh2.localhost/にアクセス
It works! (hv2)


やったー動いた。

名前解決をhostsに書いてるから、hosts書いたこのマシンからしかアクセスできないけど、そこは本題じゃないから無視!
  1. 2007/01/15(月) 21:21:58|
  2. その他
  3. | トラックバック:0
  4. | コメント:0

PHPのwhileとforeach

PHPの配列総なめの書き方で、自分はいつも

 foreach($ary as $key => $val) ...
だったけれど、いろんなサイト見て回ると

 while($list($key,$val) = each($ary)) ...
みたいな書き方をよく見かけた。

1年ぐらいPHP触ってたけど、これ見るまでeach関数なんて知らなかった。
(車の免許とって3週間目みたいな、慣れてきたせいで
 一番事故起こしやすいレベルのPHP歴なんだろうなぁ)

なんかくやしかったので、
配列長100,000を二つの方法でループさせて時間計測。

while time: 0.34173083305359
foreach time: 0.11416602134705
(while/foreach)*100 = 299.32796905901

foreach time: 0.08992600440979
while time: 0.33068990707397
(while/foreach)*100 = 367.73557242356
(PHP5.1.6 Apache/2.2.3)

何回やってもforeachのほうが3~4倍早かった!
よし、くやしくなくなった。


コード
<?php
$time_while = 0;
$time_foreach = 0;

//ループさせる配列長
$length=100000;

//whileを先に計測----------------------------
$time_while = execute_while($length);
$time_foreach = execute_foreach($length);

echo "while time: ${time_while}\n";
echo "foreach time: ${time_foreach}\n";
echo "(while/foreach)*100 = ". ($time_while/$time_foreach)*100 ."\n";
echo '\n';

//foreachを先に計測--------------------------
$time_foreach = execute_foreach($length);
$time_while = execute_while($length);

echo "foreach time: ${time_foreach}\n";
echo "while time: ${time_while}\n";
echo "(while/foreach)*100 = '. ($time_while/$time_foreach)*100 ."\n";
echo '\n';
exit();

//現在時刻を取得する関数
function getmicro(){
  list($msec, $sec) = explode(" ", microtime());
  return ((float)$sec + (float)$msec);
}
//whileでlength回ループする関数
function execute_while($length){
  //配列作成
  $ary = array();
  for($i=0; $i<$length; $i++) $ary[] = "num.$i";
  //計測開始
  $time = getmicro();
  while(list($key, $val) = each($ary)) $ary[$key] = $val .= "read";
  return getmicro() - $time;
}

//foreachでlength回ループする関数
function execute_foreach($length){
  //配列作成
  $ary = array();
  for($i=0; $i<$length; $i++) $ary[] = "num.$i";
  //計測開始
  $time = getmicro();
  foreach($ary as $key=>$val) $val .= "read";
  return getmicro() - $time;
}
?>




  1. 2007/01/09(火) 20:19:57|
  2. その他
  3. | トラックバック:0
  4. | コメント:2

VirtualPC 2004にFedoraCore6を入れてみる

VPCダウンロード。VPCインストール。
「HomeEditionはサポート対象外」だと言われたが気にしない。
FC6のDVDイメージをダウンロード。

VPCで新規のVMをウィザード形式で適当に作る。
DVDイメージを指定して実行・・・しようとしたけど、DVDイメージに対応していないらしいので、DAEMON TOOLSで仮想DVDを作ってそれを指定。

インストーラ起動。
CUIモードでインストール。言語で日本語を選択すると「それでもインストールは英語よ?」みたいな警告が出るが無視。一通りインストールして再起動。

vpc001.png

なんの設定だこれ。途中、日本語を選択したせいらしい。とりあえず右のボタンが「次へ」のような気がするのでそれを選択。

ログインして、とりあえずstartx

vpc002.png

おおー・・ぉ・・

/etc/X11/xorg.confを書き換え
DefaultDepth 24→16
Depth 24→16

vpc003.png

きたー
ネットワークもDHCPですぐ繋がったな
(coLinuxのときは結局繋げなかった・・・)

さて・・あとは
# yum -y update
で半日ほど放置すれば出来上がりかな?

VirtualPC 2004
http://www.microsoft.com/japan/windows/virtualpc/default.mspx

FedoraCore6
http://fedora.jp/
  1. 2006/11/30(木) 21:20:11|
  2. その他
  3. | トラックバック:0
  4. | コメント:0

gladiator

半年遅れでやっと大学を卒業できた。今回の卒業発表の掲示を確認するとき、半年前に見に行ったときの数十倍は緊張した。だって前回は望みを持つことすら叶わない単位数だったし、今もう仕事始めちゃってるし・・。これで卒業できなかったら仕事のほうはどうなっていたことやら。ホントよかった。
さようなら学校。未練も思い出も特になし!(4年半、面白いことは全部学校の外だったなァ・・バイトとかバイトとか)

職場が近いからたまにご飯食べには行くけどね。安くて多くて美味くないあのメニューを・・。
  1. 2005/09/08(木) 17:42:03|
  2. その他
  3. | トラックバック:0
  4. | コメント:1

apache+tomcat成功

分かってみれば簡単なことだった。
解説はそこらじゅうにあるから、拙い説明なんかはしないけど。
苦戦してた理由が全部自分の勘違いミス。

・まずJavaが入ってなかった。
・J2SE1.4入れたけどtomcat5はjdk5じゃないと動作しなかった。
・mod_jkのバイナリが見っかんなかった。
・mod_jk2を入れたけどmod_jkとの違いが分からんかった。
・workers2.propertiesをapache側にコピーしないで編集してた。
・mod_jk2.confの編集をしたのかしてないのか忘れた。
・jk2.propertiesの編集をしたのかしてないのか忘れた。
・server.xmlの編集をしたような気がしていた。

結局は自分があふぉだっただけか・・。
ま、でも着手から12時間。やっと連携した。

一回出来ちゃえば、分かった気になる。もう一回やれって言われてもたぶんできる。たぶん。

残りは postgreSQL と struts と JDBC だけだ! _| ̄|○
  1. 2005/04/18(月) 04:57:50|
  2. その他
  3. | トラックバック:0
  4. | コメント:0
前のページ 次のページ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。