IFTTTのサービスを使って、このWordpressサイトからBloggerに連携してみます。
IFTTTの設定はウィザードを使って、設定して「次へ」ボタンで進んで行くのでわかりやすい。
さて、うまく連携できますでしょうか。
とある5丁目で活動する還暦を過ぎたWebプログラマーの覚え書きです。それとかかってくる迷惑電話や、家業のアパート経営について。
IFTTTのサービスを使って、このWordpressサイトからBloggerに連携してみます。
IFTTTの設定はウィザードを使って、設定して「次へ」ボタンで進んで行くのでわかりやすい。
さて、うまく連携できますでしょうか。
お客さんでWordpressサイトと使っている方に情報を流しておく。結局のところ、こちらで対応することになりそうです。
Embedded Link
WordPress狙う大規模攻撃が発生、管理者アカウントを標的に
攻撃者は「admin」のユーザーネームと、総当たり攻撃で見つけ出したパスワードを使って、Webサイトの管理用パネルを制御しようとしているという。
Google+: View post on Google+
とりあえずWordpressのサイトのAdminユーザーを削除しておいた。しかし、一般ユーザー名はわかるから効果はどうなのよ、と思うからパスワードをとても長いものに変えておいた。
なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。
Embedded Link
WordPressのデフォルトユーザー設定(admin)を削除しましょう | ホームページの作り方, 構築 | ALL FINE ホームページ専門ガイド
WordPressの使い方(ユーザーの管理方法/adminアカウントの削除)に関する記事です。
Google+: View post on Google+
半年に1度、東京で開催されているOSCに行った来た。東京でも日野ですから、この時期とても寒い。しかも、会場の大学は、WiMAXがつながらない大学です。WiMAXがつながらないので、セミナーには集中できるのはいいことだ(負け惜しみ)。
3回ほどOSCに参加しましたが、だんだんとユーザーグループの発表内容は同じになってくるみたい。それってこの前聞いたよな、ってセミナーがいくつかあった。
今回は、知っていることではなく、業務では絶対関係なそうというセミナーにも参加してみた。と言いながら参加してみると、意外と関係してるようだ。2つほどユーザー会の人とコンタクトした。
今回の成果として、Joe’sクラウドのVPSの1年間の無料利用をもらえた。早速登録してみる。今もホスティングを使っているが、相変わらず申込フォームが飾り気がないのね。しかもフォームがSSL対応ではないし。いつもながら大丈夫なの? と思うJoe’sさんなのでした。
あと、ニフティの人からニフティクラウドの解説本をもらった。セミナーで紹介していたC4SAもサクッと試してみた。とっても簡単にアプリサーバー込みでインストールできた。これで1ヶ月945円は安いね。15日間無料で転送量も無料なのでお試しにはいいぜ。
いつもバグトラックシステムで使っているCandyCaneのサイトをC4SAで立ち上げてみた。やはりコメントの編集辺りがバグっているな。自分のサーバーでも同じく動かないところがあるけど、自分のインストールが悪いのではなくて、元々CandyCaneがバグっているのね。時間が合ったらソースを追いかけないといけないのか。
ということで、OSCはモチベーションを上げてくるよい機会なのでした。
Embedded Link
アプリ開発・運用を「シンプル」で「スマート」に。ニフティクラウド C4SA
アプリ開発・運用を「シンプル」で「スマート」に。開発者向けアプリケーションプラットフォームならニフティクラウド C4SA
Google+: View post on Google+
CakePHPを1.3から2.2にバージョンアップしたら、日本語が英語で表示されるようになってしまいました。
ローカルのPCでは、正常に日本語で表示されます。どういう訳か、国際化する前の__(‘xxx’)のxxxが表示されてしまいます。
/app/Config/core.phpに
Configure::write('Config.language', 'ja');
を追加しても変わりません。いろいろ調べるうちにわかりました。
/app/locale
になっていました。
/app/Locale
が正解です。CakePHPが2になって、ディレクトリの1文字目が大文字になっているのを忘れていました。PCですと、この辺りは無視されますので、Unix系のサーバーに配置したときに初めてわかります。
#WordPress を3.5にアップグレード
WordPress3.5の日本語版がリリースされたので、バージョンアップしました。ほんの少しの時間を待っただけで済みました。
今回は、大きなアップグレードなので慎重に対応します。マイナーなアップグレードの場合は、ボタン一発でアップグレードしていましたが、今回は念のためです。
まずはデータベースのバックアップです。あとはテーマなどの必要なファイルをバックアップを取っておきます。
つぎにブラグインをすべて無効にします。これでアップグレードの準備OKです。管理画面から行います。WordPressのアップグレードはボタンを押すだけで簡単です。
アップグレードができたら、まずはアクセスして正しくサイトが表示されるかを確認します。無事に表示されました。
次にプラグインを一つづつ有効にしながら確認です。特にキャッシュのプラグインは要注意です。
無事にアップデートができたようです。各プラグインの機能が正常に動作しているかを順次確認していきます。
Embedded Link
WordPress | 日本語 » WordPress 3.5 日本語版リリースのお知らせ
WordPress 3.5 日本語版リリースのお知らせ. 2012年12月12日, Takayuki Miyoshi. WordPress 3.5 日本語版をリリースしました。 ダウンロード: WordPress 3.5 日本語版をダウンロード. アップグレード: 「WordPress のアップグレード」を参照してください。 新機能・変更箇所: WordPress Codex 日本語版の「Vers…
Google+: View post on Google+
「#WordPress サイトの負荷分散の実験」と書きましたが、HyperDBで使ったときの運用で、その後思いついた疑問がいくつかあります。
マスターのサーバーの管理ページでアップデートの指示がありますので、おそらくマスターサーバーだけで、スレーブサーバーはアップデートされないのでないかと思いますが。
これも、マスターだけでスレーブサーバーのプラグインは実施されないのでは? おそらくHyperDBは、データベース関連しか面倒見てくれないので、ファイルは自分で何とかしないといけないかと思います。もっとHyperDBを調べてみる必要があります。 いずれにしても、メディアでアップデートされるファイル以外にも、/var/www/wp-content以下のファイルすべてを同期させれば解決されるのではないのか? こちらも試してみる必要があります。
なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。
プラグインのアップロードは、マスターのサーバーに限らないので、マスターとスレーブともお互いにファイルの同期を取ってあげないといけないようです。したがって、ロードバランサで管理ページは、マスターサーバーに必ずアクセスさせるようなことが必要です。以下のサイトが参考になるかな?
HyperDBでWordpressのサイトを単純に分散させても、運用で問題になりそうです。HyperDBを紹介しているサイトでそこまで言及していないのはなぜかしら? 実際に使っていない?
KVMで2つ仮想サーバーを立ち上げて、Wordpressのサイトをリプリケーションして、サーバーの冗長化と負荷分散の実験してみました。
最初に1つのサーバーにWordpressをインストールして、それからKVMのクローンでサーバーをもう一つ作ってしまいます。IPアドレスを別にして2つWordpressのサイトが動く状態にします。
次に、MySQLのリプリケーションの設定をします。設定方法は、
辺りを参考にしました。Wordpressの負荷分散は、HyperDBというプラグインを使用します。これもまた、
辺りを参考に設定します。
これで、片方のサーバーのMySQLを停止してもWordpressのサイトを参照できるかを確認します。
よく考えれば当たり前なのですが、MySQLをマスターにリプリケーションに設定したほうのMySQLを停止したら、参照ができるが更新ができないようになっていました。これで成功なのです。マスターのMySQLに障害が発生したら、スレーブのMySQLからDBを復旧する手順になるのでしょう。
更新は、強制的にマスターサーバーになります。これはHypeDBの機能なのでしょう。スレーブサーバーで更新してしまったら、MySQLのリプリケーションのトラブルになってしまいます。
記事を追加したら、すぐにスレーブサーバーでも参照できるようになります。こちらはMySQLのリプリケーションが正常に動作してしているからです。
マスターとスレーブの切り替えは、DNSのラウンドロビンの機能で実現できそうです。必ず管理ページからはマスターのMySQLのデータベースに格納されるかが確認する必要がありますが、こちらはローカルにDNSを置いていないので未確認です。
以上でWordpressの二重化の実験は完了と言いたいところですが、一つ忘れていました。Wordpressのメディア機能でアップロードしたファイルは、マスターに存在することになります。スレーブのサーバーにアクセスした場合は、存在しないことになります。そこで、/var/www/wp-content/uploads/以下のファイルをマスターからスレーブサーバーに同期を取ってあげないといけません。
cronでrsyncを実行していいのですが、ここではlsyncdでサーバー間をリアルタイム(数秒の遅延はありますが)で同期を取ってしまいます。
を参考に設定しました。これでマスターとスレーブのWordpressのサイトで、アップロードされた画像が正しく参照できるを確認します。
WordPressのサイトをテストサーバー(移行元サーバー)から本番サーバー(移行先サーバー)に移行したときのメモ。テストサーバーと本番サーバーでドメインが違っているときの、どのように作業したかをメモしておきます。
最初に本番サーバーにWordpressをインストールしてしまいます。これは通常通りのインストールでOKです。正しくWordpressのサイトにアクセスできることを確認しておきます。
WordPressで用意されているエクスポート/インポートを使ってもデータの移行はできませんでした。こういうときは何も考えずにMySQLでダンプしてリストアしてしまいます。インストールしたテーブルは一旦削除してからリストアします。エクスポート/インポートはphpMyAdminでもデータサイズが小さければ可能です。
リストアする前にダンプしたSQLファイルを、テストサーバーのURLから本番サーバーのURLにテキストエディタで置換してしまいます。これはリンクのhrefやメディアからの画像のsrcでhttp://~のドメインを直接書いて格納されているからです。
本番サーバーにプラグインをテストサーバーと同様なものをインストールしておきます。使用しているテーマもイントールします。これで準備OKです。
おそらく、このままではアクセスも画像が出てきません。画像が表示されていてもテストサーバーから持ってきてしまいます。リンクをクリックするとテストサーバーに行ってしまいます。サイトの設定がテストサーバーのままです。
管理ページにもアクセスできませんので、テーブルを編集してしまいます。wp_optionsテーブルのoption_name項目がsiteurlとhomeを本番サーバーのURLに修正します。これで画像とリンクが本番サーバーになります。
テーマに直接テストサーバーのURLが格納されていれば、これもテストサーバーに修正してしまいます。あとはブラグイン(バックアッププラグインなど)の設定によっては、パスが違っているかもしれませんので、これも本番サーバーに合わせておきます。
以上で無事に本番サーバーに移行できました。
なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。
お客さんからCakePHPから出力するHTMLコードが汚いと言われました。特に<head>の中の<meta>がつながって読みにくいと言われてしまいました。別に人間が読まないからいいじゃないと思いますが、ここはお金をいただく身ですので、こころよく修正してしまいます。
HTMLヘルパーは出力するときにHtmlHelper.phpでsprintf()で整形して追加しているだけのようですので、とりあえず簡単にsprintf()の書式に\nを追加してしまいます。
CakePHP自身を修正したくないので、MyHtmlヘルパーを作ってHtmlヘルパーから継承させてしまいます。
<?php
App::uses(‘HtmlHelper’, ‘View/Helper’);
class MyHtmlHelper extends HtmlHelper {
public function __construct(View $View, $settings = array()) {
parent::__construct($View, $settings);
// HTMLヘルパーで整形して出力するコードの行末に改行を入れて、きれいなHTMLコードを出力する。
foreach($this->_tags as $key => $value) {
$this->_tags[$key] = $value . “\n”;
}
}
}
使うときには、コントローラーのヘルパーの設定で、
public $helpers = array( ‘Html’ => array(
'className' => ‘MyHtml’
)
);
のようにしておきます。これでHTMLヘルパーを使っているViewを修正せずに、MyHtmlヘルパーを使えます。今回はメソッドの追加変更はありませんので、そのままHTMLヘルパーを使えます。
あまり役に立たないコードです・・・。