.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 の書式と同じ形式になります。
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 の書式と同じ形式になります。
/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 が生成されていない場合がありました。
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からはアクセスできなくなります。
エラーログにこんなのが出た場合
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>
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
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');
/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 上記ファイルへのパス
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が使えるはずです