OSS Fan ~OSSでLinuxサーバ構築~

このエントリーをはてなブックマークに追加

Apacheインストール+PHP&SSI&CGI実行環境構築

カテゴリ:OSSセットアップ | ソフトウェア:Apache | タグ:
最終更新日:2020/11/02 | 公開日:2013/10/06

目次

概要

 RHEL5.9にApacheをインストールします。 Tomcat等のアプリケーションサーバとの連携は行いません。 Apache単独でWebサービスを提供します。 ただし、PHP、SSI、CGIのプログラムは利用できるようにしておきます。

 セキュリティを考慮して、不要なモジュールは全てアンロードし、 関連する不要設定も全てコメントアウトしてしまいます。

構成

サーバ構成

OSバージョン

Red Hat Enterprise Linux 5.9 x86_64

パッケージ一覧

httpd-2.2.3-74.el5.x86_64.rpm
php-common-5.1.6-39.el5_8.x86_64.rpm
php-cli-5.1.6-39.el5_8.x86_64.rpm
php-5.1.6-39.el5_8.x86_64.rpm
php-mbstring-5.1.6-39.el5_8.x86_64.rpm

クライアント構成

OSバージョン

Windows 7 Ultimate 64bit

ソフトウェア一覧

Firefox 24.0

環境構築

インストール

 必要なパッケージをRHEL5.9のDVDメディアから5つインストールします。 内訳はApacheとして必要なパッケージが1つ、PHPの実行に必要なパッケージが4つです。 SSIとCGI実行のために必要な追加パッケージはありません。 DVDドライブにRHEL5.9のDVD-ROMをセットし、以下のコマンドを実行します。

# mount /dev/cdrom /media/cdrom
mount: ブロックデバイス /dev/cdrom は書き込み禁止です、読込み専用でマウントします
# cd /media/cdrom/Server/
# rpm -ihv httpd-2.2.3-74.el5.x86_64.rpm
準備中...                ########################################### [100%]
   1:httpd                  ########################################### [100%]
# rpm -ihv php-common-5.1.6-39.el5_8.x86_64.rpm
準備中...                ########################################### [100%]
   1:php-common             ########################################### [100%]
# rpm -ihv php-cli-5.1.6-39.el5_8.x86_64.rpm
準備中...                ########################################### [100%]
   1:php-cli                ########################################### [100%]
# rpm -ihv php-5.1.6-39.el5_8.x86_64.rpm
準備中...                ########################################### [100%]
   1:php                    ########################################### [100%]
# rpm -ihv php-mbstring-5.1.6-39.el5_8.x86_64.rpm
準備中...                ########################################### [100%]
   1:php-mbstring           ########################################### [100%]
# cd /
# umount /media/cdrom

設定

Apache設定ファイルの編集

 viエディタでApacheの設定ファイル(httpd.conf)を編集します。

# cd /etc/httpd/conf/
# vi httpd.conf
ファイル名:/etc/httpd/conf/httpd.conf
※初期状態でコメントアウトされている行は表示を省略しています。※
※赤字が修正箇所です※
### Section 1: Global Environment
ServerTokens Prod
ServerRoot "/etc/httpd"
PidFile run/httpd.pid
Timeout 120
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 15

## Server-Pool Size Regulation (MPM specific)
<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>
<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75 
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>
Listen 80
#LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_alias_module modules/mod_authn_alias.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
#LoadModule authz_user_module modules/mod_authz_user.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
#LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#LoadModule authz_default_module modules/mod_authz_default.so
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
#LoadModule env_module modules/mod_env.so
#LoadModule ext_filter_module modules/mod_ext_filter.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
#LoadModule expires_module modules/mod_expires.so
#LoadModule deflate_module modules/mod_deflate.so
#LoadModule headers_module modules/mod_headers.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule status_module modules/mod_status.so
#LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule info_module modules/mod_info.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
#LoadModule actions_module modules/mod_actions.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule userdir_module modules/mod_userdir.so
#LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule cache_module modules/mod_cache.so
#LoadModule suexec_module modules/mod_suexec.so
#LoadModule disk_cache_module modules/mod_disk_cache.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule mem_cache_module modules/mod_mem_cache.so
LoadModule cgi_module modules/mod_cgi.so
#LoadModule version_module modules/mod_version.so
Include conf.d/php.conf
User apache
Group apache
TraceEnable off

