今週検索したTips

何番目系の便利なCSSまとめ

https://qiita.com/ituki_b/items/62a752389385de7ba4a2

 
QRCODE作成
※ 検索で一番上に出てくる「”qr.quel.jp”」は変なものを仕込もうとするので要注意!

https://www.cman.jp/QRcode/

 
【WordPress】カスタムメニューのid・classを削除・追加|シンプルにカスタマイズ

https://blog-and-destroy.com/6842

 
既に登録済みの画像を一括リサイズしてくれるプラグイン Regenerate Thumbnails

https://www.vektor-inc.co.jp/post/regenerate-thumbnails/

 
【コピペOK】GoogleMapの地図をレスポンシブサイトに埋め込む方法

https://inthecom.net/718

 
個性的なギャラリーが作れる!WordPressプラグイン「FooGallery」の魅力と使い方

https://www.08-photo.com/wordpress-plugin-foogallery/

 
InstagramをWordPressに埋め込むには「Insta Show」プラグインが最適!Instagram Feedより良い!

http://lifestylecreators.net/1928

 
WordPress アップグレード用の定数

https://wpdocs.osdn.jp/wp-config.php_%E3%81%AE%E7%B7%A8%E9%9B%86
define( ‘FS_METHOD’, ‘ftpext’ );
define( ‘FTP_BASE’, ‘/path/to/wordpress/’ );
define( ‘FTP_CONTENT_DIR’, ‘/path/to/wordpress/wp-content/’ );
define( ‘FTP_PLUGIN_DIR ‘, ‘/path/to/wordpress/wp-content/plugins/’ );
define( ‘FTP_PUBKEY’, ‘/home/username/.ssh/id_rsa.pub’ );
define( ‘FTP_PRIKEY’, ‘/home/username/.ssh/id_rsa’ );
define( ‘FTP_USER’, ‘username’ );
define( ‘FTP_PASS’, ‘password’ );
define( ‘FTP_HOST’, ‘ftp.example.org’ );
define( ‘FTP_SSL’, false );

 
WordPressで自動更新したい時のパーミッション、もしくはFS_METHOD手動設定やめようって話

https://qiita.com/unarist/items/2186839e1c63453b9b96

 
WordPressのアップグレードやプラグインの更新をFTP画面なしで行う方法

https://web.plus-idea.net/2017/02/wordpress-upgrade-without-ftp/

 
エクセル 文字列を日付に変換する

https://www.tipsfound.com/excel/02106

 
WordPress画像圧縮プラグイン(無料版) 5つの中でどれが一番圧縮できるかを比較してみた

https://ruuski.net/web/wordpress-image-optimize-plugins-compare/

 

WordPressのデータをCSVでエクスポート/インポート

エクスポート先に「WP CSV Exporter」プラグインを入れる。
普通に入れる場合は問題ないと思うが、ZIPを自分で展開するときは、以下のフォルダに書き込み属性を付けておく。

/wp-content/plugins/wp-csv-exporter/download/

 
CSVファイルは UTF8になっているので、EXCELに入れるときはそのまま読まないでインポートする

データ > テキストまたはCSVから > 65001:Unicode(UTF-8)

 
EXCELで加工したあと、CSVに書き出す。
この場合、項目が引用符(ダブルコーテーション)で囲まれないので、テキストエディタで適宜加工する。
すでに引用符で囲まれていた場合は、正規表現で置換。

hogehoge(..)”,”fugafuga # 置換前(2桁の数字が入る)
hogehoge\1,fugafuga # 置換後(¥1)

 
インポート先に「Really Simple CSV Importer」プラグインを入れる。
元データはゴミ箱に入れてから完全削除する。

WordPressのインポート最大容量を増やす

大きなデータファイルをインポートする場合、標準の4MBでは足りないことがほとんどです。
nginxとphp-frmを入れている環境で最大値を増やすには次の箇所を確認します。(やれるところはすべてやる)
※ 最後の php-frmの設定以外効いていないのがミソ!
「504 Gateway Time-out」が出るときも同様です。
 
php.iniの場所確認

# php -i | grep php.ini

Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

 
php.iniの編集

# nano /etc/php.ini

post_max_size = 10M
upload_max_filesize = 10M

 
nginx.confの編集

# nano /etc/nginx/nginx.conf

client_max_body_size 10M;
fastcgi_read_timeout 180; #タイムアウトを延ばす

 
php-fpm設定の編集

# nano /etc/php-fpm.d/www.conf

request_terminate_timeout = 180 #タイムアウトを延ばす
php_admin_value[upload_max_filesize] = 10M
php_admin_value[post_max_size] = 10M

 
関係あるかどうかわかりませんが、AWS(EC2)のロードバランサーのタイムアウトも延長しておきました。

アイドルタイムアウト 180 秒

 
reloadで十分ですが、念のため再起動します。

# service nginx restart
# service php-fpm restart

 
 
ここまでやると、最大値が10MBになります。たぶん。
最後の /etc/php-fpm.d/www.conf を書き換えないで実行するとタイムアウト系のエラーが出ます。

設定がちぐはぐでタイムアウトしてる

504 Gateway Time-out
とか
upstream timed out (110: Connection timed out)

 
client_max_body_size が足りないときに出るエラー

413 Request Entity Too Large

Amazon LinuxにSERPOSCOPEを入れる

1.Javaのバージョンを確認する

# java -version

java version "1.7.0_151"
OpenJDK Runtime Environment (amzn-2.6.11.0.74.amzn1-x86_64 u151-b00)
OpenJDK 64-Bit Server VM (build 24.151-b00, mixed mode)

2.yumを更新する(yumリポジトリの更新)

# sudo yum update -y

3.Java8をインストールする

# sudo yum install -y java-1.8.0-openjdk-devel.x86_64

4.Javaコマンドのバージョンを切り替える

# alternatives –config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
   2           /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java

Enter to keep the current selection[+], or type selection number: 2

5.Javaのバージョンを確認する

# java -version

openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

# javac -version

javac 1.8.0_151

6.AWS(EC2)のセキュリティグループ(インバウンド)で 7134ポートを開く

カスタム TCP ルール TCP 7134 0.0.0.0/0
カスタム TCP ルール TCP 7134 ::/0

7.SERPOSCOPEをダウンロードして動作させる

# mkdir /var/www/serposcope
# cd /var/www/serposcope
# wget https://serposcope.serphacker.com/download/2.9.0/serposcope-2.9.0.jar
# java -jar /var/www/serposcope/serposcope-2.9.0.jar

8.起動時に自動実行させる

# cd /etc/init.d/
# nano application-starter

#!/bin/sh
# chkconfig: 345 99 10
# description: start shell
case "$1" in
  start)
    sudo java -jar /var/www/serposcope/serposcope-2.9.0.jar
       ;;
  stop)
       echo "stop!"
       ;;
  *) break ;;
esac

# chmod +r application-starter
# chkconfig –add application-starter
# chkconfig application-starter on
# chkconfig –list

レガシー環境で動作しているサイトの常時SSL化

Ubuntu10.04 で、EC-CUBE 2.4.4 と WordPress 3.0.1 が動いているという、今となってはかなり特殊な(レガシーな)環境で動作しているサイトの常時SSL化をいたします。(備忘録)

1.WordPressのデータダンプ

# mysqldump -u root -ppassword wordpress-db > wordpress-db-dump20180918.sql

2.データダンプの書き換え(http ⇒ https)

# 画像ファイルは、http://hoge.com/??? を取る
# URLは書き換え
# wp_options は文字長が入っているので要注意

3.Let’s Encrypt (dehydrated)を入れる

# curl -kLO https://github.com/lukas2511/dehydrated/releases/download/v0.6.2/dehydrated-0.6.2.tar.gz
# tar xf dehydrated-0.6.2.tar.gz
# cd dehydrated-0.6.2
# cp docs/examples/config config
# nano config
WELLKNOWN=”/var/www/dehydrated” #コメントを取る
# mkdir /var/www/dehydrated
# nano /etc/apache2/conf.d/dehydrated.conf
Alias /.well-known/acme-challenge /var/www/dehydrated


# nano domains.txt
hoge.com www.hoge.com
# ./dehydrated –register –accept-terms
# ./dehydrated -c –accept-terms
# crontab -e
0 3 1,15 * * /root/dehydrated-0.6.2/dehydrated –config /root/dehydrated-0.6.2/config –cron >> /tmp/ssl-update.log 2>&1

4.apache2 への組み込み

# nano /etc/apache2/sites-available/default-ssl

NameVirtualhost *:443

