Category - Apache

windows7 64bit に Apache 2.4

http://www.apachelounge.com/download/から
httpd-2.4.7-win64-VC11.zip をダウンロード

展開後 c:\Apache24 に移動
httpd.conf 内のデフォルトパスがここになっているのでこのまま使用

conf/httpd.conf 内に ServerName 127.0.0.1:80 を追記

c:\Apache24\bin までDosプロンプトで移動して httpd.exe と入力し、リターン


「http -k start」では
「(エラーその2) (OS 2)指定されたファイルが見つかりません。 No installed service named “Apache2″」のエラーメッセージが出て動かない。

read more

PHP magic_quotes_gpc

magic_quotes_gpc はシステムレベルでの設定であるため、php.iniか.htaccessでのみ設定可能。

もしこの2つのファイルが触れない場合

if (get_magic_quotes_gpc()) {
 function stripslashes_gpc(&$value)
 {
   $value = stripslashes($value);
 }
 array_walk_recursive($_GET, 'stripslashes_gpc');
 array_walk_recursive($_POST, 'stripslashes_gpc');
 array_walk_recursive($_COOKIE, 'stripslashes_gpc');
 array_walk_recursive($_REQUEST, 'stripslashes_gpc');
}

read more

mod_perl インストール

ここから環境にあったものをダウンロード
http://perl.apache.org/download/index.html

# tar xvzf mod_perl-2.0-current.tar.gz
# cd mod_perl-2.0.7/
# perl Makefile.PL USE_APXS=1 WITH_APXS=/usr/local/apache2/bin/apxs EVERYTHING=1
# make
# make install

httpd.confに記述追加
LoadModule perl_module modules/mod_perl.so

Apacheを再起動

read more

Apacheのエラー

こんなエラーが出た場合

Syntax error on line 238 of /usr/local/apache2/conf/httpd.conf:
Cannot load /usr/local/apache2/modules/libphp5.so into server: /usr/local/apache2/modules/libphp5.so: symbol gzdopen, version libmysqlclient_15 not defined in file libmysqlclient.so.15 with link time reference

PHPを再インストール

read more

mod_python インストールメモ

# yum install python-devel
# wget http://archive.apache.org/dist/httpd/modpython/mod_python-3.3.1.tgz
# tar xvzf mod_python-3.3.1.tgz
# cd mod_python-3.3.1
# cp -p src/connobject.c src/connobject.c.org
# grep 'APR_BRIGADE_SENTINEL(b)' src/connobject.c
# echo "APR_BRIGADE_SENTINEL(b)" | sed 's/APR_BRIGADE_SENTINEL(b)/APR_BRIGADE_SENTINEL(bb)/'
# sed -i 's/APR_BRIGADE_SENTINEL(b)/APR_BRIGADE_SENTINEL(bb)/' src/connobject.c
# diff src/connobject.c src/connobject.c.org
# which python
# ./configure --with-python=/usr/bin/python --with-apxs=/usr/local/apache2/bin/apxs
# make
# make instal

httpd.confに追加

LoadModule python_module modules/mod_python.so

# mod_python test

AddHandler mod_python .py
PythonHandler mptest
PythonDebug On

/usr/local/apache2/htdocs/test/mptest.pyに以下を記述
from mod_python import apache

def handler(req):
req.write("Hello World!")
return apache.OK

ブラウザで/test/mptest.pyへアクセス。「Hello World!」と表示されればmod_pythonの基本動作確認は完了

read more

mod_headersのインストール

./configureに--enable-so --enable-headers=shared を付けて、その後makeします。

./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite=shared --enable-headers=shared
make
make install

その後、Apacheのmodulesディレクトリにmod_rewrite.so, mod_headers.soがあるか確認。
httpd.confに
LoadModule headers_module modules/mod_headers.so
LoadModule rewrite_module modules/mod_rewrite.so
という1行を追加。

read more

munin インストール

# wget http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# vi /etc/yum.repos.d/rpmforge.repo
* enabled = 0 ※デフォルトではRPMforge リポジトリを有効にしない
# wget http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
# rpm --import RPM-GPG-KEY.dag.txt
# yum --enablerepo=rpmforge list

Muninのインストール

# yum --enablerepo=rpmforge -y install munin-node
# yum --enablerepo=rpmforge -y install munin

この時点で /etc/munin/munin.conf , /etc/httpd/conf.d/munin.conf ができる。

起動
# /etc/init.d/munin-node start

5分に一回自動で更新されるようになる。

http://HOST/munin/ で見れるようにconfをApacheに読み込ませる。

read more

.htaccess 文字コード設定

AddDefaultCharset UTF-8
AddType "text/html; charset=UTF-8" .html

read more

PHP auto_prepend_file、auto_append_file

PHP実行の際に前後で特定のプログラムを実行してデバッグを行う場合に便利

# .htaccess内に以下のような記述を加えます。
php_value auto_prepend_file /path/to/xxxxx.php
php_value auto_append_file /path/tp/xxxxx.php

var_dump ($_SESSION);
などをページの前後で見たい時に便利

read more

Apache アクセスログで携帯端末IDを取得する

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{X-DCMGUID}i\" \"%{X-UP-SUBN
O}i\" \"%{X-JPHONE-UID}i\"" combined

ログフォーマットをこのようにするだけ

read more

Apache2 mod_rewriteのインストール・設定

./configureに--enable-so --enable-rewrite=sharedを付けて、その後makeします。

./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite=shared
make
make install

その後、Apacheのmodulesディレクトリにmod_rewrite.soがあるか確認。
httpd.confに
LoadModule rewrite_module modules/mod_rewrite.so
という1行を追加。

read more

.htaccess によるアクセス制限

Order deny,allow
Deny from ALL
Allow from 123.45.67.89
Allow from xx.xx.xx.xx
Allow from yy.yy.yy.yy

.htaccess ファイルを作って
上記のように書けばIPアドレスによるアクセス制限ができます。
httpd.conf の書式と同じ形式になります。

read more

Apache logrotate 続

/usr/sbin/logrotate -f ’設定ファイルへのパス’

【設定ファイル例】
/usr/local/apache2/logs/access_log {
rotate 50
daily
postrotate
/usr/bin/kill -HUP `/bin/cat /usr/local/apache2/logs/httpd.pid`
endscript
}

こんなのを cron で設定する場合には
次にApacheの再起動をしておくほうがいいようです。
access_log が生成されていない場合がありました。

read more

Apache アクセス制限設定

Apache にアクセス制限をかける場合
httpd.conf 内で allow, deny で設定します。

面倒なので別ファイルにしています。
httpd.conf に別ディレクトリでの設定ファイルを読み込むような設定をします。
レンタルサーバーでよくあるパターン。
Include "/usr/local/apache2/conf.d/*.conf"

設定例
/usr/local/apache2/conf.d/deny.conf

<Directory "拒否したいディレクトリ">
   AllowOverride None
   Order allow,deny
   Allow from All
   Deny from 220.150.117.251
   Deny from 60.35.126.114
   Deny from 220.108.84.93
   Deny from 60.35.122.73
   Deny from 219.167.154.114
</Directory>

apache を再起動すればこれらのIPからはアクセスできなくなります。

read more

Apache rewrite 設定

エラーログにこんなのが出た場合
Invalid command 'RewriteEngine', perhaps mis-spelled or defined by a module not included in the server configuration

httpd.confの以下の項目を有効にします
LoadModule rewrite_module modules/mod_rewrite.so

