Webサーバー(Apache)の構築 合計:
昨日:
今日:
更新日:2013/1/1
<<ホームへ戻る

webサーバーは、ブラウザ(インターネットエクスプローラ、ネットスケープ等)より、見られるようにするサーバー。

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

 
◆Webサーバーのインストール <<TOP
[root@server ~]# yum -y install httpd ← httpdインストール  
		  
		  ・
		  ・
		  ・
=============================================================================
 Package                 Arch       Version          Repository        Size 
=============================================================================
Installing:
 httpd                   i386       2.0.52-28.ent.centos4  base              888 k
Installing for dependencies:
 apr                     i386       0.9.4-24.5.c4.2  base               88 k
 apr-util                i386       0.9.4-21         base               51 k
 httpd-suexec            i386       2.0.52-28.ent.centos4  base               28 k

Transaction Summary
=============================================================================
Install      4 Package(s)         
Update       0 Package(s)         
Remove       0 Package(s)         
Total download size: 1.0 M
Downloading Packages:
(1/4): apr-0.9.4-24.5.c4. 100% |=========================|  88 kB    00:00     
(2/4): httpd-suexec-2.0.5 100% |=========================|  28 kB    00:00     
(3/4): httpd-2.0.52-28.en 100% |=========================| 888 kB    00:00     
(4/4): apr-util-0.9.4-21. 100% |=========================|  51 kB    00:00     
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: apr                          ######################### [1/4] 
  Installing: apr-util                     ######################### [2/4] 
  Installing: httpd                        ######################### [3/4] 
  Installing: httpd-suexec                 ######################### [4/4] 

Installed: httpd.i386 0:2.0.52-28.ent.centos4
Dependency Installed: apr.i386 0:0.9.4-24.5.c4.2 apr-util.i386 0:0.9.4-21 httpd-suexec.i386
 0:2.0.52-28.ent.centos4
Complete!

[root@server ~]#yum -y install php php-mbstring ← php、php-mbstringインストール
Loading "fastestmirror" plugin
Setting up Install Process
Setting up repositories
Loading mirror speeds from cached hostfile
Reading repository metadata in from local files
Reducing Dag RPM Repository for Red Hat Enterprise Linux to included packages only
Finished
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for php to pack into transaction set.
php-4.3.9-3.22.3.i386.rpm 100% |=========================|  23 kB    00:00     
---> Package php.i386 0:4.3.9-3.22.3 set to be updated
---> Downloading header for php-mbstring to pack into transaction set.
php-mbstring-4.3.9-3.22.3 100% |=========================|  19 kB    00:00     
---> Package php-mbstring.i386 0:4.3.9-3.22.3 set to be updated
--> Running transaction check
--> Processing Dependency: php-pear for package: php
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for php-pear to pack into transaction set.
php-pear-4.3.9-3.22.3.i38 100% |=========================|  34 kB    00:00     
---> Package php-pear.i386 0:4.3.9-3.22.3 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size 
=============================================================================
Installing:
 php                     i386       4.3.9-3.22.3     update            1.3 M
 php-mbstring            i386       4.3.9-3.22.3     update            920 k
Installing for dependencies:
 php-pear                i386       4.3.9-3.22.3     update            267 k

Transaction Summary
=============================================================================
Install      3 Package(s)         
Update       0 Package(s)         
Remove       0 Package(s)         
Total download size: 2.5 M
Downloading Packages:
(1/3): php-4.3.9-3.22.3.i 100% |=========================| 1.3 MB    00:03     
(2/3): php-pear-4.3.9-3.2 100% |=========================| 267 kB    00:00     
(3/3): php-mbstring-4.3.9 100% |=========================| 920 kB    00:00     
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: php                          ######################### [1/3] 
  Installing: php-pear                     ######################### [2/3] 
  Installing: php-mbstring                 ######################### [3/3] 

Installed: php.i386 0:4.3.9-3.22.3 php-mbstring.i386 0:4.3.9-3.22.3
Dependency Installed: php-pear.i386 0:4.3.9-3.22.3
Complete!
[root@server ~]#

 

 
 
 
◆Webサーバーの設定 <<TOP

@、Webサーバの設定。


[root@server ~]# 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@arisonsvr.org ← エラーページ等に表示される管理者メールアドレスを指定
    ・
    ・
#
# 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 new.host.name:80

ServerName arisonsvr.org:80 ← サーバー名を指定
    ・
    ・
#
# This should be changed to whatever you set DocumentRoot to.
#


#
# 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 Indexes 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:
#
CustomLog logs/access_log combined

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.11 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のバージョンを表示しないようにする
    ・
    ・
#
# Aliases: Add here as many aliases as you need (with no limit). The format is
# Alias fakename realname
#
# Note that if you include a trailing / on fakename then the server will
# require it to be present in the URL.  So "/icons" isn't aliased in this
# example, only "/icons/".  If the fakename is slash-terminated, then the
# realname must also be slash terminated, and if the fakename omits the
# trailing slash, the realname must also omit it.
#
# We include the /icons/ alias for FancyIndexed directory listings.  If you
# do not use FancyIndexing, you may comment this out.
#
Alias /icons/ "/var/www/icons/"

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

## Specify a default charset for all pages sent out. This is
# always a good idea and opens the door for future internationalisation
# of your web site, should you ever want it. Specifying it as
# a default does little harm; as the standard dictates that a page
# is in iso-8859-1 (latin1) unless specified otherwise i.e. you
# are merely stating the obvious. There are also some security
# reasons in browsers, related to javascript and URL parsing
# which encourage you to always set a default char set.
#
AddDefaultCharset UTF-8

#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@server ~]# rm -f /etc/httpd/conf.d/welcome.conf
                ↑テストページの削除

[root@server ~]# rm -f /var/www/error/noindex.html
         ↑ noindex,htmlの削除
		   

A、Perlコマンドが、/usr/local/bin/perlでもアクセスできるようにリンクをはる。


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

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

B、ドキュメントルートの所有者の変更

ここでは、例として、所有者をadminに変更する。

[root@server ~]# chown admin. /var/www/html/ ← ドキュメントルート所有者変更


[root@server ~]# ll /var/www/ ← ドキュメントルート所有者変更確認
合計 16
drwxr-xr-x  2 root  root  4096  8月 13  2006 cgi-bin
drwxr-xr-x  3 root  root  4096  4月 13 21:00 error
drwxr-xr-x  2 admin admin 4096  8月 13  2006 html
drwxr-xr-x  3 root  root  4096  4月  3 21:23 icons
[root@server ~]#	  
		  

 

 

◆Webサーバーの起動 <<TOP

@、Webサーバーを起動する

[root@server ~]# /etc/rc.d/init.d/httpd start ← httpdの起動
httpd を起動中:                                            [  OK  ]

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

[root@server ~]# chkconfig --list httpd ← 自動起動の確認
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@server ~]# 
		  

A、ポート80番をオープンする。

ルーターのポート80番をオープンする。ルーターのポートオープンについては、こちらを参照。

B、外部から自分のサーバーが見られるか確認。

Free Website Test tools by WebSitePulse

左のhttp://のところに自分のサーバー名を入力し、かつ、Verification Codeのところの数字を入力してperform testボタンを押してテストする。

下記のように表示されればOK。

上記の場合、当サーバーの例となっています。

 
◆Webサーバーの確認 <<TOP

外部に公開されていることが確認されたので、今度は、CGI、SSI、PHP、.htaccess等が使用できるか確認する。

@、最も簡単な表示テスト

[root@server ~]# vi /var/www/html/index.html
<html>
<head>
<!-- ※システムの文字コードがUTF-8場合 ** -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>テスト</title>
<body>
表示テスト
</body>
</html>

アドレスhttp://サーバー名/として、「表示テスト」と表示されればOKです。

A、CGIの確認。
CGIが利用できるか簡単なテスト
[root@server ~]# vi /var/www/html/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>テスト</title>\n";
print "</head>\n";
print "<body>\n";
print "CGIテスト\n";
print "</body>\n";
print "</html>\n"; [root@server ~]# chmod 755 /var/www/html/test.cgi →パーミッションの変更

http://サーバー名/test.cgiとして、「CGIテスト」と表示されればOK。

B、SSIの確認。
SSIが利用できるかの確認として現在の日時をSSIで表示してみる。
[root@server ~]# vi /var/www/html/test.shtml
<html>
<head>
<!-- ※システムの文字コーがUTF-8の場 --> <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テスト 2008/03/17 22:53:59」のように表示されればOK。

C、.htaccessの確認。
.htaccessでDirectoryIndex(ファイル名を省略した場合に表示されるページ)をindex.htmlからindex.shtmlに変更してみる。
[root@server ~]# vi /var/www/html/.htaccess
DirectoryIndex index.shtml [root@server ~]# mv /var/www/html/test.shtml /var/www/html/index.shtml          ↑ 先ほどのSSIファイルをリネームする

http://サーバー名/として、先ほどの「SSIテスト 2008/03/17 23:03:52」のように表示されればOK。

D、PHPが利用できるか確認。
PHPで簡単な表示テストを行う。
[root@server ~]# vi /var/www/html/test.php
<?php phpinfo(); ?>

http://サーバー名/test.phpとして、PHPのテストページが表示されればOK。

E、後始末
[root@server ~]# rm -f /var/www/html/* ← 作成したファイルを削除


[root@server ~]# rm -f /var/www/html/.htaccess ← .htaccessファイルを削除      

 
   
  <<TOP
 
 
TOPへ

Copyright(C) 2005-2012 arisonserver. All rights reserved.