MacでWeb開発-(9) XAMPP for MacでSNSを運営(OpenPNE)

 OpenPNEは、PHPで記述されたMixiクローンのSNSシステムで、Apache + PHP + MySQLの環境で動作する。
アドオンによる拡張や、スキンによる表示のカスタマイズが容易なのが特徴だ。
ここでは、XAMPP for MacOS XにOpenPNEをインストールし、SNSを運用する手順を紹介する。
なお、OpenPNEは進化のスピードが速く、2008年5月4日現在、表示用HTMLを大幅に改良した2.12系の開発が進んでいる。
インストール例では、安定版の2.10.5.1を使用しているが、ゼロからインストールする場合は、2.12系でも変わらないはずだ。

screenshot_119.vjUQTxhmdaEl.jpg

使用したシステム
Mac OS X 10.5.2 Leopard
XAMPP for MacOS X 0.7.2
OpenPNE2.10.5.1

運用条件

今回は以下の設定でOpenPNEを運用する。

Mac OS Xのユーザー名 tomoyun
PukiWikiのDocumentRoot /Users/tomoyun/Web/OpenPNE/public_html
ドメイン名 sns.mydomain.jp

データベースの準備

WordPressは、MySQLのデータベースに設定や本文を保存する。
そのための、データベース、ユーザー、パスワードを作成しておく。

今回のデータベース設定

データベース名 myopenpne
ユーザー名 opadmin
パスワード ai08sh76
暗号化キー youaremysunshine

※注意※ パスワードは、自分で必ずオリジナルを考えて設定すること。また意味のある単語は避け、英字と数字の8文字以上の組み合わせにすること。

データベースの作成

XAMPPの管理画面を開く。

http://localhost/

左メニューの「phpMyAdmin」をクリック。phpMyAdminの画面が開く。
screenshot_31.TveqTprXvfVS.jpg

(1) データベース「myopenpne」の作成

phpMyAdminのトップ画面で「データベース」をクリック。
screenshot_74.IYIft5wzxQXm.jpg

データベースの一覧が表示される。
「新規データベースを作成する」の入力欄にデータベース名「myopenpne」を入力。
「作成」をクリック。
screenshot_76.uygV3ko3VL4B.jpg

データベース「myopenpne」が作成され、「myopenpne」の設定画面になる。
左上の「phpMyAdmin」のロゴをクリックして、トップ画面に戻る。
screenshot_77.ENLWFtEK1xm7.jpg

(2) ユーザー「opadmin」の追加

phpMyAdminのトップ画面で「特権」をクリック。
screenshot_78.NUM0SxDgYDuB.jpg

データベースユーザーの一覧が表示される。
「新しいユーザを追加する」をクリック。
screenshot_79.cxHUVb0YllHm.jpg

ユーザー追加画面になるので、ユーザー名、ホスト、パスワードを設定。
screenshot_80.Xls17IQBCNfe.jpg

画面一番下にスクロールして、「実行する」をクリック。
screenshot_81.Hd6fNgKCIuVL.jpg

ユーザーの追加が完了する。
screenshot_82.zaR9ObizFYAB.jpg

画面をやや下にスクロールさせ、「データベースに固有の特権」のセクションを表示させる。
「データベースに特権を追加」のポップアップメニューから「myopenpne」を選ぶか、
空欄に「myopenpne」を入力して、「実行する」をクリック。
screenshot_84.Vt5scS5yDmR1.jpg

ユーザー「opadmin」にデータベース「myopenpne」の特権(操作権)を設定する画面になる。
「すべてをチェックする」で、すべての権限にチェックを入れて、「実行する」をクリック。
screenshot_85.q70I2LMCpJtr.jpg

ユーザー「opadmin」の特権が更新される。
screenshot_86.PI68hU1AhuP2.jpg

これでデータベースの準備は整った。

OpenPNEのインストール

OpenPNEのホームページ

http://www.openpne.jp/

右カラム上部の「最新版のダウンロード」をクリック。
screenshot_71.YR8yjoDS9PXN.jpg

最新安定版の「zip版ダウンロード」をクリック。ダウンロード画面に遷移し、ダウンロードが始まる。
screenshot_72.E9ELal79zjw7.jpg

ダウンロードが完了。
screenshot_73.IBqrCBz88zmL.jpg

「ダウンロード」フォルダの中に「OpenPNE-2.10.5」フォルダが作成される。
screenshot_89.RfBX7pFI5K7j.jpg

フォルダ名を「OpenPNE」に変更し、「Web」フォルダの下に移動する。
screenshot_90.WNfXRxy71UEf.jpg

「config.php.sample」を複製し、ファイル名を「config.php」に変更する。
screenshot_92.j2dTqwN78Ctz.jpg

「config.php」をテキストエディタで編集する。

・7行目の公開URLを「’http://sns.example.com/」から今回の「http://sns.mydomain.jp/」に書き換える。
———————————————————–
// Web上の絶対パス(URL)(最後にスラッシュを付けてください)
define(‘OPENPNE_URL’, ‘http://sns.example.com/’);

// Web上の絶対パス(URL)(最後にスラッシュを付けてください)
define(‘OPENPNE_URL’, ‘http://sns.mydomain.jp/’);
———————————————————–

・11行目から19行目のDBサーバ設定項目を埋める。
———————————————————–
// DBサーバ設定
$GLOBALS[‘_OPENPNE_DSN_LIST’][‘main’] = array(
‘dsn’ => array(
‘phptype’ => ‘mysql’,
‘username’ => ”,
‘password’ => ”,
‘hostspec’ => ‘localhost’,
‘database’ => ”,
‘new_link’ => false,
),
);

// DBサーバ設定
$GLOBALS[‘_OPENPNE_DSN_LIST’][‘main’] = array(
‘dsn’ => array(
‘phptype’ => ‘mysql’,
‘username’ => ‘opadmin’,
‘password’ => ‘ai08sh76′,
‘hostspec’ => ‘localhost’,
‘database’ => ‘myopenpne’,
‘new_link’ => false,
),
);
———————————————————–

・22行目のENCRYPT_KEYを今回の「youaremysunshine」設定する。
———————————————————–
// DB暗号化キー(56バイト以内のASCII文字列)
define(‘ENCRYPT_KEY’, ”);

// DB暗号化キー(56バイト以内のASCII文字列)
define(‘ENCRYPT_KEY’, ‘youaremysunshine’);
———————————————————–
screenshot_93.prBmfRoBeiwE.jpg

「メールサーバドメイン」も必須になっているが、携帯電話から投稿しないのなら必要ないので、ここでは省略する。
設定ができたら保存して終了。

varフォルダ以下をApache/PHPから書き込み可能にする

OpenPNEは、「OpenPNE/var」フォルダ以下に高速化のためのキャッシュファイルを生成する。
そのため、「OpenPNE/var」フォルダ以下をApache/PHPから書き込み可能に設定しなければならない。

OpenPNE/varフォルダを選択。
screenshot_95.f3iKlZhqcVxl.jpg

「ファイル」メニューの「情報を見る」もしくは、Command+Iキーで、varフォルダの情報ウィンドウを表示。
「共有とアクセス権」をクリックして詳細を表示。
screenshot_97.xguICnAZNNZp.jpg

錠アイコンをクリックしてパスワードを入力し、変更可能にする。
「everyone」を「読み/書き」に変更。
歯車アイコンを押してショートカットメニューを表示し、「内包している項目に適用」を選択。
screenshot_98.RsYdIlE2j1gL.jpg

確認ダイアログが出るので「OK」をクリック。
screenshot_99.NGfWoT3rrgmg.jpg

データベースの初期化

現状のOpenPNEでは、データベースの初期化を手動で行う必要がある。
初期化に必要なSQLは「OpenPNE/setup/sql/mysql41/install/」以下にある2つのファイルだ。
screenshot_103.Quv21X2uHgid.jpg

「ターミナル」で新規ウィンドウを開き、以下のコマンドを入力する。
—————————————
$ cd Web/OpenPNE/setup/sql/mysql41/install/
$ /Applications/xampp/xamppfiles/bin/mysql -u opadmin -p –default-character-set=utf8 myopenpne < install-2.10-create_tables.sql
Enter password: (opadminのパスワード「ai08sh76」を入力)
$ /Applications/xampp/xamppfiles/bin/mysql -u opadmin -p –default-character-set=utf8 myopenpne < install-2.10-insert_data.sql
Enter password: (opadminのパスワード「ai08sh76」を入力)
—————————————
(実行例)
screenshot_106.moECIJy47EuZ.jpg

ApacheのVirtualHostの設定

VirtualHostの設定ファイル「/Applications/xampp/etc/extra/httpd-vhosts.conf」に、OpenPNEのVirtualHostを追加する。

OpenPNEのVirtualHost
———————————————————–
<VirtualHost *:80>
ServerAdmin tomoyun@mydomain.jp
DocumentRoot /Users/tomoyun/Web/OpenPNE/public_html
ServerName sns.mydomain.jp
ErrorLog logs/sns.mydomain.jp-error_log
CustomLog logs/sns.mydomain.jp-access_log common
</VirtualHost>

———————————————————–

(設定例)
screenshot_108.d3Ur4RjiSvyo.jpg
screenshot_102.DeJa9Q23rc4a.jpg

上の画面の設定は、「MacでWeb開発-(8) XAMPP for MacでWikiを運営(PukiWiki)」の設定に追記をした状態。
VirtualHostの設定の詳しい点については、以下を参照して欲しい。

MacでWeb開発-(6) XAMPP for MacでWebサイトを運営(VirtualHost)

設定が終わったら、「XAMPP Control Panel」でApacheを「Reload」する。
screenshot_64.Z19Cd8P7L1S1.jpg

OpenPNEの初期設定

http://sns.mydomain.jp/にアクセスすると、OpenPNEの初期設定画面になる。

  • SNS名
  • 初期メンバー(1人目のユーザー)のメールアドレスとパスワード
  • 管理ユーザーのアカウント名とパスワード

を、それぞれ設定し、「セットアップ実行」をクリック。

screenshot_109.uhLFEunEpD2o.jpg

セットアップ完了画面になる。
「ログインページへ」をクリックすると、ユーザーのログイン画面に、
「管理画面へ」をクリックすると、SNSシステムの管理画面に行く。
screenshot_110.9Up90kmeK8VY.jpg

ユーザーのログイン画面「http://sns.mydomain.jp/」。
セットアップ画面で入力した「初期メンバー」のメールアドレスとパスワードを入力して、「ログイン」をクリック。
screenshot_111.IeNzj02TZiS2.jpg

SNSのホーム画面になる。
使用方法はMixiとほぼ同じだ。
screenshot_112.pAKjcJB6k6f3.jpg

こちらは管理ユーザーのログイン画面「http://sns.mydomain.jp/?m=admin」。
screenshot_113.QD0R5eTZuFEY.jpg

ログインすると、メンバー管理や、機能の拡張、デザインの変更などができる。
screenshot_114.GZNnQqqzAFm2.jpg

cronによる定期実行の設定

OpenPNEでは、cronを使って、毎日ユーザーに更新情報メールを送ったり、数十分おきにRSSを更新できる。
そのためには、cron用の設定作業が必要になる。

設定ファイル「crontab」の作成。

テキストエディタで以下の内容のファイルを作って、「/Users/(ユーザー名)/etc/crontab」に保存する。
今回は「/Users/tomoyun/etc/crontab」となる。
フォルダ「etc」(/Users/(ユーザー名)/etc)がない場合は作成しておく。

crontabの内容
————————————————————
OPENPNE_DIR=/Users/tomoyun/Web/OpenPNE
BIN_PATH=/Applications/xampp/xamppfiles/bin

# Send notify mail
00 6 * * * root sh $OPENPNE_DIR/bin/tool_send_daily_news.cron $OPENPNE_DIR/bin/ $BIN_PATH/php
00 6 * * * root sh $OPENPNE_DIR/bin/tool_send_birthday_mail.cron $OPENPNE_DIR/bin/ $BIN_PATH/php
00 6 * * * root sh $OPENPNE_DIR/bin/tool_send_schedule_mail.cron $OPENPNE_DIR/bin/ $BIN_PATH/php
# Update RSS
*/20 * * * * root sh $OPENPNE_DIR/bin/tool_rss_cache.cron $OPENPNE_DIR/bin/ $BIN_PATH/php
————————————————————
(作成例)
screenshot_117.iotKzmvYLPOk.jpg

環境変数「OPENPNE_DIR」のユーザー名は、自分の環境に合わせて変更する。
すでにcrontabがある場合は、それに追記するようにする。

次に「ターミナル」で新規ウィンドウを開いて以下のコマンドを入力する。
————————————————————
$ chmod +x Web/OpenPNE/bin/*.cron
$ crontab etc/crontab
————————————————————
(実行例)
screenshot_115.20yJAOksIQ06.jpg

確認は以下のように入力する。
————————————————————
$ crontab -l
OPENPNE_DIR=/Users/tomoyun/Web/OpenPNE
BIN_PATH=/Applications/xampp/xamppfiles/bin

# Send notify mail
00 6 * * * root sh $OPENPNE_DIR/bin/tool_send_daily_news.cron $OPENPNE_DIR/bin/ $BIN_PATH/php
00 6 * * * root sh $OPENPNE_DIR/bin/tool_send_birthday_mail.cron $OPENPNE_DIR/bin/ $BIN_PATH/php
00 6 * * * root sh $OPENPNE_DIR/bin/tool_send_schedule_mail.cron $OPENPNE_DIR/bin/ $BIN_PATH/php
# Update RSS
*/20 * * * * root sh $OPENPNE_DIR/bin/tool_rss_cache.cron $OPENPNE_DIR/bin/ $BIN_PATH/php
————————————————————
(実行例)
screenshot_118.vXHmKzzM3hbp.jpg

これで、SNS運営の基本設定が終わった。
OpenPNEは非常に細かいカスタマイズが可能になっている。詳しくは、OpenPNEのフォルダに含まれている
「セットアップガイド」OpenPNE/setup/OpenPNE_Setup.html
を参照して欲しい。

また、OpenPNEのホームページにも開発者向けの情報が含まれており、複数サーバによる分散や、ほかのWebアプリケーションとのID連携についても書かれている。

以上。

関連記事

関連記事

投稿者:

ともゆき@zubapita

ともゆき@zubapita

作ったモノ 雑誌:月刊アスキー(デスク)、アスキー.PC(副編集長)、インターネットアスキー(編集長)、アスキーPCエクスプローラー(編集長) Webサイト:東京グルメ/ライブドアグルメ、映画を語ろう、本が好き 著書:「Twitter 使いこなし術」「facebook 使いこなし術」 最近は、株式会社ブックウォーカーにて、「BWインディーズ」をやってます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>