RIGHT:[[フリーソフトウェアのコンパイル]]
//---------------------------------------------------------
//  IMP-JP Solaris 10 へのインストール
//---------------------------------------------------------
#contents
*インストール手順概要 [#x506a750]
-[[MySQL>MySQL のインストール]]
-apache
-apache mod_encoding
-PHP に必要なもろもろ
-PHP

*インストール環境 [#dc8c8fb4]
-Solaris 10 01/06
-gcc 3.3.2
-PATH=/usr/bin:/etc:/usr/ccs/bin:/usr/local/bin:/opt/local/bin:.
-LD_RUN_PATH=/opt/local/lib:

また,Cryptographic Framework については,
Sun Bingadmin
 http://www.sun.com/bigadmin/motd/042006.html
から crypto framework で検索して出てくる文書
「The Solaris Cryptographic Framework」(pdf)を参照.

*apache 2.0.59 + mod_ssl + WebDAV [#fca8d68c]
**ソース [#d6e7057e]
http://httpd.apache.org/download.cgi より
-httpd-2.0.59.tar.gz

http://webdav.todo.gr.jp/download/ より
-014_path_iconv.gz (2003/4/11) 
-015_escape_amp.gz (2003/4/11) 
-016_ie_webdavize.gz (2003/4/11) 

**コンパイル [#fbb4f8cd]
 $ cd httpd-2.0.59
 $ gzcat ../../src/014_path_iconv.gz |gpatch -p2
reject されるので srclib/apr/file_io/unix/Makefile.in を手直し
// -------------------------------------------------------
   diff -c Makefile.in Makefile.in.org 
   *** Makefile.in Wed Nov 26 17:02:50 2003
   --- Makefile.in.org     Wed Nov 26 17:10:21 2003
   ***************
   *** 16,23 ****
	   readwrite.lo \
	   seek.lo \
	   mktemp.lo \
   !       tempdir.lo \
   !       path_iconv.lo
 
     # bring in rules.mk for standard functionality
     @INCLUDE_RULES@
   --- 16,22 ----
	   readwrite.lo \
	   seek.lo \
	   mktemp.lo \
   !       tempdir.lo
 
     # bring in rules.mk for standard functionality
     @INCLUDE_RULES@
// -------------------------------------------------------
 $ gzcat ../../src/015_escape_amp.gz | gpatch -p2
 $ gzcat ../../src/016_ie_webdavize.gz | gpatch -p2

このままコンパイルするとエラーが出るんで,
srclib/apr/file_io/unix/dir.c を修正する
// -------------------------------------------------------
   diff -c dir.c dir.c.org
   *** dir.c       Wed Nov 26 17:29:47 2003
   --- dir.c.org   Wed Nov 26 16:56:50 2003
   ***************
   *** 13,20 ****
      * limitations under the License.
      */
 
   - #define NAME_MAX 256
   - 
     #include "apr_arch_file_io.h"
     #include "apr_strings.h"
     #include "apr_portable.h"
   --- 13,18 ----
// -------------------------------------------------------

 $ CFLAGS='-DSSL_EXPERIMENTAL -DSSL_ENGINE -xO4' \  (-xO4 はもしかしたら gcc じゃ NG?)
 > ./configure --prefix=/opt/apache --enable-so \
 > --enable-mods-shared=all \
 > --enable-ssl --with-mpm=prefork --with-z=/usr \
 > --enable-rule=SSL_EXPERIMENTAL \
 > --with-ssl=/usr/sfw

その他,&color(red){J 環境};では同じく build/config_vars.mk に対して
// ---------------------------------------------------------
 AP_LIBS = /home/nullpyon/build/httpd-2.0.50/srclib/pcre/libpcre.la ...
// ---------------------------------------------------------
の行の最後に
// ---------------------------------------------------------
 -liconv
// ---------------------------------------------------------
を付け加え,さらに
// ---------------------------------------------------------
 EXTRA_LDFLAGS = -L/usr/local/lib -L/opt/SUNWconn/crypto/lib ...
// ---------------------------------------------------------
の行の最初の所に
// ---------------------------------------------------------
 -L/opt/local/lib
// ---------------------------------------------------------
を加えて,
// ---------------------------------------------------------
 EXTRA_LDFLAGS = -L/opt/local/lib -L/usr/local/lib ... 
// ---------------------------------------------------------
となるようにする.

 % make
 # make install

//---CUT---
**apache ユーザ作成(アップデート時は必要なし) [#t80fc375]
 # groupadd -g 80 apache
 # useradd -d /dev/null -u 80 -g apache -s /bin/false apache
**ssl.conf [#gfc43fdd]
 SSLCryptoDevice pkcs11
 SSLRandomSeed startup file:/dev/urandom 512
 SSLRandomSeed connect file:/dev/urandom 512
という行を加えておく.
あと,SSLCipherSuite の設定を次のようにするべし.
 SSLCipherSuite ALL:!ADH:!EXPORT56:-AES256-SHA:-DHE-RSA-AES256-SHA:
 -DHE-DSS-AES256-SHA:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
 (実際は 1行)

**SMF の管理下にする. [#se75849f]
既にOS標準の apache が SMF で管理されているので,これを修正する.
(通常は修正しなくても大丈夫なはずだが...
 # vi /var/svc/manifest/network/http-apache2.xml
 # svccfg import /var/svc/manifest/network/http-apache2.xml

 # vi /lib/svc/method/http-apache2
 (以下の修正を加える)
 ---
 --- /lib/svc/method/http-apache2.OSORG	Sat Jan  8 17:51:58 2005
 +++ /lib/svc/method/http-apache2	Fri Jul 29 18:22:03 2005
 @@ -8,9 +8,9 @@
  
  . /lib/svc/share/smf_include.sh
  
 -APACHE_HOME=/usr/apache2
 -CONF_FILE=/etc/apache2/httpd.conf
 -PIDFILE=/var/run/apache2/httpd.pid
 +APACHE_HOME=/usr/local/apache2
 +CONF_FILE=/usr/local/apache2/conf/httpd.conf
 +PIDFILE=/usr/local/apache2/logs/httpd.pid
  
  [ ! -f ${CONF_FILE} ] &&  exit $SMF_EXIT_ERR_CONFIG
  
 @@ -17,7 +17,6 @@
  case "$1" in
  start)
  	/bin/rm -f ${PIDFILE}
 -	/bin/mkdir -p /var/run/apache2
  	ssl=`svcprop -p httpd/ssl svc:/network/http:apache2`
  	if [ "$ssl" = false ]; then
  		cmd="start"
 ---

SSLを利用する場合には,以下のようにする.
 # svccfg -s apache2 setprop httpd/ssl = true
(<-これ,再起動しないと反映しないんだけど,何か方法があるのか?)



**この後,自己証明書などの作成. [#id8e0f7f]

---CUT---
*mod_encoding(アップデート時は必要なし) [#w73a987b]
** ソース [#d7d3fc68]
http://webdav.todo.gr.jp/download/ より
-mod_encoding-20021209.tar.gz
-mod_encoding.c.apache2.20020611a-2 or mod_encoding for Apache2 20040616版 
//--
**libiconv_hook [#aa7d9b35]
 % gzcat ../src/mod_encoding-20021209.tar.gz | tar xvf -
 % cd mod_encoding-20021209/
 % mv mod_encoding.c mod_encoding.c.org
 % cp ../../src/mod_encoding.c.apache2.20020611a-2 mod_encoding.c
 % cd lib
 % ./configure --prefix=/opt/local
 % gmake
 # gmake install

**mod_encoding(アップデート時は必要なし) [#cf08d8c0]
2.0.X 同志のバージョンアップなら古いものをコピーしても可能

ソース展開は, libiconv_hook のところを参照.
 % cd ..
 % ./configure --prefix=/opt/local \
  --with-apxs=/opt/apache/bin/apxs \
  --with-iconv-hook=/opt/local/include
 % gmake
 # gmake install
 -> エラー
 % gcc -shared -o mod_encoding.so mod_encoding.o -Wc,Wall \
  -L/opt/local/lib -R/opt/local/lib -liconv_hook
 # cp mod_encoding.so /opt/apache/modules

その後,/opt/apache/conf/httpd.conf に
// --------------------------------------------------
   LoadModule encoding_module modules/mod_encoding.so
// --------------------------------------------------
という行を加える.
//---CUT---

*PHP に必要なもろもろ [#afb0993d]
**UW-IMAP 2002e の c-client のヘッダとライブラリ(アップデート時は必要なし) [#p48a6009]
 % cd imap-2002e
 % vi src/osdep/unix/Makefile
で
 SSLDIR=/usr/sfw
 SSLCERTS=/etc/sfw/openssl/certs
 SSLKEYS=/etc/sfw/openssl/private
 SSLINCLUDE=$(SSLDIR)/include
 SSLLIB=$(SSLDIR)/lib

このまま make gso をするとエラーが出るので,
以下ファイルの scandir の部分を scandirtnk に変更する.
-src/osdep/unix/os_sol.h 63行目
-src/osdep/unix/scandir.c 29行目
-src/osdep/unix/news.c 309行目
-src/osdep/unix/mx.c 592行目
-src/osdep/unix/mh.c 638行目,895行目

 % make gso
 # cp c-client/c-client.a /opt/local/lib/libc-client.a
 # cp c-client/rfc822.h /opt/local/include/
 # cp c-client/mail.h /opt/local/include/
 # cp c-client/linkage.h /opt/local/include/

**gnu gettext 0.14.6 [#u378a492]
 % cd gettext-0.14.6
 #   % ./configure --prefix=/opt/local
 % ./configure --prefix=/opt/local CC=cc CXX=CC LD_RUNPATH=${LD_RUNPATH}
 % make
 # make install

**libmcrypt-2.5.7 [#w02862cb]
 % cd libmcrypt-2.5.7
 % ./configure --prefix=/opt/local   
 % make
エラー?
 % make clean;make  (なんで 2回目は通る?)
 # make install

*php 4.4.2 [#jd4e4d6f]
まず,以下の作業をしてから.
 $ cd php-src/pear/packages
 $ wget http://pear.php.net/get/Archive_Tar-1.3.1.tar
 $ wget http://pear.php.net/get/Console_Getopt-1.2.tar
 $ wget http://pear.php.net/get/HTML_Template_IT-1.1.tar

 $ ./configure --prefix=/opt/local --with-apxs2=/opt/apache/bin/apxs \
    --enable-mbstring --enable-mbregex \
    --with-openssl=/usr/sfw \
    --with-imap=/opt/local --with-imap-ssl=/opt/local \
    --with-zlib \
    --with-gettext=/opt/local \
    --with-xml \
    --with-mcrypt=/opt/local \
    --with-mysql=/usr/sfw
 $ make
 # make install
 # cp php.ini-recommended /opt/local/lib/php.ini

編集
// ---------------------------------------------
   [PHP]
   output_buffering = Off
 
   [mbstring]
   mbstring.language = Japanese
   mbstring.internal_encoding = EUC-JP
   mbstring.http_input = auto
   mbstring.http_output = EUC-JP
   mbstring.encoding_translation = On
   mbstring.detect_order = auto
   mbstring.substitute_character = none;
// ---------------------------------------------

/opt/apache/conf/httpd に
// ---------------------------------------------
   AddType application/x-httpd-php .php .phtml
// ---------------------------------------------
という行を付け加える.

また DirectoryIndex 行に index.php を加える.

ex.)
// --------------------------------------------------
   DirectoryIndex index.html index.html.var index.php
// --------------------------------------------------



*PEAR モジュール [#p59d9233]
**Mime [#qb33160c]
 # pear install --alldeps Mail

**Log-1.8.0.tgz [#of11f3b2]
   # pear install Log

**Mail_Mime-1.2.1.tgz [#ld6e05df]
   # pear install Mail_Mime

**Net_Socket-1.0.1.tgz [#u83a5277]
   # pear install Net_Socket
   Package 'Net_Socket' already installed, skipping

*Zend Optimizer [#ab3508a8]
ZendOptimizer-3.0.1-sunos5.8-sparc.tar.gz
インストール場所を
 /opt/Zend
とする.

----
*LDAP モジュールを追加する [#qb1e722e]
上記で作成した WWW サーバに LDAP 関連モジュールを追加する.

Apache を作成したときのソースツリーを利用して
 $ mkdir build/apx_mod
 $ cd build/httpd-2.0.59/modules/experimental
 $ cp *ldap* ../../../build/apx_mod
 $ cd ../../../build/apx_mod
 $ /opt/apache/bin/apxs -c mod_auth_ldap.c
でできるかと思ったが,apr-util が「LDAP 対応でないとだめ」という
エラーが出て N.G.

apr, apr-util だけ作りなおすってこともできそうなんだけど,
なんかちょっと不安なので,
インストールしなおした方がいいかなと思う.

なので,
 PATH=/opt/SUNWspro/bin:/usr/bin:/usr/sbin:/usr/sfw/bin:/usr/local/bin:/opt/local/bin:/usr/ccs/bin:.
 export PATH
 
 LD_LIBRARY_PATH=/opt/local/lib:/usr/local/lib:/usr/sfw/lib
 LD_RUN_PATH=${LD_LIBRARY_PATH}
 export LD_LIBRARY_PATH LD_RUN_PATH
 
 $ cd build/httpd-2.0.59
 $ make distclean
 
 $ CFLAGS='-DSSL_EXPERIMENTAL -DSSL_ENGINE' \
 ./configure --prefix=/opt/apache --enable-so \
 --enable-mods-shared=all \
 --enable-ssl --with-mpm=prefork --with-z=/usr \
 --enable-rule=SSL_EXPERIMENTAL \
 --with-ssl=/usr/sfw \
 --with-ldap --enable-ldap --enable-auth-ldap

このまま make したのでは,LDAP_OPT_X_TLS_HARD が定義されていないだの
たくさんのエラーが出る.

どうも,LDAP の SDK の種類を自動的に見分けられないようで
httpd-2.0.59/srclib/apr-util/include/apr_ldap.h に次のパッチをあてる.

 *** apr_ldap.h.org      Mon Dec 10 15:25:40 2007
 --- apr_ldap.h  Mon Dec 10 15:26:48 2007
 ***************
 *** 78,83 ****
 --- 78,86 ----
 
   #endif /* APR_NOT_READY_YET */
 
 + #define APR_HAS_NETSCAPE_LDAPSDK   1
 + #define APR_HAS_LDAP_SSL 1
 +
      /* If no APR_HAS_xxx_LDAPSDK is defined error out
       * Define if the SDK supports the ldap_url_parse function
      */

で
 $ make
 # make install

インストールが終われば,httpd.conf に次の 2行を追加して再起動.
 LoadModule ldap_module  modules/mod_ldap.so
 LoadModule auth_ldap_module     modules/mod_auth_ldap.so

その他,マニュアルを参考にディレクティブを書いていく必要がある.

一応テストで使った .htaccess は次の通り.
 AuthType Basic
 AuthName "LDAP Auth Test"
 AuthLDAPURL ldap://192.168.1.1:389/ou=People,dc=ldap,dc=example,dc=jp?uid
 require valid-user

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