しいしせねっとわーく
[技術資料室] [フォーマット辞典] [ネットワーク編] [Linux]

Apacheについての便利な?メモ書き

Last update 2003.07.12

もくじ?

Apache は httpd.apache.org で開発されています。

Apache 1.3.27の設定

Apacheは、最新版が1.3.27である。 2.0.47もあるけど、まだ試していない。
mozilla.gr.jpの運用でApacheの設定をしてみたので、適度にメモしておこうかな。
自サーバも設定した。

つくりかた

./configure --enable-module=so
make
make install

/usr/local/apache 配下にインストールされる。

ファイル一覧
  local Vine  
apxs bin/apxs /usr/sbin/apxs インストール的拡張
httpd.conf等 conf/ /etc/httpd/conf/ 設定ファイル
  logs/ /etc/httpd/logs/ ログファイル
/usr/local/apache にインストールしたときと、Vine に標準で入っているapacheのファイル一覧です。

バーチャルドメインの設定

Apacheの設定ファイル(conf/httpd.conf)の最後には、仮想ドメインの設定項目があります。
これを使うと、HTTP/1.1に一部対応したブラウザで、ドメイン名の区別をしながらWebにアクセスできるようになります。
HTTPのプロトコルでは、クライアントがどのサーバの情報がほしいということをHost: ヘッダに書いてきます。
このホスト名に一致するドメインの情報を送信することで、いろいろなサーバのように見える情報を1台のサーバで提供できます。
ここのサーバには、
http://siisise.net/ http://bugzilla.siisise.net/ など、約7~8種類のドメインでバーチャルドメインを利用可能にしています。

必要になる知識

httpd.conf の最後のほうに、こういう記述があるかもしれません。
NameVirtualHost は、バーチャルホストに使うIPアドレスです。複数のIPアドレスを持っている場合、どのIPアドレスでバーチャルホストを運用するのか、全て指定しなくてはいけません。
NameVirtualHost 192.168.0.1

<VirtualHost 192.168.0.1> 
  ServerName www.siisise.net 
  DocumentRoot /http/www/ 
  ErrorLog logs/siisise-error_log 
  CustomLog logs/siisise-access_log 
 </VirtualHost> 
 
<VirtualHost 192.168.0.1> 
  ServerName www.example.com 
  DocumentRoot /http/example/ 
 </VirtualHost> 

のように書きます。
ApacheのMLを見ていると、IPアドレスを入れるところにサーバ名を書いて、できませんと言っている人が多いですね。

文字コード判定

日本語には、なぜだか文字コードが複数存在する。
UNIX系で使われるEUC-JP、DOS/Windowsで使われているShift_JIS、標準コードのJIS(ISO-2022-JP)である。
httpサーバは、送信するデータが何なのかをブラウザに教えてから送信しているが、そのときに文字コードも指定できる。しかし、ファイル名だけでは文字コードはわからないし、世界中の文字コードを判別するには無理がある。
HTMLヘッダの部分に<META>タグを記述できるが、これは本来の記述方法ではないし、いちいち記述するのも面倒な話である。
かといって、記述しないと文字化けの原因になったりする。

ContentType: text/html; charset=Shift_JIS
などという設定が標準でできるようにはならないだろうか?

ある指定をして、拡張子を.html.ja とすると、日本語のドキュメントであることが指定でき、.html.en などの他の言語のドキュメントと自動判別させることができる。
これには落とし穴があり、HTTP/1.1ではデフォルトの指定が存在しない。そのために、ブラウザで指定されない言語を指定していると、ファイル選択のWebページが表示されてしまう。

言語の他に、文字コードも指定ができる。

html.ja.euc
html.en
html

この3つの拡張子のファイルを作った場合、htmlのファイルしか参照しない。 htmlファイルが完全に一致してしまわないように、html. と最後にピリオド.をつけるのがよい。

他に

html.ja.euc
html.en
html.euc

としてみると、言語指定のある場合はそれぞれの言語のhtmlを、言語指定のない場合は、文字コードのみ指定されたhtmlを参照してくれる。
全て準備しないと該当するものがないといわれてしまう事もある。

