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