Apacheの最近のブログ記事

CentOS5.4でApacheの初期設定をしていて、/var/www/html/内のファイルを表示させるところまでは簡単にできたんだけど、
VirtualHostで/home/hoge/* 内のファイルを表示させようとするとできない。

errorlogを見るとこうなってる。

(13)Permission denied: access to / denied

2時間ほどのたうちまわって、SELinuxが原因ぽいということがわかった。

対処方法は、
/home/hogeディレクトリに実行権限を与える(0755とか)

http://sweetbat.ddo.jp/~zoi/fswiki/wiki.cgi?page=apache%A5%A8%A5%E9%A1%BC%A5%ED%A5%B0%A4%C8%C2%D0%BD%E8%CB%A1

http://tempest.dcnblog.jp/blog/2005/12/centos_42_apach_07ec.html

SELinuxは無効にしていたはずなので、SELinuxが原因なのかどうかはよくわからない。

Perl/CGIをWindows+Apache+ActivePerlで開発して、本番環境はLinuxで動かすような場合、
Perlスクリプトの1行目を環境に応じて書き換える必要がありますよね。

#!/usr/bin/perl  (Linuxの場合)
 ↓
#!c:¥perl¥bin¥perl  (Windowsの場合)
これって不便ですよね。
書き換え忘れてLinux上で動かないことがありますよね。

そこで、#!/usr/bin/perlのままWindows + Apacheで動かす方法がないか調べてみたら、ありました。

Win32版ApacheでMT環境を構築する際の注意点

しかし上記のやり方だと私の環境ではエラーが出たので、
下記のようにやったら見事に動きました。

前提条件:

  • ActivePerlがC:¥perl¥bin¥perlにインストールされている。
  • 同じくCドライブにApacheがインストールされている。

やり方

  1. C:¥usr¥bin というフォルダを作る。
  2. C:¥perl¥binの中の perlperl5.10.0exe, perl510.dll perl.exeの3つのファイル(数字はバージョンによって異なります)を
    c:¥usr¥binにコピーして置く。
  3. httpd.confの最下行に1行書き加える。
  4. SetEnv PERL5LIB C:/perl/site/lib
    SetEnv PERL5LIB C:/perl/lib
  5. Apacheを再起動
これで、Perl/CGIの1行目が#!/usr/bin/perlのままでもWindows上で動くようになりました。

かんたん!!
しあわせ!!

【追記】2008.12.7
どうもこのやり方だと、1行目のSetEnvが2行目のSetEnvによって上書きされてしまい、1行目が無効になっているようです。
う~んどうすればよいのやら。。。

めちゃくちゃ簡単でした。

インストール

アプリケーション → アクセサリ → 端末 を起動して、以下のコマンドを入力。
 sudo apt-get install apache2
数分でインストールが終わる。

動作確認

次にFirefoxを起動してアドレスバーに以下を入力。
http://localhost/
ブラウザに、
It works!
と表示されたらインストール成功! 感動の一瞬です。

index.htmlを編集

なお、このとき表示されているファイルは、/var/www/index.htmlファイルです。 編集するには、
chown -hR 自分のユーザ名 /var/www
とやって、あとは/var/www/ の中の index.htmlファイルをエディターで編集すればOK!

楽しくなってきた〜

2種類のアクセスログ

XREAでは、Webサーバへのアクセスログが毎日早朝に2種類のフォーマットで出力されます。
HTML形式とApache生ログ(テキスト)形式です。

HTML形式

標準で入っているアクセスログ解析ツール(analog 6.0)が、毎日午前5時ごろにレポートとしてhtmlファイルを出力します。
(出力先は/public_html/log/ )
いろいろな統計情報が見れて面白いのですが、ここからはさらに詳しく追いかけるはできません。
アクセス1件1件、訪問ユーザ一人一人の訪問履歴を詳しく見たい場合、もしくはHTML版と違う切り口で統計分析したい場合は、Apacheの生ログを見る必要があります。

Apache生ログ(テキスト)形式

各ユーザのホームディレクトリ下のlogディレクトリに、
 ドメイン名.log
 ドメイン名.1.log
 ・・・
 ドメイン名.4.log
というテキストファイルがあるかと思います。
生ログが見れない場合は、こちらのページを参考にしてください。
このテキストファイルの中身は、下記のようなフォーマットになっています。
(Apache標準のcombine形式というそうです。)
hoge.example.com - - [14/Mar/2008:00:51:46 +0900] "GET /2008/03/15.html HTTP/1.1" 200 5539 "http://www.google.co.jp/search?q=家庭教師&hl=ja&c2coff=1&rls=GGLD,GGLD:2005-11,GGLD:ja&start=330&sa=N" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"
このままだと見にくいし分析のしようがないので、タブ区切りCSVに変換したいと思います。
タブ区切りCSVにすれば、エクセルに貼り付けて自由に分析することができます。

タブ区切りCSVに変換する方法

秀丸で正規表現を使って置換します。
  • 秀丸の メニュー>検索>置換 を実行して、置換ダイアログを出す。
  • 「正規表現」にチェックを入れる
  • 検索ボックスに下記を入力(注1)
  • ^(.*) (.*) (.*) \[(.*)\] "(.*)" (.*) (.*) "(.*)" "(.*)"$
  • 置換ボックスに下記を入力
  • \1\t\2\t\3\t\4\t\5\t\6\t\7\t\8\t\9\n
    ↓実行画面 hidemaru-replace.JPG
  • 全置換を実行
これで、アクセスログがきれいなタブ区切りCSV(=TSV)に整形されます。
エクセルに貼り付けると、下図のようにきれいに分割されます。 excel-log.JPG
注1:秀丸の場合、正規表現エンジンがHmJre.dllである必要があります。
注2:この正規表現自体はPerlやその他スクリプトでも使えます。

■ 追記
一部正規表現に間違いがあったので修正しました。

調べたところ、XREAのログ形式は、Apacheのデフォルトのログ形式"Combined"と同じみたいです。
なので、Xrea特有のことは何もなく、Apacheログの一般的な解析手法をそのまま使えます。

記事中の正規表現は、下記のサイトのものを使わせていただきました。
参考:Apache Combined Log を効率的にパースする正規表現メモ

WindowsXP上に、Apache2.2.8とPHP4.4.8をインストールしたら、下記のエラーが出てApacheが起動しなくなります。

apache_error.JPGのサムネール画像

 

エラーメッセージ:

Error:The requested operation has failed!


症状

PHP4.4.8をインストールした後で、httpd.confを書き換えてApache2.2.8を再起動すると、
Error The request operation has failed!

というエラーが出て起動に失敗する。
さらに、ApacheのTest Configurationを実行すると、次のようなエラーが出る。

C:\Documents and Settings\Administrator>httpd.exe: Syntax error on line
128 of C:/Program Files/Apache Software Foundation/Apache2.2/conf/httpd.conf:
Cannot load C:/php/sapi/php4apache2.dll into server: \x8ew\x92....
Note the errors or messages above, and press the <ESC> key to exit. 

原因

Googleで検索しまくること3時間、ついに原因を突き止めました。

PHPのsapiフォルダにあるphp4apache2.dll というファイルが、apache2.2.xに対応していないそうです。

解決策

Apache 2.2.xとPHP 4.4.0-4.4.7用に対応したphp4apache2.dll-php4.4.x.zipをゲットして、設定します。

  1. http://www.apachelounge.com/download/ にアクセス
  2. ページの中ほどにある、php4apache2.dll-php4.4.x.zipをダウンロード
  3. apache-dll.jpg




  4. 解凍する。
  5. 解凍したフォルダ中のphp4apache2.dllを、既存(php\sapi\)のphp4apache2.dllに上書きコピーして置き換える。
  6. 解凍したフォルダ中のhttpd.exe.manifestを、C:\Program Files\Apache Software Foundation\Apache2.2\bin\ にコピー
  7. Visual C++ 2005 SP1 Redistributable PackageをMSのサイトからダウンローしてインストール。
    http://www.microsoft.com/downloads/details.aspx?FamilyID=200b2fd9-ae1a-4a14-984d-389c36f85647&DisplayLang=en
  8. httpd.confに下記を追加
  9. LoadModule php4_module "c:/php/php4apache2.dll"
    AddType application/x-httpd-php .php
  10. Apache2.2を再起動(restart )

これで無事、Windows上でApache2.2.xとPHP4.4.xが起動できると思います。(^^)v


・・・とここまで書いたところで、既に同じことを書いてあるサイトを発見。orz

このアーカイブについて

このページには、過去に書かれたブログ記事のうちApacheカテゴリに属しているものが含まれています。

前のカテゴリはAccessです。

次のカテゴリはCSSです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

OpenID対応しています OpenIDについて
Powered by Movable Type 5.02