2012年3月6日火曜日

Groupoffice - オープンソースのGroupware

SOGoは挫折 (;_;)。激遅の件は解決したものの、表示された画面がおかしく、Document読んだりググったりしたが、解決法がわからない。ログにエラーも出ていない。
ということで以前ちょっと触ってみて、インストールがすごく簡単だった印象のGroupofficeを使うことにした。今回はここを参考にした。
groupofficeは基本的にphpが動けばインストールできる。
Souceforgeから適当なディレクトリにダウンロードして展開。そのディレクトリをwebコンテンツのディレクトリにまるごと移動する。うちの場合はこんな感じ。

$ sudo mv groupoffice-com-3.7.45 /home/www/groupoffice

その他モロモロの作業はここを見て。
で、ブラウザでhttp://www.foobar.com/groupoffice/にアクセスするとインストーラーが始まる。これが楽チンなのだ。
まず足りないモジュールのリストが表示されるので、必要な物があればインストールしておくこと。あとは画面に従って設定を進めていく。データベースの設定もここでできる。
あれ、もう書くこと無い。基本的にはこれで使えてしまう。
うちの場合、どうしてもActiveDirectoryと連携したいので(というか連携できないんだったら使えません)ldapの設定を行ってみることにした。

まずはconfig.phpに下記を追加。内容はご自分の環境に合わせて。下から2行の意味は不明。

$config['ldap_host']='123.45.43.210';
$config['ldap_port']='389';
$config['ldap_user']='ldapuser';
$config['ldap_pass']='password';
$config['ldap_basedn']='dc=staff, dc=unitech, dc=ac, dc=pg';
$config['ldap_peopledn']='dc=staff, dc=unitech, dc=ac, dc=pg';
$config['ldap_tls']=false;
$config['ldap_auth_dont_update_profiles']=false;
$config['ldap_use_uid_with_email_domain']='';

次にgroupofficeディレクトリの中にldapauth.config.phpファイルを作る。内容は下記のとおりマッピング情報である。ActiveDirectoryの場合は usernameはsAMAccountNameだが、openldapなどの場合はuidとなる。

$mapping=array(
'username' => 'sAMAccountName',
'password' => 'userpassword',
'first_name' => 'givenname',
'middle_name' => 'middlename',
'last_name' => 'sn',
'initials' => 'initials',
'title' => 'title',
'sex' => 'gender',
'birthday' => 'birthday',
'email' => 'mail',
'company' => 'o',
'department' => 'ou',
'function' => 'businessrole',
'home_phone' => 'homephone',
'work_phone' => 'telephonenumber',
'fax' => 'homefacsimiletelephonenumber',
'cellular' => 'mobile',
'country' => 'homecountryname',
'state' => 'homestate',
'city' => 'homelocalityname',
'zip' => 'homepostalcode',
'address' => 'homepostaladdress',
'homepage' => 'homeurl',
'work_address'=> 'postaladdress',
'work_zip' => 'postalcode',
'work_country'=> 'c',
'work_state' => 'st',
'work_city' => 'l',
'work_fax' => 'facsimiletelephonenumber',
'currency' => 'gocurrency',
'max_rows_list' => 'gomaxrowslist',
'timezone' => 'gotimezone',
'start_module'=> 'gostartmodule',
'theme' => 'gotheme',
'language' => 'golanguage',
);

で、 ApacheをリスタートしてActiveDirectoryのアカウントでログインを試みるもエラー。ここから1時間はまった。ドメインコントローラで見張ってたら、全く問い合わせが来ていないので、ldapauthが動いていないものと思われる。実は、groupoffice/modules ディレクトリの中にldapauthモジュールがあったので、使えているものだとばかり思っていたのが間違いで、GroupofficeのAdmin Menuの中のModuleでインストールしなければならないのであった。これをインストールしてログインに成功した。めでたしめでたし。
さてここまで来たら欲が出てきて、Googleカレンダとかタスクとかと同期したくなってきた。そうするとモバイル機器とも同期できる。次はこれをやってみようと思う。

2012年3月5日月曜日

インターネット10日間断絶

喉元過ぎれば暑さ寒さも彼岸までで、忘れてしまうのも悔しいのでメモっておく。ただし面白くもなんともない話です。

 我町Laeはこの地図のように、首都ポートモレスビーとは4000m級の山脈に隔てられている。我が大学のネットワークは、キャンパスから2キロ弱離れたTelikom(国営電話会社)の施設に繋がっており、そこから無線のリピータをいくつか経由してポートモレスビーに接続されている。この無線回線はインターネットだけじゃなくて、固定電話などのTelikomの主要なサービスがほとんど収容されている。
 山越え経路の途中にMount Strongと言う山があって、そこにリピータがあるんだが、これがよく問題を起こす。なにか起こったら、ポートモレスビーからヘリで現地に行って作業を行うのだが、アンテナがどこにあるか知らないけれど、この山3600mあるのだ。だから悪天候で近づけないなどという言い訳も何度も聞いた。
