SNS構築(OpenPNE)

最終更新日: 2008.01.31

<<トップページ <<新着情報 <<質問BBS <<逆引き集 <<アンケート <<リンク集 <<サイト内検索 <<ダウンロード <<管理人へメール <<CentOSで自宅サーバー構築

■概要

OpenPNEmixi(ミクシィ)のようなSNS(ソーシャルネットワーキングサイト)を構築する。

Webサーバー+PHPWebサーバー間通信内容暗号化MySQLデータベース、メールサーバー(Postfix編)が構築済であること
ただし、メールサーバーは携帯からメール投稿する場合のみ



■OpenPNEインストール

(1)php-mysqlインストール
OpenPNEはPHPで動作するため、PHPからMySQLデータベースへアクセスするためのパッケージであるphp-mysqlをインストールする
[root@fedora ~]# yum -y install php-mysql ← php-mysqlインストール

(2)OpenPNEインストール
[root@fedora ~]# yum -y install php-gd ← php-gdインストール

[root@fedora ~]# wget http://nchc.dl.sourceforge.net/sourceforge/openpne/OpenPNE-2.10.3.tar.bz2 ← OpenPNEダウンロード

※最新版のURLはダウンロードページで確認すること

[root@fedora ~]# tar jxvf OpenPNE-2.10.3.tar.bz2 ← OpenPNE展開

[root@fedora ~]# mv OpenPNE-2.10.3 /var/www/OpenPNE ← OpenPNE展開先ディレクトリを所定の場所へリネーム移動

[root@fedora ~]# chown -R apache:apache /var/www/OpenPNE/ ← OpenPNEディレクトリ所有者をApache実行ユーザに変更

[root@fedora ~]# chmod -R 777 /var/www/OpenPNE/var/ ← OpenPNEvarディレクトリのパーミションを変更

[root@fedora ~]# rm -f OpenPNE-2.10.3.tar.bz2 ← ダウンロードしたファイルを削除

■MySQL設定

OpenPNEでは、各種データをMySQLデータベース上で管理するため、OpenPNE用のデータベースと、当該データベースへのアクセス用ユーザをMySQLに登録する必要がある。
ここでは、データベース名をopenpne、データベースアクセス用ユーザ名をopenpneとしてMySQLに登録する。
[root@fedora ~]# mysql -u root -p ← MySQLへrootでログイン
Enter password:  ← MySQLのrootパスワード応答
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 78 to server version: 5.0.22

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> grant all privileges on openpne.* to openpne@localhost identified by 'パスワード'; ← openpneユーザ作成
Query OK, 0 rows affected (0.52 sec)

mysql> create database openpne; ← openpneデータベース作成
Query OK, 1 row affected (0.08 sec)

mysql> exit ← ログアウト
Bye

[root@fedora ~]# mysql -u openpne -p openpne < /var/www/OpenPNE/setup/sql/mysql41/install/install-2.10-create_tables.sql
 ← openpneデータベース初期設定(1/2)
Enter password: ← openpneユーザのパスワード応答

[root@fedora ~]# mysql -u openpne -p openpne < /var/www/OpenPNE/setup/sql/mysql41/install/install-2.10-insert_data.sql
 ← openpneデータベース初期設定(2/2)
Enter password: ← openpneユーザのパスワード応答

■OpenPNE設定

(1)OpenPNE設定
[root@fedora ~]# cp /var/www/OpenPNE/config.php.sample /var/www/OpenPNE/config.php ← 設定ファイルをサンプルよりコピー

[root@fedora ~]# mkpasswd -l 56 ← ランダムな56桁の文字列を取得※OpenPNE設定ファイル編集で使用する
※mkpasswdコマンドはこちらを参照
lnfvrfhm4wozwfhkmqyfidt1lve~zfretstdcjVkgRedqrhnqcasioub

[root@fedora ~]# vi /var/www/OpenPNE/config.php ← OpenPNE設定ファイル編集
// Web上の絶対パス(URL)(最後にスラッシュを付けてください)
define('OPENPNE_URL', 'http://fedorasrv.com/openpne/'); ← 変更

// DBサーバ設定
$GLOBALS['_OPENPNE_DSN_LIST']['main'] = array(
'dsn'  => array(
    'phptype'  => 'mysql',
    'username' => 'openpne', ← MySQLに登録したopenpneデータベースアクセスユーザ名を指定
    'password' => 'xxxxxxxx', ← 上記ユーザのパスワードを指定
    'hostspec' => 'localhost',
    'database' => 'openpne', ← MySQLに登録したopenpneデータベース名を指定
    'new_link' => false,
    ),
);

// DB暗号化キー(56バイト以内のASCII文字列)
define('ENCRYPT_KEY', 'lnfvrfhm4wozwfhkmqyfidt1lve~zfretstdcjVkgRedqrhnqcasioub'); ← ランダムな56桁の文字列を指定

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

// デバッグモード
// 0: off ... エラー非表示、エラーログを記録する
// 1: on  ... エラー表示、エラーログを記録しない
// 2: on  ... 1 + Smartyデバッグコンソール
define('OPENPNE_DEBUGGING', 0); ← デバッグモードをoffにする

