So-net無料ブログ作成
検索選択

Apache のインストールと実行 [コンピューター]

自前の web server を作るため、Apache をインストールし、ついでに log lotation も設定します。

Apacheのインストール


ports からおこないます。

# cd /usr/ports/www/apache24
# make install clean


主設定ファイル http.conf を編集します。
基本的にはデフォルトで動きますが、主な設定は /usr/local/etc/apache24/httpd.conf を編集することによっておこないます。なお、補助的な設定ファイルは /usr/local/etc/apache24/extra に入っています。
間違ったときにやり直せるようにオリジナルを別名でコピーしておきます。

# cp httpd.conf httpd.conf.org

ドキュメントルート(html文書を置くディレクトリ)を設定します。
デフォルトの場所に置いても良いですが、利便性を考えて別のディレクトリにしてもかまいません。たとえば自分のホームディレクトリ内に置くケースもあるでしょう。

# vi httpd.conf

# 必要なら以下の行をを好みのものに変える
DocumentRoot "/usr/local/www/apache24/data"

デフォルトのディレクトリは一般ユーザーでは入れませんから、一般ユーザーからftpやsftpなどでログインしたい場合はディレクトリの所有者を変更します。

# chown ユーザー名 /usr/local/www/data

自分のホームディレクトリ内にファイルを置く場合はもちろん所有者変更は必要ありません。なお、以下の説明はドキュメントルートを変更したことを前提におこないます。

ドキュメントルートを変更した場合、以下も変更します。

# This should be changed to whatever you set DocumentRoot to.
#
# ↓ここを希望のディレクトリに変更
<Directory "/usr/home/hogehoge/www">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews

モジュールのロードを行えるようにします。

# コメントアウトして以下を有効にする
#LoadModule userdir_module libexec/apache24/mod_userdir.so
LoadModule userdir_module libexec/apache24/mod_userdir.so

# コメントアウトして以下を有効にする
#Include etc/apache24/extra/httpd-userdir.conf
Include etc/apache24/extra/httpd-userdir.conf

ディレクトリ一覧を表示させないための設定をします。
あるディレクトリにファイル index.html などがない場合、一般のユーザーがこのディレクトリにアクセスすると、存在するファイルの一覧がブラウザに表示されてしまうことを防ぎます。
下記の部分に
Options Indexes
というのがありますが、この Indexes という単語を削除します。

<Directory "/usr/local/www/apache24/data">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
# Options Indexes FollowSymLinks # コメントアウトして
Options FollowSymLinks # このようにする

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride None

#
# Controls who can get stuff from this server.
#
Require all granted
</Directory>

CGI動作の設定をおこないます。
アクセスカウンタや掲示板などでCGIを使用する場合は以下のようにします。
cgi-bin実行ディレクトリを変更する場合はこの行を変更します。

ScriptAlias /cgi-bin/ "/usr/local/www/apache24/cgi-bin/"

.... 略 ....

<Directory "/usr/local/www/apache24/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>

上において、

Options Non を Options ExecCGI

に変更します。
また、下記も変更します。

#AddHandler cgi-script .cgi # コメントをはずして
AddHandler cgi-script .cgi # このようにする(拡張子の指定)

ログにホストのドメイン名が記録されるように設定します。
Apacheを運用しているとログを直接見たくなるときがあります。Webalizerなどのログ解析ツールを使用しない場合はログのIPアドレスがあらかじめ逆引きされていると便利です。以下のようにおこないますが、サーバーへの負担は増えます。

直接の設定ファイルは /usr/local/etc/apache24/extra/httpd-default.conf ですが、この設定ファイルはいわば httpd.conf の「子分」ファイルです。この子分 httpd-default.conf そのものを有効にするための設定をまずおこないます。

主設定ファイル /usr/local/etc/apache24/httpd.conf において、

# Various default settings
#Include etc/apache24/extra/httpd-default.conf
Include etc/apache24/extra/httpd-default.conf # コメントアウトする

次に /usr/local/etc/apache24/extra/httpd-default.conf において、最後のほうにある HostnameLookups Off を

HostnameLookups On

にします。

ログのローテーション


/etc/newsyslog.conf に以下を付け加えます。

/var/log/httpd-access.log 644 7 * $W0D00 Z /var/run/httpd.pid
/var/log/httpd-error.log 644 7 * $W0D00 Z /var/run/httpd.pid

これは、以下のような設定です。

ログファイルのパーミッション 644
ログを7世代まで保存
それぞれのログの容量は無制限
毎週日曜の0時にローテート
gzip形式で保存
ローテートさせるためシグナルを送る

Apacheの自動起動


Apache を手動で起動させる命令は

# apachectl start

ですが、サーバー起動時に自動で起動させるには /etc/rc.conf に以下の記述を追加します。
apache24_enable="YES"

参考までに、Apache の手動停止は

# apachectl start

です。
手動再起動は

# apachectl restart

です。