タグ「Apache」での検索

Apacheの設定を変更し TRACE メソッドをオフにする

● Apacheが HTTPのTRACEメソッドを通すかどうかチェックする

curl  -X TRACE 127.0.0.1 | grep TRACE
TRACE / HTTP/1.1

が返ってくると、TRACEメソッドが有効です。(OFFにしましょう!)

● Apacheの設定を変更し TRACE メソッドをオフにする

vi /etc/httpd/conf/httpd.conf

次の設定をファイルのどこかに記述します

# HTTP TRACE method off
TraceEnable off

コンフィグの確認

apachectl configtest

apacheのリスタート

apachectl restart

● 再度Apacheが HTTPのTRACEメソッドを通すかどうかチェックする

curl  -X TRACE 127.0.0.1 | grep TRACE
<p>The requested method TRACE is not allowed for the URL /.</p>

が返って来ればOKです。

No.1402
12/27 09:32

edit

Apache

Vagrant / VirtualBox を使って5分でPHP7が使えるWEBサーバを立ち上げる

とにかく急ぎで検証用環境が欲しい方に。
今回作業するマシンはMac。インストールする仮想マシンのOSは ubuntu とします。

● Vagrantのインストール

https://www.vagrantup.com/downloads.html 

● 仮想マシンを実行する VirtualBoxのインストール

http://www.oracle.com/technetwork/jp/server-storage/virtualbox/downloads/index.html

● Vagrantのboxを検索する

ここにインストールしたいOSの種類を入力して検索します。
https://app.vagrantup.com/boxes/search

● 1. Vagrant を使って仮想マシンをダウンロードし起動する

今回はこのボックスを使用します

https://atlas.hashicorp.com/michaelward82/boxes/trusty64-php7

まず仮想マシンを格納したいフォルダ( Ubuntu_PHP7 とします )を作成しそこに移動します。
ターミナルから

mkdir Ubuntu_PHP7
cd Ubuntu_PHP7

次に vagrant コマンドを使ってインストールと起動を行います

vagrant init michaelward82/trusty64-php7;
vagrant up

# ● Vagrantfile の編集

インストールが完了すると Vagrantfile というファイルが作成されているのでそれを好きなエディタアプリで起動し編集します。
下記の行の先頭のコメントを取って実行できるようにします

  config.vm.network "private_network", ip: "192.168.33.10"

再びターミナルから次のコマンドを実行して ssh の接続情報を表示します

vagrant ssh-config

表示例

Host default
  HostName 127.0.0.1
  User vagrant
  Port 2200
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/hogehoge/.vagrant.d/boxes/michaelward82-VAGRANTSLASH-trusty64-php7/1.1.13/virtualbox/vagrant_private_key
  IdentitiesOnly yes
  LogLevel FATAL

この情報から ssh での接続コマンドが分かるので 実行して ssh 接続します。

ssh vagrant@127.0.0.1 -p 2200 -i /Users/hogehoge/.vagrant.d/boxes/michaelward82-VAGRANTSLASH-trusty64-php7/1.1.13/virtualbox/vagrant_private_key 

【ここから先は vagrant 内の仮想マシンでの作業となります】

・ PHP の足りないモジュールをインストールする。

su - (パスワードは vagrant)
apt-get update
apt-get install php7.0-mbstring

・Apache の設定内の実行ユーザを書き換える

 vi /etc/apache2/apache2.conf

ユーザーとグループを下記のように書き換えておきます

User  vagrant
Group vagrant

・apache をリスタートする

/etc/init.d/apache2 restart

・curl でアクセスして確認する

curl localhost

● ホストマシン mac からも接続を確認する

ウェブブラウザに以下のように入力してアクセスする

http://192.168.33.10/

以上です。

● MacからSFTPで仮想マシンに接続する

さきほど表示したSSH設定にでてきた鍵を使用します。
/Users/hogehoge/.vagrant.d/boxes/michaelward82-VAGRANTSLASH-trusty64-php7/1.1.13/virtualbox/vagrant_private_key
これをFTPソフトの鍵選択画面から選択してください。 (接続プロトコルは SFTP にします)
Mac だとTransmit がお勧めです。



No.1108
07/02 13:49

edit

Apache
PHP

WEBサーバApacheのTRACEを無効にする

telnetでサーバ(hoge.com)に接続してTRACEコマンドが使えるかどうか調べる

■ ApacheでTRACEを使える状態になっているかどうか調べる方法1

# telnet で接続
telnet hoge.com 80

# telnet接続後に次のコマンドを入力
TRACE / HTTP/1.0
TEST: HOGE
(エンターを2回押す)

これで TEST:HOGE がサーバーから帰ってきた場合TRACEが有効です。

■ ApacheでTRACEを使える状態になっているかどうか調べる方法2

# telnet で接続
telnet hoge.com 80

# telnet接続後に次のコマンドを入力
OPTIONS * HTTP/1.1
HOST: localhost

TRACEが表示されれば使用出来る状態になっています。

■ ApacheのTRACE無効にする方法。

httpd.confにて以下を記述し、再起動する。

TraceEnable off
No.887
04/21 17:00

edit

Apache

apacheのログファイル(access_log)を別のマシンで解析,表示する

旧なアクセス増加によってWEBサーバが重い。そんな時は別のマシンでapacheのログを解析するとよいです。

そこで

■ Visitors

http://www.hping.org/visitors/index_jp.php

ダウンロードして、解凍して make すると「visitors」という実行可能なファイルが出来ます。

それを /usr/bin 等へコピー

