Apacheインストール+PHP&SSI&CGI実行環境構築
目次
概要
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
※初期状態でコメントアウトされている行は表示を省略しています。※ ※赤字が修正箇所です※ ### 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
※ファイルの末尾に追加※
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
<html> <head> <title>Test Page</title> </head> <body> <h1>This is test page!</h1> </body> </html>
PHPの実行テスト
# cd /var/www/html/ # vi index.php
<?php phpinfo() ?>
SSIの実行テスト
# cd /var/www/html/ # vi index.shtml
<!--#include file="index2.shtml" -->
# vi index2.shtml
This is SSI test page!
CGI(Perl)の実行テスト
# cd /var/www/html/ # vi index.cgi
#!/usr/bin/perl print "Content-type: text/html; charset=UTF-8\n\n"; print "This is CGI test page!";