内容:
メジャーな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の無料掲示板を使った。
何個の作れて非常に便利。掲示板を作ったらホームページのサイト内にリンクを貼れば、掲示板に飛ぶ仕組み。自分のホームページが重くならないし、管理も非常に簡単なため助かっている。
[ページトップへ戻る]
ある調査会社のデータによると、日本のインターネットユーザーの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から抜粋 |