8月 20

前回「お名前.comのVPSにOpenPNE3をインストール」の続きで、今回は携帯メールを使って日記や画像を投稿する場合に必要な設定、メール転送エージェント(postfix)のキャッチオールの仕組みと設定について説明します。
通常、誰かにメールを送る場合、送り先のアドレスはその「誰か」固有のアドレスなので変化することはありえません、ところがOpenPNEの携帯メール投稿では、送信先メールアドレスは毎回変化するため、固定のアカウントで待ち構えることができません。

変化するのはメールアドレスの”@”より左側のユーザ部分だけで右側のドメイン部分は固定です。

故にドメイン宛に届いたメールはエラーで返さず全て受信して処理できる設定が必要となります。
編集するファイルは次の2つです。
/etc/postfix/virtual_alias_maps
/etc/aliases

/etc/postfix/virtual_alias_maps に以下の2行を設定。

sns.mydomain.com anything
@sns.mydomain.com openpne_user

※ @sns.mydomain.com 宛に届いたメールは全てユーザ openpne_user へ転送する

システム用のDB(virtual_alias_maps.db)を更新
# postmap /etc/postfix/virtual_alias_maps

/etc/aliases に以下の1行を追加

openpne_user: "| cd /home/snskanri/OpenPNE-3.6Beta3 && php ./symfony openpne:execute-mail-action"

※ openpne_user を | cd /home/snskanri/OpenPNE-3.6Beta3 && php ./symfony openpne:execute-mail-action の別名と定義する

システム用のDB(aliases.db)を更新し、postfixを再起動
# newaliases
# /etc/init.d/postfix restart
以上で携帯電話のメール機能を使った投稿が可能なります。
結果的にドメイン(@sns.mydomain.com) 宛のメールデータは、
cd /home/snskanri/OpenPNE-3.6Beta3 を行った後
php ./symfony openpne:execute-mail-action へと渡されるわけです。
Tagged with:
8月 19

ここから先は、お名前.comのVPSでPHP5.2.13が正常に稼働している前提での説明になります、(現在のところPHP5.2未満やPHP5.3以上では正常に動かない場合があります)、PHP5.2.xへのアップデート方法は [お名前.comのVPSでOpenPNE3(PHP5.2)を使う方法] を参照して下さい。

※PHPで使用可能なメモリー量は初期値で32Mに設定されています、この設定ではインストールができませんので96M程度まであげておいて下さい(/etc/php.iniのmemory_limit=96M)。
OpenPNE3.6Beta3 公式インストールドキュメントはこちら ⇒ OpenPNE3.6 セットアップ手順


それでは次の設定と仮定して話を進めます。

ルート名 root
ルートパスワード pass9999
SNS管理者アカウントユーザ名 snskanri
SNS管理者アカウントパスワード pass1234
SNS管理者ホームディレクトリ /home/snskanri/
運用ドメイン sns.mydomain.com
メールドメイン sns.mydomain.com
OpenPNE3用Database名 dbpne306
Database用ユーザ dbuser
Databaseのパスワード dbpass
  1. データベースの作成
  2. OpenPNE3のダウンロード・展開
  3. OpenPNEセットアップ
  4. サブドメインsnsの作成とweb公開

1、データベースの作成

mysqlへrootアカウントでログイン、データベース(dbpne306)を作成し、ユーザ(dbuser)からアクセスできるようにします。

$ mysql -uroot -ppass9999
CREATE DATABASE dbpne306 DEFAULT CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON dbpne306.* TO dbuser@localhost IDENTIFIED BY 'dbpass' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit

2、OpenPNE3のダウンロード・展開

SNS管理用ユーザ(snskanri)でログインし、OpenPNE3をダウンロード、解凍します。
解凍されたディレクトリ名が長く分かりづらいのでOpenPNE-3.6beta3へリネーム。

$ wget http://github.com/openpne/OpenPNE3/zipball/OpenPNE-3.6beta3
$ unzip openpne-OpenPNE3-OpenPNE-3.6beta3-0-g2192178.zip
$ mv openpne-OpenPNE3-2192178 OpenPNE-3.6beta3

3、OpenPNEのセットアップ

ソースの解凍先ディレクトリに移動、2つの設定ファイルをコピー。

$ cd OpenPNE-3.6beta3
$ cp config/ProjectConfiguration.class.php.sample config/ProjectConfiguration.class.php
$ cp config/OpenPNE.yml.sample config/OpenPNE.yml

OpenPNE.yml の設定値を環境に合わせて変更してください。
※特に base_url と mail_domain はメール投稿、メール配信の際に利用されるので必ず設定をおこなってください。

$ vi config/OpenPNE.yml
######################################
# 基本設定 (Basic)
######################################

# SNS の URL
# URL of the SNS
base_url: “http://sns.mydomain.com

######################################
# メール (Mail)
######################################

# SNS からのメール送信に使うドメイン
# Domain to use for sending e-mail from the SNS
mail_domain: “sns.mydomain.com

# メール投稿アドレスにメンバー毎にユニークなハッシュを含める
# Contain an individual hash for an e-mail address that is used to post something to the SNS
is_mail_address_contain_hash: true

・ ・ ・ 以下略 ・ ・ ・

OpenPNEのインストールタスクの実行。

$ ./symfony openpne:install

Choose DBMS:
– mysql
– pgsql (unsupported)
– sqlite (unsupported)

mysql

Type database username

dbuser

Type database password (optional)

dbpass

Type database hostname

localhost

Type database port number (optional)

(ENTER)

Type database name

dbpne306

Type database socket path (optional)

(ENTER)

The DBMS : mysql
The Database Username : dbuser
The Database Password : ******
The Database Hostname : localhost
The Database Port Number :
Thee Database Name : dbname
The Database Socket :

Is it OK to start this task? (Y/n)

Y

>> installer start clean install
>> sfPearFrontendPlugin Attempting to discover channel “plugins.openpne.jp”…
>> sfPearFrontendPlugin downloading channel.xml ..
>> sfPearFrontendPlugin Starting to download channel.xml (796 bytes)
・ ・ ・ 中略 ・ ・ ・
>> installer installation is completed!

以下のエラーで中断する場合はPHPのメモリー不足です、php.ini の memory_limit の値を 96M 以上に修正後、 OpenPNE-3.6beta3を削除して解凍からやり直して下さい。

PHP Fatal error: Allowed memory size of xxxxxxxx bytes exhausted (tried to allocate xxxx bytes) in /home/snskanri/OpenPNE-3.6beta3/lib/vendor/PEAR/PEAR/Installer.php on line xxx

4、サブドメインsnsの作成とweb公開

コントロールパネル|ドメイン設定|基本設定
対象ドメインがmydomain.comになっていることを確認。
(異なる場合は[変更]ボタンをクリックしてmydomain.comを選択)
+新規登録 をクリックしサブドメイン名の「 sns 」を入力して[次へ][追加]をクリック。
この作業でサブドメイン sns.mydomain.com が有効となります。
お名前.comの仕様では公開ディレクトリが /var/www/vhosts/ドメイン名/httpdocs/ なので、/var/www/vhosts/sns.mydomain.com/httpdocs/ が公開ディレクトリとなります。
この公開ディレクトリ(httpdocs)がOpenPNE-3.6beta3/webを指し示すようにシンボリックリンクを張ります(rootでの作業)。

$ su
パスワード:pass9999
# cd /var/www/vhosts/sns.mydomain.com
# rmdir httpdocs
# ln -s /home/snskanri/OpenPNE-3.6beta3/web httpdocs
# exit

以上、でインストールは完了です。

運用ドメイン(http://sns.mydomain.com) へ以下のログイン情報でアクセスしてみて下さい。

メールアドレス:sns@example.com
パスワード:password

管理画面(http://sns.mydomain.com/pc_backend.php)

アカウント名:admin
パスワード:password
※これらインストール直後のログイン情報(メールアドレス、アカウント名、パスワード)は固定です、公開前に必ず変更してください。

permissionエラーでサイトにアクセスできない場合は、ユーザのホームディレクトリ(/home/snskanri) に実行権がない場合が考えられます、snskanri に実行権を与えて下さい。

$ chmod o+x /home/snskanri

※次回は携帯メールから投稿可能にするための設定(キャッチオール)について説明する予定です。
Tagged with:
8月 18

お名前.com VPSのスペック

・月額 : 2,457円~
・ディスク容量 : 120GB
・メモリー容量 : 1GB~1.5GB
・初期費用 : 5,250円(今だけ無料)
 ※スペック、金額等の詳細はこちらで確認 ⇒
そもそもVPSって何? と思っている方もいるかもしれませんので軽く説明を。

VPSとは

【Virtual Private Server】(仮想専用サーバ)の略で、サーバーマシンをまるごと一台ソフトウエア的に再現したサービスです。⇒ wiki:バーチャル・プライベート・サーバ

サーバーまるごと一台の機能が自由に使えるので最高管理権限であるrootが使えます、故に必要なミドルウエア(PHP、MySQL、etc)等も自由にインストール可能でメモリー配分も自由です(制限はありますが)。
但し自由にいじれるということはリスクを伴います、危険なアプリを入れたり、間違った設定をすることでサービスが不安定になったり、時にはフリーズしたりすることもあります。
VPSとは専用サーバーと同じで自己管理自己責任が基本なのです。
とはいうものの、最近のVPSはコンパネが用意されていて(コンパネで可能な操作をしている範囲では)、初心者でも比較的簡単に扱えるようになっています、逆に言うとコンパネで用意されている操作以上のこと行うにはLinuxの知識が必要になります。

そしてVPSのもうひとつのメリット(rootが使えるのと同じくらい便利な特徴)は、クリックひとつでリブートや初期化(OSの再インストール)が可能なことです、一般的に専用サーバーではOSの再インストールは有料だし時間もかかります、VPSの場合はクリックして5分も待たずに初期状態のマシンが手に入ります。試行錯誤していてわからなくなったら即初期化!これでもう怖いものナシです(笑)。
※私の場合一日に10回以上初期化したこともあります(お名前さんゴメンナサイ)。

さて、お名前.comのVPSサービスにOpenPNE3をインストールする場合ですが、初期インストールされているPHPのバージョンが低いために、PHPのバージョンを手動で5.2.xまで上げる必要があります、そして多くの人がこの作業で挫折するようです。

お名前.com 初期インストール : PHP5.1.x
OpenPNE3 ターゲットバージョン : PHP5.2.3以上 5.3未満
以下に、私が行った手順を記しておきます。
  1. 一般作業ユーザーの作成
  2. SSHが利用できるようにファイヤーウォールを設定
  3. phpMyAdminのコンパネからの起動設定
  4. お名前.comの自動アップデートを解除しyumを使い自己管理する
  5. PHPを5.2.13へアップデート

1、一般作業ユーザーの作成

常にルートで作業することは危険を伴いますので、作業用のユーザーを作成しそれを利用します。
※ルートで作業したい場合は、まず作業用ユーザーでログインしsuでルートへ切り替えます。
コントロールパネル|システム設定|ユーザー|一般アカウント|新規作成
アカウントタイプ : SSH(FTP)
ユーザー名 : snskanri
パスワード : pass1234
ホームディレクトリ : /home/ユーザー名

2、SSHが利用できるようにファイヤーウォールを設定

コントロールパネル|システム設定|セキュリティー|ファイアーウォールよりSSHを許可

3、phpMyAdminのコンパネからの起動設定

コントロールパネル|データーベース|MySQL|起動する|起動
※phpMyAdminのログインURLは、こちら ←クリックして起動を確認して下さい。

4、お名前.comの自動アップデートを解除しyumを使い自己管理する

コントロールパネル|システム設定|セキュリティ|アップデート|変更|アップデートなし(上級者向け)|次へ|変更
この操作により、yumがインストールされ、自由にyumによるインストールやアップデートが可能になりますが、以下の注意事項も認識しておいて下さい。

【注意事項】
コントロールパネルからのアップデートの適用はできません。
コントロールパネル操作に関して弊社サポート対象外となります。
コマンド操作によるアップデートはサポート対象外となります。
この方法に変更後は、自動アップデート、手動アップデートに変更することはできません。

ターミナルアプリを使い、まずユーザsnskanriでログイン、yumにより操作はroot権限が必要なためログイン後にswitch userでrootに切り替えます。

$ su
password : (ルートパスワード)

とりあえず、現在のソフトウエアを最新のものにアップデートするわけですが、その前にproftpdのアップデートで何故かエラーがでるので削除します(ftpdはvsftpdを使うので不要)。

# yum remove proftpd
# yum -y update

PHPのバージョンの確認とhttpdの起動確認

# php -v
PHP 5.1.6 (cli) (built: Sep 1 2009 22:28:56)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

updateで退避されたphpMyAdminの設定ファイルを復元、Apacheをリスタート

# cd /etc/phpMyAdmin/
# cp config.DIST.inc.php config.inc.php
# /etc/rc.d/init.d/httpd restart

5、PHPを5.2.13へアップデート

# rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

viでutterramblings.repoファイルの作成

# vi /etc/yum.repos.d/utterramblings.repo

次の内容を保存

[utterramblings]
name=Jason Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=0
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
※enabled=0 を指定することで通常のyum update時には無効、--enablerepo=utterramblings 指定時のみ有効。

php-sqlite2の依存関係でエラーが発生するため削除し、php関係とmysqlのアップデート実行

# yum -y remove php-sqlite2
# yum -y --disableplugin=priorities --enablerepo=utterramblings update php mysql php-mcrypt

APC(アクセラレータ)のインストール

# yum -y --disableplugin=priorities --enablerepo=utterramblings install php-apc

PHPのバージョンの確認とhttpdの起動確認

# php -v
PHP 5.2.13 (cli) (built: Jun 2 2010 16:29:01)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies

# /etc/rc.d/init.d/httpd restart

無事5.2.13へアップデートされました。

最後に vsftpd をインストールしておきます。

# yum -y install vsftpd
# vi /etc/vsftpd/vsftpd.conf
vsftpd.conf に以下の記述を追加することでユーザは自分のホームディレクトリ以上に上がれなくなります

chroot_local_user=YES
アイドル時のタイムアウトの秒数を600秒に設定

idle_session_timeout=600
パッシブモードで利用したいので以下の3行も追加

pasv_promiscuous=YES
pasv_min_port=30000
pasv_max_port=31999

※何故30000~31999なのかは、お名前デフォ設定でこのポートが開放されているからです、別のポートを割り当てる場合はiptableを設定して下さい。
注意:コンパネのファイアーウォールを設定を使うと、iptableは上書きされ手動の設定は消されます。

vsftpdを起動させ、自動起動設定ON

# /etc/init.d/vsftpd start
# /sbin/chkconfig vsftpd on

※コントロールパネル|システム設定|サービス管理 からも設定可能


※次回はこの環境にOpenPNE3をインストール方法について説明する予定です。
Tagged with:
12月 22

mixi stationが中々便利なので、OpenPNE Stationを作ってみました。
タスクトレイに収めるクライアントアプリですが、多分最も簡単なのは.NetFrameWorkでしょう、ただ.NetFrameWork2はVista以上でないとデフォルトでインストールされていないので.NetFrameWork1.1かなぁ。。。?などと考えつつも、これしきのアプリにドットネットかよ!って感じで結局WinMainで作ってみました。笑
実は途中でMFCに逃げたのですが、何とかWinMainに戻ってこれました。汗
OpenPNE Station

仕組みはとてもシンプルで、サーバー(OpenPNE)側にXML-RPCサーバーを仕込んであります、それをクライアント(タスクトレイアプリ)が定期的にユーザIDとパスワードで認証しログを覗いて自分のログインタイムよりも新しいアクセスログを見つけて収拾しているだけです、未実装ですが新着メッセージや日記への書き込みなんかも簡単に取れそうですね(これはもうSQLさえ書ければクライアントは表示するだけなので)。

ただしこのバージョン(まだプロトタイプ版です)大きな問題(欠陥)があります!
トレイアイコンのツールチップへ情報を表示してもらうための配列がなんと256バイト固定なのです!、途中で気が付いて。マママジ?( ̄□ ̄;)。。。

typedef struct _NOTIFYICONDATA {
  DWORD cbSize;
  HWND hWnd;
  UINT uID, uFlags, uCallbackMessage;
  HICON hIcon;
#if (_WIN32_IE < 0x0500)
  TCHAR szTip[64];
#else
  TCHAR szTip[128];
#endif
#if (_WIN32_IE >= 0×0500)
  DWORD dwState, dwStateMask;
  TCHAR szInfo[256];
  union {
    UINT uTimeout, uVersion;
  } DUMMYUNIONNAME;
  TCHAR szInfoTitle[64];
  DWORD dwInfoFlags;
#endif
#if (_WIN32_IE >= 0×600)
  GUID guidItem;
#endif
} NOTIFYICONDATA, *PNOTIFYICONDATA;

まぁトレイアイコン用ツールチップですから、大きな情報を表示する用途は想定していないのでしょうけど、ToolTipのバルーン表示に頼らず自前でウインドウを書かないといけないみたいです、ふぅー凹。

2008/12/25 加筆

TrayICONの機能ではなくて、汎用的ツールチップでは文字数256バイトの制限はないようです、でもこのコントロールは何か別のコントロール(例えばボタン)と結びつけて使うのが前提なようで、ボタン上にマウスポインターがホバーしたら自動で表示させるような使い方は簡単なのですが、単独で任意の位置に好き勝手なタイミングで表示したりすることが上手くできないです。
やはり自前で。。。

Tagged with:
8月 31

さてsymfonyまで無事にインストールできたということで、いよいよOpenPNE3本体のインストールに入ります。
基本的なことは全てOpenPNE3開発用ページに書かれていますので、これに従います。

ソースをGET

とりあえず今回インストール用に「pne3」というユーザを作成、そこにOpenPNE3のソースをセッティングしていきます、ユーザ pne3 のホームディレクトリから svn コマンドを入力、リビジョン管理されたファイルをローカルへ取得します。

# svn co https://trac.openpne.jp/svn/OpenPNE3/trunk OpenPNE3_trunk_20080827

  ↓チェックアウトに成功するとこんな感じ

drwx------ 5 pne3 pne3 4096 8月 29 19:36 Maildir
drwxrwxr-x 13 pne3 pne3 4096 8月 30 19:35 OpenPNE3_trunk_20080827
drwxr-xr-x 2 pne3 pne3 4096 8月 29 19:36 public_html

設定ファイルの作成

configディレクトー内の *.sample を .sample なしのファイルにコピー
(ソースディレクトリへ移動後、まとめて.sampleのコピーを作成)

# cd OpenPNE3_trunk_20080827
# ls config/*.sample | sed -e 's/\.sample$//g' | awk '{print "cp "$1".sample "$1}' | sh

 sampleのファイル群が

-rw-rw-r-- 1 config/ProjectConfiguration.class.php.sample
-rw-rw-r-- 1 config/databases.yml.sample
-rw-rw-r-- 1 config/propel.ini.sample

 ↓コマンド適応後(configフォルダー内)

-rw-rw-r-- 1 ProjectConfiguration.class.php
-rw-rw-r-- 1 ProjectConfiguration.class.php.sample
-rw-rw-r-- 1 databases.yml
-rw-rw-r-- 1 databases.yml.sample
-rw-rw-r-- 1 propel.ini
-rw-rw-r-- 1 propel.ini.sample

config/ProjectConfiguration.class.php を編集、##SYMFONY_LIB_DIR## の箇所をsymfony のライブラリ群がインストールされているディレクトリのパスに置換します(例:/usr/share/php/data/symfony)。

# vi config/ProjectConfiguration.class.php

symfonyのバージョン表示(# symfony -V)で表示されるパスに置き換えればよいのではないでしょうか?
私の環境では symfony version 1.1.1 (/usr/share/pear/symfony)でしたので。

require_once ‘##SYMFONY_LIB_DIR##/autoload/sfCoreAutoload.class.php’;
sfCoreAutoload::register();

class ProjectConfiguration extends sfProjectConfiguration
{
  public function setup()
  {
  }
}

   ↓ 編集後 ↓

require_once ‘/usr/share/pear/symfony/autoload/sfCoreAutoload.class.php’;
sfCoreAutoload::register();

class ProjectConfiguration extends sfProjectConfiguration
{
  public function setup()
  {
  }
}

データベースを作成

データベース名 OpenPNE3_trunk_20080827
ユーザー名 (例)pne3
パスワード (例)pne3pass

  まず、symfony側の設定

# symfony configure:database mysql://pne3:pne3pass@localhost/OpenPNE3_trunk_20080827

  実際にデータベースを作成

# mysql -u root -p(要password入力)
mysql> CREATE DATABASE OpenPNE3_trunk_20080827 DEFAULT CHARACTER SET utf8;
mysql> grant ALL PRIVILEGES on OpenPNE3_trunk_20080827.* to pne3@localhost identified by ‘pne3pass’;
mysql> exit

config/databases.yml の編集、最後に「encoding: utf8」を追加

# vi config/databases.yml
all:
  propel:
  class: sfPropelDatabase
  param:
   dsn: ‘mysql://pne3:pne3pass@localhost/OpenPNE3_trunk_20080827′
   encoding: utf8

yml(YAML)表記とはインデント(行頭の半角スペース)を使い階層を表現するためインデントの調整は重要です、なお全角スペースは当然のことながらタブも使用不可です。

データベースのテーブルを構築します

# symfony propel:build-all-load pc_frontend

これで16個のテーブルが自動生成されました

  • admin_user
  • authentication_login_id
  • authentication_pc_address
  • community
  • community_member
  • friend
  • member
  • member_config
  • member_profile
  • navi
  • navi_i18n
  • profile
  • profile_i18n
  • profile_option
  • profile_option_i18n
  • sns_config

 実は[config/schema.yml]というファイルがテーブル定義書です。
  *config/schema.yml の内容(非常にわかりやすいです)

propel:
  member:
    id: ~
    name: { type: varchar(64), required: true }
    is_active: { type: boolean, required: true }
    created_at: ~
    updated_at: ~
  profile:
    id: ~
    name: { type: varchar(64), index: unique, required: true }
    is_required: { type: boolean, required: true }
    is_unique: { type: boolean, required: true }
    form_type: { type: varchar(32), required: true }
    value_type: { type: varchar(32), required: true }
    value_regexp: { type: longvarchar }
    value_min: { type: integer }
    value_max: { type: integer }
    is_disp_regist: { type: boolean, required: true }
    is_disp_config: { type: boolean, required: true }
    is_disp_search: { type: boolean, required: true }
    sort_order: { type: integer }
・・・・ 以下略 ・・・・

因みに最初の項目が「フィールド名」、次が「型」になりますが、idはデフォルトでオートインクリメント,created_at、updated_atはタイムスタンプ型と解釈されるようです。

web公開ディレクトリ(ドキュメントルート)の変更

ここまでで設定は終りですが、apacheのドキュメントルート(現在public_html)とPNEのインストール先フォルダが違うためブラウザーからアクセスできません、一番手っ取り早方法として httpd.conf のバーチャルホストを修正して強引に合わせます。

# vi /etc/httpd/conf/httpd.conf
<virtualhost *:80>
 ServerName user.mydomain.net
 DocumentRoot /home/user/OpenPNE3_trunk_20080827/web
 <directory "/home/user">
  AllowOverride All
 </Directory>
</VirtualHost>

そしてApacheを再起動

# /etc/rc.d/init.d/httpd restart

アクセスしてみる

ログイン画面はこんな様子。
OpenPNE3 Login

さっそくログインしてみましょう。
Login後

管理画面は。
alpha2 管理画面

おや、下の方画像がリンク切れを起こしてます、リンク先を見てみると。。。
/sf/sf_web_debug/images/sf.png
/sf/sf_web_debug/images/config.png
/sf/sf_web_debug/images/comment.png
以下略

これは(OpenPNEではなく)symfonyの「デバックツールバー」が出しているらしく、symfonyのライブラリ参照パスが見つからないため、画像やスタイルシートがロードできずにコケているのでしょう、調べたら、symfony のライブラリは「/usr/share/pear/data/symfony/web/sf」にあったので、これもバーチャルドメイン内でエイリアス (本来はOpenPNEのインストール前に解決しておくべきでしょう)。

symfonyのライブラリのエイリアス

# vi /etc/httpd/conf/httpd.conf
<virtualhost *:80>
 ServerName user.mydomain.net
 DocumentRoot /home/user/OpenPNE3_trunk_20080827/web
 <directory "/home/user">
  AllowOverride All
 </Directory>
 Alias /sf /usr/share/pear/data/symfony/web/sf
</VirtualHost>

そしてApacheを再起動

# /etc/rc.d/init.d/httpd restart

こんどはちゃんとsymfonyのメニューが(上部)表示されました。
正常な管理画面

想像してた以上に簡単でした、OpenPNE3自体のインストールは慣れてしまえば10分くらいでしょうかね。。。

8月 30

今年に入ってから忙しくて、殆どPNEに触っていませんでしたが、本日ちょいと時間が出来たので重い腰を上げPNE3のインストールに挑戦してみました。

今回インストールに使ったサーバーはCentOS5にApache2、MySQL5、PHP5、PEARという構成ですが、OpenPNE3はPHPフレームワークにsymfonyを採用しています、故にPNE3本体のインストールの前にsymfonyのインストールが必要となるわけです(入口から敷居高いのですが。。。苦笑)。

1、PEARを最新版にアップデート
 symhonyをPEARのチャンネルからインストールするためバージョン1.4以上にしておく必要があるので1.4未満の時は以下の方法でアップデート。

# pear upgrade-all
Will upgrade archive_tar
Will upgrade console_getopt
Will upgrade pear
Will upgrade xml_rpc
/tmp/glibctestYXnxji:1:22: error: features.h: そのようなファイルやディレクトリはありませ
  ↑なんだこのエラーは?(とりあえず見なかったことに。汗)

# pear channel-update pear.php.net

2、Symfonyのインストール

# pear channel-discover pear.symfony-project.com
# pear install symfony/symfony
symfony/symfony requires PHP extension “dom”
  ↑ここでもエラーがでましたが、こんどのエラーは見過ごせないです

「php-xml」がないと出るらしいのでそれをインストールし、再度インストールを試みる

# yum install php-xml
# pear install symfony/symfony

 (こんどはエラーでません)

インストールの確認のためにバージョンを表示させてみる

 # symfony -V
 symfony version 1.1.1 (/usr/share/pear/symfony)

どうやら成功したらしいです。(*^ー^*)やっとOpenPNE3 alpha2本体のインストールに取り掛かれます。

9月 17

久しぶりに、携帯から画像付きの日記を書いてみたら、なんとエラーメールが返信されてきました。汗
あれ~。。。なんでだろうメール関係の設定は触ってないのに、原因は[main.cf]の「virtual_alias_maps」の二重定義!!

#openpne専用
virtual_alias_maps = pcre:/etc/postfix/virtual.openpne
#その他
virtual_alias_maps = hash:/etc/postfix/virtual

こんな風に後に追加した「hash:/etc/postfix/virtual」が有効になってOpenPNEは無視されていました。

で、2つを同時に有効にする手段は、わかってみれは簡単な話しで、「カンマで繋げる」のでした。

virtual_alias_maps = pcre:/etc/postfix/virtual.openpne, hash:/etc/postfix/virtual

これの解決に掛かった時間は1日半(10時間以上)。プライスレス。:-)
一夜漬けLinuxサーバー管理者のメッキが剥がれた一例ですね、無知って怖い。。。

preload preload preload