2014年4月9日水曜日

apache インストール/設定 メモ


インストールオプション


・ --prefix=/usr/local/httpd

apache をインストール先を指定



・ --enable-so

モジュールを有効化

・ --enable-headers
HTTP リクエスト/応答ヘッダの追加・置換・削除が可能となります。

・ --enable-dav
WebDAV を有効化します。http/https 経由でファイル・フォルダを共有することができます。

・ --enable-deflate
mod_deflate を有効にします。データを送信する前に圧縮してデータ転送の効率化を図ります。

・ --enable-rewrite
リクエストされた URL の動的書き換えを行うモジュール。=shared としてコンパイルすることで、DSO モジュールとして読み込み

・ --with-ssl=/usr/local/openssl
SSLを有効化します。ソースインストールしたOpenSSL のパスを指定

・ --with-suexec-caller=apache
suexec によって CGI などのスクリプトを第三者に不正に実行されないようにします。(ユーザーサイト、VirtualHost 利用時)
ここでは httpdの実行ユーザ(「apache」)がユーザの代わりにスクリプトを実行しますので「apache」を指定

・ --with-suexec-docroot=/home
suexecが適用されるディレクトリを指定します。ユーザーディレクトリの格納されている /home を指定、/home 以下にある実行可能なスクリプトが suexec の影響を受ける

・ --with-suexec-logfile=/var/log/httpd/suexec_log
suexec のログを出力するパスの指定です。access_log 等と同じ場所を指定


・--enable-mods-shared

http://tt4cs.blogspot.jp/2013/01/how-to-enable-dso-for-apache-2.4.html


・apache + wevdav + svn やるには
Apacheをソースからインストールしていた場合、【DAVを有効にしているか(–enable-davオプション)】【Berkeley DBを有効にしているか(–with-berkeley-dbオプション)】の2点を行っていないと、次のsubversionコンパイルでエラーになります。
http://www.playstudy.net/wiki/server/subversion-install.html
"--with-berkeley-db" # <- これと
"--enable-dav" \        # <- これがあればOK

・apacheとtomcatをmod_proxy_ajpで連携するには

--enable-proxy-ajp
--enable-proxy

confに
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

設定ファイル名

httpd.conf

設定ファイルの配置場所

・srcコードから/usr/local/配下にapache2をインストールした場合の設定ファイル場所
/usr/local/apache2/conf/
・yumでapache2をインストールした場合の設定ファイル場所
/etc/httpd/conf/httpd.conf
・apt-getでapache2をインストールした場合の設定ファイル場所
/etc/apache2/

設定反映タイミング

apache起動/再起動時

設定ファイルの文法チェック

binディレクトリにあるhttpd に -t を指定して実行
/usr/local/apache2/bin/httpd -t


文法に誤りがなければ
Syntax OK
誤りがある場合
Syntax error on line 2 of /usr/local/apache2.4.7/conf/httpd.conf: ~~エラー内容~~
など表示される
Sytax OKでも起動できないことはよくあるのでその際にでたメッセージをよく読むこと

アクセスログ

1、LogFormat でログの出力内容を決め、
2、CustomLog で出力先を指定する。

・LogFormat ログの出力内容設定 -----------------------------------
LogFormat (ログの書式) (出力形式の設定名)

使用例 momoselog という名前のフォーマットと commonという名前のフォーマットを設定
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" momoselog
LogFormat "%h %l %u %t \"%r\" %>s %b" common
-------------------------------------------------------------------

・CustomLog アクセスログ出力先設定  ----------------------------------
LogFormatにより設定した出力形式の設定名

使用例 
CustomLog "logs/access_log" common
上記はlogsディレクトリにaccess.logという名前のファイルにLogFormatで設定したcommon書式設定でログを出力する (上記記述のログファイルの場所は「ServerRoot」からの相対位置となります)

ローテートさせる使用例

CustomLog "|/usr/local/apache2.4.7/bin/rotatelogs /usr/local/apache2.4.7/logs/access_log_%Y%m%d 86400 540" momoselog

上記は /usr/local/apache2.4.7/bin/rotatelogs を利用し、/usr/local/apache2.4.7/logsにaccess_log_20140207のような日付を情報を付与したファイルにLogFormatで設定したmomoselogという書式設定でログを出力する(上記のように絶対パスもいけます)

・画像取得ログは出力しないようにしたい

Apacheのログは気がつかない内に肥大化する。
特に画像へのアクセスログは取得してもあまり意味がないので
LogFormatを指定している行の下あたりに

SetEnvIf Request_URI "\.(gif)|(jpg)|(png)quot; object-is-image

と指定し、

CustomLog /var/log/httpd/access_log common env=!object-is-image

と指定することにより、画像取得ログを省略することができます。

HostnameLookups

ApacheのログはデフォルトではIPベースで出力される、ホスト名で出力させる場合には
HostnameLookups On
と指定する。ただしDNSの逆引きが行われるため、大幅にサーバーのパフォーマンスがダウンするため
まずOnにすることはない。

ServerSignature  

   Apacheのフッター情報を表示/非表示
  エラー画面に、Apacheのバージョン情報などを表示しないようにするセキュリティ設定 
ServerSignature On
    ↓
ServerSignature Off

ServerTokens 

クライアントに返信するサーバ応答ヘッダに含める情報を制御
デフォルトでFullとかなってるからProductOnlyに変更し極力第三者に情報を渡さないようにし
セキュリティ設定
ServerTokens Full

ServerTokens ProductOnly

変更前確認
[root@buront java]# wget -S http://localhost
--2014-04-09 13:07:07--  http://localhost/
localhost をDNSに問いあわせています... ::1, 127.0.0.1
localhost|::1|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています...
  HTTP/1.1 200 OK
  Date: Wed, 09 Apr 2014 04:07:07 GMT
  Server: Apache/2.0.55 (Unix) mod_jk/1.2.21       ←コイツ
  Connection: close
  Content-Type: text/html;charset=ISO-8859-1
以下略

変更後確認
[root@buront java]# wget -S http://localhost
--2014-04-09 13:08:21--  http://localhost/
localhost をDNSに問いあわせています... ::1, 127.0.0.1
localhost|::1|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています...
  HTTP/1.1 200 OK
  Date: Wed, 09 Apr 2014 04:08:21 GMT
  Server: Apache                        ←コイツ
  Connection: close
  Content-Type: text/html;charset=ISO-8859-1

ApacheのServer MPMなど設定情報を確認する

[Apacheのインストールディレクトリ]/bin/apachectl -V

下記のように表示される

[root@xxx-xxx-xxxx src]# /etc/httpd/bin/apachectl -V

Server version: Apache/2.4.9 (Unix)

Server built:   May  2 2014 14:44:38

Server's Module Magic Number: 20120211:31

Server loaded:  APR 1.5.1, APR-UTIL 1.5.3

Compiled using: APR 1.5.1, APR-UTIL 1.5.3

Architecture:   64-bit

Server MPM:     prefork

  threaded:     no

    forked:     yes (variable process count)

Server compiled with....

 -D APR_HAS_SENDFILE
~~以下省略~~

phpを使用するための設定

1 phpのmoduleを読み込ませる設定をする
・apache2.0系
LoadModule php5_module c:/php/php5apache2.dll
・apache2.2系
LoadModule php5_module c:/php/php5apache2_2.dll

2 拡張子を登録設定する
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

3 php.iniファイルの配置場所を指定する
PHPIniDir "c:/php"

4 動作確認

ドキュメントルートにinfo.phpというファイルを作成し下記内容を記述

<?php
phpinfo();
?>

ブラウザにてhttp://localhost/info.phpにアクセスし、
phpの各種設定情報が画面表示されることを確認する。














■■apache2.4メモ

Apache2.4.xをpreforkで使えるようにする

2.4からはevent MPMデフォルトになった。
preforkを使うようにconfigureに  --with-mpm=prefork を追加し
再インストール

Apache2.4.x NameVirtualHostが廃止

2.2のconfこぴったら怒られた

[root@xxx-xxxx-xxxx www]# /etc/init.d/httpd start

Starting httpd: AH00548: NameVirtualHost has no effect and will be removed in t                      he next release /etc/httpd/conf/extra/httpd.conf:5



下記をコメントアウト

NameVirtualHost *:80
NameVirtualHost *:443



してそのまま<VirtualHost ~>やっちゃっておk
#NameVirtualHost *:80
#NameVirtualHost *:443
<VirtualHost *:80>
    #xxxxx.ne.jp
    Include /var/www/xxxx/xxx/xxxx
</VirtualHost>

Apache2.4.x SSLMutexが廃止

versionアップ対応を頼まれてやってたらSSLMutexが下記のように弾かれた
Invalid command 'SSLMutex', perhaps misspelled or defined by a module not included in the server configuration

下記のように修正し対応
#SSLMutex default
Mutex default ssl-cache

☆参考
目的別Apacheの設定
http://www5.plala.or.jp/vaio0630/apache/apache_case.htm#A13
apache 2.4系 SSL自己証明書の導入方法
http://www.checksite.jp/apache-ssl-self-certificate/

0 件のコメント:

コメントを投稿