ザ・ケイズページ
TOP > ゼロから始めるLinuxサーバ構築 > ウェブサーバーの構築

最終更新日 : Saturday, 06-May-2006 00:11:10 JST

ウェブサーバーの構築

 RedHat Linux9やFedoraCoreなどのバージョンのLinuxでは,Apacheなどの主要なアプリケーションはRPMというパッケージでインストール・アンインストールできます。ここでは,LinuxインストールCDに収録されているApacheについて説明をします。

 Apacheの設定はhttpd.confという設定ファイルを書き換えることによって行うことが出来ます。ここでは,この設定ファイルの説明を簡単に行っていきます。

 なお,httpd.confは標準では/etc/httpd/conf/httpd.confに収められています。httpd.confを編集したら,設定を反映するためにApacheを再起動しましょう。
#/etc/init.d/httpd restart

 他のサイトではこのhttpd.confを日本語訳しているところもあります。参考になさってください。

  1. ServerAdmin kei_kun@email.plala.or.jp
     サーバ管理者のメールアドレスを入力します。ここで入力されたメールアドレスは,HTTPエラーページなどに記載されます。
  2. ServerName keikun.homeip.net:80
     運用するサーバ名を記述します。ServerAdminと同様にHTTPエラーなどに記載されます。
  3. DocumentRoot "/home/public_www/"
     
    ドキュメントルートを設定します。指定したディレクトリ以下はHTTPで公開できるようになります。
  4. <Directory "/var/www/html">
    Options FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
    </Directory>
     
    HTMLのタグのように,<Directory></Directory>で挟まれた部分は,その範囲においての設定を行うことが出来ます。例えば,上記の例であれば,/var/www/htmlディレクトリ以下に対してOptionAllowOverrideなどの設定を行っていることになります。この設定を誤るとファイル一覧が出てしまい意図しないファイルが見えてしまうなどの弊害が出ますので,もし分からないようでしたら上記のようなオプションにすることをおすすめします。
  5. <IfModule mod_userdir.c>
        UserDir public_html
    </IfModule>
     ユーザにもホームページを公開したい場合にはUserDirの前の#を外します。上記のように設定すると,/home/username/public_html/に置かれたファイルが,http://yourdomain.com/~usernameからアクセスできるようになります。ただし,その他の人にディレクトリの実行権を与える必要があります。(通常は705にする)
  6. AddLanguage ja .ja
    AddLanguage nl .nl
    ・・・・
    AddLanguage tw .tw
    AddLanguage zh-tw .tw
    AddLanguage hr .hr

     Apache2.0のデフォルトでは,日本語が一番上に来ていません。一番上にした方が文字化けを起こりにくくすることが出来るでしょう。
  7. LanguagePriority ja en da nl et fr de el it kr no pl pt pt-br ltz ca es sv tw
     ここでも同じことが言えます。
  8. AddDefaultCharset shift_jis
     最初,ここが日本語用になっていないために日本語のサイトを作成すると文字化けの現象に見舞われます。ここは,使用する文字コードが分かっている場合は,shift_jisまたはEUC-JPを,分からない場合は頭に#を付けてコメントアウトしましょう。
  9. AddHandler cgi-script .cgi .pl
     デフォルトでは,.cgiのみがCGIスクリプトとしています。ここに.plと追加することによって.plのものもスクリプトとして取り扱うことが出来ます。当サイトではWebメーラーで.plのスクリプトを使用しています。

 以上の設定で,最低限の設定はOKです。


補足,SSL対応サイトを強制的にSSLサイトへ向かわせる方法。

 SSL対応サイトとそうでないサイトを同一サーバー上で運用すると,SSL対応にしたいサイトへSSL対応していない方法で接続する可能性が生じます。