ServerName hoge.com
ServerAlias www.hoge.com
DocumentRoot /www/wordpress/
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/ssl_access.log combined
SSLEngine on
SSLCertificateFile /root/dehydrated-0.6.2/certs/hoge.com/fullchain.pem
SSLCertificateKeyFile /root/dehydrated-0.6.2/certs/hoge.com/privkey.pem
SSLCertificateChainFile /root/dehydrated-0.6.2/certs/hoge.com/chain.pem

# a2enmod ssl # sslモジュールを入れる
# a2ensite default-ssl
# service apache2 restart
# netstat -ltup4 # httpsが上がっていることを確認

5..htaccess の書き換え(http ⇒ https)

# nano /www/wordpress/.htaccess
RewriteEngine On
Options +FollowSymLinks
RewriteBase /
#RewriteRule ^index\.php$ – [L]
RewriteCond %{THE_REQUEST} ^.*/index.(html|php)
RewriteRule ^(.*)index.(html|php)$ http://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.)?(hoge\.com)$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# uploaded files
RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ – [L]
RewriteRule . index.php [L]

6.データダンプからデータベースを書き換え

# mysql -u root -p
use wordpress-db;
source db1.sql; # httpを書き換えたダンプ(UTFで保存)

7.WordPressテーマの書き換え

httpが直書きされてそうなファイル
# cd /www/wordpress/wp-content/themes/hoge/
functions.php
header.php
loop-index.php
style.css

8.EC-CUBEの書き換え

