BlogTop > Archives > 2015年6月 Archive
2015年6月 Archive
« 2015年5月 | 2015年6月 | 2015年7月 »
- レンタルサーバーでのMovableType のオープンソース版の簡単インストール機能を終了する動き 29日
- 今月のいらんことしい(2015年6月) 21日
- メモ: www-rebuilder を使って、任意のテンプレートを再構築 12日
- Feedly 購読者数の取得 2015年6月版 06日
レンタルサーバーでのMovableType のオープンソース版の簡単インストール機能を終了する動き
- 2015年6月29日 16:22
- Last update: Jun 29, 2015 16:22
- MovableType

Movable Type のオープンソース、MTOSがレンタルサーバーでの簡単インストールの機能から外される、といった動きがあります。
- Movable Type 簡単インストール機能提供終了のご案内(2015/06/16 12:00) - レンタルサーバー「heteml(ヘテムル)」
- Movable Type 簡単インストール機能提供終了のご案内 - 2015年06月01日 / 新着情報 / お知らせ - レンタルサーバーならロリポップ!
以前、プロダクトライフサイクルに関して、下記のエントリにて言及していましたが。
流れとしては、現実として必然と申しますか、主要なレンタルサーバ会社で行動がおきていますから、他社も追随されることは予想されます。
すでに理由はそれぞれ示されていますが、まとめると
- Movable Type のライセンスが変更となった
- MTOSの製品ライフサイクル終了日を過ぎて以降、最新版の提供がされなくなる
- これにより、セキュリティパッチが配布されないことになる
- セキュリティ面の考慮
セキュリティ面でのことが触れられてはいますが、要因として一番大きいのは、ライセンスの変更にあると考えられます。
「簡単インストール機能」は、不特定のユーザー(サーバの収容アカウント数にはリミットがあるものとして)に再配布および、複数製品をインストールするものですので、新しくなったライセンスでは、現実としてホスティングサービス側がこれまでの機能として提供することが不可能だとおもいます。
レンタルサーバーとしては、言い方はよくないけど、簡単インストールという機能は、集客に貢献するものですからやむなく切る、といったところでしょうか。
既存のユーザーは、継続して使用するには、Movable Type 6 へのアップグレードが必要となってきます。その際に、必要とするライセンスのほうを選択ということになります。
また、Movable Type は、ウェブサービス型のものが提供されています。
- MovableType.net | ウェブサービス型高機能CMS
ライセンスを検討すると場合によっては、こちらのほうがあっているということもありそうです。
事実の部分以外は全くまとまっていませんが、簡単インストール機能の終了の件は以上です。
今月のいらんことしい(2015年6月)
今月(2015年6月)、サイトのカスタマイズした点をまとめたエントリです。
- AccessRankingGA プラグインを、Google OAuth 2.0に対応できるように修正した
- AccessRankingGA テンプレートタグの出力するページ(.json ファイル)の再構築方法を変更した
- カテゴリー mt4 をサイドバーで表示しない
- カテゴリー mt6 を新設
- Trackback のCGI へポストに関する.htaccessの設定みなおし
- 利用していないプラグインを plaginsディレクトリから削除
OAuth 対応は、以下に詳細ページを用意しました
特定カテゴリーのリストからの除外は、運用のしやすさから、カテゴリラベルでフィルターをかけるのが一般ですが、カテゴリーIDで指定すれば、あとからのラベル変更でも一意なものとして機能します。
mt4カテゴリーは、バージョン4は製品ライフサイクル終了からだいぶたっているので、カテゴリーリストから除外するとしました。
以下はカテゴリーID 1をリストから除外する例
<MTTopLevelCategories> <mt:Unless tag="CategoryID" eq="1"> ... </mt:Unless> </MTTopLevelCategories>
mt6のカテゴリーを追加しました。今のところ、タグにmt6を付けてあるものにカテゴリーを与えましたが、徐々に設定していく予定。
先日、以下の記事にて再構築ツールを紹介しましたが、
これにより、対象のファイルを MovableTypeのrun-periodic-task スクリプトから切り離してcron 実行できるようになりました。
AccessRankingGA(のテンプレートタグが生成するファイル) は www-rebuilder経由の再構築にするので、テンプレートの再構築オプションでは「手動」にしておきました。
具体的にプラグイン名は挙げませんが、不要となったプラグイン(長い間使ってなくかつ無効としていたもの・コア機能として統合されているものなど)を削除しました。
今月のカスタマイズは以上です。以下に過去のカスタマイズ記録リストがあります
メモ: www-rebuilder を使って、任意のテンプレートを再構築
スカイアーク様提供の Movable Type用の再構築ツール、www-rebuilder を使ってみたので、設定等の記録です。
用意するもの
- www-rebuilder 本体
- 必須モジュール:WWW::Mechanize
- ターミナルソフト
- 編集用エディタ
MT6で Data APIがでていて記事更新などは管理画面を介さなくてもできるようになっています。特定のテンプレートとなると、ちょっと Data APIではそれらしき、エンドポイントがないみたいです。というか、Data APIと再構築のツールとでは、目的がそもそも違うという。
で、本体のほうは、スカイアークの以下のエントリーにリンクがあります。
なお、GitHubにリポジトリがあるようです。
先に本題的なことをいいますと、そのまま使うと、ファイル mt.cgi に対して、BASIC認証をかけてある場合、基本認証が通らなくてプログラム終了となってしまいました。
... Authorization Required at ./www-rebuilder line 30
ベーシック認証突破するように、オプションコマンドを追加する必要があるようです。
GetOptions (Array) に以下を追加します。
"bauth_name=s" => \my $bauth_name,
"bauth_pwd=s" => \my $bauth_pwd,
(ターミナルで入力するのに手間がかかるので、略してます。basic_authorization_password というような意味です)
サブルーチン do_task()の 一番始めの $mech->get($uri); の上の行に以下を追加します。
# Basic Authorization
$mech->credentials( $bauth_name => $bauth_pwd ) if ( $bauth_name && $bauth_pwd );
あと、自分がおこなった環境だと、WWW::Mechanize の set_fields で checkbox の設定があると、
No such field 'checkbox' at /PATH/TO/WWW/Mechanize.pm
とかでてしまうので、 checkbox => undef, はコメントにしておきました。
編集が終わったら、SSHでサーバーに入って、どこかの /tools/ ディレクトリとか任意の場所にアップロードしておきます。
そのディレクトリに移動します。
$ cd /var/www/html/cgi-bin/tools
サンプルとして必要項目が以下だったとします。
MovableTypeのURL : http://example.com/{MT_SysDir}/mt.cgi
ログインユーザー名 : Melody
ログインパスワード : Nelson
ブログID :1
再構築したいテンプレートのタイプ : index
再構築したいテンプレートID : 1
ベーシック認証ユーザ名 : name
ベーシック認証パスワード : XXXXXXXX
各オプション(-- のあと)の対応は (* は必須)
mt_uri : MovableTypeのURL * username : ログインユーザー名 * password : ログインパスワード * type : 再構築したいテンプレートのタイプ (archive|index) template_id : 再構築したいテンプレートID
※ template_idを指定している時は、type が必須となる、とあります。
ベーシック認証用に以下のオプション
bauth_name : ベーシック認証ユーザ名 bauth_pwd : ベーシック認証パスワード
これを反映させた www-rebuilder でのコマンドラインはこのようになります。
$ ./www-rebuilder --mt_uri=http://example.com/{MT_SysDir}/mt.cgi --username=Melody --password=Nelson --type=index --template_id=1 --blog_id=1 --bauth_name=name --bauth_pwd=XXXXXXXX
(注:サンプルなので、実際の使用ではオプションは環境にあわせた値をいれます)
これで、ターミナルから、curl で再構築したテンプレートのヘッダーをみるか、ブラウザでアクセスするなどして、Last-Modified: を見てみます(GMTの場合は日本時間で+9:00 、計算の面倒ならばブラウザからアクセスしてページ情報みるほうが楽かも)。
$ curl -s --head http://example.com/再構築したテンプレートが生成するファイル
Last-Modifiedが直前の時刻になっていれば成功しているとおもわれます。
以上、 MovableType 6.1.1にて動作確認しました。
元記事にもありますが、十分な検証をおこなったうえで利用しましょう。
参考
Feedly 購読者数の取得 2015年6月版
Yahoo Pipes およびYQL経由でAjax による、Feedly の購読者数の取得が出来なくなったため、改修をおこないました。そのメモです。
これまで、以下のページにあるような方法で取得していたのですが、いつからか不明ですが、取得できないようになっていました。
先般、 Yahoo Pipes のほうで、Pipesの終了に向けてのアナウンスがありました。
とりあえず、このまま使っていても進展しないようなので、別の方法で取得するようにしました。
PHPによる取得
PHPの file_get_contents ファイルシステム関数を利用すれば、APIの返すソースを得ることができます。
基本的なものは以下のようなかんじに。
<?php
$url = "http://example.com/feed/"; // 対象URL
$json = @file_get_contents("http://cloud.feedly.com/v3/feeds/feed%2F".rawurlencode($url)); // データ取得
$feedId = json_decode($json, true); // JSONをデコードし配列へ
$count = isset($feedId['subscribers']) ? $feedId['subscribers'] : 0; // isset()で内容を調べ $count へ代入。登録されてないときは 0
print $count;
参考:
ウチのとこみたいに増減がほとんどないようなら、キャッシュいれたほうが、あちらのサーバーにはやさしいとおもいます(使ってるページ自体がアスセス少ないとか言わない)。
PEAR の Cache_Lite パッケージを用いた例です。
都合で、コメントに説明をいれています。
<?php
header("Content-Type: text/html; charset=UTF-8"); // text/plain でもいいような気もするけどとりあえず
// チェックURL
$url = "http://example.com/feed/"; // フィードURL
require_once "Cache/Lite.php"; // Cache_Lite 呼び出し
// キャッシュオプション
$cacheOptions = array(
'cacheDir' => '/var/www/tmp/cache/', // キャッシュディレクトリを指定。適切なパーミッションをセットしておく
'lifeTime' => '3600', // キャッシュ期限 (1時間)
);
// キャッシュID と キャッシュオブジェクト生成
$id = "feedlysubscribers";
$Cache_Lite = new Cache_Lite($cacheOptions);
// データ取得
if($count = $Cache_Lite->get($id)){ //
echo $count;
} else {
// キャッシュがないときに、フィード購読者数の取得にいく
$json = @file_get_contents("http://cloud.feedly.com/v3/feeds/feed%2F". rawurlencode($url));
$feedId = json_decode($json, true);
$count = isset($feedId['subscribers']) ? $feedId['subscribers']: 0;
echo $count;
// キャッシュ登録でこの条件が真になるようにする
$Cache_Lite->save($count, $id);
}
参考:
これを、 subs_count.php とでもして、サイトのどこかに置きます。
で、取り出す側は jQuery でテキストファイル読み込みなんかを使っていきます。
jQuery本体の呼び出しは済ませてあるものとします。
ファイル呼び出し
表示ページが PHP なときは、include するとかでいいかと。 以下は、jQueryで先ほどのPHPファイルを取り込みます。
テンプレート上の購読者数表示する場所に以下の要素をいれておきます。
<div id="feedly_subscribers"></div>
複数あるようなときは、class属性にしておき、以下の読み込むときのセレクターもそれにあうようにしておきます。
単に読むだけなので、.load() にしてますが、各種処理が必要な場合は .ajax() のほうにします。
<script>
$(document).ready(function (){
$("#feedly_subscribers").load("//path/to/subs_count.php");
});
</script>
- Feeds
- Elsewhere
- logo