で、本題だが2012年2月3日からブチブチと切れ始め、2月4日にはこういう状況。



 それから2月14日の午後5時までインターネットから完全に断絶された。Telikomからは積極的なアナウンスや謝罪は全くなく、問い合わせると「Mount Strong で問題が発生したが天候が悪くてヘリが近づけない」の一点張りなのだ。我々も「10日も続けて天候が悪かったなんて今まで無えよ。言えないような理由があるに違いない」と疑いだしたりして。
 この無線回線はインターネットだけではなく、通常の固定電話や3Gの固定電話も収容されていて同様に影響を受けたが、どうやら固定電話だけは別のルートを使用できるらしく数日で復旧した。
 以前Telikomが設置していって、あまりの不安定さに使用を放棄したVSATのシステムがあったのでそれを再度使えるように出来ないか頼んだら、あっさりOKして翌日職員が飛んできた。Telikomがこんなに対応が速いことは不思議で、一層我々は疑いを深めるのであった。
 2月14日に復旧してからも完璧というわけではなく、未だに時々不安定になる。Telikomからの原因の発表もなく、我々も今回は完全に見限った次第である。

SOGoのインストール on ubuntu server(1)

Document読んだ時は、「えーこれ全部やるのー」とひるんだが、業務命令なのでやるしかない。とりあえずドキュメントはざっと読もう。以下、面倒なのでほとんどrootになって作業しているがご容赦を。
aptitude install sogoでインストール。
MySQLコネクタ?sopeも一緒にインストールされる。sogoユーザも追加される。
まず基本的な設定の為の操作を行うためにsogoユーザになる。

#su - sogo


Documentにあるとおり、defaultsというコマンドを使う。スクリプトを作って行なった。

$ vi conf
defaults write sogod SOGoTimeZone "Pacific/Port_Moresby"
defaults write sogod SOGoMailDomain "unitech.ac.pg"
defaults write sogod SOGoLanguage English
defaults write sogod SOGoAppointmentSendEMailNotifications YES
defaults write sogod SOGoFoldersSendEMailNotifications YES
defaults write sogod SOGoACLsSendEMailNotifications YES

で実行して設定。rootに戻って/etc/init.d/sogo restartでエラーなし。
次にLDAPの設定。うちではActiveDirectory使ってるので、試行錯誤の上、下記のようになった。
$ vi ldap
defaults write sogod SOGoUserSources '(
{
type = ldap;
CNFieldName = cn;
IDFieldName = cn;
UIDFieldName = sAMAccountName;
baseDN = "dc=staff, dc=unitech, dc=ac, dc=pg";
bindDN = "cn=ldapadmin, cn=Users, dc=staff, dc=unitech, dc=ac, dc=pg";
bindFields = (sAMAccountName);
bindPassword = pasuwaado;
canAuthenticate = YES;
displayName = "STAFF Active Directory";
hostname = 192.168.1.23;
id = directory;
isAddressBook = YES;
port = 389;
}
)'

で同様に実行して、rootから/etc/init.d/sogo restartでエラーがないか確認。
次はログファイルを見て、エラーを潰していくことにする(ドキュメントを読む元気がなくなってきたので)。
ログはデフォルトで/var/log/sogo/sogo.logに出ることになっている。不都合はないのでこれはこのまま。でエラーの最初の奴はこれ。

ERROR(+[GCSFolderManager defaultFolderManager]): default 'OCSFolderInfoURL' is not configured.


OCSFolderInfoURLをドキュメントで調べたらMySQL関係。ドキュメントではPostgres使ってたので、読み飛ばしたのだった。で調べたらFAQのページにあったので、そのまま実行。パスワード以外は変更する点は無し。
次にApacheの設定をしなければならない。今となっては、インストール後にどこに置かれてたか忘れてしまったが(多分/etc直下?)SOGo.confファイルを探して/etc/apache2/conf.dに入れる。ここでApacheをリスタートするとモジュールが無いと言ってくるので、下記のように必要なモジュールをenabledにする。

# cd /etc/apache2/sites-enabled

# ln -s ../mods-available/headers.load headers.load
# ln -s ../mods-available/rewrite.load rewrite.load

でapacheとsogoをリスタートしエラーが出ないことを確認。
下記にアクセスしてみる。hostnameはご自分の環境に合わせて。
http://hostname:20000/SOGo
強烈に遅い!
一応ページが表示し終わるまで待って、 Active Directoryのユーザー名/パスワードを入力してログインしてみる。
猛烈に遅い!
なんか色々表示してるが、遅くて読み損なってるような感じだ。
基本的には動き始めたようなので今日はここまで。