トップ  > サーバ設定:運用  > 各アプリケーションのインストール  > Webサーバ構築(Apache)

Webサーバ構築(Apache)  (最終更新日:2011/07/23)

httpサーバ(Apache)はブラウザ(Internet Explorer等)で表示する、HTMLファイルや画像データを送信するサーバ。現在表示されている、このページもApacheから提供されています。

ここでは、以下のことが出来るように設定をします。

・CGIは任意のディレクトリで実行できるようにする。

・SSIは拡張子がshtmlのもののみ実行できるようにする。

・.htaccessを使用できるようにする。

・PHP5.3系を使用できるようにする。

Webサーバインストール

[root@sv ~]# yum install httpd ← httpdインストール

[root@sv ~]# yum install php php-mbstring ← php、php-mbstringインストール

Webサーバ初期設定

1.Webサーバ設定
[root@sv ~]# vi /etc/httpd/conf/httpd.conf ← httpd設定ファイル編集
#
# 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 ← エラーページ等でOS名を表示しないようにする

#
# 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 webmaster@example.net ← エラーページ等で表示される管理者のメールアドレスを指定

#
# 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 www.rx-93dff.net:80 ← サーバ名を指定

#
# 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 ← CGI,SSI許可、ファイル一覧表示禁止

#
# 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の許可

#
# 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 ← 長すぎるURI(414エラー)はログに記録しない

#
# For a single logfile with access, agent, and referer information
# (Combined Logfile Format), use the following directive:
#
SetEnvIf Request_URI "default\.ida" no_log ← 追加(wormからのアクセスをログに記録しない)
SetEnvIf Request_URI "cmd\.exe" no_log ← 追加(wormからのアクセスをログに記録しない)
SetEnvIf Request_URI "root\.exe" no_log ← 追加(wormからのアクセスをログに記録しない)
SetEnvIf Request_URI "Admin\.dll" no_log ← 追加(wormからのアクセスをログに記録しない)
SetEnvIf Request_URI "NULL\.IDA" no_log ← 追加(wormからのアクセスをログに記録しない)
こちらは参考にしたサイト様の例をそのまま引用しております。運用して行くと傾向が掴めると思いますので適時変更します。
SetEnvIf Remote_Addr 192.168.0 no_log ← 追加(内部からのアクセスをログに記録しない)
SetEnvIf Remote_Addr 127.0.0.1 no_log ← 追加(自ホストからのアクセスをログに記録しない)
CustomLog logs/access_log combined env=!no_log ← 上記以外のアクセスをログに記録する

#
# 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のバージョンを表示しないようにする

#
# 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 ← 使用するブラウザによっては日本語が文字化けする為無効にする

#
# 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 .pl ← CGIスクリプトに.plを追加

[root@sv ~]# rm -f /etc/httpd/conf.d/welcome.conf ← テストページ削除

[root@sv ~]# rm -f /var/www/error/noindex.html ← テストページ削除
2.Perlコマンド設定

Perlコマンドへ/usr/local/bin/perlでもアクセスできるようします。

[root@sv ~]# whereis perl ← Perlのパスを確認
perl: /usr/bin/perl /usr/share/man/man1/perl.1.gz

[root@sv ~]# ln -s /usr/bin/perl /usr/local/bin/perl ← /usr/local/bin/perlから/usr/bin/perlへリンクをはる

[root@sv ~]# whereis perl ← Perlのパスを確認
perl: /usr/bin/perl /usr/local/bin/perl /usr/share/man/man1/perl.1.gz ← Perlのパスに/usr/local/bin/perlが表示されることを確認
3.ドキュメントルートの所有者変更

ここでは、user_mに変更します。

[root@sv ~]# chown user_m. /var/www/html/ ← ドキュメントルートの所有者変更(user_mの場合)