文字コードとしては、euc-jp、Shift_JIS、ISO-2022-JP の他にも UTF-8UCS-2といったところを準備しておけば、完璧ではないだろうか?

Apache + mod_ssl

SSLは、Webサーバなどで暗号化をする機能というか、あれです。

SSLを利用するには、Apache+SSLや mod_ssl、Apache-SSLを利用する方法があるらしい。
今回は、ソースコードからコンパイルする環境があるので、mod_sslを利用してみる。

必要なソフトは、
Apache 1.3.27 (それ以下はセキュリティホールあり)
OpenSSL
mod_ssl 2.8.11_1.3.27
である。

OpenSSLの準備

opensslはrpm でもよいので事前にインストールしておこう。
Vine等には入っている。
makeする場合は

# tar zxvf openssl-0.9.6b.tar.gz
$ cd openssl-0.9.6b
# ./config
# make
# make test
# make install

/usr/local/ssl にインストールされるのかな?
rpmだと、/usr にインストールされるようだ。

Apacheとmod_ssl の同時インストール

Apacheを適当なディレクトリに解凍する。

 $ tar zxvf apache-1.3.27.tar.gz 
 $ tar zxvf mod_ssl-2.8.11_1.3.27.tar.gz 
 $ cd mod_ssl-2.8.11_1.3.27 
 $ ./configure
   --with-apache=../apache_1.3.27/
   --prefix=/usr/local/apachessl
   --with-ssl=/usr/local/ssl
   --enable-module=so (付けてOK?)
  その他オプションいろいろ 

一度、ここで止まってしまい悩んだ。
APACI failed
APACIとはなんだろう?
OpenSSLをインストール済みの場合は、--with-ssl=/usr (VineLinuxの場合) でよいようです。
opensslもソースコードからmakeしてる解説ばかりでわからんかった。

 cd ../apache_1.3.27 
 $ make 
 $ make certificate TYPE=dummy にしてみた 
  [R]:
  []
 $ su 
 # make install

libexpat が必要であるというエラーメッセージが表示される?

mod_ssl の追加インストール(できるかな?)

ApacheもOpenSSLもインストールされている場合。

 # tar zxvf mod_ssl-2.8.11-1.3.27.tar.gz 
 # cd mod_ssl-2.8.11-1.3.27 
 # ./configure --with-apxs=/usr/local/apache/bin/apxs --with-ssl=/usr/local/ssl  

ApacheにEAPIがないよってエラーが出た。なんだろう。
Apache のモードが違うらしい・・・

http://siisise.net/linux/apache.html
の EAPI がエラーになる件は
--enable-rule=EAPI --enable-module=all --enable-shared=max なんてすると EAPI が有効になりますよ。
ただし、全部の module がコンパイルされたりしますけど。

というコメントを誰かから頂いた

暗号通信、秘密鍵の仕組み

秘密な鍵をつくるのだっ

安全な通信をするには、暗号化が必要です。そのために、まず秘密鍵と公開鍵を使います。秘密鍵で暗号化したものは、公開鍵で読むことができます。公開鍵を使って暗号化したものは、秘密鍵で読むことができます。たぶん。

相手が本人である、ということが証明できれば、それで安全です。しかし、誰でも暗号化した文書と公開鍵をいっしょに配っていると、偽の相手である場合も、あるかもしれません。

そこで登場するのが証明書(cert?)というものです。

[PKIの基礎知識]で大体のことを知ってみてください。

Apacheとmod_SSLのSSL設定

Vine Linuxのインストール済みApacheでは、/etc/httpd/conf にいろいろとディレクトリがあります。

ここでは、秘密鍵と証明書があればいいでしょうか。どちらもDERではなくテキスト形式のPEMで保存されているようです。

インストールするもの

秘密鍵は ssl.key のなかに、証明書は ssl.crt の中に、ルートからの証明も同じところに入れます。

ルート認証局(CA)、中間CAなどのファイルは、1つのファイルにまとめておくことができます。

[しいしせねっと]