apache2.2のインストールと設定方法

  • 投稿日:
  • by ライブラリ編集局

この記事ではwebサーバソフトウェア、apacheのインストールと設定方法について解説します。

OSはCentOS6.3です。

 

まずyumコマンドでapacheをインストールしましょう。

# yum -y install httpd

 

また、PHPを利用する為に、こちらもyumでインストールしておきましょう。

更に日本語を利用する為にphp-mbstringもインストールしておきます。

# yum -y install php php-mbstring

 

httpd.confの設定方法

インストールを終えたらapacheの設定ファイルを編集します。

Apacheの設定ファイルは/etc/httpd/conf/httpd.confです。

# vi /etc/httpd/conf/httpd.conf

 

以下はhttpd.conf内での作業です。

httpd.confは1000行以上のファイルなので、Viの場合は /検索語句 で検索して編集して下さい。

 

apacheでは404エラーや403エラーなどのエラーページを表示する時に、apacheのバージョンやOSの情報が出るようになっています。これはセキュリティの面から好ましくないので修正します。

#
# Don't give away too much information about all the subcomponents
# we are running. Comment out this line if you don't mind remote sites
# finding out what major optional modules you are running
ServerTokens OS

ServerTokens Prod

次にエラーページ等に表示させるメールアドレスを設定します。

#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed. This address appears on some server-generated pages, such
# as error documents. e.g. admin@your-domain.com
#
ServerAdmin root@localhost

ServerAdmin test@testweb.com(自分のメールアドレスにして下さい)

ホスト名を指定します。ここを間違えるとページが表示できませんので気をつけて下さい。

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If this is not set to valid DNS name for your host, server-generated
# redirections will not work. See also the UseCanonicalName directive.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
# You will have to access it by its address anyway, and this will make
# redirections work in a sensible way.
#
#ServerName www.example.com:80

ServerName testweb.com:80 (コメントを解除し、自分のドメイン名にして下さい)

 

SSI、CGIを使えるようにする為に、optionを指定しましょう。

#
# 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.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks

Options Includes ExecCGI FollowSymLinks

Includesを追記することでSSIが、ExecCGIを追記することでCGIが有効になります。

更に、.htaccessを有効にします。

 

.htaccessとは

.htaccessとはディレクトリ単位で設定を行えるファイルです。

.htaccessファイルに設定を記述してディレクトリに設置するとそのディレクトリとそれより下層のディレクトリに対してはその設定が有効になります。

たとえば、httpd.confでCGIが無効という設定になっていても、.htaccessファイルにCGIが有効という記述がされていた場合、.htaccessが置かれたディレクトリとそれより下のディレクトリではCGIが有効になります。

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

AllowOverride All

これで.htaccessが有効になります。

 

URIが長すぎる事によるエラー(414エラー)はサイズが非常に大きいので、リソースを節約させる為にこれを記録しない設定をします。

#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

LogFormat "%h %l %u %t \"%!414r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
(これ以外の行はそのままで良いです。)

 

また、ワームに感染したパソコンからのアクセスによってapacheに無駄なログが残されてログ解析の邪魔になったり、リソースの無駄遣いになったりするので、これも記録されないようにしましょう。

#
# The location and format of the access logfile (Common Logfile Format).
# If you do not define any access logfiles within a
# container, they will be logged here. Contrariwise, if you *do*
# define per- access logfiles, transactions will be
# logged therein and *not* in this file.
#
# CustomLog logs/access_log common
SetEnvIf Request_URI "default\.ida" no_log
SetEnvIf Request_URI "cmd\.exe" no_log
SetEnvIf Request_URI "root\.exe" no_log
SetEnvIf Request_URI "Admin\.dll" no_log
SetEnvIf Request_URI "NULL\.IDA" no_log
CustomLog logs/access_log combined env=!no_log
(上記6行を追記して下さい)

上記は、Request_URIの後のワードが含まれる場合にログを残さないように設定してあります。今回は、ワームに特徴的なワードを入れています。

 

デフォルトではServerSignatureがOnになっており、このままではHTTPレスポンスヘッダに余計なサーバ情報が出力されてしまいます。これもまた、セキュリティ上好ましくないので出力されないようOffにしましょう。

#
# Optionally add a line containing the server version and virtual host
# name to server-generated pages (internal error documents, FTP directory
# listings, mod_status and mod_info output etc., but not CGI generated
# documents or custom error documents).
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
# Set to one of: On | Off | EMail
#
ServerSignature On

ServerSignature Off

 

次に文字化け対策を行います。

ApacheではCharsetがUTF-8に設定されている為Metaタグ等を用いて他のCharasetを使っても無視されてしまい、文字化けしてしまいます。それを防止する為にDefaultCharsetをコメントアウトしてしまいましょう。

#
# Specify a default charset for all content served; this enables
# interpretation of all content as UTF-8 by default. To use the
# default browser choice (ISO-8859-1), or to allow the META tags
# in HTML content to override this choice, comment out this
# directive:
#
AddDefaultCharset UTF-8

#AddDefaultCharset UTF-8

 

最後に、デフォルトではCGIスクリプトが実行できないようにコメントアウトされているので、実行できるようにしましょう。

#
# AddHandler allows you to map certain file extensions to "handlers":
# actions unrelated to filetype. These can be either built into the server
# or added with the Action directive (see below)
#
# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add "ExecCGI" to the "Options" directive.)
#
#AddHandler cgi-script .cgi

AddHandler cgi-script .cgi

 

これでhttpd.confの設定は終了です。

 

perlの設定

perlの位置を確認しておきます。

# which perl

で/usr/bin/perlと表示されたら、

ln -s /usr/bin/perl /usr/local/bin/perl

を実行し、リンクをしておきましょう。

再度 # which perl を行い

/usr/local/bin/perlと表示されればOKです。

 

apacheの起動、自動起動設定

apacheを起動します。

# /etc/rc.d/init.d/httpd start

 

ついでに自動起動をonにしておきます。

# chkconfig httpd on

 

自動起動がonになっているか確認します。

# chkconfig --list httpd

以下のようになっていればonになっています。

httpd 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ

 

apacheの動作確認

それではapacheが起動し、設定ができているかを確認します。

http://サーバのIPアドレス/もしくはhttp://ドメイン名/でアクセスしてapacheのテストページが表示されればapacheの起動に成功しています。

 

次に自分のhtmlが動くか確かめてみましょう。

httpd.confに設定されているデフォルトのドキュメントルートディレクトリが/var/www/html/ですのでこの下に置かれたファイルがページに表示されます。

/var/www/html/に移動してtest.htmlを作りましょう。

# cd /var/www/html/

# vi test.html

 

test.html内

<html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>testpage</title>

    <body>

    testpage

    </body>

</html>

 

ファイルを作成し終えたら

http://サーバのIPアドレス/test.htmlにアクセスしてみましょう。

ページにtestpageと表示されていれば成功です。

 

最後にcgiが動作するか確認しましょう。

cgiが動作するのは/var/www/cgi-bin/なので、/var/www/cgi-bin/にtest.cgiを作成します。

# cd /var/www/cgi-bin/

# vi test.cgi

 

test.cgi内

#!/usr/local/bin/perl

print "Content-type: text/html\n\n";

print "<html>\n";

print "<head>\n";

print "<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n";

print "<title>TESTCGI</title>\n";

print "</head>\n";

print "<body>\n";

print "TESTCGI\n";

print "</body>\n";

print "</html>\n";

 

/var/www/cgi-bin/にtest.cgiを作成したら、パーミッションを変更し、実行できるようにしておきます。

 

# chmod 755 /var/www/cgi-bin/test.cgi

 

http://サーバのIPアドレス/cgi-bin/test.cgihttp://サーバのドメイン名/cgi-bin/test.cgi

にアクセスしてTESTCGIと表示されればCGIの設定が出来ています。

 

ページが見られない場合、80番ポートが開いているかを確認してください。

 

以上でapacheの初期設定は完了です。