使い方

visitors オプション ログファイル > out.html

とすると 解析結果が out.html ファイルに出力されます。

オプションは

visitors -h

とすると表示されますが、とりあえずは

visitors -A ログファイル > out.html

と「 -A 」オプションをつけて解析してみるのがいいかと思われます。


No.632
04/21 17:01

edit

Apache

mod_rewrite でURIに「%2f」を含むとエラーとなるのを修正する

◆ mod_rewriteで変換前URIに「%2F」があると、サーバーエラーになります。

これの対処方法は

◆ 1. apacheのバージョンを調べる

httpd -v
Server version: Apache/2.2.0
Server built:   Feb 11 2006 18:10:38

◆ 2. Apache 2.0.46 以降の場合は「AllowEncodedSlashes ディレクティブ」をONにするとスラッシュ"/"の受け渡しを許可することが出来る。

httpd.conf (.htaccessには記述できません) に以下の内容を記述

AllowEncodedSlashes On

◆ 3. apache を再起動

apachectl graceful
No.504
04/21 17:11

edit

Apache

apache mod_rewrite の便利な書式

● mod_rewrite の便利な書式

実在するファイル名には mod_rewrite を適用しない

RewriteCond %{REQUEST_FILENAME} !-f

実在するディレクトリ名には mod_rewrite を適用しない

RewriteCond %{REQUEST_FILENAME} !-d

● mod_rewrite のチートシート(早見表)

http://www.cheatography.com/davechild/cheat-sheets/mod-rewrite/

● mod_rewrite のチートシート(早見表)PDF

https://pgmemo.tokyo/data/filedir/503.1.pdf

添付ファイル1
No.503
11/28 21:31

edit

添付ファイル

Apache

apacheのログをローテーションする【logrotate】の設定

apacheのログ「access_log」「error_log」はほっておくとどんどん容量が増えて無駄にディスクを消費する上にapacheのパフォーマンスが落ちます。
ログをローテーションするには「logrotate」を使用します。

・まず共通の設定を行います。

vi /etc/logrotate.conf
weekly
rotate 4
errors root
create
include /etc/logrotate.d

● logrotateのオプション

weekly:週単位でローテーション(daily:日単位 monthly:月単位)
rotate 4:最大4つ前までのファイルを残す
errors root:エラーがあれば rootまでメールする
create [パーミッション] [グループ名] [ユーザ名]:ローテーション後すぐに同名のログファイルを作成する。
compress:.gz ファイルに圧縮する
notifempty : ログがカラならローテーションしない
missingok : ファイルが存在しない場合でもエラーとしない
include /etc/logrotate.d:/etc/logrotate.d ディレクトリ以下の設定ファイルを読み込む
dateext : ローテーションしたファイルに日付をつける
dateformat _%Y-%m : ローテーションしたファイルに指定したフォーマットの日付をつける

● logrotateの個別のapache設定( /etc/logrotate.d/httpd )を設定する

vi /etc/logrotate.d/httpd

でファイルを開くと

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
    endscript
}

となっている。

notifempty があると ログファイルがから場合ローテーションを実行しないので、
テストの段階ではこれを削除しておくほうが挙動がわかりやすくなります。

使用しているログファイルが「access_log」「error_log」ならこのままでOK。
ログファイルが「access_log.sitename.com」「error_log.sitename.com」等に変更してある場合は

/var/log/httpd/*log {
↓
/var/log/httpd/*log.sitename.com {

に変更する。

また複数のファイルはスペースで区切って指定する

/var/log/httpd/*log.siteA.com  /var/log/httpd/*log.siteB.com {

● ローテーション設定の確認( -d )( dryrun )

ローテーション設定の確認をするには -d オプションをつけて実行します

logrotate -d /etc/logrotate.d/httpd

● ローテーションの強制実行( -f )( force )

ローテーション設定の確認をするには -f オプションをつけて実行します
動作を確認するには -v オプションもつけて実行するとより良いです。

logrotate -f -v /etc/logrotate.d/httpd

● ローテーションがうまく動かない時の調査方法

crontabの設定にで logrotate が組み込まれているかどうかを調べる

ls /etc/cron*

表示されるリストに

/etc/cron.daily:
logrotate  man-db.cron

logrotate があればanacronで起動する設定になっています。

実際に起動されたかどうかを見るには

cat  /var/log/cron | grep 'cron.daily'

で確認します。

● logrotate の定期実行時間を変更する

logrotate は設定ファイル /etc/cron.daily/logrotate に記述がされてあり、
このファイルは anacron から実行されます。

anacronはcronと違って以下のような特徴があります

  • サーバー負荷を下げるためある範囲内のランダムな時刻に実行する機能
  • 実行時にマシンがシャットダウンしていた場合、その後マシン立ち上げた時に実行されなかった処理を実行しに行こうとする

なので決まった時刻に正確に事故した場合はクーロンから起動するとよいでしょう。 例

・ 1. anacronの設定を削除(移動)

mv  /etc/cron.daily/logrotate   /root/

・ 2. crontabで実行

crontab -e

(毎日4時半に実行するには以下のように記述する)

30 4 * * *  /root/logrotate
No.312
04/05 14:55

edit

Apache

apache のバーチャルホスト設定

Apache 2.2 バーチャルホスト説明書
http://httpd.apache.org/docs/2.2/ja/vhosts/

Apache 1.3 バーチャルホスト説明書
http://httpd.apache.org/docs/1.3/vhosts/


No.259
04/21 17:12

edit

Apache