| *講義内容
サーバ導入に関しての考察とレンタルサーバホスティングとの比較
サーバの選定と回線・ISP選択とドメインの準備
OSのインストール (RedHat Linux8.0)
How to
PC-Unix(Linux) 超簡素UNIX入門講座
基本システム構築編
第一教程 ネットワークの設定
第二教程 DNSサーバの設定
第三教程 メールサーバの設定
第四教程 Webサーバの設定
第五教程 FTPサーバの設定
第六教程 時刻の同期(NTPD)設定
各種用途に答える システム拡張編
第七教程 DHCPとIPマスカレード設定
第八教程 プロキシサーバ設定
第九教程
バーチャルホスティング ・IPベースとネームベース ・サブドメイン
第十教程 ハードディスクの割当容量を制限する
基本運用管理編
第一教程 ユーザとグループの管理 (登録と削除)
第二教程 システムのアップデート
第三教程 管理コマンドとログ解析
以後順次公開予定
|
■WEBサーバの構築 Apacheの設定 その3
検索キーワード ScriptAlias
#
# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# documents in the realname directory are treated as applications and
# run by the server when requested rather than as documents sent to the client.
# The same rules about trailing "/" apply to ScriptAlias directives as to
# Alias.
#
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" ←#で停止させる
<IfModule mod_cgid.c>
#
# Additional to mod_cgid.c settings, mod_cgid has Scriptsock <path>
# for setting UNIX socket for communicating with cgid.
#
#Scriptsock logs/cgisock
</IfModule>
#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/var/www/cgi-bin"> ←明示的に#を付けてもよし
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory> |
お馴染みのCGI(コモン・ゲートウエイ・インターフェース)の設定ですが、ここは各管理者の考え方により設定の仕方もさまざまです。CGIは現在のWEBサイト構築には欠かせない物ですが、反面セキュリティー上の大きな負担も背負っています。
そこでここでは、以下の基本方針に従った設定を行い安全性を確保しつつ一般ユーザーの限定的ディレクトリでの利用を認めることとします。また、ここでの設定は後ほどの教程のバーチャルホスト設定でも同様に行いますので解りやすくて便利です。
@/var/www/html以下のディレクトリでは全てCGIを使用可能にする。
A/home/ユーザーアカウント/www(public_html)では専用のcgi-binディレクトリを作成してその専用ディレクトリのみでCGIを許可する。
スタンダードの設定であるスクリプトエイリアスを使ったCGIの使用は拡張子でのコントロールが出来ないので問題があります、この設定は#を付けて停止させます。一般ユーザーのWEBサイトでもアクセスカウンターなどは付けたいところです、そこで安全のため一般ユーザーでは専用のディレクトリを作成してCGIの使用を許可します。こうしておけば万が一の場合でも被害を最小に食い止められるからです。一般的ISP(プロバイダー)ではセキュリティー上の問題からCGIの利用を一切認めないところが大半ですが、本サーバは事業目的ですのでショッピングカートやインターネット上での注文などのフォームメールが使えなければ意味がありません。また、学校などでの利用でもしっかり監督者が付いてCGIを利用させればそれほど危険なものでもありません。用は管理者側の問題なのです。そこで、ここでは下記の2点を設定します。
#
#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<IfModule mod_cgid.c>
#
# Additional to mod_cgid.c settings, mod_cgid has Scriptsock <path>
# for setting UNIX socket for communicating with cgid.
#
#Scriptsock logs/cgisock
</IfModule>
#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
#<Directory "/var/www/cgi-bin">
#AllowOverride None
#Options None
#Order allow,deny
#Allow from all
#</Directory>
<Directory "/var/www/html"> AllowOverride None
Options ExecCGI
Order allow,deny Allow from all
</Directory>
<Directory "/home/*/www/cgi-bin"> ←又はpublic_html/cgi-bin AllowOverride None
Options ExecCGI
Order allow,deny Allow from all
</Directory> |
Options ExecCGI オプションとしてCGIの実行許可
全WEBサイトのトップディレクトリ以下(=ドキュメントルート)ではどのディレクトリでもCGIを設置可能にしてあります。直接/html内に置いてもよし、その中に/cgiとか/cgi-binディレクトリ(名称はなんでもよい)を作成して置いてもよし、設置場所を限定されませんから柔軟に対応出来ます。
一般ユーザーのディレクトリでは各自のwww(public_html)ディレクトリの中にCGI
設置専用のcgi-binディレクトリを作成させてその中にCGIファイルを設置させます。このcgi-binの名称はもちろんなんでもかまいません、単純にcgiとしてもシンプルで良いでしょう。一般ユーザーのホームディレクトリをwwwではなくpublic_htmlのままにしている場合でCGI使用を許可する専用ディレクトリをcgiだとすると以下のようになります。この場合は、各自にpublic_htmlのなかにcgiという名前のディレクトリを作成させて利用することになります。
∇/home/*/ の*は全ユーザーを指します。ここに*の変わりに個別のユーザーアカウントを記せば個別にCGI使用を許可することも出来ます。
<Directory "/home/*/public_html/cgi">
Options ExecCGI
</Directory> |
上記の設定のままではまだCGIを稼動させることは出来ません。
検索キーワード AddHandler cgi
#
# 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 ←#を取って、拡張子.plを追加
AddHandler cgi-script .cgi .pl |
#を取ってこの行を有効にします。また拡張子として.cgiのほかによく使われる.plを加えます。記入時には頭のピリオドをお忘れなく。
CGIの他にSSI(サーバサイド・インクルード)というものもあります。以前はアクセスカウンターなどによく多用されました、セキュリティー面の問題やサーバレスポンスの関係(これはCGIも同様)からISPでの利用は敬遠されています。さてどうしてもSSIの使用を許可したいといった場合は、以下の設定を付け加えます。
<Directory "/var/www/html">
Options Includes
</Directory>
<Directory "/home/*/www"> ←www又はpublic_html
Options Includes
</Directory> |
Includesを追加すればSSIは使用可能になります。
逆にSSI誤用を防ぐため以下の設定をすることをお勧めします。
検索キーワード AddOutputFilter
# Filters allow you to process content before it is sent to the client.
#
# To parse .shtml files for server-side includes (SSI):
# (You will also need to add "Includes" to the "Options" directive.)
#
AddOutputFilter INCLUDES .shtml ←#を付けて使用停止に
#AddOutputFilter INCLUDES .shtml |
以上でアパッチの基本設定は完了ですが、最後にこのアパッチ2.0で日本語の使用には困ったことがありますので修正しておきます。
実はこの新しいアパッチ2.0のバージョンからは初期設定で文字キャラクターが西ヨーロッパ言語に設定されてしまっています。これがどのような困ったことを引き起こすかといいますと、日本語の文字コード(sjisやeucなど)で作成されたページが文字化けしてしまって解読不能サイトになってしまいます。1ページ見るごとに毎回クライアント側のパソコンの文字設定を日本語に直さなければならないので、このままでは実用上相当の問題があります。そこで、以下の修正をします。
検索キーワード AddDefaultCharset
#
# 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 ISO-8859-1 ←noneと変更又は#を付け無効化
AddDefaultCharset none
又は
#AddDefaultCharset ISO-8859-1
|
以上で不快な文字化けはしなくなります。
最後に今までの編集作業で入力ミスなどがないか、以下のコマンドで確認します。
#httpd -t

間違いがなければSyntax OKと上記のように表示され、入力ミスなどがあれがその間違いの行番号と間違いをちゃんと指摘してくれますから訂正します。
編集も終わり、確認もしましたからApacheをいよいよ起動します。
#/etc/init.d/httpd start
無事起動したのを確認して、最後にサーバ起動時からのサービス提供設定をします。
#ntsysv
 |
*一般ユーザーのWEBサイトのページが見れない!
アパッチの設定は無事完了しているのですが、一般ユーザーのサイトページ(ホームディレクトリ)を外部に公開するには以下のコマンドをユーザーごとに実行して下さい。
#chmod 755 /home/ユーザーアカウント
これで、誰でもが一般ユーザーのページを閲覧できるようになります。
それぞれのディレクトリ(ファイルにも)には所有権と実行権というものが存在します。実行権のことをパーミッションと言います。この実行権=パーミッションには読む・書く・実行するの三権があります。そしてこの実行権を持つ人は、ユーザー自身である所有者=オーナー、オーナーの所属する団体=グループ、そして一般の人の3者に分かれます。ユーザーディレクトリのパーミッションの読み・書き・実行は初期状態ではオーナー(所有者)のユーザーにしか認められていません。一般の人がユーザーのページを見ようとしたらエラー表示で実行権が有りませんと注意されたのは当然です。そこで読みと実行の二つの権限を一般の人と、団体にも与えます。
因みに chmod(チェンジモードの略)が実行権を与えるコマンドです。すぐ後の数字の755は以下の意味です。
無し(−)=0点
読み(read)=4点
書き(write)=2点
実行(execute)=1点
全権 7点
上の例では、ユーザーは7点で全権、団体、一般は5点で読みと実行権が与えられたことになります。CGIの設置などにもこのパーミッション設定は必要ですのでしっかり覚えておきましょう。
#ls -l と何時ものディレクトリの中身確認コマンドにオプション(-l)を加えますと実行権も併せて表示されます。その時の表示は数字ではなく各権能のアルファベット頭文字で表記されます。実行権なしは-、dで始まるのはそれがディレクトリであることを表しています。

※所有者の前にある数字はリンクされている数で自分の1+リンク数。1はなにもリンクされていないことになります。
上の例は筆者のアドミンディレクトリです。各ディレクトリやファイルのパーミッションや所有者やグループが表示されています。ここで注意しなければいけないのは各ディレクトリの所有者です。学校などで管理者である先生が生徒用に生徒のディレクトリ内にページ保存用のwww(public_html)やcg-binディレクトリを作ってあげるとその所有者は管理者のrootのままになってしまい、一般ユーザーの生徒さんはそのディレクトリ内の一切の変更が不可能になってしまいます。ですから、管理者がユーザーのディレクトリも作成した場合は、必ず以下のコマンドでディレクトリ(ファイルもOK)の所有権者をユーザーに変更します。
#chown ユーザーアカウント /home/ユーザーアカウント/www
#chown ユーザーアカウント /home/ユーザーアカウント/www/cgi-bin
ユーザーと団体をまとめて変更する
#chown 所有者:団体 /home/ユーザーアカウント/www
大人数(数百〜数千)だと結構面倒ですし管理も大変になります。なるべくFTPクライアントの使い方の勉強もかねて、生徒や一般ユーザーに自分のディレクトリは自分で作成させて管理させる方が楽ですね! |
|
*NET上で配布されているPHPスクリプトの掲示板などが動かない!
PHPの開始/終了タグは<? php ・・・ ?>ですが、一部NET上で公開されているものの中にこの開始/終了タグが<? ・・・ ?>のものや<% ・・・ %>のものがあります。これらは、このままでは動きませんので、以下のファイルを編集して下さい。<? php ・・・ ?>タグのものはデフォルト作動します。
編集対象は/etc/php.iniです。
#pico /etc/php.ini
 |
上記のように初期設定では停止状態になっていますから、オンにして下さい。
以上でWEBサーバの設定は完了しました。
|
|