(例:https://yourdomain.com/ssl/が本来のアドレスだが, http://yourdomain.com/ssl/ で接続してしまう。)このようなことは,セキュリティーホールになりうるので,http://〜で接続してきたときはhttps://〜へリダイレクトするように設定します。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteLog "logs/rewrite_log"
    RewriteLogLevel 0
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/webmail/(.*)?$ https://%{HTTP_HOST}/webmail/$1 [L,R]
    RewriteRule ^/postmail/ssl/(.*)?$ https://%{HTTP_HOST}/postmail/ssl $1 [L,R]
</IfModule>

 この設定例だと,http://yourdomai.com/webmail/〜のアドレスとhttp://yourdomai.com/postmail/ssl/〜のアドレスをhttps://〜のサイトへ誘導することになります。

httpd.confの設定例

  実際に,このサーバで使用している設定ファイルの一部である。デフォルトで用意されている設定ファイルから変更しある部分を一部取り出してみた。
 コメントを書き加えたので,参考にして頂きたい。

#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
#KeepAliveをOnにすると,リクエストの処理が終了しても一定時間接続を保つ。
#複数のファイルを一度に取るときは,処理時間が短くなるのでOnがおすすめ。
KeepAlive On

#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#この値は,サーバーを運用する場所によって変わるが通常はそのままでよい。
MaxKeepAliveRequests 100


#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, in addition to the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to 
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
#Listen 12.34.56.78:80
#通常は80番ポートを使用する。特別な場合は変更する。
Listen 80

#
# 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
#
#エラーメッセージなどに表記されるwebmasterへのメールアドレスをここに書く。
ServerAdmin kei_kun@email.plala.or.jp

#
# 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 keikun.homeip.net:80


#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
#ドキュメントルートを指定する。ここがサーバのトップページになる。
DocumentRoot "/home/www/public_html"

#
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received.
#
# The path to the end user account 'public_html' directory must be
# accessible to the webserver userid.  This usually means that ~userid
# must have permissions of 711, ~userid/public_html must have permissions
# of 755, and documents contained therein must be world-readable.
# Otherwise, the client will only receive a "403 Forbidden" message.
#
# See also: http://httpd.apache.org/docs/misc/FAQ.html#forbidden
#
#ユーザーディレクトリの設定。微妙にコメントがはずしてある場所が
#有効になっているのでよく見てください。

<IfModule mod_userdir.c>
    #
    # UserDir is disabled by default since it can confirm the presence
    # of a username on the system (depending on home directory
    # permissions).
    #
    #UserDir able

    #
    # To enable requests to /~user/ to serve the user's public_html
    # directory, remove the "UserDir disable" line above, and uncomment
    # the following line instead:
    # /~user/ でアクセスするには,/home/user/public_html/にコンテンツを置けばよい。
    #ただし,/home, /home/userに,その他ユーザに実行権を,
    #/home/user/public_html に読み取り権限を与えないといけない。
    UserDir public_html

</IfModule>

#
# Control access to UserDir directories.  The following is an example
# for a site where these directories are restricted to read-only.
#
#ユーザディレクトリのオプションを決定する。
#
<Directory home/*/public_html>
#    Dav On
#    AuthType Basic
#    AuthUserFile /etc/httpd/conf/.htpasswd
#    AuthGroupFile /dev/null
    AllowOverride All
    XBitHack on
    Options MultiViews Indexes SymLinksIfOwnerMatch ExecCGI IncludesNoExec
#    <LimitExcept GET HEAD OPTIONS>
#        Require valid-user
#    </LimitExcept>
</Directory>

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
# The index.html.var file (a type-map) is used to deliver content-
# negotiated documents.  The MultiViews Option can be used for the 
# same purpose, but it is much slower.
#
#リクエストが/などでディレクトリが指定されたとき自動補完するファイル名を列挙する。
#もしここに挙げるファイルがなければ,ファイル一覧や401エラーをはき出す。
DirectoryIndex index.html index.htm index.php

#
# AccessFileName: The name of the file to look for in each directory
# for access control information.  See also the AllowOverride directive.
#
#ディレクトリにおいてオプション設定を上書きするファイル名の指定
AccessFileName .htaccess

#
# The following lines prevent .htaccess and .htpasswd files from being 
# viewed by Web clients. 

#.htから始まるファイルのアクセスを禁止する。
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>

#
# LanguagePriority allows you to give precedence to some languages
# in case of a tie during content negotiation.
#
# Just list the languages in decreasing order of preference. We have
# more or less alphabetized them here. You probably want to change this.
#
#jaを頭に持ってくる方が良いという話があるが,エラーメッセージは日付まで
#英語で出た方がかっこいいので英語・日本語という順番
LanguagePriority en ja da nl et fr de el it kr no pl pt pt-br ltz ca es sv tw



#
# 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.
#
#デフォルトの文字コードを設定する。デフォルトでは変なものになっているので
#shift_jis にするか,コメントアウトして指定しないでおく。
#AddDefaultCharset shift_jis



#
# AddType allows you to add to or override the MIME configuration
# file mime.types for specific file types.
#
#本サーバーではphpを動かしているのでphpの設定
#
AddType application/x-tar .tgz
AddType application/x-httpd-php .php

#
# 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.)
#
#本サーバーでは.plの拡張子のPerlスクリプトが動いているので.plを付け足す
#
AddHandler cgi-script .cgi .pl


#旧Windowsサーバーではユーザディレクトリがチルダ(~)で始まらなかったため
#旧アドレスで来た場合は新しいアドレスへリダイレクトするようにしてある。

Redirect permanent /kei/ http://keikun.homeip.net/~kei/


#メールフォームや,ウェブメーラーなど暗号化が望ましいページは
#強制的にSSLを使用させる。

<IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteLog "logs/rewrite_log"
      RewriteLogLevel 0

      RewriteCond %{SERVER_PORT} !^443$
      RewriteRule ^/webmail/(.*)?$ https://%{HTTP_HOST}/webmail/$1 [L,R]
      RewriteRule ^/passwd/(.*)?$ https://%{HTTP_HOST}/passwd/$1 [L,R]
      RewriteRule ^/postmail/ssl/(.*)?$ https://%{HTTP_HOST}/postmail/ssl/$1 [L,R]
</IfModule>

設定の反映

 設定ファイルを変更した場合は忘れずにウェブサーバの再起動を。

#/etc/init.d/httpd restart

(c) 2000-2005 Kei All Rights Reserved.