# nano /home/www/hoge/eccube-2.4.4/data/install.php
define (‘SITE_URL’, ‘https://shop.hoge.com/’);
define (‘SSL_URL’, ‘https://shop.hoge.com/’);

# httpが直書きされてそうなファイル
# nano /home/www/hoge/eccube-2.4.4/html/user_data/include/preview/bloc_preview.tpl
# nano /home/www/hoge/eccube-2.4.4/html/user_data/include/preview/footer.tpl
# nano /home/www/hoge/eccube-2.4.4/html/user_data/include/preview/header.tpl
# nano /home/www/hoge/eccube-2.4.4/html/user_data/packages/default/footer.tpl
# nano /home/www/hoge/eccube-2.4.4/html/user_data/packages/default/header.tpl
# nano /home/www/hoge/eccube-2.4.4/html/user_data/packages/default/bloc/optional.tpl
# nano /home/www/hoge/eccube-2.4.4/html/user_data/packages/default/bloc/other_menu.tpl
# nano /home/www/hoge/eccube-2.4.4/data/Smarty/templates/default/site_frame.tpl
# nano /home/www/hoge/eccube-2.4.4/data/Smarty/templates/default/detail.tpl
# nano /home/www/hoge/eccube-2.4.4/data/Smarty/templates/default/bloc/category.tpl

10.eth0がリネームされ、ネットワークが使えない時

# ifconfig
lo しか有効になっておらず、ネットワークアクセスできない。
# nano /etc/network/interfaces
eth0_rename になってた
# rm /etc/udev/rules.d/70-persistent-.rules
# reboot
これで直った。リネームされた原因不明

11.PostgreSQLが壊れていた場合(pg_xlog不整合でサービスが起動せず)

# su postgres
# cd /usr/lib/postgresql/8.4/bin
# ./pg_resetxlog -f /var/lib/postgresql/8.4/main/
# ./pg_ctl -D /var/lib/postgresql/8.4/main start
これで一応直る(でもDBがなくなってる)
# ./pg_ctl -D /var/lib/postgresql/8.4/main stop

# いろいろやったが結局、PostgreSQL を止めた状態で rsyncで正常に動いているサーバから丸ごと転送かけた
# rsync -rtlzvogpHAX –rsync-path=”/usr/bin/rsync” –block-size=4096 –delete -e “ssh -p 22″ /var/lib/postgresql/8.4/ root@1.1.1.4:/var/lib/postgresql/8.4/

12.さくらのVPSでテスト環境を作る

12-1.OSはISOからインストールする
  ここ(http://old-releases.ubuntu.com/releases/10.04.0/)からダウンロード
  ubuntu-10.04.4-server-amd64.iso

12-2.sftpでサーバーへISOイメージをアップロードする
  コントロールパネルから「OSインストール」をクリックして「ISOイメージインストール」を選択
  「SFTPアカウントの作成を行う」を選択
  FTPで、アップロード

12-3.IPアドレスの設定
  Ubuntuの設定で、IPアドレスを設定します
  コントロールパネルの情報を転記(IPアドレス、ネットワークマスク、ゲートウェイ、DNSサーバー)
  あとで設定は上書きするので、「OpenSSH server」だけ選択

12-4.ログイン

12-5.rootのパスワードを設定
$ sudo passwd root
$ su -
#

12-6.visudo してsudo時にパスワードを聞かれないよう変更
# visudo
%sudo ALL=(ALL:ALL) NOPASSWD: ALL

12-7./etc/ssh/sshd_config を編集
# nano /etc/ssh/sshd_config
Port 22xx
PasswordAuthentication no

12-8.sshサーバを再起動
# service ssh restart

12-9.認証キーを作る
# cd
# mkdir .ssh
# nano .ssh/authorized_keys
# cp -a .ssh/ /home/myuser
# chown -R myuser:myuser /home/myuser/.ssh/

12-10.teratermからsshで入りなおす

JetpackのCDNはOFFに

WordPressの引っ越し話でのことなんですが、Jetpack機能がインストールされているサイトを移すと画像が全滅!
ちょっと特殊なテンプレートを使っていたせいもあって、原因がすぐにはわからずプチパニック!
ちゃんと調べたら、JetpackのCDN機能がONになっていたせいでした。

どういうものかというと、画像ファイルのURLが i?.wp.com というような URLに書き換えられるものです。

http://i2.wp.com/hogehoge.com/wp-content/uploads/2018/05/hogehoge.jpg?resize=400%2C300

引っ越ししてテストしている最中のサイトの場合、旧サイトが DNS上では生きていて(httpsはダメな状態)、
テスト環境では、新サイト(httpは httpsへリダイレクト)が見えているわけですが、Jetpackの CDNが
画像を引っ張ってこようとする先は旧サイトで、アクセスは httpsで取ってこようとするので、取れないという感じ
になるわけです。

それ以外にもデメリットがあるそうなので列挙。
1.キャッシュを削除できない(上書きNG)
2.他の画像処理系のプラグインと相性が悪い
3.CDNが効くのはデータベース経由でリンクされている画像のみ
4.画質が劣化する

1と4が致命的ですね。
ということで、Jetpackを入れた場合、設定 > 執筆 > 画像を私たちのサーバーから提供 > OFF
にしておきましょう。

WordPressのサイトを丸ごと引っ越し

いろいろ訳あって、WordPressのサイトを丸ごと別のサーバーへ移すことになりました。
また訳あって、現在のサーバーには、http(80)はアクセスできますが、その他ポートがすべて塞がれています。
SSH(22)も FTP(21)も https(443)も全部です。

そういう環境で、まずは WordPressの環境を丸ごとバックアップしなければなりません。
WordPressには、Duplicatorという優秀なプラグインがあります。
Duplicator – WordPress Migration Plugin(作成者: Snap Creek)

これをまず入れます。
有効化したら、すべてそのままで実行します。
大抵1か所くらいは Noticeが出ると思いますが、そのまま使うわけではないので、詳細はパスです。
Duplicator > Create New > Next > Yes. Continue with the build process! > Build

もしファイルが大きくてエラーになる場合は、まず、Databaseのみバックアップします。
Duplicator > Create New > Files > Archive Only the Database >・・・> Build

次に画像ファイル以外を取ります。
Duplicator > Create New > Files > Enable File Filters > [wp-uploads] >・・・> Build

画像ファイルは、Website Explorer(WordPressのプラグインではない)でバックアップします。
Website Explorer > ツール > フォルダ・ダウンロード

すべてのバックアップが終わったら、Archiveファイルをダウンロードします。
この中に大切なものが全部入っています。

新しい方のサーバーに WordPressを入れておきます。
Amimotoを使っている場合は、wp-setup hogehoge.com でいいでしょう。
入れ物だけが必要です。(すでに入っている場合は消しておきましょう)

# rm /opt/local/hogehoge.com.json
# rm /opt/local/createdb-hogehoge.com.sql
# mysql -u root -p
drop database hogehoge_com;
# wp-setup hogehoge.com

ACM(Amazon Certificate Manager)で、*.hogehoge.com(別名で hogehoge.comも登録しておくこと)を取ってる場合は、ロードバランサーのリスナー(証明書)に追加しておきます。
また、テスト段階では、hostsに ロードバランサー(の片方)の URLを登録しておきましょう。(下の例では 1.1.1.55)
# vim C:\Windows\System32\drivers\etc\hosts
1.1.1.55 hogehoge.com
1.1.1.55 www.hogehoge.com

http://hogehoge.com にアクセスすると、WordPressインストールが始まるはずなので、EC2のインスタンスコードを入れて進めます。
WordPressシステムの更新やプラグイン、テーマなどを最新にします。
それから先ほど取ったバックアップファイルから手動で必要なファイルを FTPでコピーします。

/wp-content/themes/
/wp-content/plugins/ (標準でインストールされなかったものだけ)
/wp-content/uploads/

Website Explorerで画像のバックアップを取った場合は、PC環境で使われているファイルのみ保存されていますので、スマホは小さいサイズの画像を使うようなテンプレートの場合は、Regenerate Thumbnails などのプラグインでサムネイル画像の再構成をしておいた方がいいでしょう。

念のため、mysqldump でこの時点のバックアップを取っておきます。
# mysqldump -u root -p -h localhost hogehoge_com > hogehoge_com.sql;

さて、Archiveファイルの database.sql を書き換えます。
必ず修正するところは2か所だけ。(ここを書き換えないとリダイレクト地獄になります)

INSERT INTO `wp_options` VALUES (1,’siteurl’,'https://www.hogehoge.com’,'yes’);
INSERT INTO `wp_options` VALUES (2,’home’,'https://www.hogehoge.com’,'yes’);

あとは、httpを取るか、httpsに書き換えます。

http://hogehoge.com/wp-content/uploads/ ⇒ /wp-content/uploads/

http://hogehoge.com/ ⇒ https://hogehoge.com/

保存したファイルを FTPでアップして(とりあえず db1.sqlに保存)、mysqlで実行します。
# mysql -u root -p
use hogehoge_com;
source /var/www/vhosts/hogehoge.com/db1.sql;

で、新しいサーバーにまったく同じサイトが構築できました。
Route 53 の Alias Targetを書き換えて完了です。
テストで書き換えた hostsも戻すのを忘れずに。

Ubuntu10.04 に Let’s Encrypt (dehydrated)を入れる

訳あって最新版にできない Ubuntu10.04に Let’s Encrypt (dehydrated)を入れるためのメモ

前段階として、Ubuntu10.04 を update しておく。
それから、openssl と curl を TLS1.2対応にする。

# vim /etc/apt/sources.list

jp.archive –> old-releases
security –> old-releases

# apt-get update
# apt-get -y upgrade openssl
# apt-get -y upgrade curl

# cd
# wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz
# tar xvfz openssl-1.0.2o.tar.gz
# cd openssl-1.0.2o
# ./config –prefix=/usr –openssldir=/usr/share/ssl shared
# make
# make test
# make install
# apt-get -y upgrade openssl

# cd
# wget http://curl.mirror.anstey.ca/curl-7.58.0.tar.bz2
# tar xf curl-7.58.0.tar.bz2
# cd curl-7.58.0
# ./configure –enable-libcurl-option –with-ssl=/usr –prefix=/usr
# make
# make test
# make install
# apt-get -y upgrade curl
# curl -V
# curl https://login.starbucks.co.jp/login

最後のスタバのログイン画面は TLS1.2でアクセスできたかどうかの確認。

Let’s Encrypt を入れるために、推奨されているのは Certbot なんだけど、python2.7 が必要だったり、Ubuntu10.04 にはいろいろ足りないものが多くて断念。
同じ機能(Certbot互換)の dehydrated でやってみる。(もちろんできたからこれを書いているんだけど)
git clone や wget でSSLエラーが出るので、tar.gzを取ってきて解凍。
あと、いろいろ面倒なので、root で作業。(よい子はマネしないように)

# curl -kLO https://github.com/lukas2511/dehydrated/releases/download/v0.6.2/dehydrated-0.6.2.tar.gz
# tar xf dehydrated-0.6.2.tar.gz
# cd dehydrated-0.6.2
# cp docs/examples/config config
# vim config # configのWELLKNOWNのコメントを外す

WELLKNOWN=”/var/www/dehydrated”

# mkdir /var/www/dehydrated
# chmod 755 /var/www/dehydrated
# vim /etc/apache2/conf.d/dehydrated.conf

Alias /.well-known/acme-challenge /var/www/dehydrated
<Directory /var/www/dehydrated/>
</Directory>
# これがないと怒られる。

# service apache2 restart

# apache2を再起動させないで「./dehydrated -c –accept-terms」をやるとエラーになります。
+ Challenge validation has failed :(
ERROR: Challenge is invalid! (returned: invalid) (result: {
“type”: “http-01″,
“status”: “invalid”,
“error”: {
“type”: “urn:ietf:params:acme:error:connection”,
“detail”: “Fetching http://hogehoge.com/wp-signup.php?new=hogehoge.jp: Error getting validation data”,
“status”: 400
},
ERROR: Challenge is invalid! (returned: invalid) (result: {
“type”: “http-01″,
“status”: “invalid”,
“error”: {
“type”: “urn:ietf:params:acme:error:unauthorized”,
“detail”: “Invalid response from http://hogehoge.jp/.well-known/acme-challenge/13oQnXoFMzKWEXdSXmavt-UTcW7CS_CD-UlQ9L_nhtY: \”\u003c!DOCTYPE html\u003e\r\n\u003chtml dir=\”ltr\” lang=\”ja\”\u003e\r\n\u003chead\u003e\r\n\u003cmeta charset=\”UTF-8\” /\u003e\r\n\u003ctitle\u003eNothing found for Well-known Acme-challe\”",
“status”: 403
},

# vim domains.txt

hogehoge.com www.hogehoge.com
# 必要なサブドメインはすべて書く。ワイルドカードも使えるらしいが怖くてテストしてない。
# 最初に書いたドメインでディレクトリが作られる。

# ./dehydrated --register --accept-terms
# ./dehydrated -c --accept-terms

# 最初の1回だけアカウントが作られる。
# domain.txt に書かれたドメインの証明書を取ってくる。
# 更新の都合もあるので、domain.txt にはすべてのドメインを書いておく。
# 更新の必要がなければ、スキップされる。

$ vim /etc/apache2/sites-available/default-ssl

<IfModule mod_ssl.c>
NameVirtualhost *:443
<VirtualHost *:443>
ServerName hogehoge.com
ServerAlias www.hogehoge.com
DocumentRoot /www/wp/
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/ssl_access.log combined
SSLEngine on
SSLCertificateFile /hoge/dehydrated-0.6.2/certs/hogehoge.com/fullchain.pem
SSLCertificateKeyFile /hoge/dehydrated-0.6.2/certs/hogehoge.com/privkey.pem
SSLCertificateChainFile /hoge/dehydrated-0.6.2/certs/hogehoge.com/chain.pem
</VirtualHost>
# apache のバーチャルホストの書き方。

$ vim /www/wp/.htaccess

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^.*/index.(html|php)
RewriteRule ^(.*)index.(html|php)$ http://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.|ww2\.|wp\.)?hogehoge\.com$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# http を https へリダイレクト。

$ service apache2 restart

# apache をリスタート。

毎月1日と15日に更新チェック
$ crontab -e

0 3 1,15 * * /root/dehydrated-0.6.2/dehydrated –config /root/dehydrated-0.6.2/config –cron >> /tmp/ssl-update.log 2>&1

WordPress> adminログインで2段階認証


TechCrunchのこの記事「全世界のWordPressサイトに大規模攻撃; デフォルトのアドミンユーザ名’admin’がねらわれている」にドキッとした方も多いのではないだろうか。

弊社で管理しているサイトの90%はWordPressでできているといっても過言ではないので、正直他人事ではないです。
対策としてとれる方法は次の通り。(簡単順)

  1. 新しく管理権限ユーザーを作って、adminユーザーを削除する。adminユーザーの持っていた投稿は新しいユーザーに移す
  2. WPのDBを直接書換え。adminのIDと名前を書き換えるだけなので影響が少ないが、phpMyadminなどでの操作が必要。
    UPDATE wp_users SET user_login=’newuser’, user_nicename=’newusername’ WHERE ID=xxx;
  3. 追記:WPをマルチサイト対応にしている場合は、wp_sitemetaのsite_adminsも変更すること。
    そうしないと、ネットワーク管理者になれなくなる。
  4. adminのログインに二段階認証を入れる

 
 
2番目の対策でやれば楽ちんなんだけど、今後adminだけの話ではなくなる可能性は十分あるので、今回は3番目の二段階認証でやってみることにします。まず、スマホ(Android)に AUTHYをインストール。iPhoneでもたぶん同じ。

  1. PCから、AUTHYにSign Inする。CLOUDFLAREなどの大手も使っているみたいだから大丈夫だと思う。
  2. Email、Country、Cellphone、Passwordを入れる。Countryは「Japan(+81)」、Cellphoneは頭のゼロを取る「9012341234」
  3. そうすると、携帯にメッセージ(SMS)が来る。https://www.authy.com/install からアプリをインストールしてねというメッセージなので、Playストアで AUTHYをインストールする。(無料)
  4. Android版 AUTHYをインストールする際も、Country、Cellphone、Passwordを聞かれるので再度入力。6桁のPINコードがメッセージ(SMS)で送られてくるので、それを入力すればインストール完了。
  5. Android版 AUTHYを起動すると、20秒ごとに TOKENが表示される。

 
 
スマホ(Android)で AUTHYが動くようになったら、PCでログイン。

  1. AUTHYでログイン。EmailとPasswordは先ほど入力したもの。
  2. Authy Token画面になるので、携帯に表示された TOKENを入力する。
  3. ダッシュボードが表示されたら「Create new application…」をクリック。Application Nameは適当に決める。
  4. Api Tutorial画面になったら、「or go to your dashboard」をクリック。
  5. 左サイドバーにいま決めた「Application Name」が表示されるので、これをクリック。
  6. このページの「Api Key」をコピーしておく。

 
 
AUTHYの「Api Key」が無事入手できたら、WordPressにプラグインを入れる。

  1. プラグインの新規追加で「Authy Two Factor Authentication」を検索、追加。
  2. 有効化したら、Settings画面で「Api Key」を設定。誰(権限)に対して二段階認証を行うかも設定できる。
  3. 「Disable external apps that don’t support Two-factor Authentication」にチェックを入れると、外部アプリが二段階認証をパスすることになるので、よく考えて設定すること。しない方がいいと思う。
  4. これが済んだら、ユーザープロフィールに移って、個人ごとの設定を行う。
  5. Two-Factor Authentication を Enableに。Country、Cellphoneを入力したら、携帯にメッセージが送られてきて完了。

※ 山本一郎氏がYahoo!に書くくらいだから、相当底辺まで広まったとみて、adminを変更する2番目の方法をとりました。

hotmailから拒絶を食らった場合の解決法

@live.jpあてに転送したメールが届かないという相談がありました。
ログを調べてみると確かにブロックされてエラーになっています。

postfix/smtp[]: : to=<xxx@live.jp>, orig_to=<info@kdp-satooya.com>, relay=mx2.hotmail.com[65.55.37.120]:25, delay=1.1, delays=0.01/0/0.47/0.67, dsn=5.0.0, status=bounced (host mx2.hotmail.com[65.55.37.120] said: 550 SC-001 (COL0-MC4-F17) Unfortunately, messages from 49.212.132.42 weren't sent. Please contact your Internet service provider since part of their network is on our block list. You can also refer your provider to http://mail.live.com/mail/troubleshooting.aspx#errors. (in reply to end of DATA command))

550 SC-001:
ポリシーを理由にメールが Outlook によって拒否されました。拒否された理由は、メールの内容が迷惑メールの特徴に似ていることか、IP/ドメインの評価に関連している可能性があります。電子メールまたはネットワーク管理者のどちらでもない場合は、電子メールまたはインターネット サービス プロバイダーに連絡して支援を依頼してください。

うちのサーバーIP(49.212.132.42)が丸ごとブロックされているみたいです。
どうやら、なんらかのアルゴリズムでスパム発信元認定されたみたいです。
同様の現象は OCNでもSO-NETでも起きているので、うちも大手並み扱いされるようになったかと放置しておいてもいいのですが、いやそれはよくないので、解決策を探しました。

https://support.msn.com/eform.aspx?productKey=edfsmsbl2&ct=eformts
このURLからIPアドレスを送ったら、ものの30分ほどで解除してくれました。表現的には『軽減済み』ですけどね。

同じくこの問題で困っている方、参考になさってください。

次ページへ »