Apache 再起動
WebサーバーであるApache。
再起動するには、
/etc/init.d/httpd restart
というコマンドを打ちましょう。
ちなみに、/etc/init.d/のディレクトリまで行って、
httpd restart
とやってもダメです。
補足
CentOS7 から
# systemctl start httpd.service
になりました。
- service httpd restart — {2016-09-14 (水) 15:21:33}
WebサーバーであるApache。
再起動するには、
/etc/init.d/httpd restart
というコマンドを打ちましょう。
ちなみに、/etc/init.d/のディレクトリまで行って、
httpd restart
とやってもダメです。
CentOS7 から
# systemctl start httpd.service
になりました。
Webアプリケーションのデバッグのために、POSTデータをログに保存したいことがあります。
mod_dumpioを使うと、簡単にPOSTデータを含む全入出力データをエラーログに記録することができます。
LoadModule dumpio_module modules/mod_dumpio.so DumpIOInput On DumpIOOutput On
また、I/OデータをロギングするにはLogLevelをdebugに設定する必要があります。
LogLevel debug
なお、デフォルトのhttpd.confではmod_dumpioはロードされませんが、RHEL/CentOS5の標準のRPMにふくまれています。
ちなみに、httpdに含まれるモジュールは下記コマンドで確認できます。
rpm -ql httpd|grep "mod_.*\.so"|awk -F'/' '{print $6}'
Webサーバー ApacheのログはApacheの設定ファイルに
ErrorLog
ディレクティブで場所を指定できます。
大体は
/var/log/httpd
におくことが多いようです。
ログを見るには、
tail
というコマンドが便利です。
tail -n 20 filename
とやると、ログファイルの末尾から20行が見られます。
参考:Apache公式 ログファイル
http://httpd.apache.org/docs/2.0/ja/logs.html
mod_rewriteのRewriteCondで「特定の文字列を含まない」条件を定義してみました。
RewriteCondでは条件を正規表現で記述でき、正規表現の否定先読みや否定戻り読み機能を使うと「特定の文字列を含まない」条件を定義することができます。
今回はmod_rewriteでクエリーストリングに”action=login”が含まれる場合はHTTPS通信を、そうでない場合はHTTP通信を強制するように設定しました。
/action=(?!login)/という正規表現で”action=login”以外の”action=”にマッチする条件を定義できます。
このmod_rewrite設定は下記のようになりました。
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{QUERY_STRING} action=login
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{HTTPS} on
RewriteCond %{QUERY_STRING} action=(?!login)
RewriteRule ^.*$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
これで下記のような動作を設定できました。
Apacheに付属するApacheBenchというプログラムで単一のURLに対して負荷テストを行うことができます。
※複数のURLに対して複雑なテストを行いたい場合は、Apache JMeter等がつかえます。
「-n」でリクエスト数を、「-c」で同時接続数を指定します。
$ ab -n 100 -c 100 http://localhost/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking example.com (be patient).....done Server Software: Apache Server Hostname: localhost Server Port: 80 Document Path: / Document Length: 13888 bytes Concurrency Level: 100 Time taken for tests: 6.815 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 1432400 bytes HTML transferred: 1388800 bytes Requests per second: 14.67 (mean) Time per request: 6815.211 [ms] (mean) Time per request: 68.152 [ms] (mean, across all concurrent requests) Transfer rate: 205.25 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 119 163 25.8 163 209 Processing: 97 3593 1900.9 3737 6696 Waiting: 78 3569 1903.5 3691 6678 Total: 217 3756 1914.7 3912 6815 Percentage of the requests served within a certain time (ms) 50% 3912 66% 4911 75% 5451 80% 5824 90% 6346 95% 6646 98% 6751 99% 6815 100% 6815 (longest request)
BASIC認証が必要な場合は「-A」で、ユーザー名:パスワードを指定します。
ab -n 100 -c 100 -A ユーザー名:パスワード "http://localhost/param1=value1¶m2=value2"
ab -n 100 -c 100 -A ユーザー名:パスワード http://localhost/?
ab -n 10 -c 10 -p post_data.txt -T "application/x-www-form-urlencoded" http://localhost/
ポストデータファイルは以下のように記述し、URLエンコードしたものを使います。
param1=value1¶m2=value2+value3
URLエンコードされたファイルを作成する例です。
php -r 'echo urlencode("param1=value1¶m2=value2+value3");' > post_data.txt
ab -n 100 -c 10 -p post_file -T "multipart/form-data"