Apacheの構築

インストールと設定はroot権限が必要なコマンドばかりなので、各種インストールの間だけ、sudo ではなく su でrootになって進めましょう。

[admin@ ~]$ su -
 Password:
 [root@ ~]#

CentOSではパッケージのインストールと管理に yum というプログラムを使います。さくらのVPSでは最初から yum がインストール済みで、起動直後から使うことができます。一応、新しくインストールをする前に、既にインストールされているものを最新版にアップデートします。

[root@ ~]# yum -y install httpd

まずはインストールに問題がないか起動してみます。

[root@ ~]# /etc/rc.d/init.d/httpd start
 Starting httpd: [ OK ]

無事に起動できたら、続いて自動起動の設定をします。

[root@ ~]# chkconfig httpd on

設定を確認してみましょう。

[root@ ~]# chkconfig --list httpd
 httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

chkconfig –list を実行すると,起動設定されたラン・レベルの一覧が表示できます。(0:システムの停止,1:シングル・ユーザー,2:ネットワーク機能なしのマルチユーザー,3:CUIログインのマルチユーザー,4:カスタム,5:GUIログインのマルチユーザー,6:システムの再起動)さくらのVPSを起動した時に稼動状態になる為には 3 が on になっている必要があります。起動が問題ないようなので、続いてApacheの設定をします。

Apacheの設定

いちおう元ファイルをコピーしてから vi で開きます。

[root@ ~]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
 [root@ ~]# vi /etc/httpd/conf/httpd.conf

1.レスポンスヘッダにOSのバージョンを表示させない

ServerTokens OS
   ↓
 ServerTokens Prod

2.KeepAliveを有効にする

KeepAlive Off
   ↓
 KeepAlive On

3.モジュールの読み込み設定

モジュールは必要に応じて設定してください。自分は以下のように設定しました。

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

4.サーバー管理者の指定

ServerAdmin root@localhost

 
ServerAdmin admin@domain.com
5.サーバー名の指定

ServerName new.host.name:80

ServerName www.domain.com:80
6.DocumentRootの確認

DocumentRoot “/var/www/html”
7.ディレクトリ内のファイル表示を無効化

Options Indexes FollowSymLinks

Options -Indexes FollowSymLinks

8.indexの設定

DirectoryIndex index.html index.html.var

DirectoryIndex index.html index.php index.cgi index.html.var
9.ログの設定(414 ERROR は記録しない)

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
10.カスタムログの設定(wormと画像のアクセスをログに記録しない)

CustomLog logs/access_log combined

SetEnvIf Request_URI “cmd\.exe” nolog
SetEnvIf Request_URI “root\.exe” nolog
SetEnvIf Request_URI “Admin\.dll” nolog
SetEnvIf Request_URI “NULL\.IDA” nolog
SetEnvIf Request_URI “^/_mem_bin/” nolog
SetEnvIf Request_URI “^/_vti_bin/” nolog
SetEnvIf Request_URI “^/c/” nolog
SetEnvIf Request_URI “^/d/” nolog
SetEnvIf Request_URI “^/msadc/” nolog
SetEnvIf Request_URI “^/MSADC/” nolog
SetEnvIf Request_URI “^/scripts/” nolog
SetEnvIf Request_URI “^/default.ida” nolog
SetEnvIf Request_URI “\.(gif)|(jpg)|(png)|(ico)|(css)$” nolog
SetEnvIf Remote_Addr 192.168. no_log
CustomLog logs/access_log combined env=!no_log
11.エラー画面でApacheのバージョン非表示

ServerSignature On

ServerSignature Off
12.indexesがOFFなのでファイル表示のアイコンの設定はコメントアウトします。

Alias /icons/ “/var/www/icons/”

Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all


#Alias /icons/ “/var/www/icons/”
#
# Options Indexes MultiViews
# AllowOverride None
# Order allow,deny
# Allow from all
#
13.ScriptAliasも使わないのでコメントアウト

ScriptAlias /cgi-bin/ “/var/www/cgi-bin/”

AllowOverride None
Options None
Order allow,deny
Allow from all


#ScriptAlias /cgi-bin/ “/var/www/cgi-bin/”
#
# AllowOverride None
# Options None
# Order allow,deny
# Allow from all
#
14.autoindexに関係する設定をコメントアウトする

#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
15.MIME 言語タイプの適用優先順位(日本語を優先)

LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ..

LanguagePriority ja en ca cs da de el eo es et fr he hr it ko ..
16.CGIスクリプト設定を有効化して拡張子 .pl を追加

#AddHandler cgi-script .cgi

AddHandler cgi-script .cgi .pl
17.保存して終了

ESC
:wq
設定の確認

設定ファイルの編集が終わったら、無事に設定ができているか文法チェックをしてみましょう

[root@ ~]# apachectl configtest

httpd: Syntax error on line 210 of /etc/httpd/conf/httpd.conf: Syntax error on line 2 of /etc/httpd/conf.d/proxy_ajp.conf:
Cannot load /etc/httpd/modules/mod_proxy_ajp.so into server: /etc/httpd/modules/mod_proxy_ajp.so: undefined symbol: proxy_module
なにやら /etc/httpd/conf.d/proxy_ajp.conf にエラーがあるとか言われてしまいました。(他のエラーがあったら記述ミスかもしれないので、httpd.confを確認しましょう)これは proxy_module をOFFにしたせいで mod_proxy_ajp も読めなくなったというエラーです。設定内の記述で、/etc/httpd/conf.d 内の設定ファイル(〜.conf)は自動で読み込まれるようになっているのですが、初期状態で入ってる proxy_ajp.conf も welcome.conf も今回の設定では必要ないので、まとめて読み込まないようにしちゃいましょう。

[root@ ~]# mv /etc/httpd/conf.d/proxy_ajp.conf /etc/httpd/conf.d/proxy_ajp.conf.bk
[root@ ~]# mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bk
そしてチェック。大丈夫なはずです。

[root@ ~]# apachectl configtest
Syntax OK
最後にhttpdを再起動します。

[root@ ~]# /etc/rc.d/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
iptablesの設定追加

80番ポートのパケットを許可するためにiptablesに設定を追加します。

[root@ ~]# iptables -A SERVICE -p tcp –dport 80 -j ACCEPT
iptablesの設定を保存

[root@ ~]# /etc/rc.d/init.d/iptables save
Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
そしてiptablesを再起動して反映させます。

[root@ ~]# /etc/rc.d/init.d/iptables restart
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
Applying iptables firewall rules: [ OK ]
Webブラウザで表示の確認

Webブラウザから設定したドメイン、もしくは http://XXX.XXX.XXX.XXX/ にアクセスしてみましょう。
通常、Apacheのインストール直後だとApacheのテストページが表示されるのですが、先ほどhttpd.confの設定でテストページを表示しないように設定してしまったので、「サーバーにアクセスできません」ではなく、「404 Not Found エラー」が表示されればApacheは問題なく起動しています。
ただ、このままではちょっと味気ないのでDocumentRootに簡単なテストページを作ってみましょう。

[root@ ~]# echo ‘HelloHello’ > /var/www/html/index.html
Webブラウザからアクセスして「Hello」と表示されればOKです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">