[root@sv ~]# ll /var/www/ ← ドキュメントルートの所有者変更確認
合計 16
drwxr-xr-x 2 root   root   4096  7月  7 19:31 2011 cgi-bin
drwxr-xr-x 3 root   root   4096  7月 20 23:57 2011 error
drwxr-xr-x 2 user_m user_m 4096  7月  7 19:31 2011 html
drwxr-xr-x 3 root   root   4096  7月 20 23:53 2011 icons

Webサーバ起動

1.Webサーバ起動
[root@sv ~]# /etc/rc.d/init.d/httpd start ← httpd起動
httpd を起動中:                                            [  OK  ]

[root@sv ~]# chkconfig httpd on ← httpd自動起動設定

[root@sv ~]# chkconfig --list httpd ← httpd自動起動設定確認
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
2.ポート80番の開放

ルータ及びファイアウォールでポート80番を開放します。

ファイアウォールをサイト通りに設定している場合は以下の追加作業。

[root@sv ~]# vi iptables.sh
#----------------------------------------------------------#
# 各種サービスを公開する場合の設定(ここから)               #
#----------------------------------------------------------#

# 外部からのTCP80番ポート(HTTP)へのアクセスを許可
# ※Webサーバを公開する場合のみ
#iptables -A INPUT -p tcp --dport 80 -j ACCEPT
↓
iptables -A INPUT -p tcp --dport 80 -j ACCEPT ← 「#」を削除しコメント解除

[root@sv ~]# ./iptables.sh ← ファイアウォール設定反映

ポートチェック【外部からポート開放確認】で「host名」にサーバ名(rx-93dff.net)、「port番号」に80を入力して「ポートチェック」をクリックし「アクセスできました」になること確認。

Webサーバ動作確認

1.Webページ表示確認
[root@sv ~]# vi /var/www/html/index.html ← テストページ作成
ここから----------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>テスト</title>
<body>
テスト
</body>
</html>
----------ここまで

「http://サーバ名/」にアクセスしてテストページが表示されればOK。

2.CGI確認
[root@sv ~]# vi /var/www/html/test.cgi ← テスト用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>テスト</title>\n";
print "</head>\n";
print "<body>\n";
print "CGIテスト\n";
print "</body>\n";
print "</html>\n";
----------ここまで

[root@sv ~]# chmod 755 /var/www/html/test.cgi ← テスト用CGIパーミッション変更

「http://サーバ名/test.cgi」にアクセスしてCGIテストページが表示されればOK。

3.SSI確認
[root@sv ~]# vi /var/www/html/test.shtml ← SSIテスト用ページ作成
ここから----------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>テスト</title>
<body>
SSIテスト
<!--#config timefmt="%Y/%m/%d %H:%M:%S" -->
<!--#echo var="DATE_LOCAL" -->
</body>
</html>
----------ここまで

「http://サーバ名/test.shtml」にアクセスして現在日時を表示するSSIテストページが表示されればOK。

4..htaccess確認
[root@sv ~]# vi /var/www/html/.htaccess ← .htaccessファイル作成
ここから----------
DirectoryIndex index.shtml
----------ここまで

[root@sv ~]# vi /var/www/html/index.shtml ← .htaccessテスト用ページ作成
ここから----------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>テスト</title>
<body>
<p>.htaccessによるWebサーバ設定(例としてDirectoryIndex)の変更テスト</p>
このページのファイル名は<!--#echo var="DOCUMENT_NAME" -->
</body>
</html>
----------ここまで

「http://サーバ名/」にアクセスしてindex.shtmlが表示されればOK。

5.PHP確認
[root@sv ~]#  vi /var/www/html/test.php ← PHPテスト用ページ作成
ここから----------
<?php
  phpinfo();
?>
----------ここまで

「http://サーバ名/test.php」にアクセスしてphpinfoが表示されればOK。

6.後始末
[root@sv ~]# rm -f /var/www/html/* ← 作成したテスト用ページを全て削除

[root@sv ~]# rm -f /var/www/html/.htaccess ← 作成した.htaccessを削除