いくつかプラグインをインストールしたのでメモ書き。

ちなみに標準のプラグインを入れるときは,
OpenPNE3まとめwikiリリース情報:バンドルプラグイン から機能を読んで入れるプラグインを選ぶ。
OpenPNE3プラグインリリース情報から最新のリリース内容を確認。(検索ボックスでプラグイン名を検索するとよい。)
プラグインチャンネルサーバに登録されているか確認。(されていれば,コマンドでインストールできる。)
という手順を踏むとよさそうだ。

すべての情報が最新情報とは限らないので,たとえばopDiaryPluginなんかは,①,②だけ見ると1.4.1が最新版かと思うが,③には1.5.1があったりするので注意が必要。(OpenPNE3.8系のスマホ対応版はこれ多いね。)

●opHardeningPlugin

セキュリティ強化のプラグイン。

~/home/miku.moe/OpenPNE> ./symfony opPlugin:install opHardeningPlugin -r 1.0.1
~/home/miku.moe/OpenPNE> ./symfony openpne:migrate --target=opHardeningPlugin

●opAuthSocialPlugin

oneall.com のサービスを使って,twitterやfacebookのアカウントでログインできるようにするためのプラグイン。
別途,oneall.comのアカウント作成と,連携サイトのOAuthアプリの設定も実施。(こちらの設定はそんなに迷うことはない。)

~/home/miku.moe/plugin/opAuthSocialPlugin> git clone https://github.com/tejima/opAuthSocialPlugin.git
~/home/miku.moe/plugin/opAuthSocialPlugin> mv opAuthSocialPlugin opAuthSocialPlugin_0_5_0
~/home/miku.moe/plugin/opAuthSocialPlugin> cp -a opAuthSocialPlugin_0_5_0 ~/home/miku.moe/OpenPNE/plugins/opAuthSocialPlugin
 ~/home/miku.moe/OpenPNE> ./symfony cc

●opCommunityTopicPlugin

先にver 1.0.5.1を入れてみて,そのあとで1.1.2.1の存在に気づいたので,一旦1.0.5.1をuninstallしてから1.1.2.1をinstallしたら,次のSQL文でエラー発生。

SQLSTATE[HY000]: General error: 1005 Can't create table '[db_name].#[sql_connection]' (errno: 121). Failing Query: "ALTER TABLE community_event_image ADD CONSTRAINT community_event_image_post_id_community_event_id FOREIGN KEY (post_id) REFERENCES community_event(id) ON DELETE CASCADE". Failing Query: ALTER TABLE community_event_image ADD CONSTRAINT community_event_image_post_id_community_event_id FOREIGN KEY (post_id) REFERENCES community_event(id) ON DELETE CASCADE

ALTER TABLE [テーブル名] [変更命令] … テーブル変更命令
ADD [列定義] … テーブルに列を追加
CONSTRAINT [名前] [列制約] … 列制約に名前を付ける
FOREIGN KEY ([子カラム名]) REFERENCES 親テーブル名 … 外部キー制約
ON DELETE CASCADE … 親テーブルに対してDELETE命令またはMERGE命令により行削除が行われた際,子テーブルの対応する行も削除するよう指定するオプション

内容的には,community_event_imageテーブルに外部キー制約を設けるSQL文なのだが,error 1005 Can’t create table ( errno: 121 ) というエラーが出ている。
これについてググってみると,

①参照カラムと被参照カラムのデータ型及び長さが同じであること
②作成しようとする外部制約名がデータベース中で一意であること(つまり,他のテーブルで同じ外部制約名を使用していないこと。)

を確認してみると良いということなので調べてみた。

mysql> SHOW CREATE TABLE community_event_image;
| Table                 | Create Table
| community_event_image | CREATE TABLE `community_event_image` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `post_id` int(11) NOT NULL,
  `file_id` int(11) DEFAULT NULL,
  `number` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_number_idx` (`id`,`number`),
  KEY `post_id_idx` (`post_id`),
  KEY `file_id_idx` (`file_id`),
  CONSTRAINT `community_event_image_file_id_file_id` FOREIGN KEY (`file_id`) REFERENCES `file` (`id`) ON DELETE CASCADE,
  CONSTRAINT `community_event_image_post_id_community_event_id` FOREIGN KEY (`post_id`) REFERENCES `community_event` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

どうやら,すでに列制約が定義されているにもかかわらず,同じものを再定義しようとしてエラーになっている模様。

どうしてこうなったのか。
opCommunityTopicPluginのuninstallでうまくいってないところがあるのかな?
てか,もしかしてPluginってuninstallしたらまずいのか!?

試しに,opCommunityTopicPlugin 1.1.2.1をuninstallしてみたら,テーブルそのまま残ってるみたいですね。これを消してやるというか,opCommunityTopicPluginのインストールを始める前の状態に戻してやればいけるかも?

mysqldumpで取っておいたデータに復元しよう。

~/home/miku.moe/OpenPNE> mysql -u [usr_name] [db_name] -p -N -e 'show tables' | while read table; do mysql -u [usr_name] -p -e "drop table $table" [db_name]; done
~/home/miku.moe/OpenPNE> mysql -u [usr_name] [db_name] -p  < filename.dump

そして,再度 install と migrate … うまくいった!
よかった。

●opAlbumPlugin

アルバムが投稿できるようになります。
イベント参加時の写真共有に使えるので必要ですね。

mysqldump -u [usr_name] [db_name] -p > ../db_bak/mysql_[db_name].`date "+%Y%m%d_%H%M%S"`.dump
 ./symfony opPlugin:install opAlbumPlugin -r 1.0.0.1
 ./symfony openpne:migrate --target=opAlbumPlugin
 

●opDiaryPlugin

日記機能ができます。
これもあったらおもしろい日記を書いてくれる人がいそうなので必要ですね。
冒頭にも記載した通り,ver 1.5.1(スマホ対応版)を入れます。

mysqldump -u [usr_name] [db_name] -p > ../db_bak/mysql_[db_name].`date "+%Y%m%d_%H%M%S"`.dump
 ./symfony opPlugin:install opDiaryPlugin -r 1.5.1
 ./symfony openpne:migrate --target=opDiaryPlugin
 

opAshiatoPlugin

あしあと機能ができます。
せっかくなので入れておきます。

mysqldump -u [usr_name] [db_name] -p > ../db_bak/mysql_[db_name].`date "+%Y%m%d_%H%M%S"`.dump
./symfony opPlugin:install -r 1.1.1 opAshiatoPlugin
./symfony openpne:migrate --target=opAshiatoPlugin

●opTimelinePlugin

タイムライン機能を強化するプラグイン。
いいね機能(opLikePlugin)に対応した 1.2.6 が最新バージョンらしい。

mysqldump -u [usr_name] [db_name] -p > ../db_bak/mysql_[db_name].`date "+%Y%m%d_%H%M%S"`.dump
./symfony opPlugin:install -r 1.2.6 opTimelinePlugin
./symfony openpne:migrate --target=opTimelinePlugin

●opLikePlugin

いいね機能です。
リプ書くのは面倒だけど反応返したい時に重宝しますから必要ですよね。

mysqldump -u [usr_name] [db_name] -p > ../db_bak/mysql_[db_name].`date "+%Y%m%d_%H%M%S"`.dump
./symfony opPlugin:install -r 1.2.4 opLikePlugin
./symfony openpne:migrate --target=opLikePlugin

●opBlogPlugin

外部ブログ機能を付けるプラグイン。
日記機能の代わりに自分のブログを公開したい場合に使えるので必要かなと。

mysqldump -u [usr_name] [db_name] -p > ../db_bak/mysql_[db_name].`date "+%Y%m%d_%H%M%S"`.dump
./symfony opPlugin:install -r 1.0.3 opBlogPlugin
./symfony openpne:migrate --target=opBlogPlugin

opAuthMobileUIDPlugin

携帯電話向けの「かんたんログイン」を提供するプラグイン。
スマホになってあまり必要性は感じないけども,試しに入れてみた。

mysqldump -u [usr_name] [db_name] -p > ../db_bak/mysql_[db_name].`date "+%Y%m%d_%H%M%S"`.dump
./symfony opPlugin:install -r 1.3.3 opAuthMobileUIDPlugin
./symfony openpne:migrate --target=opAuthMobileUIDPlugin

●opFavoritePlugin

お気に入り機能。

mysqldump -u [usr_name] [db_name] -p > ../db_bak/mysql_[db_name].`date "+%Y%m%d_%H%M%S"`.dump
./symfony opPlugin:install -r 1.0.1 opFavoritePlugin
./symfony openpne:migrate --target=opFavoritePlugin

●opRankingPlugin

コミュニティの人数ランキングとか表示できる機能。

mysqldump -u [usr_name] [db_name] -p > ../db_bak/mysql_[db_name].`date "+%Y%m%d_%H%M%S"`.dump
./symfony opPlugin:install -r 1.0.1 opRankingPlugin
./symfony openpne:migrate --target=opRankingPlugin

●メモ

あと,備忘録として,部分SSL化の設定は,なぜかログイン後に無限にhomepageにリダイレクトされるようでうまく機能せず。
勉強不足でうまく解決できなかったので,全体をhttpsにすることにして,部分SSLの設定はfalseにしました。

携帯電話IPアドレス帯域リストの更新

最新データへの更新メモ

 ~> cd ~/home/miku.moe/mobile_ip
 ~/home/miku.moe/mobile_ip> wget --no-check-certificate https://github.com/openpne/mobile_ip_list/raw/20160609/3.8/mobile_ip_address.yml
 ~/home/miku.moe/mobile_ip> cp ./mobile_ip_address.yml ~/home/miku.moe/OpenPNE/lib/config/config/mobile_ip_address.yml
 ~/home/miku.moe/mobile_ip> mv ./mobile_ip_address.yml ~/home/miku.moe/mobile_ip/old/mobile_ip_address.2016-06-09.yml
 

●プラグインの適用状況まとめ

プラグイン名 バージョン
opDiaryPlugin 1.5.1
opAshiatoPlugin 1.1.1
opCommunityTopicPlugin 1.1.2.1
opHardeningPlugin 1.0.1
opFavoritePlugin 1.0.1
opAlbumPlugin 1.0.0.1
opTimelinePlugin 1.2.6
opMessagePlugin 1.0.0
opRankingPlugin 1.0.1
opBlogPlugin 1.0.3
opLikePlugin 1.2.4
opAuthMailAddressPlugin 1.3.5
opAuthMobileUIDPlugin 1.3.3
opAuthSocialPlugin
opSkinBasicPlugin

 

OpenPNE 3.8.21に更新したので備忘録。

まず,既存の OpenPNE のディレクトリは「~/home/miku.moe/OpenPNE」です。

●OpenPNE 3.8.21のダウンロード

作業用ディレクトリを作成して,git cloneでダウンロードします。

~> mkdir ~/home/miku.moe/openpne_3_8_21
~> git clone git://github.com/openpne/OpenPNE3.git
~> cd ~/home/miku.moe/openpne_3_8_21/OpenPNE3
~/home/miku.moe/openpne_3_8_21/OpenPNE3> git checkout OpenPNE-3.8.21

●設定ファイルの移行

作業用ディレクトリ内の設定ファイルと,既存の設定ファイルを diff で比較して,必要に応じて patch を当てます。
database.yml と .htaccess はそのまま引き継ぎです。

~/home/miku.moe/openpne_3_8_21/OpenPNE3> cp config/ProjectConfiguration.class.php.sample config/ProjectConfiguration.class.php
~/home/miku.moe/openpne_3_8_21/OpenPNE3> cp config/OpenPNE.yml.sample config/OpenPNE.yml
~/home/miku.moe/openpne_3_8_21/OpenPNE3> cd ~/home/miku.moe/openpne_3_8_21
~/home/miku.moe/openpne_3_8_21> diff -up ~/home/miku.moe/OpenPNE/config/ProjectConfiguration.class.php ./OpenPNE3/config/ProjectConfiguration.class.php > ./config_ProjectConfiguration.class.php.diff
~/home/miku.moe/openpne_3_8_21> diff -up ~/home/miku.moe/OpenPNE/config/OpenPNE.yml ./OpenPNE3/config/OpenPNE.yml > ./config_OpenPNE.yml.diff
~/home/miku.moe/openpne_3_8_21> emacs ./config_ProjectConfiguration.class.php.diff
※差分確認。config_ProjectConfiguration.class.phpは差分なしだったのでpatch不要だった。
~/home/miku.moe/openpne_3_8_21> emacs ./config_OpenPNE.yml.diff
※差分確認。設定項目自体は変わってないみたいなので,そのままpatch。
~/home/miku.moe/openpne_3_8_21> patch ./OpenPNE3/config/OpenPNE.yml < ./config_OpenPNE.yml.diff
~/home/miku.moe/openpne_3_8_21> cp ~/home/miku.moe/OpenPNE/config/databases.yml ./OpenPNE3/config/databases.yml
~/home/miku.moe/openpne_3_8_21> cp ~/home/miku.moe/OpenPNE/web/.htaccess ./OpenPNE3/web/.htaccess

※今回,まだプラグイン関係は触ってなかったので移行していないです。
移行する場合は,OpenPNE/plugin フォルダのうち新しいものをすべてコピーすれば良いらしい。(cpコマンドに次のオプションを付けてコピーすれば良い。-a で再帰+属性保持,-u で新しいもののみ。やったことはないのでやるときは慎重に。)

●更新作業

まず,メンテナンスページに切り替え。
それから SQLdump。
symfonyコマンドでモデル再構築と更新。
うまくできたら,メンテナンスページを削除して元の場所に戻す。(あと,参考用に最新状態をTARにまとめておく)

~/home/miku.moe/openpne_3_8_21> mv ~/home/miku.moe/OpenPNE ~/home/miku.moe/openpne_3_8_20/OpenPNE; mkdir -p ~/home/miku.moe/OpenPNE/web; cp ~/home/miku.moe/ment/index.htm ~/home/miku.moe/OpenPNE/web/index.htm; cp ~/home/miku.moe/ment/.htaccess ~/home/miku.moe/OpenPNE/web/.htaccess; cp -R ~/home/miku.moe/ment/pmtool ~/home/miku.moe/OpenPNE/web/
~/home/miku.moe/openpne_3_8_21> mysqldump -u (username) (DBname) -p > database_before_migrate_20160923.dump
~/home/miku.moe/openpne_3_8_21> cd ~/home/miku.moe/openpne_3_8_21/OpenPNE3
~/home/miku.moe/openpne_3_8_21/OpenPNE3> ./symfony doctrine:build-model
~/home/miku.moe/openpne_3_8_21/OpenPNE3> ./symfony cc
~/home/miku.moe/openpne_3_8_21/OpenPNE3> ./symfony openpne:migrate
~/home/miku.moe/openpne_3_8_21/OpenPNE3> ./symfony plugin:publish-assets
~/home/miku.moe/openpne_3_8_21/OpenPNE3> cd ~/home/miku.moe
~/home/miku.moe> cd ~/home/miku.moe
~/home/miku.moe> rm -r ~/home/miku.moe/OpenPNE; mv ./openpne_3_8_21/OpenPNE3 ./OpenPNE; cp -R ~/home/miku.moe/ment/pmtool ~/home/miku.moe/OpenPNE/web/
~/home/miku.moe> tar zcf ~/home/miku.moe/openpne_3_8_21/OpenPNE3.tar.gz ./OpenPNE

 

 

miku.moe ドメイン取得時は SHA-1 アルゴリズムにより署名されたSSL証明書が主流だったのですが,コンピューターの進歩に伴いSHA-1アルゴリズムでは暗号強度が不足する事態となり,最近はSHA-2アルゴリズムにより署名されたSSL証明書でないと,各ブラウザで接続の安全性を確認できませんと警告が表示されるようになってきました。

さらに,2017年以降は SHA-1 のSSL証明書は各所で受け付けられなくなっていくということで,miku.moeにおいてもSSL証明書をSHA-2アルゴリズムにより署名されたものに更新しました。

ブラウザから https://miku.moe/ へアクセスすると,緑色の鍵付きマークで接続の安全性が確認できるかと思います。

なお,miku.moe で使用しているSSL証明書は「GoGetSSL」というサイトで取得した Comodo Positive SSL という系統の証明書です。

5年契約で18.25USD(約2000円)という,お安いサービスになっていますが,Comodo自体はSSLの世界シェア№1であって,スマホからもガラケーからもちゃんと認識できる確率が高い証明書ということで,選んでいます。

まぁ安いサービスなんで自分で英語のページから証明書の発行や契約をしないといけないし,中間証明書の設定も必要だし,レンタルサーバー側で提携しているグローバルサインのサービスと違って手厚いサポートは期待できませんが,そこらへんが自分でできる人にはこの価格差は大きいのです。

(グローバルサインだと得られる恩恵が全く変わらないのに年額18000円もしますからね。)

SSL接続の敷居は高めですが,慣れればランニングコストは徹底的に抑えられるものなのです。

(SSL設定用に独自IP買っても年額1000円しませんからね。あ,ちなみにmiku.moeの独自IPは末尾が39なのですよ。)

多人数が接続するサービスを展開するなら,年額1000円足らずでできるので,ログイン画面はSSL接続にしておきたいですよね。

さて,SSL証明書の更新も済んだことだし,これからシルバーウィークを活用して環境を整えていこう。