Webサーバー構築(Apache)

最終更新日: 2014.11.24

<<トップページ <<新着情報 <<リンク集 <<サイト内検索 <<管理人へメール <<Scientific Linuxで自宅サーバー構築 <<Fedoraで自宅サーバー構築

■概要

Webサーバー(Apache)はInternet Explorer等のブラウザからWebページをみれるようにするためのサーバー。
ここでは、ホームページスペース提供サービスを行っている一般的なWebサーバーと同様に以下のことができるようにする。

 ・CGIは任意のディレクトリで実行できるようにする
 ・SSIは拡張子がshtmlのもののみ実行できるようにする
 ・.htaccessを使用できるようにする
 ・PHPを使用できるようにする


■Webサーバーインストール

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

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

■Webサーバー設定

(1)Webサーバー設定
【CentOS7の場合】
[root@centos ~]# vi /etc/httpd/conf/httpd.conf ← httpd設定ファイル編集
#ServerName www.example.com:80
↓
ServerName centossrv.com:80 ← サーバー名を指定

<Directory "/var/www/html">

#
# 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.0/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 ← 〃
SetEnvIf Request_URI "root\.exe" no_log ← 〃
SetEnvIf Request_URI "Admin\.dll" no_log ← 〃
SetEnvIf Request_URI "NULL\.IDA" no_log ← 〃
SetEnvIf Remote_Addr 192.168.1 no_log ← 追加(内部からのアクセスをログに記録しない)
SetEnvIf Remote_Addr 127.0.0.1 no_log ← 追加(自ホストからのアクセスをログに記録しない)
CustomLog logs/access_log combined env=!no_log ← 上記以外のアクセスをログに記録する

AddDefaultCharset UTF-8
↓
#AddDefaultCharset UTF-8 ← コメントアウト(文字化け対応)

#AddHandler cgi-script .cgi
↓
AddHandler cgi-script .cgi .pl ← CGIスクリプトに.plを追加

[root@centos ~]# vi /etc/httpd/conf.d/autoindex.conf ← autoindex設定ファイル編集
<Directory "/usr/share/httpd/icons">
    Options MultiViews ← iconsディレクトリのファイル一覧を表示しないようにする
    AllowOverride None
    Require all granted
</Directory>

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

[root@centos ~]# rm -f /var/www/error/noindex.html ← テストページ削除

【CentOS6,5の場合】
[root@centos ~]# vi /etc/httpd/conf/httpd.conf ← httpd設定ファイル編集
ServerTokens OS
↓
ServerTokens Prod ← エラーページ等でOS名を表示しないようにする

#ServerName www.example.com:80
↓
ServerName centossrv.com:80 ← サーバー名を指定

<Directory "/var/www/html">

#
# 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.0/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 ← 〃
SetEnvIf Request_URI "root\.exe" no_log ← 〃
SetEnvIf Request_URI "Admin\.dll" no_log ← 〃
SetEnvIf Request_URI "NULL\.IDA" no_log ← 〃
SetEnvIf Remote_Addr 192.168.1 no_log ← 追加(内部からのアクセスをログに記録しない)
SetEnvIf Remote_Addr 127.0.0.1 no_log ← 追加(自ホストからのアクセスをログに記録しない)
CustomLog logs/access_log combined env=!no_log ← 上記以外のアクセスをログに記録する

ServerSignature On
↓
ServerSignature Off ← エラーページでサーバー情報を表示しないようにする

AddDefaultCharset UTF-8
↓
#AddDefaultCharset UTF-8 ← コメントアウト(文字化け対応)

#AddHandler cgi-script .cgi
↓
AddHandler cgi-script .cgi .pl ← CGIスクリプトに.plを追加

<Directory "/var/www/icons">
    Options Indexes MultiViews
    ↓
    Options MultiViews ← iconsディレクトリのファイル一覧を表示しないようにする
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

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

[root@centos ~]# rm -f /var/www/error/noindex.html ← テストページ削除

(2)Perlコマンドへ/usr/local/bin/perlでもアクセスできるようにする。
[root@centos ~]# ln -s /usr/bin/perl /usr/local/bin/perl ← /usr/local/bin/perlから/usr/bin/perlへリンクをはる

[root@centos ~]# whereis perl ← Perlのパスを確認
perl: /usr/bin/perl /usr/local/bin/perl /usr/share/man/man1/perl.1.gz ← Perlのパスに/usr/local/bin/perlが表示されることを確認

(3)ドキュメントルート所有者変更
ドキュメントルート所有者をWebコンテンツ編集ユーザーに変更する。
[root@centos ~]# chown centos. /var/www/html/ ← ドキュメントルート所有者を変更(centosは例)

[root@centos ~]# ll /var/www/ ← ドキュメントルート所有者変更確認
合計 24
drwxr-xr-x  2 root      root      4096 10月  5 11:45 cgi-bin
drwxr-xr-x  3 root      root      4096 10月  9 00:19 error
drwxr-xr-x  5 centos    centos    4096  9月 27 17:43 html
drwxr-xr-x  3 root      root      4096  9月 27 09:29 icons