また.htaccessでこんな風に設定してる場合が多いから
DirectoryIndex index.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\.html(#.*)?$ index.php?cmd=read&page=$1$2 [L]
RedirectMatch 301 ^([^.]*[^/])$ $0/

httpd.conf に以下のように記述します。
<Directory "公開ディレクトリ">
AllowOverride All
</Directory>

read more

AMP on a USB 設定 追記

httpd.conf に追加

LoadModule rewrite_module modules/mod_rewrite.so

<Directory "/pdrive/www">
AllowOverride All
Order allow,deny
Allow from all
</Directory>

AddDefaultCharset ISO-8859-1 をコメントにする

php.ini

記述追加&変更
include_path=".;/pdrive/php-5.0.3/PEAR;/pdrive/php-5.0.3/PEAR/pear"
extension_dir="/pdrive/php-5.0.3/ext"

コメントを外す
;extension=php_mbstring.dll

記述変更
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;
;mbstring.func_overload = 0

read more

AMP on a USB 設定

USBメモリ内に Apache + PHP + MySQL の開発環境を設定することができます。
これで外出先でのデモや開発が容易に行えます。

本家サイトはこちら。
http://www.firepages.com.au/php_usb.htm
   ちなみにこのサイトは数年前にApache + PHP + MySQL を一括でインストールするツールを配布していたサイトでした。 トレードマークのマイケルジャクソンに見覚えがありました。

php_usb というZIPファイルをダウンロードして解凍後、USBメモリにコピーします。
本家サイトどおりにやりました。
ディレクトリ構成はこうなります。

$usb:/
-------------start.bat
-------------pdrive/
------------------------php.ini
------------------------start.php
------------------------apache-2.0.50/
------------------------php-5.0.3/
------------------------mysql/
------------------------www/ *ドキュメントルート
------------------------sess/ *セッションデーターのための空ディレクトリ

私はApache, NySQLはWindowsにインストールしているものをそのままコピーしています。
Apache
C:\Program Files\Apache Group\Apache2以下を USB:\pdrive\apache-2.0.50以下にコピーして
conf ファイルのみ配布されているものに置き換えます。

MySQL
C:\Program Files\MySQL\MySQL Server 5.0以下を USB:\pdrive\mysql以下にコピーしました。

PHP
PHP本家サイトよりphp-5.0.3-Win32.zip をダウンロードして解凍後、USB:\pdrive\php-5.0.3にコピーしました。

これで準備はほぼ完了です。
しかしこのままでは動かなかったのでconfファイルの書き換えが必要でした。
こんな風にしてチェックしてみるといいでしょう。

USB:\pdrive\apache-2.0.50\conf\httpd.conf の56行目
「LoadModule ssl_module modules/mod_ssl.so」をコメントにします。
これはもともとインストールしていたApacheが apache_2.0.51-win32-x86-no_ssl.exe でSSL対応でなかったためと思われます。

またUSB:\pdrive\php.ini も修正していたほうがよさそうです。
「session.save_path = "\\pdrive\\sess"」をコメントに
 *phpMyAdminを使ったときにセッションをこのディレクトリに見に行って失敗していました。
   セッション保存領域は明示的にしないほうがよさそうです。

これが終わったら start.bat をダブルクリックして起動してみましょう。
http://localhost:85/ でブラウザが起動してディレクトリが見えれば成功です。

うまくいかない場合は、start.bat で呼び出されるUSB:\pdrive\start.php 内部をコメントにしたりして試してみてください。
これがUSB内のアプリケーションを制御している大本になっています。

echo "starting MySQL ....\n";
pclose(
popen(
'start pdrive\\mysql\\bin\\mysqld-nt.exe --basedir=/pdrive/mysql --datadir=/pdrive/mysql/data --port=3307 --console --standalone'
,'r' )
);
echo "starting apache....\n";
flush();
pclose(popen('start pdrive\\apache-2.0.50\\bin\\apache.exe','r'));
flush();
sleep(5);
echo 'opening localhost';
exec( 'start http://localhost:85');

read more

Apache logrotate

/etc/logrotate.conf で設定するのではなく 好きなときにやるやり方

まず logrotate.d/ にあるようなファイルを作ります こんな感じ
------------------------------------------------------
/usr/local/apache2/logs/access_log {
rotate 50
daily
#monthly
postrotate
/usr/bin/kill -HUP `/bin/cat /usr/local/apache2/logs/httpd.pid`
endscript
}

/usr/local/apache2/logs/error_log {
rotate 50
daily
#monthly
postrotate
/usr/bin/kill -HUP `/bin/cat /usr/local/apache2/logs/httpd.pid`
endscript
}
------------------------------------------------------

/usr/sbin/logrotate -f 上記ファイルへのパス

read more

Basic 認証

phpMyAdmin インストール
http://www.phpmyadmin.net/home_page/downloads.php
ここから最新版をダウンロードして
phpMyAdmin-2.8.0.4/libraries/config.default.php を
phpMyAdmin-2.8.0.4/config.inc.php にコピーして内部の変数を環境に合わせればOK

しかし phpMyAdmin-2.8.0.4 を Apache の DoccumentRoot以下にそのまま置くのはまずいでしょう

ですから/usr/local/にアップロード後、Aliasを作成後、Basic認証をかけておきました

httpd.conf に記述
Alias /phpmy/ "/usr/local/phpMyAdmin/"

これで http://ホスト/phpmy/ でアクセスできるようになります。

その後、htpasswd -c /usr/local/apache2/conf/.htpasswd ユーザー名
パスワード入力  でパスワードファイル作成
               *ユーザー名、パスワードは任意
/usr/local/phpMyAdmin/に .htaccess ファイル作成

touch .htaccess
vi .htaccess
【記述内容】
AuthType Basic
AuthUserFile /usr/local/apache2/conf/.htpasswd
AuthGroupFile /dev/null
AuthName "Enter password"
Require valid-user

chmod 666 /usr/local/apache2/conf/.htpasswd
/usr/local/apache2/bin/apachectl restart

これで認証がついたphpMyAdminが使えるはずです

read more

Recent entry

Search

Tag Cloud

Page Top