[[ノート>ノート/ノート]]~ 訪問者数 &counter(); 最終更新 &lastmod(); *ACS導入の経緯 2 [#nfe9dd4f] ***導入ガイドメモ &ref(); [#s5c7468d] ***もう一度最初から挑戦。今度は完全にPHP4環境を構築 [#f4314eb9] [[新しいマシンsalt.yyで以前にやったことは、ここ参照>ノート/ACS2]] ***環境作り salt編 ここは前のコピー [#o3421ae6] -saltはFedora8-live。パッケージからインストール。パッケージ情報は http://koji.fedoraproject.org/koji/packageinfo?packageID=280 あたりにあり。検索で探せる。 -OpenSSLは、Fedora-8上のパッケージを利用。/usr/bin/openssl version ⇒ OpenSSL 0.9.8b 04 May 2006。ということでよさそう。~ ヘッダファイルなどが見当たらない。で yum install openssl-devel~ これのdependencyとして、yum install krb5-devel、yum install zlib-devel。 -mod_sslが必要。コンパイル時にリンクしてしまうのではなく、モジュールとして実行時にロードする(ようにFedoraでは設定されている)~ yum install mod_ssl -あと必要なのが、OpenSSLでサーバー証明書を作成しておくこと。 これらの証明書ファイルの作り方は、http://httpd.apache.org/docs/2.2/ssl/ssl_faq.html のCertificateの項を参照。 今のところ手抜きで、Self-signed certificateを使うことにする。~ -ApacheにSSL virtual host 導入 --http://httpd.apache.org/docs/2.2/vhosts/ --http://wiki.apache.org/httpd/ExampleVhosts --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 --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キーを押すこと。 -Fedoraのapacheのconfファイルは、追加分を別ファイルとしてconf.d/ssl.confやconf.d/php.confのように作ることになっている。でも全体構造がわかり難いので このやり方はやめて(includeを止めて)すべてhttpd.confに書き込む。 ***ここから新しい試み PHP-4をインストール [#l9db4d6c] -(ACSはPHP-4を仮定しているが)前は、PHP5をインストールしてZend-1互換をOnに したが、これでは十分な互換性が無く、ACSはエラーメッセージを吐き続けた。 -- PHP-5にこだわった理由は、12月いっぱいでPHP-4の提供が終わるので、 PHPの本家ページでは、PHP-5を入れて、PHP-4互換性のためにはZend-1を使うように php.iniを設定して、PHP-4をシミュレートせよ、と書いてあったため。 --もう1つは、yumでパッケージを簡単に入れられるため。 -で、PHP-4の最終版のソースをダウンロードし、自分でビルドする。 --wget http://www.php.net/get/php-4.4.7.tar.bz2/from/jp.php.net/mirror でダウンロード、tar -jxvf php-4.4.7.tar.bz2で展開。 --configureのパラメタは、既に入っているものを参考にするが、いろいろと追加も必要。 #!/bin/sh ./configure\ --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin\ --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include\ --libdir=/usr/lib --libexecdir=/usr/libexec --localstatedir=/var\ --sharedstatedir=/usr/com --mandir=/usr/share/man --infodir=/usr/share/info\ --cache-file=../config.cache --with-libdir=lib --with-config-file-path=/etc\ --with-config-file-scan-dir=/etc/php.d --disable-debug --with-pic\ --disable-rpath --with-pear=/usr/share --with-bz2 --with-curl --with-exec-dir=/usr/bin\ --with-freetype-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf\ --without-gdbm --with-gettext --with-gmp --with-iconv --with-jpeg-dir=/usr\ --with-openssl --with-png --with-pspell --with-expat-dir=/usr --with-ldap\ --with-pcre-regex=/usr --with-zlib --with-layout=GNU --enable-exif\ --enable-ftp --enable-magic-quotes --enable-sockets --enable-sysvsem\ --enable-mbstring\ --enable-sysvshm --enable-sysvmsg --enable-track-vars --enable-trans-sid\ --enable-yp --enable-wddx --with-kerberos --enable-ucd-snmp-hack\ --with-unixODBC=shared,/usr --enable-memory-limit --enable-shmop\ --enable-calendar --enable-dbx --enable-dio --without-mime-magic\ --without-sqlite --with-libxml-dir=/usr --with-xml --with-apxs2=/usr/sbin/apxs\ --without-mysql --without-gd --without-odbc --disable-dom --disable-dba --with-pgsql\ --without-unixODBC --disable-pdo --disable-xmlreader --disable-xmlwriter\ --disable-json のようなものを作って、configure、あとはmake; make install --with-pgsqlとwith-ldapとwith-opensslとwith-apxs2=/usr/sbin/apxsは追加。 --逆に、withで書かれているもので、ソフト(開発)環境が不足するものがあるので (これはconfigure時にエラーメッセージが出る)いくつか追加。たとえばaspell-devel, curl-devel, gpm, openssl-devel, postgresql-devel, など。(抜けがあるかも) --/etc/php.iniはphp-4用のものでphp-ini.distとphp-ini.recommended(ソース内にあり)があるが、recommendedをコピー。しかしかなり改変が必要。 ---error_reportingは E_ALL & ~E_NOTICEに戻す ---include_pathを include_path = ".:/php/includes:/usr/share/pear" これはPEARで導入したモジュールをincludeさせるため ---allow_call_time_pass_reference = On これはACSで使っていて、Offだと実行時に警告が出るので。 -PHPからldapサーバをアクセスするために、php-ldapモジュールが必要だが、rpmパッケージと違い、自分でconfigureしたときに--with-ldapを入れているためstaticで入っている。確認のため、次のページを作って試す。~ http://www.php.net/manual/ja/ref.ldap.php <?php // LDAP の基本シーケンスは、接続、バインド、検索、検索結果の解釈、 // 接続のクローズです。 echo "<h3>LDAP query test</h3>"; echo "Connecting ..."; $ds=ldap_connect("remote host name: 389"); // 有効な LDAP サーバーに違いない! echo "connect result is " . $ds . "<br />"; if ($ds) { echo "Binding ..."; $searchstring="(objectClass=*)"; $r=ldap_bind($ds); // これは "匿名" バインドで、通常は // 読みこみのみのアクセスとなります。 echo "Bind result is " . $r . "<br />"; echo "Searching for (sn=S*) ..."; // 名前(surname)エントリを検索 $sr=ldap_search($ds, "cs=Manager,dc=...", $searchstring); echo "Search result is " . $sr . "<br />"; echo "Number of entires returned is " . ldap_count_entries($ds, $sr) . "<br />"; echo "Getting entries ...<p>"; $info = ldap_get_entries($ds, $sr); echo "Data for " . $info["count"] . " items returned:<p>"; for ($i=0; $i<$info["count"]; $i++) { echo "dn is: " . $info[$i]["dn"] . "<br />"; echo "first cn entry is: " . $info[$i]["cn"][0] . "<br />"; echo "first email entry is: " . $info[$i]["mail"][0] . "<br /><hr />"; } echo "Closing connection"; ldap_close($ds); } else { echo "<h4>Unable to connect to LDAP server</h4>"; } ?> -これで、ACSの画面が出るところまでやっと行き着いた。しかし、まだnagoya-uと 行ったり来たり。つまりジャンプ先URLにnagoya-uが入っている場所が多数あり。 sql/setup.sql:01 SYSTEM_BASE_URL http://acs.is.nagoya-u.ac.jp/ string 3 sql/setup.sql:01 SYSTEM_BASE_LOGIN_URL https://acs.is.nagoya-u.ac.jp/login/ string 4 sql/setup.sql:01 SYSTEM_MAIL_ADDR acs-admin@acs.is.nagoya-u.ac.jp string 5 sql/setup.sql:01 LDAP_SERVER ldap.nagoya-u.jp string 8 sql/setup.sql:01 DESIGN_STYLE_CSS_URL http://acs.is.nagoya-u.ac.jp/css/selection string 13 sql/setup.sql:03 COMMUNITY_ML_MAIL_ADDR bbs@acs.is.nagoya-u.ac.jp string 4 webapp/lib/acs_define.php:define('ACS_COMMUNITY_ML_ADDR_SUFFIX', '@acs.is.nagoya-u.ac.jp'); -更に、メッセージ関係がある。特に webapp/lib/messages/ja/lib_messages.ini webapp/lib/messages/ja/templates_messages.ini 最後のtemplates_messages.iniはトップページのスタティックイメージを作るときに使うが、その中でブラウザのタイトル欄の表示を決めるところがある。英文用も同様に変更。 -また、ページのバナー的な部分はイメージふぁいるだが、その中に名古屋大学の文字が あるので、それを修正する。 htdocs/img/head.jpg -あと、htdocs/faq/index.htmlの文章の内容が名古屋大学向けなので、それを修正する必要あり。(まだやっていない) -webapp/pages/***はトップページのスタティックイメージで、実行中に生成するので、ここでの修正は不要。 -これらを修正した後で、pgsqlのDBを作り直して(なぜならsql初期生成スクリプトを直したから)、かつスタティックなトップページを作り直して(php -f /home/acsuser/acs/bin/create_statictop.php) ほぼOK ***LDAP認証がうまくいかないので、apache設定の変更 ⇒ [[ここから研究室内のみアクセス可>]] [#tc7a1f2d] ***LDAP認証がうまくいかないので、apache設定の変更 ⇒ [[ここから研究室内のみアクセス可>yylab/山内の研究ノート/LDAP認証の実データ]] [#tc7a1f2d]