OpenPNEはフリーのSNSでMySQL+PHPで実現でき携帯からもアクセスできるソフトである。そこでVine4.xにインストールしてみた。ここからDownloadしてくる。使用するソフトはApache,php,MySQLなので以下のものが入っているかCheckし、インストールされていないときはrpmでインストールを行う
# apt-get install MySQL # apt-get install MySQL-client # apt-get install php5-apache2-5.2.5-0vl1
など
php.ini
[Vine] output_buffering = Off expose_php = Off ;;memory_limit = 32M memory_limit = 128M variables_order = "GPCS" ;;default_charset = EUC-JP <==コメントアウト extension_dir = /usr/lib/php5 allow_url_include = Off sendmail_path = /usr/sbin/sendmail -t -i session.save_path = "/var/php5/session" session.use_only_cookies = On session.use_strict_mode = On session.entropy_file = /dev/urandom session.entropy_length = 32 session.hash_function = 1 ;;mbstring.language = Japanese <==コメントアウト ;;mbstring.internal_encoding = EUC-JP <==コメントアウト ;;mbstring.http_input = auto <==コメントアウト ;;mbstring.http_output = pass <==コメントアウト ;;mbstring.encoding_translation = On <==コメントアウト
とくに最後の5行をコメントアウトしないと日本語表示はできるが、日本語入力が繁栄されない
MySQLのデフォルトをUTF-8に変更
my.cnf
[client] default-character-set = utf8 #password = your_password
# The MySQL server [mysqld] default-character-set=utf8 port = 3306
[mysql] default-character-set = utf8 no-auto-rehash
# cd /var/www # tar zxvf /usr/local/src/OpenPNE-2.10.4.tar.gz # mv OpenPNE-2.10.4 OpenPNE # chown -R apache.apache OpenPNE # chmod -R 777 OpenPNE/var/
MySQLの設定
# mysql -u root -p mysql> grant all privileges on openpne.* to openpne@localhost identified by '******'; Query OK, 0 rows affected (0.03 sec) mysql> create database openpne CHARACTER SET UTF8; Query OK, 1 row affected (0.00 sec)
openpneデータベース初期設定
# mysql -u openpne -p openpne \ < /var/www/OpenPNE/setup/sql/mysql41/install/install-2.10-create_tables.sql # mysql -u openpne -p openpne \ < /var/www/OpenPNE/setup/sql/mysql41/install/install-2.10-insert_data.sql
ヘッダー部に「グループウェア機能はこちら → 施設予約 予定登録 グループ」を表示するには
# mysql -u openpne -p openpne \ < /var/www/OpenPNE/setup/sql/mysql41/option/pnebiz-header.sql
ただしこのときは設定画面で「SNS設定」でBIZ使用設定を使用するにしなとページが見つからないエラーが出る
# cd OpenPNE/ # cp config.php.sample config.php
ランダムな56桁の文字列を取得※OpenPNE設定ファイル編集で使用
# apt-get install expect (mkpasswdコマンドがない場合) # mkpasswd -l 56 8ramMdfTxykhprvytrfliesxzoyqwqyxfpqefkt@imqoc0unipdtypfa
config.php
OPENPNE_URLとOPENPNE_SSL_URLをIPではなくhttp://abc.ne.jp/openpne/のように指定すると携帯でLoginできない(このバージョン2.10.4だけかもしれないが)
// Web上の絶対パス(URL)(最後にスラッシュを付ける) define('OPENPNE_URL', 'http://192.168.1.1/openpne/'); // DBサーバ設定 $GLOBALS['_OPENPNE_DSN_LIST']['main'] = array( 'dsn' => array( 'phptype' => 'mysql', 'username' => 'openpne', <==DB 'password' => '******', 'hostspec' => 'localhost', 'database' => 'openpne', 'new_link' => false, ), ); // DB暗号化キー(56バイト以内のASCII文字列) define ('ENCRYPT_KEY', '8ramMdfTxykhprvytrfliesxzoyqwqyxfpqefkt@imqoc0unipdtypfa'); ← ランダムな56桁の文字列を指定 // メールサーバードメイン // 携帯メール投稿の宛先などのドメイン名に使われる define('MAIL_SERVER_DOMAIN', 'mie-chukyo-u.ac.jp'); ← メールサーバードメイン名を指定 //--- オプション設定 // デバッグモード // 0: off ... エラー非表示、エラーログを記録する // 1: on ... エラー表示、エラーログを記録しない // 2: on ... 1 + Smartyデバッグコンソール // define('OPENPNE_DEBUGGING', 1); define('OPENPNE_DEBUGGING', 0); /// // SSL設定 /// // 特定ページだけのSSLを使用するかどうか //define('OPENPNE_USE_PARTIAL_SSL', false); define('OPENPNE_USE_PARTIAL_SSL', true); // SSL用URL (Cookieの値を引き継ぐため、OPENPNE_URL と同一ドメイン・パスである必要があります) //define('OPENPNE_SSL_URL', 'https://sns.example.com/'); define('OPENPNE_SSL_URL', 'https://192.168.1.1/openpne/'); // SSLを使用することが必須であるアクションリスト $GLOBALS['_OPENPNE_SSL_REQUIRED'] = array( 'admin' => array( <==追加 'page_login', <==追加 ), <==追加 'pc' => array( 'page_o_regist_prof', 'page_o_regist_prof_confirm', 'do_o_regist_prof', 'ktai' => array( // 'page_o_login', 'do_o_login', 'do_o_easy_login', // 'page_o_login2', 'do_o_update_ktai_address', // 'page_o_regist_pre', 'page_o_regist_input', 'do_o_insert_c_member', // 'page_o_regist_end', // 'page_o_password_query', 'do_o_password_query', // 'page_h_config_prof', 'do_h_config_prof_update_c_member', // 'page_h_config_easy_login', 'do_h_config_easy_login', // 'page_h_config_mail', 'do_h_config_mail_insert_c_ktai_address_pre', // 'page_h_pc_send', 'page_h_pc_send_confirm', 'do_h_pc_send_insert_c_pc_address_pre', // 'page_h_config_password_query', 'do_h_config_password_query_update_password_query', // 'page_h_config_password', 'do_h_config_password_update_password', // 'page_h_config', 'page_h_invite', 'do_h_invite_insert_c_invite', ));
携帯(ktai)だけコメントアウトはSSLのおれおれ認証で、auなどが使用できない場合やsoftbankでlogoutでエラーするのでSSLを使用しない方法で回避ちょっとセキュリティは無視
地図を利用するためGoogle Maps API keyを取得してconfig.phpの455行くらいにセット
/// // Google Maps API key // http://www.google.com/apis/maps/ から取得 /// define('GOOGLE_MAPS_API_KEY', 'ABQIAAAAlAldUyiDHCoKI_79WJEOoBQViC3-u1-ZYzSYkS3SvbWG7lPuqxQCcQ4hg6Tq_DXY_Id5sOw25uq1pg');
OpenPNE用CRON登録
# crontab -e 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
SNS管理者宛メールの転送設定
/etc/postfix/aliases
sns: webmaster
メール投稿設定(携帯電話からも使用する場合のみ)
携帯電話からのメール投稿を受け付けるように設定
ただし、PCRE形式の正規表現が利用できるように以下のpostfix-pcreをインストールする必要がある。忘れると、メールを他のサーバから受信できなくなるので注意。
オプションの "pcre" マップタイプを使うと、\s は空白で \S は非空白文字といった、 PCRE 形式の表記法で正規表現が指定できるようになる。
# apt-get install postfix-pcre 準備中... ########################################### [100%] 1:postfix-pcre ########################################### [100%] Adding pcre map entry to /etc/postfix/dynamicmaps.cf
/etc/postfix/aliases.regexpを作成
/^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"
/etc/postfix/main.cf
alias_maps = hash:/etc/aliases, pcre:/etc/postfix/aliases.regexp ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^追加
# /etc/rc.d/init.d/postfix restart
cronから余計なメールを出さないようにする
# cd OpenPNE/bin
tool_send_dairy_news.cronを修正
#! /bin/sh cd $1 2 -f tool_send_daily_news.php > /dev/null ^^^^^^^^^^^^追加
以下のファイルを作成し、OpenPNEのアクセスパスを指定する
/etc/apache2/conf.d/openpne.conf
Alias /openpne /var/www/OpenPNE/public_html
# /etc/rc.d/init.d/apache2 reload
http://サーバー名/openpne/?m=setupへアクセス
必ず下記の設定をおこなってからセットアップを実行してください。 setup/sql/mysql4x/install-2.10-create_tables.sql の実行 setup/sql/mysql4x/install-2.10-insert_data.sql の実行 config.php の設定 一度、セットアップを実行した後でこのページを表示することはできません。 セットアップをやり直したい場合はデータベースを空にしてからこのページへアクセスしてください。
というメッセージが出るがすでにopenpneデータベース初期設定を行っているのでOK
login画面
https://192.168.1.1/openpne/?m=pc
管理画面
https://192.168.1.1/openpne/?m=admin&a=page_login
あとはGUI上から設定
携帯から
「設定変更」で携帯からアクセスできるようにするには、携帯にメールを送り一度その携帯からloginしてからでないと単にhttp://(サーバ)/openpne/?m=ktaiでアクセスして携帯のアドレス、パスワードを入れてもloginできない。
また、一度loginすると先の携帯メールを設定するページに削除画面が追加されるので確認できる
簡単ログイン
SoftBankの3Gではどうも製造番号がOFFなので製造番号通知をONにする
以下のようなページもあった。UIDを取得するらしいが、今回は設定しない。
softbank3G携帯ではUIDが取得できるため、こちらを取得すればログインができるはずです。 試しに実装してみました webapp/lib/OpenPNE/KetaiID.phpの77行目 // SoftBank elseif (!strncmp($ua, 'SoftBank', 8)) { $pieces = explode('/', $ua); $piece_sn = explode(' ', $pieces[4]); $sn = array_shift($piece_sn); if (!strncmp($sn, 'SN', 2)) { $id = $sn; } } を // SoftBank elseif (!strncmp($ua, 'SoftBank', 8)) { $pieces = explode('/', $ua); $piece_sn = explode(' ', $pieces[4]); $sn = array_shift($piece_sn); if (!strncmp($sn, 'SN', 2)) { $id = $sn; }else{ // 固体番号が取得できない場合にUIDを取得 $headers = apache_request_headers(); if ($headers["x-jphone-uid"]) { $id = $headers["x-jphone-uid"]; } } }
お知らせ->フリーページ管理でログイン前、ログイン後のHTMLページを作成できるがそのページへのリンクは
<a href="./?m=pc&a=page_o_free_page&c_free_page_id=1" target="_blank">ほげほげ</A>
とする。idでページを区別する
Map表示設定時に緯度経度が必要なのでそのページを「コミュニティ設定変更」に追加
webapp/modules/pc/templates/c_edit.tpl
305行前後
<div class="padding_s"> 緯度:<input class="text" name="map_latitude" type="text" size="14" \ value="({$c_commu.map_latitude})" id="lat"> ^^^^^^^<==追加 経度:<input class="text" name="map_longitude" type="text" size="14" \ value="({$c_commu.map_longitude})" id="lng"> ^^^^^^^<==追加 拡大率:<input class="text" name="map_zoom" type="text" size="4" value="({$c_commu.map_zoom})" maxlength="2"><br> (以下のjavascriptを追加 <script type="text/JavaScript"> <!-- function winOpen(theURL,winName,features) { //v2.0 window.open(theURL,winName,features); } //--> </script> <A HREF="#" onclick="winOpen('/mapinput/input.php','newWindow', \ 'scrollbars=yes width=850,height=700')"> \ ここ</A>から、緯度・経度を取得することができます。<BR> <==追加 ※手動設定の場合は、都道府県の選択で「その他(手動設定)」を選んでください。 </div>
/var/www/html/mapinput/input.phpのサンプルは添付
です。
「招待メールドメイン制限」に追加して招待メールを送りその後そのユーザが一度loginすればその後そのドメインを削除してもアカウントは有効だが、login前にそのどメンを制限すると登録ができなくなるのでloginできない (Ver. 2.10.4.2)