※ OpenPNEでSNSを構築するには、当サイトで説明しているPHPとMySQLを導入していることが前提です

ここで説明するOpenPNEはSNSで有名なmixiの様なサイトを構築できることが可能になります。

OpenPNE用のデーターベースとユーザーを作製


# mysql -u root -pxxxxx(rootパスワード) ← rootでmysqlにログイン

mysql> create database snsdb; ← OpenPNE用データーベースsnsdbを作成
Query OK, 1 row affected (0.01 sec)

snsdbデーターベースに接続できるsnsユーザーとパスワードを設定
mysql> grant all privileges on snsdb.* to sns@localhost identified by 'ユーザーsnsのパスワード';
Query OK, 0 rows affected (0.00 sec)

mysql> exit ← 終了
Bye

ユーザーsnsで接続できるか確認します。

# mysql -u sns -pxxxxx(ユーザーsnsのパスワード)

mysql> exit ← 接続が確認できたら終了
Bye

OpenPNE のダウンロードと設定


最新版はこちらで確認

# wget http://downloads.sourceforge.net/openpne/OpenPNE-2.10.5.tar.gz ← ダウンロード

# tar zxfv OpenPNE-2.10.5.tar.gz ← 展開

# mv OpenPNE-2.10.5 /home/httpd/html/OpenPNE ← OpenNEを/homeディレクトリへ移動

# cd /home/httpd/html/OpenPNE ← 移動

# chown -R apache:apache ./ ← アクセス権をapacheに変更
 
# chmod -R 777 ./var/* ← varディレクトリのパーミッション変更

# cp config.php.sample config.php ← 設定ファイルの作成


# vi config.php ← 設定ファイルの編集
 i キー(入力モード)

// Web上の絶対パス(URL)(最後にスラッシュを付けてください)
define('OPENPNE_URL', 'http://xxxxx.com/sns/'); ← 実際に表示させるURLに変更
                                  当サイトでは http://xxxxx.com/sns/でアクセスできるように設定

// DBサーバ設定
$GLOBALS['_OPENPNE_DSN_LIST']['main'] = array(
'dsn'  => array(
    'phptype'  => 'mysql',
    'username' => 'sns', ← snsDBアクセスユーザ名を指定
    'password' => 'xxxxxxxx', ← ユーザsnsのパスワードを指定
    'hostspec' => 'localhost',
    'database' => 'snsdb', ← snsDB名を指定
    'new_link' => false,
    ),
);
// DB暗号化キー(56バイト以内のASCII文字列)
define(’ENCRYPT_KEY’, ‘hefhgehgefhgfdepghpefeahfssdfjssl’); ← 適当な文字列を入力


// メールサーバードメイン
// 携帯メール投稿の宛先などのドメイン名に使われる
define('MAIL_SERVER_DOMAIN', 'xxxxx.com'); ← メールサーバードメイン名を指定

編集したら Esc キー(コマンドモード):wqで保存


# cd ← 戻る

# rm -rf OpenPNE-2.10.5.tar.gz ← ダウンロードファイル削除


openpneデータベース初期設定
# mysql -u sns -p snsdb < /home/httpd/html/OpenPNE/setup/sql/mysql41/install/install-2.10-create_tables.sql
※ MySQL4..0の場合はsetup/sql/mysql40/install/install-2.10-create_tables.sqlを指定

Enter password: ← snsユーザのパスワード応答

# mysql -u sns -p snsdb < /home/httpd/html/OpenPNE/setup/sql/mysql41/install/install-2.10-insert_data.sql
※ MySQL4..0の場合はsetup/sql/mysql40/install/install-2.10-insert_data.sqlを指定

Enter password: ← snsユーザのパスワード応答


メール送信&RSS更新用スクリプトの作成とCronで定期実行


# vi PNE_mail.sh ← メール送信用スクリプトの作成
 i キー(入力モード)

#!/bin/sh

DIR="/home/httpd/html/OpenPNE/bin"

/bin/sh $DIR/tool_send_dairy_news.cron $DIR/ /usr/bin/php > /dev/null 2>&1
/bin/sh $DIR/tool_send_birthday_mail.cron $DIR/ /usr/bin/php > /dev/null 2>&1
/bin/sh $DIR/tool_send_schedule_mail.cron $DIR/ /usr/bin/php > /dev/null 2>&1


記載したら Esc キー(コマンドモード):wqで保存

# chmod +x PNE_mail.sh ← スクリプトに実行権限を付加



# vi PNE_rss.sh ← RSS用スクリプトの作成
 i キー(入力モード)

#!/bin/sh

DIR="/home/httpd/html/OpenPNE/bin"

/bin/sh $DIR/tool_rss_cache.cron $DIR/ /usr/bin/php > /dev/null 2>&1

記載したら Esc キー(コマンドモード):wqで保存

# chmod +x PNE_rss.sh ← スクリプトに実行権限を付加



Cronに登録
# crontab -e ←Cronの編集
移動したら i キー(入力モード)

00 06 * * * /root/PNE_mail.sh ← 毎朝6時にメール送信
*/20 * * * * /root/PNE_mail.sh ← 20分ごとにRSS更新

記載したら Esc キー(コマンドモード):wq で保存

# /etc/rc.d/init.d/crond restart ← Cron を再起動


メールサーバーの設定

※ 携帯版を使用しない場合は以下の設定は不要です。


# vi /etc/postfix/virtual.regexp ← 転送用ファイルをregexpの正規表現で作成

※注意
正規表現は ( ) [ ] . * ? + ^ $ @ といった文字(記号)の手前には \ を付けてエスケープする必要があります。

xxxxx\.comの部分はconfig.phpで設定したメールサーバードメイン名を正規表現で指定

/^get\@xxxxx\.com$/ pne ← 記載 (新規登録 / ログインURL取得)
/^p[0-9]+-[0-9a-f]{12}\@xxxxx\.com$/ pne ← 記載 (プロフィール画像変更)
/^t[0-9]+-[0-9a-f]{12}\@xxxxx\.com$/ pne ← 記載 (コミュニティ掲示板メール投稿)
/^b[0-9]+-[0-9a-f]{12}\@xxxxx\.com$/ pne ← 記載 (日記メール投稿)
/^bc[0-9]+-[0-9a-f]{12}\@xxxxx\.com$/ pne ← 記載 (日記コメントメール投稿)


※OS運ストール時やapt-getでPostfixをインストールした場合regexpの正規表現が可能です
pcre(Perl 互換正規表現)で作成する場合はpostfix-pcreのインストール(apt-get)が必要です。

使用可能な正規表現は下記コマンドで確認が可能
# postconf -m


先ほど作成したファイルをPostfixが読み込めるようにvirtual_mapsへ追加する

# vi /etc/postfix/main.cf ← Postfix設定ファイル編集
virtual_alias_maps = regexp:/etc/postfix/virtual.regexp ← 追記

※既にバーチャル設定を行っている場合
virtual_alias_maps = hash:/etc/postfix/virtual, regexp:/etc/postfix/virtual.regexp ← 追記
# /etc/rc.d/init.d/postfix restart ← Postfix再起動



# vi /etc/postfix/aliases ← 設定ファイル編集

pneユーザー宛のメールをOpenPNEのmail.phpへ渡す
pne: "|/usr/bin/php /home/httpd/html/OpenPNE/bin/mail.php" ←最下部に追記

# postalias /etc/postfix/aliases ← 設定を反映

# grep ^pne /etc/postfix/aliases ← 反映を確認


http://xxxx.com/sns/でアクセスできるようにApacheの設定


# vi /etc/apache2/conf/httpd.conf ← 設定ファイル編集(Apache1.3系の場合は/etc/httpd/conf/httpd.conf)

Alias /sns /home/httpd/html/OpenPNE/public_html ← 最下部に追記
# /etc/rc.d/init.d/apache2 restart ← Apache再起動(1.3系の場合は/etc/rc.d/init.d/httpd restart)
httpdを停止中:                              [  OK  ]
httpdを起動中:                              [  OK  ]

文字化け対策

OpenPNEはUTF-8環境を推奨しているので、当サイトのphp.iniの設定では文字化けが起こる可能性があります。
文字化けが起こった場合は解決策として、下記内容の.htaccessをOpenPNEディレクトリに作成します。

※ .htaccessでPHPの設定を行う場合はApacheの設定で.htaccessを置くディレクトリの
   Optionsの部分はAllを指定してください。


# vi /home/httpd/html/OpenPNE/public_html/.htaccess ← .htaccess作成

下記内容を記載して保存してください。

php_value mbstring.language neutral
php_value mbstring.internal_encoding UTF-8
php_value mbstring.http_output UTF-8
php_value default_charset UTF-8
php_value mbstring.encoding_translation off


初期設定と動作確認



http://xxxxx.com/sns/?m=setup へアクセスをして初期設定を行う

各項目を入力してセットアップ実行で初期設定は完了です。
この画面が出てきたらセットアップ完了です。
http://xxxxx.com/sns/ にアクセスして実際に先ほど設定した初期ユーザーで実際にログインして見る。

携帯電話からも同じURLでアクセスして動作確認を行う。
このような画面が出てきたら上手くログインできています。

※ この画面でエラーが出る場合
Zend Optimizerをインストールしていると何故かログイン画面でエラーが出て
ログインができない場合があります。
私はまさに、この状態でした。

対処法としてはZend Optimizerをアインストールするか、php.iniファイルの
Zend Optimizerの記述の部分をコメントアウトしてApacheを再起動してください。


いまいち原因がわかりませんが対処法がわかり次第、サイトにて報告させていただきます。
http://xxxxx.com/sns/?m=admin にアクセスして管理画面にログインしてみる。

ログインして各種設定を変更して自分専用にアレンジして楽しんでください。


右の画像の?????の部分は文字化け対策を行う前の画像です。
対策後は問題なく表示されておりました。


※ 設置以外の細かい設定に関しての質問は本家の方でお願いします。




Copyright c Vine Linuxで自宅サーバー. 2004 All Rights Reserved.