ノート
訪問者数 3157 最終更新 2008-02-08 (金) 12:25:51
ACS導入の経緯 †
導入ガイドメモ &ref(): File not found: "" at page "ノート/ACS"; †
環境作り Pepper編 †
- ApacheにSSL virtual host 導入
- http://httpd.apache.org/docs/2.2/vhosts/
- http://wiki.apache.org/httpd/ExampleVhosts
- SSLのモジュールmod_sslは、Apache2では./configureのオプションであらかじめ
組み込んでおくことになっているらしい。ので、./configure (いろいろ) -enable-ssl
をしたあと、make ⇒ make install で再構築。
- あと、OpenSSLのパッケージが必要なので、インストールしておくこと。
- httpd.confファイルに2つの変更。1つはvirtual host機能を使ってnon-SSLとSSLの
2つのサーバー(named host)を立てること。もう1つはSSL用の構成を作ること。
- virtual host機能は
### Virtual Host Configuration. Two V-H are configured
NameVirtualHost *:80
NameVirtualHost *:443
# Virtual Host #1 Non-SSL host
<VirtualHost *:80>
ServerName pepper.is.sci.toho-u.ac.jp
DocumentRoot "/usr/local/apache2/htdocs"
</VirtualHost>
<VirtualHost *:443>
ServerName pepper.is.sci.toho-u.ac.jp
DocumentRoot "/usr/local/apache2/htdocs-ssl"
SSLEngine On
</VirtualHost>
- SSL用の構成は、全体に
SSLCertificateFile /path/path/path/server.crt
SSLCertificateKeyFile /path/path/path/server.key
- これらの証明書ファイルの作り方は、http://httpd.apache.org/docs/2.2/ssl/ssl_faq.html のCertificateの項を参照。
その他参照ページは、これ や これ や オリジナルドキュメント。有効期限についてはこんな話
今のところ手抜きで、Self-signed certificateを使うことにする。
- SSLがうまく動くかどうかのアクセスチェック方法として、
http://httpd.apache.org/docs/2.2/ssl/ssl_faq.htmlのConfigurationの項の
「How do I speak HTTPS manually for testing purposes?」が使える。具体的には
port80にtelnetする代わりに
$ openssl s_client -connect localhost:443 -state -debug
GET / HTTP/1.0
でマニュアルアクセスできる。telnetの時と同様に、GET / HTTP/1.0のあとで2回Enterキーを押すこと。まぁ、ブラウザからhttpsでアクセスしてチェックしてもいいけれど。
- なんと、PHPでPEARによるライブラリ導入が必要。PEARとはPHPの(外部)ライブラリを
簡単に導入できる仕組(というか、開発を標準化してみんなが便利なライブラリを作り、
流通させられるようにする仕組かな)。ACSのインストールリストにあがっているものを
PEARで導入する必要がある。たとえばDB, Mail, ...
- いよいよACSにかかる。
- さっそく、PHP4 vs 5 の問題が発生。PHP5では"this"の扱いが違うので、PHP4で書かれたコンストラクタ(PHP4ではクラス名の関数を定義する)内で、if (うまくいかなければ) $this=NULL;
としておいて、外側で $xx_instance = new Class名(); としてうまく作られなければ
$if (!xx_instance) あきらめる、 という仕組が、「$this=NULL」の部分がエラーになる。
PHP5のマニュアルを見ると、thisは変わったよ、と書いてある。どう書き換えたらいちばんいいのか?
マニュアル PHP 4 から PHP 5 への移行
の下位互換性のない変更点の1行目 「新たな予約キーワードがいくつか あります。」
- あっさり逃げる手としては、FAQ PHP 4 から PHP 5 への移行 にある記述、
PHP 5 ではまったく新しいオブジェクト指向モデルが採用されていると 聞きましたが、既存のオブジェクト指向なコードは動きますか? 新しい オブジェクト指向モデルについての情報はどこで得られますか?
PHP 5 での主要な変更点は新しいオブジェクト指向モデルであり、それは Zend Engine 2.0 を用いています。 zend.ze1_compatibility_mode ディレクティブを設定することで、 Zend Engine 1.0 (PHP 4) との互換性を保つことができます。
新しいオブジェクト指向モデルについては、 クラスとオブジェクト と 新しい オブジェクトモデル の章に記述されています。
にあるように、Zend Engineの1.0を使うようにしてしまえばいいという方法はある。でも、なるべくならやりたくない。
- 関数unsetは使えるか? 仮にNULLの代入からunsetに変更。
- 画面に何も表示されず。 ログにはcronで書かれている中でmb_http_outputがundefinedとのメッセージ。