■Webサーバー起動

(1)Webサーバー起動
[root@centos ~]# systemctl start httpd ← httpd起動※CentOS7の場合

[root@centos ~]# /etc/rc.d/init.d/httpd start ← httpd起動※CentOS6,5の場合
httpd を起動中:                                            [  OK  ]

[root@centos ~]# systemctl enable httpd ← httpd自動起動設定※CentOS7の場合

[root@centos ~]# chkconfig httpd on ← httpd自動起動設定※CentOS6,5の場合

(2)ポート80番のOPEN
ルーター側の設定でポート80番をOPENする。
※ルーターの設定は各ルーターのマニュアルまたはメーカー別ルーターポート開放手順を参照

ポートチェック【外部からポート開放確認】で「host名」にサーバー名(例:centossrv.com)、「port番号」に80と入力して「ポートチェック」ボタン押下し、「ホスト=centossrv.com ポート=80 にアクセスできました。」と表示されることを確認。

(3)外部からのWebサーバーアクセス確認
外部からWebサーバーにアクセスできるか確認する。
[root@centos ~]# echo test >> /var/www/html/index.html ← テストページ作成

以下の「Hostname」欄にホスト名(例:centossrv.com)を入力してGoボタンを押下する
WebSitePulse.com - free webmaster tools
Hostname:

以下のような結果が表示されればOK。
Website test results

URL tested:          http://centossrv.com
Test performed from: Seattle, WA
Test performed at:   2011-02-05 05:37:10 (GMT -05:00)
Resolved As:         xxx.xxx.xxx.xxx
Status:              OK
Response Time:       0.792 sec
DNS:                 0.135 sec
Connect:             0.130 sec
Redirect:            0.000 sec
First byte:          0.132 sec
Last byte:           0.396 sec
Size:                27840 bytes

[root@centos ~]# rm -f /var/www/html/index.html ← テストページ削除


■Webサーバー確認

(1)Webページ表示確認
[root@centos ~]# vi /var/www/html/index.html ← テストページ作成
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">※システムの文字コードがUTF-8の場合
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">※システムの文字コードがEUCの場合
<title>テスト</title>
</head>
<body>
テスト
</body>
</html>
http://サーバー名/にアクセスしてテストページが表示されればOK

(2)CGI確認
CGIで簡単なテストページを表示してみる。
[root@centos ~]# 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";※システムの文字コードがUTF-8の場合
print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=euc-jp\">\n";※システムの文字コードがEUCの場合
print "<title>テスト</title>\n";
print "</head>\n";
print "<body>\n";
print "CGIテスト\n";
print "</body>\n";
print "</html>\n";

[root@centos ~]# chmod 755 /var/www/html/test.cgi ← テスト用CGIパーミッション変更
http://サーバー名/test.cgiにアクセスしてCGIテストページが表示されればOK

(3)SSI確認
SSIで現在日時を表示してみる。
[root@centos ~]# vi /var/www/html/test.shtml ← SSIテスト用ページ作成
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">※システムの文字コードがUTF-8の場合
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">※システムの文字コードがEUCの場合
<title>テスト</title>
</head>
<body>
SSIテスト
<!--#config timefmt="%Y/%m/%d %H:%M:%S" -->
<!--#echo var="DATE_LOCAL" -->
</body>
</html>
http://サーバー名/test.shtmlにアクセスして現在日時を表示するSSIテストページが表示されればOK

(4).htaccess確認
.htaccessでDirectoryIndex(ファイル名を省略した場合に表示されるページ)をindex.htmlからindex.shtmlに変更してみる。
[root@centos ~]# vi /var/www/html/.htaccess ← .htaccessファイル作成
DirectoryIndex index.shtml

[root@centos ~]# vi /var/www/html/index.shtml ← .htaccessテスト用ページ作成
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">※システムの文字コードがUTF-8の場合
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">※システムの文字コードがEUCの場合
<title>テスト</title>
</head>
<body>
<p>.htaccessによるWebサーバ設定(例としてDirectoryIndex)の変更テスト</p>
このページのファイル名は<!--#echo var="DOCUMENT_NAME" -->
</body>
</html>
http://サーバー名/にアクセスしてindex.shtmlが表示されればOK

(5)PHP確認
PHPで簡単なテストページを表示してみる。
[root@centos ~]# vi /var/www/html/test.php ← PHPテスト用ページ作成
<?php
  phpinfo();
?>
http://サーバー名/test.phpにアクセスしてphpinfoページが表示されればOK

(6)Webサーバー確認後始末
上記の確認で作成したテスト用ページ等を全て削除する。
[root@centos ~]# rm -f /var/www/html/* ← 作成したテスト用ページを全て削除

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




▲このページのトップへ戻る

LPIロゴ Copyright© 2014 fallenangels, All rights reserved.
ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします