Apacheを使ったWebサーバー構築方法


  Apacheを使ったWebサーバーの構築方法を紹介!

  SSHを使ったセキュアなサイトの作り方を説明.



内容:

 



Apacheのインストールと初期設定


メジャーなApacheを使ったWebサーバーの構築方法について解説する。


■Apacheのインストール・アップデート


・Apacheのパッケージのインストールをする。
yum install httpd httpd-manual httpd-suexec httpd-devel system-config-httpd

・php、php-mbstringインストール
yum -y install php php-mbstring


■ダイナミックDNSサービスを利用して独自ドメインを作成


DNSに登録してドメインを取得する。

僕は、DynDNSを利用している。こういった無料サービスは非常にありがたい。

サイト右上の「Create Acount」で、アカウントを作成して、送られてくるメールに記載されたURLにアクセスして、「Add Host Services」で新しいホスト名を作成、登録する。このときのIPアドレスは、僕は固定IPを持っているのでそれを登録した。

だけど、持ってなければコメントに載っているアドレスを入れておけばいい。あとで、DiCEで確認して登録しなおせばいいと思う。(僕の場合、動的IPアドレスではないのでDiCEは使っていないので試していない)

作成したホスト名を登録する。
system-config-network でGUIから、DNSタブのホスト名に新しいホスト名を記入する。
ちなみに、ホストとして、127.0.0.1でホスト名を登録しておく。

最後に、nslookup ***.+++.*** で作成したドメインでIPアドレスの正引きができているか確認する。


■DiCEで自動的にIPアドレスを更新


ドミンゴのサーバーの場合、固定IPアドレスを使っているためIPアドレスが変更になることはない。

しかし、DynDNSは1ヶ月(30日)アクセスがないと自動的にアカウントがなくなってしまう。

DiCEを使って定期的にDynDNSにアクセスし、アカウントがなくなることを防ぐ。

 

まず、DiCEを以下からダウンロードする。

http://www.hi-ho.ne.jp/yoshihiro_e/dice/linux.html

画面の"Download"をクリックする。

 

ドミンゴの場合、ファイル名は diced01914.tar.gz だった。

これを /usr/local ディレクトリ以下に展開する。

ファイルを /usr/local ディレクトリにコピーし、ディレクトリ内で以下のコマンドを実行。
tar zxvf diced01914.tar.gz

GNOME端末の文字コードをEUC-JPにする。
→DiCEは日本人がつくったもので,日本語表示されるから。

 

DiCEの設定プログラムを起動する。

/usr/local/DiCE/diced

もし下記エラーが出た場合、
-bash: ./diced: /lib/ld-linux.so.2: bad ELF interpreter: そのようなファイルやディレクトリはありません

まず、■Exec-Shieldの設定
設定ファイルの確認
# cat /proc/sys/kernel/exec-shield
1
設定ファイルの変更
# echo 2 > /proc/sys/kernel/exec-shield
設定ファイルの確認
# cat /proc/sys/kernel/exec-shield
2

上記数値の意味
0:常に無効
1:マークされたバイナリを有効にし、以外は無効
2:マークされたバイナリを無効にし、以外は有効
3:常に有効

0,1の設定にして再度トライしてみる


次に,■/lib/ld-linux.so.2をインストール
/lib/ld-linux.so.2は32bit版の動的リンカー
DiCEコマンドに動的リンクされたライブラリを呼び出す


yum install ld-linux.so.2


このあと,再度/usr/local/DiCE/dicedを試す。

おそらく問題なく設定プログラムを起動する

起動して,: が表示されたら

:add

と入力する。

「DynamicDNSサービス名を入力してください」

dyndns

「ドメイン名を入力してください」

homelinux.net

「ホスト名を入力してください」

domingo

「ログインユーザ名を入力してください」

*****

「ログインパスワードを入力してください」

*****

「登録するIPアドレスを入力してください」

(Enterを押す)

「このイベントに題名を付けてください」

DDNSReflesh(任意)

「このイベントを実行するスケジュールを設定します」

(頻度を選んで、その番号を入力)

あとは、必要のないものは番号0を入力。

「このイベントを有効にしますか?(Y/N)」

y

「イベントを保存しますか?(Y/N)」

y

:が表示されたら、

:setup

と入力する。

「IPアドレスの検出方法をしてください」

(1) *****

(2) 外部のスクリプトから検出

2

「スクリプトのURLを入力してください」

>http://www.dyndns.org/cgi-bin/check_ip.cgi

「プライベートIPアドレスも検出対象ですか? (Y/N)」

n

「IPアドレスの検出をテストしますか?」

y

で、正常ならばIPアドレスが出力される。

後は、「設定を保存しますか? (Y/N)」 までの質問には全て「n」と入力。

「設定を保存しますか? (Y/N)」

y

:が表示されたら、

:exit

これで設定は終了。

DiCEを起動する。

/usr/local/DiCE/diced -d -l

”DiCE Daemon Started !!”と表示される。

システム起動時にDiCEが起動されるように /etc/rc.local ファイルに設定しておく。

echo "/usr/local/DiCE/diced -d -l" >> /etc/rc.local


■Apacheの設定ファイルの編集


エディタで /etc/httpd/conf/httpd.conf を開く。 僕は、viエディタをよく使う。
設定ファイルの日本語訳がココにあった。参考にした。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

管理メールアドレスの変更
ServerAdmin root@localhost

ServerAdmin ***@***.**.**


ホスト名を記載する
#ServerName www.example.com:80

ServerName ***.+++.***


表示されるWebサーバーの情報を制限する
ServerTokens OS

ServerTokens ProductOnly
(Prodだけでもいい)

文字化けを直す
まず、
AddDefaultCharset UTF-8

#AddDefaultCharset UTF-8

で、次に、
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

LanguagePriority
ja en ca cs da de el eo es et fr he hr it ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW

Apacheのバージョンを非表示にする
ServerSignature On

ServerSignature Off


・必要に応じた設定


それぞれの必要に応じて以下の設定をする。


1. インデックス表示を不可能にする
Options Indexes Includes FollowSymLinks

Options Includes FollowSymLinks

 

2. サイトにアクセスした時に index.html が自動で表示される様に設定する。

<Directory "/var/www/html">

   ・・・
   DirectoryIndex index.html index.shtml index.htm
</Directory>
※この場合、この設定は/var/www/html/以下のディレクトリで有効になる。


3. CGI,SSIの許可
Options Indexes FollowSymLinks   

Options Includes ExecCGI FollowSymLinks


4..htaccessの許可
AllowOverride None

AllowOverride All

5. CGIスクリプトに.plを追加
#AddHandler cgi-script .cgi

AddHandler cgi-script .cgi .pl

6.iconsディレクトリのファイル一覧を表示しないようにする
<Directory "/var/www/icons">

Options Indexes MultiViews

Options MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

rm -f /etc/httpd/conf.d/welcome.conf  ← テストページ削除

rm -f /var/www/error/noindex.html  ← テストページ削除


■Apacheの起動


Apacheの起動コマンド。
/etc/init.d/httpd start


■CTUの設定


ファイアーウォール設定と静的アドレス変換(ポート指定)でWANからの要求がどのIPアドレスのどのポート番号へルーティングされるか設定する。


[ページトップへ戻る]


追加設定 (必要に応じて)


以下の設定は各自の必要に応じて設定する。


■ディレクトリごとにユーザー認証機能でアクセス制限


例として,/var/www/html/secret にアクセス制限をかける場合。(BASIC認証)


設定ファイルの作成  ※"secret"は今回の例、実際はこれを変えてください。


作成場所: /etc/httpd/conf.d
ファイル名: secret.conf

secret.conf の内容(例)
-------------------------------------------------------------
Alias /secret /var/www/html/secret

<Directory "/var/www/html/secret">
AuthName "This directory requires user authentification."
AuthType Basic
Require valid-user
AuthUserFile /etc/httpd/conf/pwd-file 
←認証ファイルを指定
AuthGroupFile /dev/null
</Directory>

-------------------------------------------------------------


ディレクトリの作成とアクセス権限の変更

※"secret"は今回の例、実際はこれを変えてください。

mkdir /var/www/html/secret
chown apache.apache /var/www/html/secret


暗号化パスワードのデータベースファイルの作成


作成場所: /etc/httpd/conf
ファイル名: pwd-file

/etc/httpd/confディレクトリに移動し、作成コマンドを実行
htpasswd -c pwd-file hoge
でパスワード入力。

次にユーザーを作成するときは、オプション -c はいらない。
例: htpasswd pwd-file ichiro
-cをつけると、新規に同じ名前のファイルが作成され、過去のファイルに上書きされてしまうので注意!
ファイルの所有者情報の更新:
chown apache.apache pwd-file

Apacheを再起動し、ブラウザで動作チェックする。
/etc/init.d/httpd restart
ブラウザで、 http://***.net/secret
ユーザー名とパスワードの入力画面が出たらOK.


ユーザー認証するページをSSLによる暗号化でのみ通信するようにする

SSLモジュールのインストール
yum install mod_ssl

※ この時点でファイアーウォールが未設定だったら設定する。

secret.conf ファイルの編集
-------------------------------------------------------------
Alias /secret /var/www/html/secret

<Directory "/var/www/html/secret">
AuthName "This directory requires user authentification."
AuthType Basic
Require valid-user
AuthUserFile /etc/httpd/conf/pwd-file
AuthGroupFile /dev/null
SSLRequireSSL  
← この行を追加!
</Directory>

-------------------------------------------------------------


---------------------------------------------[追記 2008/12/14]
自分のWebサイト全体はSSLの暗号化が有効になっていなくて、特定のディレクトリだけ SSLRequireSSL という表記をしてアクセス制限をしている場合に、第三者がSSLなし(ポート:80)でアクセスした場合、アクセス制限をしていないページは見れるが、
アクセス制限されているページに飛んだ場合、認証画面が出ずにただForbiddenとなってしまう。


よって、アクセス制限したページにSSLなし(ポート:80)でアクセスした場合、SSLを使ってアクセスするように設定する。

<VirtualHost *:80>
#エイリアスを使う場合のポート・リダイレクト
Redirect /secret https://domingo.homelinux.net/secret
</VirtualHost>


ここで、今の/var/www/html/secret場合なら問題ないが、/var/www/html/***/secretなどのように/htmlディレクトリ直下でない場合はエイリアスを使う場合プラス、以下のようにエイリアスを使わないで書く。

<VirtualHost *:80>
#エイリアスを使う場合のポート・リダイレクト
Redirect /secret https://domingo.homelinux.net/secret
#エイリアスを使わない場合のポート・リダイレクト
Redirect /***/secret https://domingo.homelinux.net/***/secret
</VirtualHost>

----------------------------------------------------------------

※SSLについての設定ファイル: /etc/httpd/conf.d/ssl.conf
#DocumentRoot "/var/www/html"

DocumentRoot "/var/www/html"

詳しくは、以下のサイトへ
http://www.nina.jp/server/slackware/httpd/ssl.conf.html


サーバー証明書を作成


サーバー証明書の作成については、ココを参照。


CTUの設定


CTUのファイアーウォール設定で、ポート 443 を開ける。


動作チェック


まず、sslなし(暗号化なし)で目的とするフォルダにアクセスする。
http://domingo.homelinux.net/secret/
これで、/var/www/html/secret 内の index.html が見れるかチェック。
Forbidden となって見れない。

次に、ssl(暗号化)で目的とするフォルダにアクセスする。
https://domingo.homelinux.net/secret/
パスワードを入力して、
最終的に、/var/www/html/secret 内の index.html が見れるかチェック。
ユーザー名とパスワードが正しければ、見れるはず。

※ index.htmlの内容が見れずに、403エラー Forbidden が出たら、
/etc/httpd/conf/httpd.conf に以下の行を追加する。(ファイルがindexという名前の場合)
  DirectoryIndex index.html index.shtml index.htm?
もしくは、個々のフォルダの設定ファイル(/etc/httpd/conf.d/以下の.confファイル)内に、以下の行を追加する。(ファイルがindexという名前と違う場合、例はsecretの場合)
  DirectoryIndex secret.html secret.shtml secret.htm?


[ページトップへ戻る]


掲示板挿入


サークル内での連絡用に掲示板を作成する。

僕は、ホームページビルダー12を使用してホームページを作成しているので、それについているteacup.comの無料掲示板を使った。

何個の作れて非常に便利。掲示板を作ったらホームページのサイト内にリンクを貼れば、掲示板に飛ぶ仕組み。自分のホームページが重くならないし、管理も非常に簡単なため助かっている。


[ページトップへ戻る]


SEO対策


ある調査会社のデータによると、日本のインターネットユーザーの4割は一日5回以上検索をするらしい。

だから、他人に見てもらえる可能性は非常に多い。

だけど、実際は検索して表示された上位20ぐらいのサイトしかチェックしてもらえない。

せっかくホームページやブログを作ったなら、ぜひ他人に見てもらいたいと思うもの。

じゃあ、どうやったら検索で上位にひっかかるか?を少し学ぶ必要がある。

そういう理由でこのコーナーを作った。

 

SEO対策とは,GoogleやYahooなどの検索エンジンに対応したサイトを作成すること。

まず、自分としてはSEO対策は全く考えずにホームページを作成していたから、テーブルレイアウトになっていてCSSなどを使っていない(2008年12月現在)。
だから、明らかにホームページ内の論理構造もごちゃごちゃで検索ロボットにとってわかりやすいものではない。

また、まだサイトを公開してから間もないのでSEO対策には重要な被リンク(自然リンク,特に一方向リンク)されていなし、すぐにはSEOで上位に検索されることは難しいと思う。

これから、ここに少しずつSEO対策を書き込んでいこうと思うが、まあどちらかというとそこまでSEOを意識していないのでぼちぼちやっていくことにする。

まず、やったことは、このサイトを参考に
・ ページタイトルの改善
・ METAタグの挿入を行った。


検索エンジン登録

 

Google, Yahoo! Japan, MSN の自分のサイトを登録する。

 

Googleはココから登録できる。サイトのトップページを登録すればいい。


Yahoo!はちょっとめんどくさい。まず、ココでサイト登録についての注意ややり方を読む。

次に、Yahoo!のサイトの右上の「カテゴリ一覧」をクリックし、カテゴリを選んで「サイト登録・変更」をクリックする。あとは、画面に沿って登録作業を済ませる。

 

MSNは、ココから登録できる。

 

登録後すぐには反映されないので数日間待つ必要があった。

 

また、サイトの登録時に検索ロボットを助ける意味でサイトマップを登録できるようになっている。

まあ、ページそれぞれでリンクが貼ってあったらおそらく問題ないが、チェックをしておく必要がある。

サイトマップ(検索ロボットへの自分のサイトの案内図みたいなもの)作成は、ココが便利!

ちなみに、Google, Yahoo! Japan, MSN への自分のサイトの登録状況もチェックしてくれる!

 

サイトマップを作ったら、Googleの場合はサイトのトップページと同じディレクトリ(フォルダ)に入れて、

Googleのウェブマスターツールを使って「サイトマップ」で「サイトマップを送信」のところに

http://domingo.homelinux.net/sitemap.xml

のようにサイトマップファイルの名前を入れて「送信」をすればいい。

数十分後に確認される。

 

登録作業は結構めんどくさい、特にYahooがめんどくさかった。

これ以外にも、無料で検索エンジンへの登録を代行してくれるところがたくさんあるが、また今後考えていくことにして、オーソドックスに検索サイトへ素直に登録した。


[ページトップへ戻る]


メモ書き


Apache 2 の主な設定ファイル
/etc/httpd/conf/httpd/conf  ・・・  メインの設定ファイル
/etc/httpd/conf.d/以下     ・・・  個別の設定ファイル

ランレベルについて

0 システムの停止
1 シングルユーザーモード(管理者モード)
2 NFSを使わないマルチユーザーモード
3 マルチユーザーモード
4 未使用
5 GUIログインを行えるマルチユーザーモード
6 システムの再起動
表1 ランレベル
※ http://www.atmarkit.co.jp/flinux/rensai/apache04/apache04d.htmlから抜粋
 

[ページトップへ戻る]