更新しなくなったWordPressサイトを静的にしておく

WordPressはPHPで動的にサイトを出してます。
当然サーバーのCPUパワーを食うので、更新しなくなったサイトは静的に変換して置いておきたい。
StaticPress等のプラグインを入れて出力させるのが常套手段なのですが、現段階の最新版Wordpress4.7.2に入れたらエラーが出たりして(使っているテーマ、環境にもよると思います)。

ならば無理矢理クロールして取ってしまえ!ということでwget
$ wget -nc -x -r http://example.com

出来上がったファイルは拡張子がhtmlじゃないものも多いので、
設置先サーバーのほうでMIME-typeをいじります。

今回はnginx上に置いたので

server {
    server_name example.com;
    location / {
        default_type text/html;
    }
}


これだけ。
たぶんApacheでもDefaultType text/htmlとか書いておけば拡張子ナシでもhtmlとして出してくれるでしょう(未確認)

あとはアクセスしてみて、微妙にリンク先が無かったりするものは個別に手直し。
Wordpressに限らず動的サイトを静的にするのに使えるなぁ。

—

2017-04-19 追記: wgetによる収集では一部欠けているようで、
やはりなんとかアップデートした後にStaticPressするのが良さそうです。

CentOS+Postfix環境でDKIM導入

CentOS5, CentOS6でpostfix使ってるところにDKIMを入れたのでメモ。

EPELを有効にしてyum -y install opendkimで入る。あっさり。

■PostfixをDKIM認証に対応(CentOS) – Angel21 HP Blog
人様のblogを頼りに一通り設定する。
# mkdir /etc/opendkim/keys/example.com
# opendkim-genkey -D /etc/opendkim/keys/example.com -d example.com -s 20170208
# chown opendkim:opendkim /etc/opendkim/keys/example.com/*

namedへTXTレコード追加
20170208._domainkey IN TXT "v=DKIM1; k=rsa; p=Mf(略)B"
_adsp._domainkey IN TXT "dkim=unknown"
_dmarc IN TXT "v=DMARC1;p=none;rua=mailto:dmarc@example.com;ruf=mailto:dmarc@example.com;rf=afrf;pct=100"

/etc/opendkim.conf
Mode sv
#KeyFile
KeyTable
SigningTable
ExternalIgnoreList
InternalHosts

秘密鍵指定
/etc/opendkim/KeyTable
20170208._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/20170208.private
ドメイン指定
/etc/opendkim/SigningTable
*@example.com 20170208._domainkey.example.com

追加でポイント

●namedで _ アンダースコアが使えない
named-checkzoneしてみると bad owner と言われてアンダースコアから始まる名前が使えない。
_dmarcを書くときに困るので、対象ゾーンにcheck-names ignoe;を追記して通るようにする。
zone "example.com" IN {
type master;
file "example.com.hosts";
check-names ignore;
};

●opendkimの鍵ファイルがセキュアじゃないと言われる
実際に送信してみるとエラーで送れてない。
maillogを見ると
key data is not secure: opendkim is in group 0 which has multiple users (e.g., "sync")
とエラーが出てる。にしてもgroup 0ってなぁ…

ググっても日本語資料皆無なので英語フォーラム見たら、軒並み回答なし。
しかしヒントっぽいのがあったので

■opendkim.conf

/etc/opendkim.confの末尾に RequireSafeKeys false を追加。これで動いた。

WordPressサイトの全SSL化…一部リンクがSSLにならない

とあるwordpressを使ってるサイトを常時SSL化することになりました。
VPSだったのでSSL証明書の取得からインストールまでLet’s Encryptですんなり行きました。

■Let’s Encrypt 総合ポータル

次にWordpressの設定でホームURLを http から https に変更します。
そして全文検索してhttpのリンクをhttpsにします。
このへんはSearch and Replace for WordPress Database Scriptを使用。

■WordPress移行時にURLをSQLで直接一括置換はダメ! 「Search and Replace for WordPress Databases Script」を使おう | infoScoop開発者ブログ

あとはテーマのファイルをgrepしてhttp箇所を //からの表記に直したり…

しかしメニューのリンクとか一部プラグインの出力がSSLにならない。
ソースを見るとget_page_link()とかで呼んでるわけです。
じゃぁ中身の設定に従うはずだよなぁ…と wp-includes/link-templates.php を読み、
データベースを疑い…わからん。

しかし結局Really Simple SSLというプラグインを入れたらあっさり解決。
なんだ、どこにこの違いがあったのだ…

■WordPressを一瞬でHTTPS化するプラグイン「Really Simple SSL」の使い方

今後常時SSLサイトが増えるだろうし、もうちょっと根本的に原因を探りたいのだがなぁ

さくらのVPSの制限は2時間解けない

制限は突然来る。

サーバーの応答がないとヘルプをいただき(私の管理してるところじゃないんだけど…)
とりあえず見てみる。
webサーバー応答無し、ssh応答なくてログインできない、pingは通る。

さくらのVPSのコントロールパネルを見てみると
「このサーバはストレージのIOPS(1秒あたりのデータ入出力数)が制限されています。」
ですって。

朝9時直前ぐらいに制限がかかったようで、
コンソールを見るとOOM Killerの嵐。
おそらくswapファイルに大量のI/Oが発生していたのでしょう。

サポートに問い合わせると、制限は2時間だそうで、
「こちらでも解除はできないので、2時間待ってください」とのこと。

2時間も待ってられないので、とりあえず根気よくコンソールからログインを試行、
何度かチャレンジして成功したので、httpdとmysqldを停止。
みるみると負荷が下がっていくぞ…!

apacheのkeepalive timeoutが若干長いかなーというぐらいで他は特に気にならず。
プロセス数とかは追って調整するとして、再起動。
無事、動く。

wgetで巡回させても負荷がそんなに増えなかったのでこれで良しということにして完了。

サポートに言っても解除できないというのは覚えて置いた方が良いなー。

■さくらのVPSは突然制限かけられて激重になるから要注意 | GUiLZ.ORG

■「さくらのVPS」のディスク負荷が早朝4~6時に高い件。iowaitが酷いレベルに | TeraDas-テラダス

Skypeに不正ログインされてしまった

23時頃、Skype着信。
「なんか送られてきてるよ?」
「うわーこれSPAMだ!開かないで!」

みるみるうちにコンタクトリスト全員にSPAMがばらまかれました。うわー。

速攻でSkypeのパスワードを変更。
そんなに複雑でもなかったのがマズかったか。
もしかしたら他のサイトで同じパスワードを使っちゃってたかもしれない。

SPAMのバラマキは止まったようなので、とりあえずは良しとする。気が重いけど。

 
最近SkypeアカウントがMicrosoftアカウントに統合されていたのだが、
なんとなく私は統合を延期していた。
今回のパスワード変更で自動的に統合されました。

二段階認証をオンにして、皆様にお詫びを送りつつ、
Microsoftアカウントのページでログイン履歴を見てみると、
1時間ほど前に韓国のIPアドレスからSkypeアカウント名でログインが行われていました。
あちゃー


(表示上大阪になってますが東京です。ソウルになってるのが逆引きkornet.netで韓国でした)

しかしログインに失敗した履歴がない。
となると、どこかでサインイン情報を盗聴されたか、
あるいはログが辿れないぐらい前にブルートフォースされていて、
それが今更使われたか?

わざわざログイン成功情報を寝かせておく意味もないだろうし、
盗聴されてしまったのかなぁ…

とりあえず手元のPCはウィルススキャンをかけておいた。
キーロガーでも仕込まれてたら困るものね…

 
検索してみると、メジャーアプリでもあるSkypeは狙われているようだ。
そりゃMicrosoftもアカウント統合させて二段階認証などセキュリティを強化したいわけだ。
昔から使っているアプリ・サービスはぼちぼち見直した方が良いですな…

 
参考
 
■Skypeで勝手にスパムをばらまき!? もしもMicrosoftアカウントが乗っ取られたら – いまさら聞けない?Windows 10のTips – 窓の杜

■「2016年度版」!「Skype」を経由したウイルス感染の注意喚起について