[[ノート>ノート/ノート]]~
訪問者数 &counter();      最終更新 &lastmod();

*ACS導入の経緯 [#kc3f48ca]
***導入ガイドメモ &ref(); [#y173b7b2]

***環境作り Pepper編 [#hbb63608]
-PepperはFreeBSD
-Apache2 (ACSはApache1を仮定。動かないかも)
-PHP5 (ACSはPHP-4を仮定。動かないかも)
-PostgreSQL
新しく導入。/usr/portsは古くてファイルが存在しないので、[[日本PostgreSQLユーザ会サイト:http://www.postgresql.jp/PostgreSQL]]からソースをダウンロード(wget ftp://ftp.jp.postgresql.org/source/v8.2.5/postgresql-8.2.5.tar.gz)。~
INSTALLに従って、./configure ⇒ gmake ⇒ gmaie install。インストールテストはINSTALLにある通りでいいが、psql testで起動されたセッションの終了は\qで。

-ImageMatick (6.3.1)

-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の項を参照。~
その他参照ページは、[[これ:http://mars.elcom.nitech.ac.jp/security/openssl/ca.html]] や [[これ:http://www.aconus.com/~oyaji/www/certs_linux.htm]] や [[オリジナルドキュメント:http://www.openssl.org/docs/HOWTO/]]~
その他参照ページは、[[これ:http://mars.elcom.nitech.ac.jp/security/openssl/ca.html]] や [[これ:http://www.aconus.com/~oyaji/www/certs_linux.htm]] や [[オリジナルドキュメント:http://www.openssl.org/docs/HOWTO/]]。有効期限については[[こんな話:http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=32060&forum=14&4]]~
今のところ手抜きで、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, ...
--なんと、PEARのバージョンがちょっとだけ古かったので、ライブラリの一部がインストールできないことを発見。面倒(?)なので、PHP全体をバージョンアップ。(マイナーバージョンがちょっとだけ古い状況だったので、大丈夫かと思ったのだけれど、だめだった。)
--多分無事にバージョンアップ。まずはpukiwikiなどの(ACSより前から入っている)システムが問題なく動くことを確認する必要あり。⇒ 一応よさそう。
--PEARでライブラリをインストール
 pear install -alldeps <library>
無事完了

-いよいよ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 への移行:http://www.php.net/manual/ja/migration5.php]]
の下位互換性のない変更点の1行目 「新たな予約キーワードがいくつか あります。」

--あっさり逃げる手としては、[[FAQ PHP 4 から PHP 5 への移行:http://www.php.net/manual/ja/faq.migration5.php]] にある記述、~
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とのメッセージ。

***[[面倒なので、ACSご指定の環境を別途構築>ノート/ACS2]] [#qee9294d]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS