2009年8月31日月曜日

【Linux】オープンソースなメールマガジン発行システムphplistのインストールと日本語化

phplistというオープンソースなメール配信システムをインストール、調査したときのメモ。環境はCentOS5.3+Xampp for linux(lampp) 1.7.1

lamppのインストールはこちらの記事を参考に。

ここからダウンロードしてきてサーバーで解凍。
# tar xzvf phplist-2.10.10.tgz.gz

<2009/09/02 追記>
2.10.10はバグがあるみたいなので、2.10.9を使うのがお勧め。ここから日本語化されているのをダウンロードできる。下の方に書いてある日本語化する処理をしなくてよくなる。

適当なディレクトリに移動
#mv phplist-2.10.10 /opt/phplist

MySQLにphplist用のデータベースを作成(utf8_general_ciで)。xamppの管理画面からphpmyadminにアクセスして作成。アクセスできるユーザーも適宜作成。

設定ファイルを修正
# vi phplist/public_html/lists/config/config.php

# what is your Mysql database server
$database_host = "localhost";

# what is the name of the database we are using
$database_name = "phplistdb";

# who do we log in as?
$database_user = "phplist";

# and what password do we use
$database_password = 'phplist';

apacheの設定ファイルを修正。

<VirtualHost *:80>
  DocumentRoot /opt/wordpress-phplist
  ServerName phplist.exbridge.jp

  <Directory />
    AllowOverride All
  </Directory>

  Alias /core "/opt/phplist/public_html/lists"
  <Directory "/opt/phplist/public_html/lists">
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>

</VirtualHost>

これはwordpressのプラグインからphplistを使用する前提で構成しているので、適宜環境に合わせて設定する。

合わせてphplistの設定ファイルを修正
# vi phplist/public_html/lists/config/config.php

$pageroot = '/core';
$adminpages = '/core/admin';

日本語ファイルは標準で入っているので、phplist/public_html/lists/admin/language.phpのjaのコメントアウトを削除して有効にする。さらにconfig.phpを下のように修正する。

$language_module = "japanese.inc";

これでweb経由でアクセスするとインストールできる。
http://phplist.exbridge.jp/core/admin/

Japaneseを選択。文字化けする場合はブラウザのエンコードをEUCにする。

image

データベースの初期化をクリック

ここでエラー。

Database error 1071 while doing query Specified key was too long; max key length is 1000 bytes

致命的なエラー: Debugging not configured properly

ここのブログを参考にしながら、どうしようか迷ったあげく、データベースの構造(文字列長)を変えた。phplist/public_html/lists/admin/structure.phpの67行あたり

"user_blacklist_data" => array(
    "email" => array("varchar(233) not null unique","Email"),
    "name" => array("varchar(100) not null","Name of Dataitem"),
    "data" => array("text",""),
    "index_1" => array("emailidx (email)",""),
    "index_2" => array("emailnameidx (email,name)",""),
),

255から233に変更。

データベースを一旦削除してもう一回実行してみると成功。

<2009/09/02 追記>
Xampp for linuxのversion 1.7.2では起きなかったのでMySQLのバージョンを上げれば同様の現象は起きないと思う。

つぎは一番下のリンクをクリックしてphplistのセットアップ

image

管理者パスワードの変更だけは忘れないようにやっておく。

インストール直後はメールを送信しないtest modeで動いているので、メールを送信したい場合はconfig.phpを修正する。

define ("TEST",0); //1:test mode, 0:exec mode

実際に動かしてみたら、テストメッセージが文字化けるのと件名が文字化ける現象を発見。

デフォルトページのaliasを変更した場合は「設定」から「購読ページURL」~「メール転送ページURL」を変更する必要あり。

2009年8月28日金曜日

【Linux】Mailmanのインストール、設定、移行、Postfixも少し

社内の物理マシンから仮想マシンの移行に伴いMailmanのインストールと移行を行ったときのメモ。環境はCentOS5.3

Mailmainはメーリングリストを構築できるオープンソースのソフトウェア。ダウンロードはこちらから。

基本的なインストール方法は公式ドキュメントを参考に。

以下は自分用のメモ

まずはmailman用のユーザーとグループを追加する
# groupadd mailman
# useradd -c 'GNU Mailman' -s /sbin/nologon -d /no/home -g mailman mailman

インストールディレクトリを作成とパーミッションの設定
# mkdir /usr/local/mailman
# chgrp mailman /usr/local/mailman
# chown mailman /usr/local/mailman
# chmod a+rx,g+ws /usr/local/mailman

コンパイルに必要なツールのインストール
# yum install kernel-devel gcc python-devel

mailmanのインストール。configureのオプションはマニュアルを参照。--with-cgi-gidオプションはapacheの実行ユーザーを指定。デフォルトはnobody
# tar xzvf mailman-2.1.12.tgz.tar
# cd mailman-2.1.12
# ./configure --with-cgi-gid=apache
# make
# make install

インストールのチェック
# cd /usr/local/mailman/
# ./bin/check_perms –f
# ./bin/check_perms –f

このとき文字化けする場合は文字コードをEUCで設定する(Teratermの場合は設定→端末)。

image

エラーの報告がなるまで./bin/check_perms –fを繰り返すらしい。

ここで気付いた
# yum install mailman
ができることを・・・。だけど、httpdが勝手にインストールされてしまうのでlamppで連携したい場合はやっぱりコンパイルからやらないと駄目。

webサーバーの設定。次のようなconfファイルを記述して再起動。lamppの設定などはこちらの記事を参考に。

次の設定はLAN内からのアクセスしか認めない場合の例。

# For mailman

ScriptAlias /mailman/       /usr/local/mailman/cgi-bin/
<Directory /usr/local/mailman/cgi-bin/>
    #SSLRequireSSL
    AllowOverride None
    Options ExecCGI
    Deny from all
    Allow from 127.0.0.1 192.168.0.
</Directory>

Alias   /pipermail/     /usr/local/mailman/archives/public/
<Directory /usr/local/mailman/archives/public/>
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Deny from all
    Allow from 127.0.0.1 192.168.0.
</Directory>

iconファイルをコピーする。
# cp /usr/local/mailman/icons/* /opt/lampp/icons/

メールサーバーの設定。MailmanはPostfixと相性がいいらしいので素直にPostfixを使う。

# yum install postfix

# vi /etc/postfix/main.cf

設定する項目は主に次の項目

myhostname = aurora.exbridge.jp
mydomain = exbridge.jp
myorigin = $myhostname
inet_interfaces = $myhostname

#
# For mailman
owner_request_special = no
recipient_delimiter = +

詳しくはPostfixのドキュメントを参照。

myoriginはデフォルトのドメイン。これを変更すると別ドメインの送信元でメール送信できるけど、不正なメールサーバーとして判断されることがあるため素直にIPアドレスで名前解決(AレコードかMXレコード)されるドメインを入れておく。

ちなみに上の設定はhoge@aurora.exbridge.jpというメーリングリストを立ち上げる場合。

メールサーバの起動と自動起動の設定
# /etc/rc.d/init.d/postfix start
# chkconfig --add postfix

sendmailを起動している場合は停止してpostfixを使うように切り替える。
# /etc/rc.d/init.d/sendmail stop
# chkconfig sendmail off
# alternatives --config mta

2 プログラムがあり 'mta' を提供します。

  選択       コマンド
-----------------------------------------------
*+ 1           /usr/sbin/sendmail.sendmail
   2           /usr/sbin/sendmail.postfix

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2

送信テストはmailコマンドを使う。前の記事を参考に。

次はmailmanの設定。基本設定は/usr/local/mailman/Mailmn/Defaults.pyに記述されている。この設定と変更したい項目だけ同じディレクトリにあるmm_cfg.pyに記述する。

# cd /usr/local/mailman/Mailman/
# vi mm_cfg.py

# Put YOUR site-specific settings below this line.
DEFAULT_URL_HOST = 'aurora.exbridge.jp'
DEFAULT_EMAIL_HOST = 'aurora.exbridge.jp'
add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
MTA = 'Postfix'
DEFAULT_SERVER_LANGUAGE = 'ja'
OWNERS_CAN_DELETE_THEIR_OWN_LISTS = Yes (メーリングリストをweb上から削除可能にする)
DEFAULT_SUBJECT_PREFIX = "[%(real_name)s:%%d] " (件名に記事Noを付与する)
DEFAULT_REPLY_GOES_TO_LIST = 1 (返信先を投稿者ではなくリストにする)
DEFAULT_NEW_MEMBER_OPTIONS = 258 (投稿した本人にはメールを送らないようにする)
DEFAULT_GENERIC_NONMEMBER_ACTION = 2 (非会員からのメールには拒否応答)

管理者用パスワード設定
# cd /usr/local/mailman/
# ./bin/mmsitepass (パスワード)

cronの設定
# crontab -u mailman ./cron/crontab.in

確認するときは
# crontab –u mailmain –l

aliases設定
# ./bin/genaliases
# chown mailman. data/aliases*
# chmod g+w data/aliases*
# vi etc/postfix/main.cf

alias_maps = hash:/etc/aliases, hash:/usr/local/mailman/data/aliases

mailmanの起動
# cp scripts/mailman /etc/rc.d/init.d/
# /etc/rc.d/init.d/mailman start
# chkconfig --add mailman

この辺の設定はここのサイトを参考に。

ここから別サーバーのmailmanを移行させるやり方。

基本は単純にファイルをコピーするだけ。コピーするファイルは
/usr/local/mailman/lists/
/usr/local/mailman/archives/
だけ。

コピーしたあとはコマンドで確認。一覧が表示されるはず(EUC-JP)。
# ./bin/list_lists

aliasesの再設定
# ./bin/genaliases

念のため再起動
# /etc/rc.d/init.d/mailman restart

以前のmailman管理画面のアドレスが一致している場合は、管理画面にメーリングリストの一覧が表示される。mailman管理画面のアドレスを変更した場合は、何かしら修正する必要がありそう。

メーリングリストの内容を修正する場合はconfig_listコマンドが使えるかも。ここを参考に。
# ./bin/config_list -o /tmp/test.txt <mailing_list_name>

2009年8月27日木曜日

【Linux】dovecotのインストールと設定とldap連携

Postfix(SMTP)とdovecot(POP3)でメールサーバーを構築したときのメモ。

環境はCentos5.3

dovecotの読みは「ダブコット」らしい。

インストールはyum経由でさくっと終わる

# yum install dovecot

メールの保存先は各ユーザーのhomeディレクトリ。

# vi /etc/dovecot.conf

mail_location = maildir:~/Maildir

Postfixと連携する場合はメールをhomeディレクトリに配送するように設定する。でも、この設定を反映させるのは最後に書いてあるautodirの設定が終わってからの方がいい。ldapの設定はこちらの記事を参照。

# vi /etc/postfix/main.cf

home_mailbox = Maildir/

dovecotを起動して自動起動も設定
# /etc/rc.d/init.d/dovecot start
# chkconfig dovecot on

動作確認はWindowsのコマンドプロンプトで

C:> telnet hoge.jp 110

+OK Dovecot ready

と出力されたら正常に起動している。接続できない場合はファイヤーウォールの設定を確認。こちらの記事を参考に。

POPのコマンドはこちらの記事を参考に。

さらにサーバーがLDAPと連携している場合、メールを受信したときにhomeにユーザーディレクトリが作成されてないことがある。

これを解決するAutodirというソフトがあるのでインストールしてみた。

コンパイルに必要なソフトをインストール
# yum install libcap-devel libtool-ltdl-devel

コンパイルとインストール
# tar xzvf autodir-0.99.9.tar.gz
# cd autodir-0.99.9
# ./configure
# make
# make install

/usr/lib/autodirにライブラリがインストールされる。

設定ファイルと起動スクリプトはここのサイトから借用。リンク先がない場合はautodirのrpmの中に入っているみたい。

起動スクリプトに実行権限を付けて起動する。自動起動も設定
# chmod 755 /etc/rc.d/init.d/autohome
# /etc/rc.d/init.d/autohome start
# chkconfig --add autohome
# chkconfig autohome on

これでLDAPにユーザーを追加したときの手間が一つ減った。

でも、再起動するとhomeディレクトリ以下が消えた。これで大丈夫なのか・・・?一応様子見。

・・・追記。

いろいろやってみたけどautohomeのデーモンが途中で終了したりして安定しないので、ここからrpmをダウンロードしてインストール。

これは安定して稼働中。

<2009/09/07 追記>
dovecotが突然停止する現象に遭遇。ログを見てみると、

dovecot: Time just moved backwards by 13 seconds. This might cause a lot of problems, so I'll just kill myself now. http://wiki.dovecot.org/TimeMovedBackwards

リンク先を読んでみるとntpdateを実行していると予期せぬエラーが起きるから停止するらしい。

確かにこのマシンはvmwareのゲストOSとして起動していて、時刻が狂うのをなんとかするためにcronでntpdateを実行していた。前の記事も参考に。

もしかしてntpdateするのは邪道?

しょうがないのでvmware-toolsをインストールしてcronでntpdateは止めた。

・・・で大丈夫かなと思ったけど、vmware-toolsでもdovecotが自動で止まるのでntpdで時刻同期することにした。

設定方法は前の記事を参考に。

2009年8月26日水曜日

Macの新OS「Snow Leopard」をいじってみたくなった

8月28日にMacの新OSが発売されるという記事を読んで、iPhoneアプリの開発で必要になるし、新OSはどんなもんかなと思い調べてみた。

下の記事を読むと買いたくなる。

Macを未来へと前進させる低価格化戦略

【Apple】つぎのパソコンをMacにする理由。

さらに気になるのが、Mac OS X ServerのPodcast Producer 2

Podcast Producer 2。いわば社内放送局です。

これを読む限りコンテンツの編集から配信まで、とても簡単にできそうな感じがする。

・・・試してみたい。

2009年8月25日火曜日

Xampp For Linux(Lampp)のWebdavの設定

lamppを使ってWebdavの設定をしたときのメモ。

lamppは何もしなくてもwebdavが使える状態になっているので便利。

基本は/opt/lampp/etc/extra/httpd-dav.confにwebdavの設定が記述されているので参考にする。

webdavの動作テストをするときはCarotDAVというフリーソフトでお手軽に確認できる。IE8では、webdavのwebフォルダを開く機能はなくなったらしい。

apache設定ファイルの例は次のような感じ。

Alias /webdav "/opt/webdav"
DavLockDB "/tmp/DavLock"

<Directory "/opt/webdav">
  Dav On
</Directory>

DavLockDBはapacheの実行ユーザーが書き込める権限のあるディレクトリでないと駄目。

httpd-dav.confには/opt/lampp/var/DavLockと書いてあったけど、/opt/lampp/varをchownしてもうまくいかなかったので/tmpにした。謎。

あとは、このままだと誰でも書き込みしまうので、httpd-dav.confを参考にしたり

Order deny,allow
Deny from all
Allow from 192.168.0

のようにIPで制限するなどする必要あり。

2009年8月24日月曜日

EV SSLと通常のSSLとの違いを調べてみた

SSLを導入する機会は今まで何回かありましたが、Verisignに問い合せの電話をしているときに「EV SSLでよろしいでしょうか?」と聞かれたので「EVってなんじゃらほい」と思って調べたメモ。

同じ暗号化しているという点では同じ。もうちょっと詳しく知りたい場合はwikipediaを読む。

違う点は

  • EV SSLだと最近のブラウザで見るとアドレスバーが緑色になる
  • EV SSLの方が値段が高い
  • EV SSLに対応している携帯は通常のSSLに比べて少ない(VerisignのEV SSLは99%の携帯に対応しているらしい)。
  • EV SSLの申請手続きが面倒。具体的にはこちらを参照。
  • サーバー側で証明書署名要求(CSR)を作成するときに注意する必要がある。詳細はこちら

ショッピングサイトに関しては通常のSSLで十分。だけど、よりユーザーに「安心、安全」というイメージを持たせたい場合はEV SSLにするという感じ。

この辺の切り分けはGlobalSignのホームページが分かりやすいと思う。

通常のSSLの見え方(IE8)

image

EV SSLの見え方(IE8)

image

JCAF(日本電子認証協議会)でもEV SSLに関しての説明があるので参考に。公開資料でEV証明書のガイドライン(日本語版)もダウンロードできるので、背景や仕組みについて詳しくなれます。

 

関連記事

2009年8月21日金曜日

Xamppのバージョンが上がってPHP5.3に

Xamppのバージョンが上がって、1.7.2になっていた。

PHPのバージョンも5.3になったので、何か大きな変更点があるかなと思って調査したメモ。

下のサイトで詳しく説明しているのでそちらを参考に。

PHP 5.3の新機能と変更点

PHP 6で廃止予定の関数と機能も載っているので(あと代替関数も)、これらを使っているか見ておいた方がいいかも。

今後プログラミングするときにはPHP 6を意識したコーディングが必要みたい。

2009年8月20日木曜日

誕生日にもらったカレールー1kg

今年はネコたちで終わったものかと思いきや6歳児からの心のこもったお手紙とともにカレールーを頂いた。

P1000009

業務用1Kg・・・

ずっしりと重みがある。こんなのも売っているんだね。

一応10個に分けることができて、普通に売っているのと組み合わせて使っていけば、しばらくカレールーには困らない。

今週末からカレーだね。

ありがとう。

2009年8月19日水曜日

MP3音楽ファイルのタグをネット経由で取得してきれいにする

最近知ったソフトウェアの紹介。フリー(無料)のMedia Player。

Quintessential Media Player

現在のバージョンは5.0。日本語化はこちらから。

これを使うとPCに保存されているMP3ファイルの音楽ファイルの波形(Music ID)を元にネットから検索してタイトル、アーティスト名、アルバム名などを取得してくれる。

この辺の技術が気になる場合は次のサイトを参考に。

Gracenote MusicID vs MoodLogic 音楽認識技術がやってきた

タイトルを知らなくてもMP3があれば勝手に認識してくれるので便利。

CDDBを使って取得したあとは全部選択して右クリックで「ファイルタグに情報を書く」をやるとファイルに情報を書き込んでくれる。

image

PCに貯まっていたMP3ファイルを一括で検索して、MP3タグをきれいにしてみた。

大文字、小文字などの揺れもなくなって、すっきり気持ちいい。

ただたまに間違えることもあるので注意。

完璧にきれいにしたい場合はMusicIDが低信頼になっているものは、右クリックからMusicIDトラックを解決を選ぶと候補が表示されるので、正しいものを選択して保存。

image

便利なソフトがあるもんだね。

誕生日にもらったネコたち

今年の誕生日はネコをもらいました。

ありがとうございます。m(_ _)m

P1000008

どう配置しようか考え中。

去年の誕生日のブログはこちら

2009年8月18日火曜日

XeonのCPUが64bitに対応しているか確認

社内サーバーをVMware ESXiにしたいなと思って調べたメモ。

VMware ESXiのバージョン4.0から64bitCPUでないとインストールできないみたい。それ以前のバージョンなら32bitでもok。

サーバーのCPU(Xeon)が64bit対応しているかはIntelのHPで確認。

最近のは大丈夫だけど、中古のサーバーを買う場合は注意。

2009年8月14日金曜日

(続)兄貴が嫁を連れてきた

今日は兄貴が嫁を連れてくる日。

朝からうちの親は大忙し。

掃除をして、畳の上のござを張り替えて、夕飯の手巻き寿司用のネタを買出し。

父 「あの柱時計も止まってるし、みすぼらしいから新しいのに替えよう。D2(←店の名前)寄ってって」

私 「ネジを巻けば動くし、めんどくさいから却下」

で帰宅。

もうすぐ着くと連絡があると、親は二人ともソワソワ・・・

フッ。どうなることやら。

 

関係ないけど、田舎は蚊が多い。さっきから何箇所刺されたことやら。何匹か倒しているけど。今のところ3勝4敗。

虫がおらずクーラーが効いた我が城が恋しい。

2009年8月12日水曜日

【Linux】仮想マシンのCentOSにデスクトップ環境を追加する

VMware vCenter ConverterをLinuxで動かそうとCUIのCentOSに後から「X window System」をインストールしたメモ。環境はCentOS5.3

アニキのページを参考に。

# yum groupinstall "X Window System”

# yum groupinstall "GNOME Desktop Environment"

これで大丈夫だと思ったけど、インストールに失敗したりするのでvmware-toolsのインストールをやってみた。こちらの記事を参考に。これが必須かどうかは分からない・・・。

groupinstallの一覧は
# yum grouplist
で確認できる。

完了後は
# startx
でGNOME環境が立ち上がる。

2009年8月11日火曜日

VMware ESXi 4.0の設定(SSHで接続とか)

前の記事でインストールしてみたVMware ESXi

インストール後に試してみた内容をメモ。

まず表題のSSHでアクセスするやり方。ここを参考に。

コンソール画面で「Alt + F1」を入力すると黒い画面になる。プロンプトが何もないので不安になるが、そのまま「unsupported」と入力。するとパスワードを聞かれ、見慣れたプロンプトの画面になる。

# ls

とかで、Linuxっぽいコマンドが打てる。シェルも効いてるみたいなのでtabで自動補完もできる。

# vi /etc/inetd.conf

でsshのコメントアウトを削除

# reboot

起動後のsshでアクセス可能に。だからってsshで何をするわけではないのだけれど・・・。UPSと連動する場合はsshでリモートからシャットダウンする必要があるので意味があるらしい。

ちなみにsshで電源を切るには

# shutdown.sh
# poweroff

で出来る。ここを参考に。

 

次はストレージの構成。

vSphere Clientでアクセスして「構成」→「ストレージ」でデータストアが表示される。認識されていないディスクがあるならストレージの追加からデータストアを増やすことができる。

ディスクの数だけデータストアを増やすのも使い勝手が悪いので、
データストアを右クリック→プロパティ→拡大
で余っているディスク容量から割り当てることもできる。その辺は臨機応変に。

一つここで嵌ったのは、ESXiをインストールしてライセンスキーを入力後に機能制限されることに気付いて、ESXiを再インストールしてみると、前に追加したデータストアが既に表示されていて、削除しようとすると

ホスト構成中のエラー:DestroyVmfsDatastore: can't delete partition 1 on lun mpx.vmhba2:C0:T3:L0

のエラーが出て削除できない。

しょうがないので、別のインストールディスクでディスクをフォーマットして再インストール。

やれやれ・・・と、納得いくデータストア構成にして、今度はVMware vCenter Converterで仮想マシンのコピー。この辺は前の記事を参考に。

でも、コピー先のESXi Serverを指定しても「The session is not authenticated」とエラーが出て次にいけなくなっている。

調べてみると、VMware Converterのサービスを再起動すると大丈夫らしいので、管理ツール→サービスから該当サービスを再起動。

・・・で無事変換までこぎ着けた。

2009年8月10日月曜日

VMware ESXiをインストールと仮想マシンの移行

無償版のVMware ESXiをインストールしてVMware Server 2.0から仮想マシンを移行したときのメモ。

ダウンロードはVMwareのサイトから。今のところ最新は4.0.0

4.0.0から64bitのisoイメージしか配布されていないので、インストールするマシンのCPUが64bitに対応してないとインストールできない。

インストール自体は簡単で、isoイメージをCD-ROMに焼いてbootすればインストール画面までいける。特に選択する必要もなくインストール終了。

詳しく知りたい人はここのサイトを参考に。

ネットワークの設定をしたあとはクライアントのWindowsマシンからネットワーク経由でアクセス。するとクライアントソフトのダウンロード画面が表示されるので、vSphere Clientをダウンロードしてインストール。

初期の設定では
ユーザー:root
パスワード:(なし)
でログインできる。

パスワードはvSphere Clientの「ユーザーおよびグループ」のroot→編集で変更できる。コンソールからでも設定可能。

パスワードを設定するときはroot, adminなどを含んでいると登録できないみたい。ちょっとショック。

ライセンスキーは構成→ライセンス機能→編集から入力できるけど、ESXiのライセンスだと機能制限がかかってしまうので、どうせなら60日間ESX Serverの機能を堪能してからライセンスキーを入力した方がいい。

さて、ここからVMware Serverから仮想マシンを移行

移行するには、VMware vCenter Converterという無償ツールを使う。

前の記事も参考に。

「Convert Machine」から「VMware Workstation or other VMware virtual machine」を選択してソースファイルで変換したい仮想マシンのvmxファイルを指定。Sambaで共有しとけばネットワーク経由で指定できるので楽。

でもなぜか特定のマシンを選択すると「A file I/O errored while accessing」とエラーになって進めなかった。その場合はローカルに一旦フォルダごとコピーして選択すればうまくいった。ゲストマシンはCentOS

ちなみに「Powered-on machine」から起動している状態でコピーできるかなとやってみたけど、/bootをコピーする処理でエラーで止まった。これができたら便利だったのに・・・。

コピー元側にもconverterがインストールする必要があるのかと思いやってみたけど駄目だった。vmware-converter-clientを起動するにはGUI環境(X server)がないと駄目なので、また時間があるときにやってみよう。

<追記>
やってみたけど、やっぱり/bootをコピーするときに失敗する。さらにコピー元でConverterを立ち上げて「This local machine」を選択したかったけど、選択できなかった。おとなしくファイルでコピーしよう・・。

image

物理ディスクサイズが8Gの仮想マシンをコピーするのにだいたい1時間ぐらいかかった。こんなもんかな。

いろいろESXiをいじって分かってきたことは、次の記事でまとめることに。

<参考リンク>

ESXiのリンク集がまとまっているブログ

IBM/VMware仮想化関連資料ダウンロード

2009年8月7日金曜日

Icecast + winamp + edcastで音声のストリーミング(ラジオ局)

Icecastのインストール方法は前の記事を参考に。

winampで再生で再生している音声ファイル(曲)をストリーミングサーバーを挟むことで不特定多数のユーザーにも聞けるようにする。

Icecastのインストールがめんどくさい場合はlivedoorが提供している「ねとらじ」を利用することでも同様のことができる(無料で)。

winampとedcastのインストールはここのページを参考にすれば終了。

edcastの設定も書いてあるので、Icecastのインストールができていれば、さっきのページ通りにやるだけでストリーミングができてしまう。

ちょっと戸惑った点はedcastで設定するマウントポイントをサーバー側で設定する必要があるかなと思ったけど、これは任意で構わないみたい。

windowsマシンにマイクを接続すれば、ネットラジオが簡単にできる。

CoTVとの連携も考えてみたり。

Icecastのクライアントである「ices2」ユーティリティを使えば、サーバー内のmp3などの音声ファイルを任意にストリーミング配信できるみたい。

<2009/09/14 追記>
icesをコンパイル、インストールしてみたので、そちらの記事も参考に。

ちなみにices2はoggファイルのみ対応。mp3をストリーミング再生するにはices0を使う必要がある(ことが実際やってみて分かった)。

2009年8月6日木曜日

Icecastのコンパイルとインストール

動画をストリーミングするにはCoTVを使うけど、音楽(mp3, oggなど)をストリーミング配信するには何がいいだろうと、オープンソースのIcecastを教えてもらったのでコンパイル→インストールしてみた。

環境はCentOS 5.3

参考にしたのは次のサイト
Icecastで行う音楽ファイルの独自ブロードキャスト

必要なソフトのインストール。
# yum install libxslt-devel libogg-devel libvorbis-devel vorbis-tools libshout-devel libtheora-devel speex-devel

kernel-develとかGCCとか怒られたら適宜対応。あとでREADMEを見て気付いたけどlibshout-develはいらないかも。

コンパイルとインストール
# tar xzvf icecast-2.3.2.tar.gz
# cd icecast-2.3.2
# ./configure
# make
# make install

設定ファイルは/usr/local/etc/icecast.xml

authenticationノードのpasswordは適宜変えておく。

# icecast -c /usr/local/etc/icecast.xml

で起動してみると、rootで起動すべきではないというのとログファイルが書き込めないとエラーが出るので、icecast.xmlで実行ユーザーを変更

<changeowner>
    <user>apache</user>
    <group>apache</group>
</changeowner>

ログは
# mkdir /var/log/icecast
# chown apache /var/log/icecast

<logdir>/var/log/icecast</logdir>

一応hotnameも設定しておく

<hostname>hoge.jp</hostname>

# icecast -c /usr/local/etc/icecast.xml

で無事起動したみたい。

http://<サーバーアドレス>:8000/

にアクセスするとデフォルトの画面が参照できる。

image

起動スクリプトがどっかにあるだろうと探したけど見つからない。

なのでfedora core のRPMに入っていたのを参考に作成。

#!/bin/sh
#
# icecast      This shell script takes care of starting and stopping
#              the icecast multimedia streaming systen.
#
# chkconfig: - 85 15
# description: icecast is a multimedia streaming daemon. It is used to \
#              relay and offer multimedia streaming content.
# processname: icecast
# pidfile: /var/run/icecast/icecast.pid

DAEMON=/usr/local/bin/icecast
CONFIGFILE="/usr/local/etc/icecast.xml"

# Source function library.
. /etc/rc.d/init.d/functions

[ -x $DAEMON ] || exit 0

# See how we were called.
case "$1" in
  start)
    # Start daemon.
    echo -n $"Starting icecast streaming daemon: "
    daemon "$DAEMON -b -c $CONFIGFILE > /dev/null"
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/icecast
    ;;
  stop)
    # Stop daemon.
    echo -n $"Shutting down icecast streaming daemon: "
    killproc icecast
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/icecast
    ;;
  status)
    status icecast
    RETVAL=$?
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  reload)
    echo -n $"Reloading icecast: "
    killproc icecast -HUP
    RETVAL=$?
    echo
    ;;
  condrestart)
        [ -f /var/lock/subsys/icecast ] && restart || :
        ;;
  *)
    echo $"Usage: $0 {start|stop|status|restart|reload}"
    RETVAL=1
    ;;
esac

exit $RETVAL

これを/etc/rc.d/init.d/icecastに保存して
# chmod 755 /etc/rc.d/init.d/icecast

起動してみる
# /etc/rc.d/init.d/icecast start

再起動時にも自動起動するには
# chkconfig --add icecast
# chkconfig icecast on

次回はwinamp+edcastとの連携

<2009/09/14 追記>
Icecast Serverに接続するクライアントユーティリティIceSのコンパイルとインストールを書いたのでそちらの記事も参考に。

2009年8月5日水曜日

うちの兄貴が嫁を連れてくるらしい

たまに行方不明(音信不通)になる兄貴が、この夏に嫁を実家に連れてくるらしい。

実家は大騒ぎ+大喜び。

兄弟初の結婚だし。

どんな嫁さんかちょっと楽しみ。兄貴の心境を察すると、さくっと会わせてさくっと帰りたいと思うが、うちの親がいろいろめんどくさいイベントを考えてそう。

会う人会う人に「やっとうちの○樹がお嫁さんを・・・」と言ってると思う。

田舎は話題が少ないからねー

ほっとくと式の段取りとかも勝手に決まっているかも。

 

お兄様へ。

先に手を打たないと、いろいろめんどくさいよ。

優しい弟より

2009年8月4日火曜日

OpenSSLで認証局(CA)構築とApache+mod_sslでサーバ認証

前に書いた続き。実際に認証局を構築してApacheサーバから発行した証明書に署名してインストールをやってみた。環境はCentOS5.3

流れは

  1. 自前の認証局(CA)で証明書(CACERT)を作成(3のときに実行しても良いけど、認証局がサーバより先にあるというのが一般的なので)
  2. Apacheサーバで秘密鍵(Key)証明書署名要求(CSR)を作成
  3. 自前の認証局で証明書署名要求(CSR)に署名し証明書(CERT, certificate)を作成
  4. 証明書(CERT)と秘密鍵(Key)をApacheサーバにインストール
  5. クライアントのブラウザに自前の認証局の証明書(CACERT)をインストールして信頼させる

という感じ。ここのサイトなどを参考に。
ベリサインなどのWebTrust認証局にサーバ証明書を発行してもらったときは2と4の作業だけで済む(1と5は既に終わっていて、3は申請するだけ)。

 


1.自前の認証局(CA)で証明書(CACERT)を作成

証明書(CACERT)を作る便利なシェルスクリプトがあるので、それを利用する。これを利用すると秘密鍵(CAKEY)の作成から一括でできる。

$ cd /etc/pki/tls/misc/
$ ./CA –newca

Verifying - Enter PEM pass phrase:(CA用パスフレーズ)
Country Name (2 letter code) [GB]:JP
State or Province Name (full name) [Berkshire]:Aichi
Locality Name (eg, city) [Newbury]:Nagoya
Organization Name (eg, company) [My Company Ltd]:Hoge
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:www.hoge.com
Email Address []:info@hoge.jp

A challenge password []:(未入力でOK)
An optional company name []:(未入力でOK)

Enter pass phrase for ../../CA/private/./cakey.pem:(CA用パスフレーズ)

これで
CA証明書(CACERT): /etc/pki/CA/cacert.pem
CA秘密鍵(CAKEY): /etc/pki/CA/private/cakey.pem
ができた。つまり、サーバからの署名要求に応えることができる認証局(CA)の準備ができた。

やり直す場合はCAフォルダごと削除する
$ rm –rf ../../CA

lampp環境の場合は下記を参照

$ cd /opt/lampp/bin

opensslがインストールされている状態で実行すると別のcnfファイルを参照するのでCAを編集する。

$ vi ./CA

$REQ="./openssl req $SSLEAY_CONFIG";
$CA="./openssl ca $SSLEAY_CONFIG";
$VERIFY="./openssl verify";
$X509="./openssl x509";
$PKCS12="./openssl pkcs12";

$ cd /opt/lampp/bin
$ ./CA –newca

入力する情報は上に同じ

CA証明書(CACERT): /opt/lampp/bin/demoCA/cacert.pem
CA秘密鍵(CAKEY): /opt/lampp/bin/demoCA/private/cakey.pem

 


2.Apacheサーバで秘密鍵(Key)証明書署名要求(CSR)を作成

今度は、サーバから認証局(CA)に署名してもらうための書類を生成。ベリサインやグローバルサインのページでもこの編は詳しくやり方が載っている。
まずはapacheでOpenSSLを使えるようにするモジュールmod_sslをインストール
$ yum install mod_ssl
サーバ側の作業は別ディレクトリで行う
$ cd /etc/httpd
$ mkdir ssl
$ cd ssl

秘密鍵(Key)の作成
$ openssl genrsa -des3 -out ./key.pem 1024
証明書署名要求(CSR)の作成
$ openssl req -new -key ./key.pem -out ./csr.pem 

image

Lamppで作業することも多いので、Lamppの場合は下記を参照

$ cd /opt/lampp/bin
秘密鍵(Key)の作成と証明書署名要求(CSR)
$ ./CA –newreq

Enter PEM pass phrase:(サーバー用パスフレーズ)

Country Name (2 letter code) [GB]:JP
State or Province Name (full name) [Berkshire]:Aichi
Locality Name (eg, city) [Newbury]:Nagoya
Organization Name (eg, company) [My Company Ltd]:Hoge
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:suganuma
Email Address []:

A challenge password []:(未入力でOK)
An optional company name []:(未入力でOK)

 


3.自前の認証局で証明書署名要求(CSR)に署名し証明書(CERT, certificate)を作成

今度はサーバの署名要求(CSR)を認証局(CA)に提出し、実際に署名してもらう。
認証局(CA)で作業するのでディレクトリ移動
$ cd /etc/pki/tls/misc
$ openssl ca -out /etc/pki/CA/certs/cert.pem -infiles /etc/httpd/ssl/csr.pem
ここで

The organizationName field needed to be the same in the
CA certificate (dksg) and the request (Hoge)

と怒られた。organizationNameが一致してないと駄目らしい。この辺はopenssl.confに記述してあるので([policy_match])、openssl.confを変更するかCSRを一致させるように作り直して再実行。
私の場合はopenssl.confのorganizationName=optionalにした。
 image
署名完了。署名済み証明書(CERT)ができた。

lamppの場合は下記を参照

$ cd /opt/lampp/bin
$ ./CA –sign

署名済み証明書newcert.pemが作成される。

 


4.証明書(CERT)と秘密鍵(Key)をApacheサーバにインストール

できた証明書をコピー
$ cp /etc/pki/CA/certs/cert.pem /etc/httpd/ssl/
apacheに教えてあげる
$ cd /etc/httpd/conf.d/
$ vi ssl.conf

SSLCertificateFile /etc/httpd/ssl/cert.pem
SSLCertificateKeyFile /etc/httpd/ssl/key.pem

でapacheを再起動
$ service httpd restart

lamppの場合は下記を参照

できた証明書をコピー
$ cd /opt/lampp/bin
$ cp newreq.pem ../etc/ssl.key/
$ cp newcert.pem ../etc/ssl.crt/

これでlamppを再起動してみる。

$ /etc/rc.d/init.d/lampp restart

起動時にパスフレーズの入力を求めてくるので、サーバー用パスフレーズを入力する。毎回これだとめんどくさいので次のコマンドで入力を省略するキーファイルを作成する。

$ ./openssl rsa -in ../etc/ssl.key/key.pem -out ../etc/ssl.key/key-nopass.pem

apacheのconfファイルに設定

SSLCertificateKeyFile /etc/httpd/ssl/key-nopass.pem

もう一回再起動して確認。

$ /etc/rc.d/init.d/lampp restart

 


5.クライアントのブラウザに自前の認証局の証明書(CACERT)をインストールして信頼させる

ブラウザにインポートできる形式に変換(lamppの場合)

$ ./openssl x509 -inform pem -in demoCA/cacert.pem -outform der -out demoCA/ca.der

これをクライアントにダウンロードしてca.cerとかに名前を変更する。そのあと、IEのインターネットオプション→コンテンツ→証明書でインポートすればインストール完了。署名したURLでサーバにアクセスすると安全な通信ができているように表示されるはず。

・・・firefoxではうまくいったけど、IEでは相変わらず証明書エラー画面が出てしまう。なんでだろう。

ちなみにpkcs12オプションを使うとPKCS#12規格のファイルを作成できる。

$ cd /opt/lampp/bin
$ ./CA –pkcs12

使い方はよく分からない・・・。

最後に注意点

  • 443のポートを空けるのを忘れずに
  • lamppの場合はsslを有効にして起動するのを忘れずに
    # /etc/rc.d/init.d/lampp startssl

 

<参考>

lampp用のCAプログラムの引数は次のページが参考に

Related Posts Plugin for WordPress, Blogger...

Blog Archives