// 特定ページだけのSSLを使用するかどうか
define('OPENPNE_USE_PARTIAL_SSL', true); ← trueに変更

// SSL用URL (Cookieの値を引き継ぐため、OPENPNE_URL と同一ドメイン・パスである必要があります)
define('OPENPNE_SSL_URL', 'https://fedorasrv.com/openpne/'); ← 変更

// SSLを使用することが必須であるアクションリスト
$GLOBALS['_OPENPNE_SSL_REQUIRED'] = array(
追加(ここから)管理ページへSSL(https)でアクセスするようにする
'admin' => array(
    'page_login',
),
追加(ここまで)

[root@fedora ~]# vi /etc/cron.d/openpne ← OpenPNE用CRON登録
00   6 * * * /bin/sh /var/www/OpenPNE/bin/tool_send_dairy_news.cron     /var/www/OpenPNE/bin/ /usr/bin/php
00   6 * * * /bin/sh /var/www/OpenPNE/bin/tool_send_birthday_mail.cron  /var/www/OpenPNE/bin/ /usr/bin/php
00   6 * * * /bin/sh /var/www/OpenPNE/bin/tool_send_schedule_mail.cron  /var/www/OpenPNE/bin/ /usr/bin/php
*/20 * * * * /bin/sh /var/www/OpenPNE/bin/tool_rss_cache.cron           /var/www/OpenPNE/bin/ /usr/bin/php

[root@fedora ~]# echo sns: webmaster >> /etc/aliases ← SNS管理者宛メールの転送設定
※例としてSNS管理者(sns@fedorasrv.com)宛メールをwebmaster@fedorasrv.comに転送する

[root@fedora ~]# newaliases ← メール転送設定反映

(2)メール投稿設定
携帯電話からのメール投稿を受け付けるように設定※携帯電話からも使用する場合のみ
[root@fedora ~]# vi /etc/aliases.regexp ← 正規表現版aliases設定ファイル新規作成
/^get(@.*)?$/ "|/usr/bin/php /var/www/OpenPNE/bin/mail.php"
/^p[0-9]+-[0-9a-z]{12}(@.*)?$/ "|/usr/bin/php /var/www/OpenPNE/bin/mail.php"
/^t[0-9]+-[0-9a-z]{12}(@.*)?$/ "|/usr/bin/php /var/www/OpenPNE/bin/mail.php"
/^b[0-9]+-[0-9a-z]{12}(@.*)?$/ "|/usr/bin/php /var/www/OpenPNE/bin/mail.php"

[root@fedora ~]# vi /etc/postfix/main.cf ← Postfix設定ファイル編集
alias_maps = hash:/etc/aliases, pcre:/etc/aliases.regexp ← 正規表現版aliases設定ファイルを追加

[root@fedora ~]# /etc/rc.d/init.d/postfix restart ← Postfix再起動
postfix を停止中:                                          [  OK  ]
postfix を起動中:                                          [  OK  ]

(3)OpenPNE設定
デイリーニュースメール送信スクリプトから以下のようなゴミメールがroot宛に送信されてこないようにする。
c_member_id=1<br>
[root@fedora ~]# vi /var/www/OpenPNE/bin/tool_send_dairy_news.cron ← デイリーニュースメール送信スクリプトcron編集
$2 tool_send_dairy_news.php
↓
$2 tool_send_dairy_news.php > /dev/null ← スクリプト出力メッセージを表示しないようにする

■Apache設定

[root@fedora ~]# echo "Alias /openpne /var/www/OpenPNE/public_html" > /etc/httpd/conf.d/openpne.conf
 ← OpenPNE用Aapche設定ファイル作成

[root@fedora ~]# /etc/rc.d/init.d/httpd reload ← Apache設定反映
httpd を再読み込み中:                                      [  OK  ]

以下はバーチャルホストでSSL=httpsでアクセスできるようにする場合のみ
[root@linux ~]# vi /etc/httpd/conf.d/ssl.conf ← WebサーバーSSL設定ファイル編集
#   Per-Server Logging:
#   The home of a custom SSL log file. Use this when you want a
#   compact non-error SSL logfile on a virtual host basis.
CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteLog "logs/rewrite_log"
      RewriteLogLevel 0
      RewriteCond %{HTTP_HOST} !fedorasrv.com$
      RewriteCond %{REQUEST_URI} !^/openpne/ ← 追加
      RewriteRule ^/(.*)?$ http://%{HTTP_HOST}/$1 [L,R]
    </IfModule>
</VirtualHost>

[root@fedora ~]# /etc/rc.d/init.d/httpd reload ← Apache設定反映
httpd を再読み込み中:                                      [  OK  ]

■OpenPNE確認

(1)セットアップ
http://サーバー名/openpne/?m=setupへアクセス

「SNS名」、「初期ユーザ」、「管理用アカウント」を入力して「セットアップ実行」ボタン押下


セットアップ完了

(2)確認
http://サーバー名/openpne/?m=adminで管理ページへアクセス

http://サーバー名/openpne/でトップページアクセス※PC、携帯からアクセス確認



▲このページのトップへ戻る

LPIロゴ Copyright© 2004-2008 fallenangels, All rights reserved.
ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします