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:
7月 26

自分のTweetをblog形式で表示するOpenPNE3用のプラグインにチャレンジ。
呟きをblogのように日付で整理し月別やリプライ別に検索表示したりできます(実際はまだそこまで作りこんでませんが)。

過去の呟きは全てDBにキャッシュ(過去のツブヤキは最大32,000件まで取得)しているのでTwitter側のレスポンスに左右されることなく動きます。
今回もsymfonyに慣れたいが故の制作ですが、まだまだ思い通りに使いこなすには時間がかかりそうです。

Tagged with:
5月 19

学習目的ですがOpenPNE3のプラグインとしてOAuthプラグインを作ってみました。
え?これで実際何ができるかって。。。
これだけだと単に対応サービスへのアクセス権を得るだけです、具体的には有効なトークン情報をDBへ保存するだけの極々簡素なもの(^^;

後はこのDBに保存されたトークンを使って煮るなり焼くなり好きにしてって感じw
画像はこの情報を使って実際にTwitterのプロフィール情報とGmailのINBOXから情報をひっぱり出してみたよの図です。


Twitter


Gmail

許可するサービスの指定

Twitterの場合はそれそのものがサービスの実体なのですが、Googleの場合は複数のサービスが存在するため、scopeパラメータを使い許可するサービスを指定します。
下の図は、GoogleのOAuthでGmailとCalendarを指定した場合に表示される確認画面です。

Google Buzz

※2010/5/20:追記

この記事を書いた直後、サンフランシスコで開催されているGoogle I/Oでの発表と合わせGoogle Buzzの仕様が更新されBuzzでもOAuthが使えるようになったことをTwitterのTLで知りました、参考までにBuzzのScopeはこんな感じです。

OAuth Scopes

Scope Meaning
https://www.googleapis.com/auth/buzz read and write
https://www.googleapis.com/auth/buzz.readonly read-only access
Tagged with:
3月 07

OpenPNE3.4プラグイン開発チュートリアル」を見ながら淡々とコードを書き進める勉強会、講師は手島屋の中の人でもある http://www.bucyou.net の中の人の川原さん、彼はOpenPNE3オープンソーシャルコンテナのプラグインopOpenSocialPluginの作者でもあります。

さてsymfonyがあまり理解できていない私は、進捗スピード失速中w
墜落寸前かも(^^;できればハッカソンまでになんとか習得したいと思います。
勉強会進捗表 → 手嶋屋社長BLOG

↓ 勉強会の詳しい内容は「さやま ゆき / ゆま」さんのブログを参照w
http://tech.maid-san.org/archives/200
※彼女のブログは過去色々お世話になっております。

勉強会へ参加して思ったこと、OpenPNE3の第一ハードルは開発環境の準備!
多くの人はここで挫けますね、あとは結構ワーニングが出るのですが、殆が出てもOKなモノだったりします、でも上手く動かなかったときにこれらが原因ではないかと不安になります。

この勉強会は毎月定例的に行われており、参加は自由(PC持参)です。
サーバー環境のご相談等、わかる範囲でお答え致しますので、お気軽にお問い合わせ下さい。
Tagged with:
9月 29
※2009/10/20 更新:OpenPNE2/3のバージョンを最新にUP

前回からの続きですが、色々試した結果現状どうもVirtualBoxよりもVMwareの方が安定している感があります、よってVMwareのイメージ(vmx)も作成しましたので公開します。
今回はOpenPNE2(14.1.1)(14.2)とOpenPNE3(1.2)(1.4-dev)が予めインストールされています。

VMwarePlayerはWindows/Linux上で無料で使える仮想マシンです。
Mac OSX上で使う場合は有償となります。VMware Fusion

仕様

VMwarePlayerの設定で、ネットワークアダプタはNATで利用します。
IPアドレスはdhcpなので固定されていません。
CentOS5.3 / PHP5.2.10 / Postfix2.3.3 / MySQL5.1.39 / symfony1.2.8 / OpenSSH4.3p2 / phpMyAdmin3.2.2

  • CentOS管理ユーザ
    • UserID: root / Password: password
  • CentOS一般ユーザ
    • UserID: pne214 / Password: password
    • UserID: pne312 / Password: password
    • UserID: pne301 / Password: password
  • Mysql
    • UserID: root / Password: password

起動

  • VMwarePlayerを起動しcentos53.vmxを選択し起動
  • VMwareのコンソールからログインします。
     UserID: root
     Password: password
  • ipアドレスの確認
     ifconfig

centos-login
 ※緑色の囲み[xxx.xxx.xxx.xxx]がサーバーのIPアドレスですが環境により変化します。

以下を参考にVMwarePlayerを起動しているホストマシンのブラウザからアクセスして下さい。

OpenPNE3

管理者ログイン

  • URL : http://xxx.xxx.xxx.xxx/~pne312/pc_backend.php
  • URL : http://xxx.xxx.xxx.xxx/~pne301/pc_backend.php
  • UserId : admin
  • Password : password

一般会員ログイン

  • URL : http://xxx.xxx.xxx.xxx/~pne312
  • URL : http://xxx.xxx.xxx.xxx/~pne301
  • UserId : sns@example.com
  • Password : password

OpenPNE2

SNS設定(最初の1回だけ行います)

  • URL : http://xxx.xxx.xxx.xxx/~pne214
  • 上記URLにアクセスし設定を行って下さい。

管理者ログイン

  • URL : http://xxx.xxx.xxx.xxx/~pne214/m=admin
  • UserId : SNS設定による
  • Password : SNS設定による

一般会員ログイン

  • URL : http://xxx.xxx.xxx.xxx/~pne214
  • UserId : SNS設定による
  • Password : SNS設定による

Download

centos53pne2pne3.zip :560,369,695バイト (534.41MB)

centos53pne2pne3.zip :717,014,615バイト (683.80MB)

centos53.vmx/centos53.vmdkを任意のフォルダーへ解凍しVMwarePlayerより開いて下さい。

※2009/10/20 更新:OpenPNE2/3のバージョンを最新にUP
Tagged with:
9月 14

動作保障はできませんが折角作ったので公開します。プライベートなテスト環境としてOpenPNE3を自由に動かしてみたいという方は自由にお持ち帰り下さい。
VirtualBox vdi形式 centos53pne312.zip 522.78MB

Virtualbox がインストールされている環境であれば仮想マシンを新規作成し追加するだけで使えます。

OpenPNE3.1.2がインストール済みです(インストール中ワーニング出ましたが)ログインは問題なく可能、一般的なLAMP環境なのでOpenPNE2やMyNETSその他OSSの検証用にも使えると思います。

  • CentOS 5.3
  • PHP 5.3.0
  • MySQL 5.1.38
  • symfony1.2.8
  • python 2.4.3
  • OpenSSH 5.2p1
  • Postfix 2.3.3
  • phpMyAdmin 2.11.9.5
  • OpenPNE3.1.2
  • その他PNE3に必要なPHPエクステンション入ってます。

=== CentOSの設定 ===

IP Address: 192.168.56.101

rootユーザ
user: root
password: password

pne312ユーザ
user: pne312
password: password

MySQL
user: root
password:(no pass)

=== OpenPNE3の設定 ===

※OpenPNE3へのアクセス

http://192.168.56.101/~pne312/

user: sns@example.com
password: password

※管理画面

http://192.168.56.101/~pne312/pc_backend.php

user: admin
password: password

※注意
何故か画像のアップロードで失敗しますがインストール時のワーニングと合わせて現在調査中です。

仮想マシンの作成方法
Virtualbox setup1

Virtualbox setup2
 名前 : centos53(適当に)
 オペレーティングソシテム : Linux
 バージョン : Red Hat

Virtualbox setup3
メインメモリーのサイズ:256K~
 *デフォの256Kでも起動します、私は512Kにて使用中

Virtualbox setup4

Virtualbox setup4

Virtualbox disk mount1
 追加ボタンをクリック
Virtualbox disk mount2
 解凍したvidを追加し選択

ネットワー設定
Virtualbox network1
 アダプタ1 : ホストオンリー(ホストとの通信のため)

Virtualbox network2
 アダプタ2 : NAT(外部との通信のため)

———
Vista, XP, Mac OS X 10.6 で動作確認

Tagged with:
preload preload preload