RIGHT:[[フリーソフトウェアのコンパイル]]
//---------------------------------------------------------
// IMP-JP Solaris 8 へのインストール
//---------------------------------------------------------
#contents
*インストール手順概要 [#obbad40b]
-[[MySQL>MySQL のインストール]]
-apache
-apache mod_encoding
-PHP に必要なもろもろ
-PHP
*インストール環境 [#h2c7f921]
-Solaris 8 2/02
-gcc 2.95.3
-PATH=/usr/bin:/usr/ucb:/etc:/usr/ccs/bin:/usr/local/bin:/opt/local/bin:.
-LD_RUN_PATH=/opt/local/lib:
*apache 2.0.50(2.0.55) + mod_ssl + WevDAV + Sun Crypto Accelerator [#c4cf2a9f]
**ソース [#wbbb389d]
http://httpd.apache.org/download.cgi より
-httpd-2.0.50.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)
**コンパイル [#w5700542]
% cd httpd-2.0.50
% 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 ----
// -------------------------------------------------------
% ./configure --prefix=/opt/apache --enable-so \
--enable-mods-shared="access actions alias asis auth auth_anon auth_dbm autoindex cern_meta cgi dav dav_fs dir encoding env expires ext_filter headers imap include info log_config mime mime_magic negotiation rewrite setenvif speling unique_id userdir usertrack vhost_alias" \
--enable-ssl --with-mpm=prefork --with-z=/opt/local \
--with-ssl=/opt/SUNWconn/crypto EXTRA_LIBS="-lcryptography -lnvpair"
で build/config_vars.mk
// ---------------------------------------------------------
EXTRA_LIBS = -lssl -lcrypto
// ---------------------------------------------------------
の行を
// ---------------------------------------------------------
EXTRA_LIBS = -lssl -lcrypto -lcryptography -lnvpair
// ---------------------------------------------------------
と変更する.
その他,&color(red){J 環境};では同じく build/config_vars.mk に対して
// ---------------------------------------------------------
AP_LIBS = /home/user01/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
で,&color(red){J 環境};では,上記 EXTRA_LDFLAGS を元に戻して
(2.0.50 で OpenSSL 0.9.7b ぐらいの時代),
or "-L/opt/SUNWconn/crypto/lib" を一番前に持ってきて
% make clean
% make
# make install
しないと,Crypto Accelerator のライブラリにリンクしてくれない.
//---CUT---
**apache ユーザ作成(アップデート時は必要なし) [#j1d82f9f]
# groupadd -g 80 apache
# useradd -d /dev/null -u 80 -g apache -s /bin/false apache
**起動スクリプト(アップデート時は必要なし) [#ae6596b1]
// -------------------------------------------------------
#!/bin/sh
#
#
# Startup for httpd
#
APACHE_FS_ENCODING=eucJP
export APACHE_FS_ENCODING
case "$1" in
'start')
/opt/apache/bin/apachectl startssl
;;
'stop')
/opt/apache/bin/apachectl stop
;;
'restart')
/opt/apache/bin/apachectl restart
;;
*)
echo "Usage: /etc/rc2.d/S98wwwserver { start | stop }"
;;
esac
exit 0
// -------------------------------------------------------
**この後,自己証明書などの作成. [#l53235d7]
//この状態で起動させると,mod_auth_digest と mod_status が
//ダイナミックリンクのエラーとなり起動しない.
//なので,この二つを httpd.conf のなかでコメントアウト.
//
// checking whether the linker (/usr/ccs/bin/ld) supports shared libraries...
// *** Warning: Releases of GCC earlier than version 3.0 cannot reliably
// *** create self contained shared libraries on Solaris systems, without
// *** introducing a dependency on libgcc.a. Therefore, libtool is disabling
// *** -no-undefined support, which will at least allow you to build shared
// *** libraries. However, you may find that when you link such libraries
// *** into an application without using GCC, you have to manually add
// *** `gcc --print-libgcc-file-name` to the link command. We urge you to
// *** upgrade to a newer version of GCC. Another option is to rebuild your
// *** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer.
//---CUT---
---CUT---
*mod_encoding(アップデート時は必要なし) [#zef2b0e0]
** ソース [#kdb5a17b]
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 [#tff27a97]
% 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(アップデート時は必要なし) [#ee2c3d0e]
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 に必要なもろもろ [#b6cc94ce]
**UW-IMAP 2002e の c-client のヘッダとライブラリ(アップデート時は必要なし) [#o27c94e1]
% cd imap-2002e
% vi Makefile
// ------------------------------------------------------
diff -c Makefile Makefile.org
*** Makefile Wed Nov 26 19:26:34 2003
--- Makefile.org Tue Jul 15 10:17:18 2003
***************
*** 149,156 ****
# std system standard (typically passwd file), determined by port
# two try alternative (defined by CHECKPWALT), then std
! #PASSWDTYPE=std
! PASSWDTYPE=pam
# SSL type. Defines whether or not SSL support is on this system
--- 149,155 ----
# std system standard (typically passwd file), determined by port
# two try alternative (defined by CHECKPWALT), then std
! PASSWDTYPE=std
# SSL type. Defines whether or not SSL support is on this system
// ------------------------------------------------------
% vi src/osdep/unix/Makefile
// ------------------------------------------------------
diff -c src/osdep/unix/Makefile src/osdep/unix/Makefile.org
*** src/osdep/unix/Makefile Wed Nov 26 19:55:39 2003
--- src/osdep/unix/Makefile.org Wed Nov 26 19:50:40 2003
***************
*** 28,37 ****
# Extended flags needed for SSL. You may need to modify.
! SSLDIR=/opt/local/ssl
SSLCERTS=$(SSLDIR)/certs
! SSLKEYS=$(SSLDIR)/private
! SSLINCLUDE=/opt/local/include
! SSLLIB=/opt/local/lib
SSLCRYPTO=-lcrypto
--- 28,37 ----
# Extended flags needed for SSL. You may need to modify.
! SSLDIR=/usr/local/ssl
SSLCERTS=$(SSLDIR)/certs
! SSLKEYS=$(SSLCERTS)
! SSLINCLUDE=$(SSLDIR)/include
SSLLIB=$(SSLDIR)/lib
SSLCRYPTO=-lcrypto
// ------------------------------------------------------
% 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.12.1 [#h4cb3027]
% cd gettext-0.12.1
# % ./configure --prefix=/opt/local
% ./configure --prefix=/opt/local CC=cc CXX=CC LD_RUNPATH=${LD_RUNPATH}
% make
# make install
**libmcrypt-2.5.7 [#f2a53939]
% cd libmcrypt-2.5.7
% ./configure --prefix=/opt/local
% make
エラー?
% make clean;make (なんで 2回目は通る?)
# make install
*php 4.3.8(4.4.2) [#j4bd8cf4]
http://jp.php.net/get/php-4.3.8.tar.gz/from/this/mirror
Cypto Accelerator の場合,以下のパッチをあてる
(リンクライブラリに -lcryptography -lnvpair を加えている)
-----------------------------------------------------------------------
% diff configure configure.org
16461c16461
< LIBS="-lssl -lcryptography -lnvpair $LIBS"
---
> LIBS="-lssl $LIBS"
40432c40432
< IMAP_SHARED_LIBADD="$IMAP_SHARED_LIBADD -lcrypto -lcryptography -lnvpair"
---
> IMAP_SHARED_LIBADD="$IMAP_SHARED_LIBADD -lcrypto"
40439c40439
< DLIBS="$DLIBS -lcrypto -lcryptography -lnvpair" <--4.4.2 の場合は記述が少し違う(DLIBS じゃないので注意)
---
> DLIBS="$DLIBS -lcrypto"
-----------------------------------------------------------------------
#END OF Crypto Accelerator
% ./configure --prefix=/opt/local --with-apxs2=/opt/apache/bin/apxs \
--enable-mbstring --enable-mbregex \
--with-openssl=/opt/SUNWconn/crypto \
--with-imap=/opt/local --with-imap-ssl=/opt/local \
--with-zlib=/opt/local \
--with-gettext=/opt/local \
--with-xml \
--with-mcrypt=/opt/local \
--with-mysql=/opt/mysql
% make
# make install
# # cp php.ini-dist /opt/local/lib/php.ini
# 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 モジュール [#vf42e208]
**Log-1.8.0.tgz [#i0cedb60]
# pear install Log
**Mail_Mime-1.2.1.tgz [#qe034d77]
# pear install Mail_Mime
**Net_Socket-1.0.1.tgz [#i2edc59a]
# pear install Net_Socket
Package 'Net_Socket' already installed, skipping
**その他 [#kd086445]
/* snip Horde のモジュール? kronolith のときにいる
*Date_Calc
*HTML_Common
*HTML_Select
*/
*IMP [#r7882f29]
**Horde [#q8f70dae]
# cd /opt/apache/htdocs
# gzcat horde-2.2.1-jp-0.2.tgz | tar xvf -
# mv horde-2.2.1-jp-0.2 horde
# chown -R root:sys horde
***horde用のデータベースを作成 [#te08a2ff]
# vi +23 horde/scripts/db/mysql_create.sql
で 23行目のパスワードを変更(********)
# mysql --user=root -p < horde/scripts/db/mysql_create.sql
***horde の設定ファイル [#db4d25f8]
# cd horde/config/
# for foo in *.dist; do cp $foo `basename $foo .dist`; done
(上記作業は新規の場合.J 版の場合はこの作業はしてあるが,
既存のものに上書きすると,現行設定が消えてしまうので注意.
バージョンアップの場合は,J 版とダウンロード版で違いはないので,
現行設定をバックアップしておいて,それで上書きする)
# vi horde.php
// --------------------------------------------------------------
$conf['log']['type'] = 'syslog'; // 116行目
$conf['log']['name'] = LOG_LOCAL1; // 123行目
$conf['prefs']['driver'] = 'sql'; //148行目
$conf['prefs']['params']['phptype'] = 'mysql'; //157-162行目
$conf['prefs']['params']['hostspec'] = 'localhost';
$conf['prefs']['params']['username'] = 'horde';
$conf['prefs']['params']['password'] = 'r*******n'; //<--パスワード
$conf['prefs']['params']['database'] = 'horde';
$conf['prefs']['params']['table'] = 'horde_prefs';
$conf['mailer']['type'] = 'smtp'; //204 行目
//$conf['mailer']['params'] = array();
//$conf['mailer']['params'] = array('sendmail_path' => '/usr/lib/sendmail');
$conf['mailer']['params'] = array('host' => 'mailhost.******.jp');
// 211-213 行目
// --------------------------------------------------------------
# chown apache:apache horde.php
# chmod 400 horde.php
http://localhost/horde/test.php
にアクセスしてテスト.
テスト後は
# chmod 400 をしておく
**IMP [#a417661d]
# cd /opt/apache/htdocs/horde
# gzcat imp-3.2.1-jp-0.1.tgz | tar xvf -
# mv imp-3.2.1-jp-0.1 imp
# chown -R root:sys imp
***horde のログインを IMP に統一 [#e6221d85]
# vi +23 horde/config/registry.php
// --------------------------------------------------------------
$this->registry['auth']['login'] = 'imp'; //コメントを外す
$this->registry['auth']['logout'] = 'imp';
// --------------------------------------------------------------
***IMP のステータスを active に [#a8d1a480]
# vi +109 horde/config/registry.php
// --------------------------------------------------------------
'status' => 'active'
// --------------------------------------------------------------
***Horde の名前を AAAA に... [#q7a51013]
# vi +83 horde/config/registry.php
// --------------------------------------------------------------
'name' => _("AAAA WebMail System"), /* TNK */
// --------------------------------------------------------------
この後,horde/imp/locale/ja_JP/LC_MESSAGES/imp.mo を入れ換える.
(imp.mo は horde/imp/po/ja_JP.po から作成.
一旦,同じディレクトリ階層を作って
ja_JP.po を編集,その後 imp/po で make し,
../locale/ja_JP/LC_MESSAGES/imp.mo にできたファイルを
コピー.
ちなみに,imp.mo の作成作業は Linux でやった方が良い.
)
***IMP の設定ファイル [#bc2e5783]
# cd horde/imp/config/
# for foo in *.dist; do cp $foo `basename $foo .dist`; done
(上記作業は新規の場合.J 版の場合はこの作業はしてあるが,
既存のものに上書きすると,現行設定が消えてしまうので注意.
// バージョンアップの場合は,J 版とダウンロード版で違いはないので,
// 現行設定をバックアップしておいて,それで上書きする)
conf.php はマージする必要があり.prefs.php は微妙.
***IMP 全般の設定 [#r448f4e3]
# vi conf.php
// --------------------------------------------------------------
$conf['menu']['apps'] = array('turba');
$conf['msg']['append_trailer'] = false;
// --------------------------------------------------------------
***接続先 IMAP サーバの設定. [#d9e92dea]
# vi server.php
// --------------------------------------------------------------
$servers['imap'] = array(
'name' => 'IMAP Server',
'server' => 'mailhost.*******.jp',
'protocol' => 'imap/notls',
'port' => 143,
'folders' => 'mail/',
'namespace' => '',
'maildomain' => 'up.*****.jp',
'smtphost' => 'mailhost.******.jp',
'realm' => 'up.*****.jp',
'preferred' => ''
);
// --------------------------------------------------------------
***ゴミ箱を使う設定 [#p5a29efe]
# vi prefs.php
// --------------------------------------------------------------
// should we move messages to a trash folder instead of just marking
// them as deleted?
// a value of 0 = no, 1 = yes
$_prefs['use_trash'] = array(
'value' => 1, //<--- 0 を 1に変える
'locked' => false,
'shared' => false,
'type' => 'checkbox',
'desc' => _("When deleting messages, move them to your Trash folder insteadof marking them as deleted?")
);
// --------------------------------------------------------------
***メールアドレスをアドレス帳に加える設定 [#b5cdabbd]
$_prefs['add_source'] = array(
// 'value' => '',
'value' => 'localsql',
'locked' => false,
'shared' => false,
'type' => 'implicit'
);
***IMP テスト [#mce0fe6c]
http://localhost/horde/imp/test.php
にアクセスしてテスト.
テスト後は
chmod 400
をしておく
//========================================================================
**turba [#v3007f10]
# cd horde
# gzcat turba-1.2-jp-0.2.tgz | tar xvf -
# mv turba-1.2-jp-0.2/ turba
# chown -R root:sys turba
***Hordeの導入で作成したデータベースに,Turba用テーブルを追加. [#a467cbcd]
# /opt/mysql/bin/mysql --user=root -p horde \
< turba/scripts/drivers/turba.sql
***Turba の設定 [#u262ad6e]
# cd turba/config/
# for foo in *.dist; do cp $foo `basename $foo .dist`; done
(上記作業は新規の場合.J 版の場合はこの作業はしてあるが,
既存のものに上書きすると,現行設定が消えてしまうので注意.
// バージョンアップの場合は,J 版とダウンロード版で違いはないので,
// 現行設定をバックアップしておいて,それで上書きする)
sources.php はマージする必要があり.prefs.php は微妙.
# vi conf.php
// ---------------------------------------
$conf['menu']['apps'] = array('imp'); // 31行目
// ---------------------------------------
# vi +140 sources.php
// ---------------------------------------
$cfgSources['localsql'] = array(
'title' => 'My Addressbook',
'type' => 'sql',
'params' => array(
'phptype' => 'mysql',
'hostspec' => 'localhost',
'username' => 'horde',
'password' => 'r******n',
'database' => 'horde',
'table' => 'turba_objects'
),
// ---------------------------------------
また,$cfgSources['localsql'] と $cfgSources['prefs'] 以外の
ブロックはコメントアウトしておく.
# chown apache sources.php
# chmod 400 sources.php
***Horde に Turba を登録 [#cd09200e]
# vi +118 horde/config/registry.php
// ---------------------------------------
'name' => _("Address Book"),
'allow_guests' => false,
'status' => 'active' //<-- この行
// ---------------------------------------
**その他 [#mc120e24]
***syslog [#e7805c75]
/root/acct-log.sh の最後に
// ---------------------------------------
#
# horde.log の処理
if [ "`/usr/bin/date +%u`" = "1" ]; then
cp /var/adm/horde.log ${ACCTDIR}/horde.log.${DATE}
cp /dev/null /var/adm/horde.log
fi
#
// ---------------------------------------
/etc/syslog.confの最後に
// ---------------------------------------
local1.info /var/adm/horde.log
// ---------------------------------------
***Welcome メッセージ [#bfa4ba30]
とりあえず
horde/imp/templates/login
の login.inc で
// ---------------------------------------------------
# diff login.inc login.inc.org
63c63
< <?php printf(_("Welcome to %s"), "WebMail") ?>
---
> <?php printf(_("Welcome to %s"), ($registry->getMethod('auth/login') == 'imp') ? $registry->getParam('name', 'horde') : $registry->getParam('name')) ?>
// ---------------------------------------------------
といった強引な patch を作ったがどうなのか.
***motd [#q97b42e3]
horde/imp/config/motd.php に以下のような内容を追加することで,
horde/imp/config/motd.txt の内容をログイン画面に表示させることができる.
(ただし,html のタグは食われるので注意)
<!-- It will be included below the log-in form on the login page. -->
<?php
echo '<div align="center" class="light">';
$trailer = implode(@file(IMP_BASE . '/config/motd.txt'), '');
echo "$trailer";
echo _("Tiger Tiger Gillets Tiger!</div>");
?>
また,たぶん horde/config/motd.php に同じような修正を加えると,
ログイン後の最初の Horde の画面にメッセージが表示される.
**preference2.pl 用 DB 作成 [#n8bbc0b6]
% /opt/mysql/bin/mysql -u horde -p******* -e "CREATE TABLE horde_fromaddr \
(user char(255) NOT NULL, fromaddr char(255) NOT NULL, \
fullname char(255) DEFAULT '')" horde
**preference2.pl の修正 [#lfcc20b5]
bash-2.03$ diff preference2-tnk.pl preference2.pl
1c1
< #!/usr/bin/perl -w
---
> #!/usr/local/bin/perl -w
21c21
< my $mysql = "/opt/mysql/bin/mysql";
---
> my $mysql = "/usr/local/bin/mysql";
23c23
< my $password = "********";
---
> my $password = "XXXXXXXX";
28d27
< my $domain = "******.jp";
59c58
< system("$mysql -u $user -p$password -e \"delete from $pref_table where pref_uid='$username\@$domain'\" $db");
---
> system("$mysql -u $user -p$password -e \"delete from $pref_table where pref_uid='$username\@localhost'\" $db");
61c60
< system("$mysql -u $user -p$password -e \"delete from $addr_table where owner_id='$username\@$domain'\" $db");
---
> system("$mysql -u $user -p$password -e \"delete from $addr_table where owner_id='$username\@localhost'\" $db");
*Zend Optimizer [#j06b3797]
ZendOptimizer-2.5.3-sunos5.6-sparc.tar.gz を展開して,
./install
*Zend Encorder [#n63c8227]
/opt/Zend/bin/zendenc --recursive --ignore config --no-header horde horde.n
このあと
# /opt/apache/htdocs/horde/config
# /opt/apache/htdocs/horde/imp/config
# /opt/apache/htdocs/horde/turba/config
内のファイルをこのディレクトリ構成でコピーしておく.