### Section 2: 'Main' server configuration

ServerAdmin root@localhost
UseCanonicalName Off
DocumentRoot "/var/www/html"
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory "/var/www/html">
    Options FollowSymLinks ExecCGI IncludesNOEXEC
    AllowOverride All
    Order allow,deny
    Allow from all
    <Limit GET POST>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>
#<IfModule mod_userdir.c>
#    UserDir disable
    #UserDir public_html
#</IfModule>
DirectoryIndex index.php index.shtml index.cgi index.html
AccessFileName .htaccess
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>
TypesConfig /etc/mime.types
DefaultType text/plain
#<IfModule mod_mime_magic.c>
#   MIMEMagicFile /usr/share/magic.mime
#    MIMEMagicFile conf/magic
#</IfModule>
HostnameLookups Off
ErrorLog logs/error_log
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog logs/access_log combined
ServerSignature Off
#Alias /icons/ "/var/www/icons/"
#<Directory "/var/www/icons">
#    Options Indexes MultiViews
#    AllowOverride None
#    Order allow,deny
#    Allow from all
#</Directory>
#<IfModule mod_dav_fs.c>
    # Location of the WebDAV lock database.
#    DAVLockDB /var/lib/dav/lockdb
#</IfModule>
#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
#<Directory "/var/www/cgi-bin">
#    AllowOverride None
#    Options None
#    Order allow,deny
#    Allow from all
#</Directory>
#IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable
#AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
#AddIconByType (TXT,/icons/text.gif) text/*
#AddIconByType (IMG,/icons/image2.gif) image/*
#AddIconByType (SND,/icons/sound2.gif) audio/*
#AddIconByType (VID,/icons/movie.gif) video/*
#AddIcon /icons/binary.gif .bin .exe
#AddIcon /icons/binhex.gif .hqx
#AddIcon /icons/tar.gif .tar
#AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
#AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
#AddIcon /icons/a.gif .ps .ai .eps
#AddIcon /icons/layout.gif .html .shtml .htm .pdf
#AddIcon /icons/text.gif .txt
#AddIcon /icons/c.gif .c
#AddIcon /icons/p.gif .pl .py
#AddIcon /icons/f.gif .for
#AddIcon /icons/dvi.gif .dvi
#AddIcon /icons/uuencoded.gif .uu
#AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
#AddIcon /icons/tex.gif .tex
#AddIcon /icons/bomb.gif core
#AddIcon /icons/back.gif ..
#AddIcon /icons/hand.right.gif README
#AddIcon /icons/folder.gif ^^DIRECTORY^^
#AddIcon /icons/blank.gif ^^BLANKICON^^
#DefaultIcon /icons/unknown.gif
#ReadmeName README.html
#HeaderName HEADER.html
#IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
#AddLanguage ca .ca
#AddLanguage cs .cz .cs
#AddLanguage da .dk
#AddLanguage de .de
#AddLanguage el .el
#AddLanguage en .en
#AddLanguage eo .eo
#AddLanguage es .es
#AddLanguage et .et
#AddLanguage fr .fr
#AddLanguage he .he
#AddLanguage hr .hr
#AddLanguage it .it
#AddLanguage ja .ja
#AddLanguage ko .ko
#AddLanguage ltz .ltz
#AddLanguage nl .nl
#AddLanguage nn .nn
#AddLanguage no .no
#AddLanguage pl .po
#AddLanguage pt .pt
#AddLanguage pt-BR .pt-br
#AddLanguage ru .ru
#AddLanguage sv .sv
#AddLanguage zh-CN .zh-cn
#AddLanguage zh-TW .zh-tw
#LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
#ForceLanguagePriority Prefer Fallback
AddDefaultCharset Off
#AddType application/x-compress .Z
#AddType application/x-gzip .gz .tgz
AddHandler cgi-script .cgi
#AddHandler type-map var
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
#Alias /error/ "/var/www/error/"
#<IfModule mod_negotiation.c>
#<IfModule mod_include.c>
#    <Directory "/var/www/error">
#        AllowOverride None
#        Options IncludesNoExec
#        AddOutputFilter Includes html
#        AddHandler type-map var
#        Order allow,deny
#        Allow from all
#        LanguagePriority en es de fr
#        ForceLanguagePriority Prefer Fallback
#    </Directory>
#</IfModule>
#</IfModule>
#BrowserMatch "Mozilla/2" nokeepalive
#BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
#BrowserMatch "RealPlayer 4\.0" force-response-1.0
#BrowserMatch "Java/1\.0" force-response-1.0
#BrowserMatch "JDK/1\.0" force-response-1.0
#BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
#BrowserMatch "MS FrontPage" redirect-carefully
#BrowserMatch "^WebDrive" redirect-carefully
#BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully
#BrowserMatch "^gnome-vfs/1.0" redirect-carefully
#BrowserMatch "^XML Spy" redirect-carefully
#BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully

### Section 3: Virtual Hosts
<VirtualHost *:80>
    ServerAdmin webmaster@ossfan.org
    DocumentRoot /var/www/html
    ServerName ossfan.org
    ErrorLog logs/ossfan.org-error_log
    CustomLog logs/ossfan.org-access_log common
</VirtualHost>

hostsファイルの編集

 自ノードのホスト名を名前解決できるようにhostsファイルを編集します。 設定しなくてもApacheは起動しますが、起動時に警告メッセージが出力されるので、 気になる方は設定しておいてください。

# hostname
server1
# cd /etc/
# vi hosts
ファイル名:/etc/hosts
※ファイルの末尾に追加※
127.0.0.1       server1

perlのシンボリックリンク作成

 RHEL5.9ではperlのモジュールは /usr/bin/perl にインストールされています。 フリーのPerlプログラムをダウンロードして使おうとすると、 perlのパスが /usr/local/bin/perl になっているものが比較的多いです。 その都度perlのソースを修正するのは面倒なので、 /usr/bin/perl でも /usr/local/bin/perl でも実行できるようにシンボリックリンクを作成します。

# ls -l /usr/local/bin/
合計 0
# ln -s /usr/bin/perl /usr/local/bin/perl
# ls -l /usr/local/bin/
合計 0
lrwxrwxrwx 1 root root 13 10月  5 04:20 perl -> /usr/bin/perl

Apacheの自動起動設定

 OS(Linux)の起動共にApacheを自動起動するように設定します。 もし自動で起動すると都合が悪い場合はここの手順は飛ばしてください。

# chkconfig --list httpd
httpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off
# chkconfig httpd on
# chkconfig --list httpd
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

Apacheの起動

 一通り設定が終わったらApacheを起動します。

# service httpd start
httpd を起動中:                                            [  OK  ]
# ps -ef | grep httpd
root       640     1  0 03:49 ?        00:00:00 /usr/sbin/httpd
apache     641   640  0 03:49 ?        00:00:00 /usr/sbin/httpd
apache     642   640  0 03:49 ?        00:00:00 /usr/sbin/httpd
apache     643   640  0 03:49 ?        00:00:00 /usr/sbin/httpd
apache     644   640  0 03:49 ?        00:00:00 /usr/sbin/httpd
apache     645   640  0 03:49 ?        00:00:00 /usr/sbin/httpd
apache     646   640  0 03:49 ?        00:00:00 /usr/sbin/httpd
apache     648   640  0 03:49 ?        00:00:00 /usr/sbin/httpd
apache     649   640  0 03:49 ?        00:00:00 /usr/sbin/httpd
root      1316  3289  0 04:27 pts/0    00:00:00 grep httpd

動作テスト

 Apacheのドキュメントルート配下にテストページを作成して配置し、 ブラウザからアクセスして表示できることを確認します。

HTMLファイルの表示テスト

# cd /var/www/html/
# vi index.html
ファイル名:/var/www/html/index.html
<html>
  <head>
    <title>Test Page</title>
  </head>
  <body>
    <h1>This is test page!</h1>
  </body>
</html>

PHPの実行テスト

# cd /var/www/html/
# vi index.php
ファイル名:/var/www/html/index.php
<?php phpinfo() ?>

SSIの実行テスト

# cd /var/www/html/
# vi index.shtml
ファイル名:/var/www/html/index.shtml
<!--#include file="index2.shtml" -->
# vi index2.shtml
ファイル名:/var/www/html/index2.shtml
This is SSI test page!

CGI(Perl)の実行テスト

# cd /var/www/html/
# vi index.cgi
ファイル名:/var/www/html/index.cgi
#!/usr/bin/perl

print "Content-type: text/html; charset=UTF-8\n\n";
print "This is CGI test page!";