「wordpress」カテゴリーアーカイブ

WordPressでパーマリンク設定をいじったら

はじめに

パーマリンクっていうのはこの記事のURLでいうところの”edit-permalink”部分に相当する、記事を公開するための重要なものです。

私は自分で適当な値を自分で決めていれるようにしていますが、結構いろんな設定の仕方を自由に決めることができて、選択肢が多い分意図しない設定にしちゃっていることがあったりします

 

どんな設定があるの?

↓を参照ください(自分で書こうかとも思ったけどずっといい記載があるのでご紹介)

https://www.adminweb.jp/wordpress/permalink/index5.html

 

私の場合

別サイトなんですが、構築時に日付を入れるようにしてしまってました

更新していて気づいたのですが、更新するとアドレスが変わっちゃって、検索エンジンやランキングサイトからのアクセスに激しく影響することがわかりました。。

ならいっそ変えちゃおう、ということでさくっと変えてしまいました。

記事が150以上あるもの全部です。

 

変更内容

/%year%/%monthnum%/%day%/%postname%/

/%postname%/

にしました

この記事のURLでいうところの”edit-permalink”の前に年月日が入るようになってたのでそこをごっそり取った感じ。

 

結果

「ページを表示できません」連発。

やめときゃいいのに、まさしくミイラ取りがミイラになった状態。笑えねぇ。。

 

対処

①プラグインに頼る

困ったときはまずプラグイン。おかげでうちのWPには実に様々なプラグインが入ってて使ってるんだか使ってないんだかもわからん状況。そのうち片付けよう。。

 

入れたプラグインは Redirection です。

転送元のアドレスと、その転送先アドレスとを指定するものです。

慌ててたのでとりあえずプラグインを入れておいてさっき書いた記事を生かそうと設定してはたと気づきます

 

これ、全部登録するのか?

 

200弱ある記事に対して1個1個設定することの面倒さに驚き、慌ててなんか一括登録できないか調べました

 

②.htaccessへの正規表現記述

 

<IfModule mod_alias.c>
RedirectMatch ^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*)$ /$4
</IfModule>

([0-9]{4}) 0から9の数字4桁→年
([0-9]{2}) 0から9の数字2桁→月
([0-9]{2}) 0から9の数字2桁→日
(.*) 文字列複数の意

これらを半角スペース後ろの文字列で置換。置換先は元のURLから4つめの値を使う、という指定です。

 

プラグインいらねーし!

と思ったが見てみるとこれはこれで使えるものとわかる
(404が出たアクセスの見える化)

 

見知らぬボットたちの襲来

プラグインをいれたことで今まで気づかなかったことに気づいてしまった。

 

 

 

 

誰だおまえたち!!

というか単なるbotなんですが、一度見ちゃうと気になるもの。なんかないかなと思ってみてみると

http://tech.rdy.jp/article/2018/05/14/683/

 

おおまさにこれ。早速.htaccessに追加した

※.htaccessはちょっとでもミスがあると全ページがダウンするような恐ろしいやつです。
編集時はくれぐれもご注意を。

WordPressでTOPに更新日を入れる & 編集できるようにする

発端

ちょっと前に↓でTOPを更新時間順に表示させるようにしてました

 

これちょっと問題が合って、「更新日の変更」を指定しないと例えばクイック編集とかで編集すると意図せず記事が上に上がってきちゃって恥ずかしいことになって、しかも修正できないときたもんだ。

 

検討

①更新時間を編集できるようにしたい

②ついでに更新時間を表示させたい

 

対処

例によって丸写し。

①こちらを参考にさせていただきました

https://thk.kanzae.net/net/wordpress/t1426/

※あとから気づいたけど、更新日順に表示させるときと同じサイトさんだった・・・・

 

②こちらを参考にさせていただきました

 

結果

①投稿日と更新日がちゃんと並んで表示されてる!

 

 

 

 

②更新時間が自由に編集できた!

 

 

 

 

 

 

 

ということで珍しくうまくいった。これ以上いじると蛇に足を書いちゃうのでやめておこう

一時的にサーバが停止していました

サイト証明書の分割作業で実は失敗してたことに気づきまして、あれこれいじってたらどんどんひどくなってしまいにはサイト閉鎖まで行ったんですが、どうにか修復しました

停止期間にもしアクセスされてたらすみませんでした

書くネタが増えたと喜ぶ反面、二度と壊したくないともおもってまして、いやはやまいりました

LetsEncryptのSSL証明書をドメインごとに(追記あり)

概要

当サイトも一応SSL化したんでChromeで恥ずかしい表示は出ないとおもうんですが、1つ問題がありました。

 

複数ドメインで1枚の証明書だけだった

 

ブログを始めたきっかけが不労所得倍増計画だったんで、ここ以外にもあと2つほど独自ドメインを持っています(うち1つはまだ準備中) ←202003現在、7ドメイン保持中w

で、SSL証明書っていうのは1つのグローバルIPに対して1枚が一般的で、中にははてなとかよくあるレンタルサーバなんかでまとめて証明書を使ってたりするわけですが、無料でSSL証明書を出してくれるLetsEncryptではそういうサービスまではやってないようでした。

したがって1枚の証明書発行時に複数ドメインを全部明示して作成するんですが、それだと載せた証明書をよく見ると他のドメインがバレバレなわけで、テレ屋の私としてはそれがちょっと引っかかっていました

 

対応の前提

で、ずっとそれを気にしていたのですが、どうやらLetsEncryptでも1つのIPで複数の証明書を作れるという記載を見つけたのでとびついてみました

 

 

おせわになりました。

 

・1つのIPで複数のドメインの証明書に対応させるにはSNIという機能を使う

(これまで使ってた機能はSAN=Subject Alternative Name

SNIを使うにはVirtualhostの技術を使って1つのIPに対し複数のドメインがあるように振る舞わせることで実現できる

・古いブラウザではこのSNIに対応していないために表示できないケースもあるが、現時点で出ているブラウザはほとんどが対応していると思われる

 

ということでした

 

作業内容

さきほどやってみました

※途中失敗して何度となくサーバーエラーを出しました。見てた方ごめんなさい。。

【注意】トラブルが発生したときにすぐ戻せるような状態でやってください

 

従来の証明書取得コマンド(3サイト分:1枚の証明書に複数サイトを証明するデータが保管されている)

certbot certonly –webroot -w /var/www/html/ -d ドメイン① -d ドメイン② -d ドメイン③

 

今回の変更点

証明書取得コマンド(3サイト分:1つ1つが独立した証明書になっている)

certbot certonly –webroot -w /var/www/html/ -d ドメイン②

certbot certonly –webroot -w /var/www/html/ -d ドメイン③

 

/etc/letsencrypt/live/配下にドメイン名フォルダができて中に証明書が格納される

 

/etc/httpd/conf.d にメインじゃない2サイト分のconfigファイルを作成、個別にとった証明書のパスを指定

<VirtualHost *:443>
ServerAdmin webmaster@ドメイン名
ServerName ドメイン名
DocumentRoot /var/www/html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride None → All #20180814追記
Order allow,deny
allow from all
</Directory>

SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM

SSLCertificateChainFile /etc/letsencrypt/live/ドメイン名/chain.pem
SSLCertificateFile /etc/letsencrypt/live/ドメイン名/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/ドメイン名/privkey.pem

</VirtualHost>

これを2サイト分作って保存

終わったらapacheをリロード

systemctl reload httpd

 

これでサブサイトで証明書の詳細を見たときに「なにこのサイト?」ってことがなくなる

まぁそこまで見る人も多くないだろうから別にそのままでもよかったんだけど、要するに自己満足ってやつですね

あとは自動更新させるスクリプトを組んでいるのでそれをちょっと直さないとだめかも

疲れたからまたこんど、っつーことで。。。

 

お疲れ様でした。

 

20180814追記)

.htaccessがあるディレクトリは AllowOverride All にすること!

WordPressで”cURL error 6”が出たら

[box02 title=”この記事はこんな方向けのものです”]
・WordPressで「cURL error 6」が出た
・VPSを使ってます
[/box02]
WordPressでプラグインの更新通知が来てたので更新しようとしたら

cURL error 6: Could not resolve host: downloads.wordpress.org; No address associated with hostname

と出て受け付けてくれなくなった

 

意訳:cURLでデータを取りに行こうとしたけど、downloads.wordpress.orgなんてアドレスにはアクセスできませんでしたよ?

そんなはずは全くなく(勿論上記ドメイン部分だけなら404だけど)、なんか別な理由があるんじゃないかと推測。

 

早速ググって以下内容を発見

You login VPS and use command restart nginx, Php-FPM, MariaDB (MySQL)

 

意訳:VPS使ってんだろ?ログインしていろいろリスタートしてみろや

 

上記アドバイスでは「nginx」「Php-FPM」「MySQL」をリスタートしろと言っておられるが、僕はエンジンエックスは使っていない。とりあえずダメ元でhttpdを再起動。

systemctl restart httpd

⇨回復。

次もし出たらreloadにしてみよう。

モバイルサイトの読み込み速度とパフォーマンスをチェックする

はじめに

自サイトを持ってアクセス解析などされている方はとうの昔にお気づきだろうが、ネット閲覧の手段の中心は通常のPCからモバイル端末へとすっかり移行してしまっている。

かくいう私もPCでネットを見る時間よりも手元のiPhoneで見るほうが多く、良くも悪くも流行にのっているということだろうか。

そんなこともあってか、Google先生もPCよりモバイル向けのコンテンツのことを見てくれるようになってしまっているらしく、そんな代表ともいうべきサイトがこれである

https://testmysite.withgoogle.com/intl/ja-jp

※ちなみに以前は日本語版はなかったが、今ではこのようにきちんとした翻訳が施されたサイトができあがっている

 

やってみた

アドレスを入れてみろとフォームを出されると条件反射的に自サイトのURLを入れてしまうのは、さながら検索フォームを初めて出されて自分の名前を入れるようなものと一緒だろうか。

閑話休題、このサイトを測定してもらった

ご丁寧にモバイル画面までつけてくれている。さすが先生。

10人来てくれたらうち3人は読み込み中に帰ってしまうそうだ。ちょっとは待てねーのかこのせっかちが!と言いたいところだが自分も多分同じような動きをしそうなのでぐっと我慢。

 

見事にビリである。店を開いたつもりはないがこういう結果を出されるとちょっとつらい。

 

俺の言うとおりにすれば3秒速くしてやるぜ、なんて後で多額の金品を要求されそうな雰囲気だが、そんあことは多分ないだろう。きっと。

 

上記ページの下部にある「優先度の高い修正点を確認」をクリックしたところ。

サイトテンプレートは自分で作ったわけじゃないしここまで難しそうなことかかれてもわかんねーなー、ということでとりあえずみただけで終わってしまった。

「先生に言われたとおりにしてみたらこんなに速くなりました!」ってかければいいんだろうけど、そこまではちょっと無理そう。

 

おまけ

試しにOCNがどうか見てみた。

可もなく不可もないといった感じ。つまらん。でも離脱率が結構高い。

 

また、ページを開くと必ず出てきた「無料レポート」を請求するとこういうのが届く

別にここから先は有料です、とかはないのでご安心を。

 

まとめ

モバイル向けにサイトを作るのは重要、っていうことですかね

興味のある方は試してみてください。

https://testmysite.withgoogle.com/intl/ja-jp

 

以上、何も得るもののないくだらない記事でした。失礼しました。。

WordPressで更新順に記事を並べる

古い記事を更新してもデフォルトのつくりでは埋もれたままだったので、下記の記事を参考に少し手を加えてみました。

https://thk.kanzae.net/net/wordpress/t7253/

 

最近functions.phpの編集に失敗したばっかりだったのですこしびびりながらの作業でしたが無事完了。

これで古い記事に手を入れるのが少し楽しくなった、かも。

ちょっぴりトラブル

いろいろあってwordpressの命ともいうべき”functions.php”が空になってしまいました。。

 

経緯

①更新した記事を上に持ってくるようGUIからfunctions.phpをいじろうとした

②いじろうとした環境はいつもとちがうPC

③いじったらエラーが出て更新できず

④さらにいじってたらいつのまにかファイルサイズが0byteに・・・・・

⑤修正作業でwordpressを一時停止に追いやった

⑥今に至る

 

教訓

・なれない環境でこみ入ったことをしない

・うまくいかないからっていろいろやらない。よく考えて行動すること

 

はてな連携がバッサリ消えてteratermのログをもとに復元したらエラーで止まった・・・・

※ちなみにバックアップ用に入れているプラグインを入れただけで何も設定してなかったのでバックアップがとれていなかった・・・・ああ二次災害

はてな連携の方法を整理できてなかったからそれができたのでよかった、と考えるか・・・

kagoya VPSのスペックアップ

ここ最近のサーバ運用状況を考え、ついにサーバのスペックアップを実施することにしました
※すでに実施済み

 

大変簡単でなんの問題もなかったので書くほどではないのですが一応記録まで。

なおスペック変更に際し既存データへの影響はありませんでした

※enableし忘れでhttpdが立ち上がってこなかったけど

https://support.kagoya.jp/cloud/manual/content/16/61/ja/%E3%82%B9%E3%83%9A%E3%83%83%E3%82%AF%E3%81%AE%E5%A4%89%E6%9B%B4.html

 

変更前

メモリ1GBって今じゃクライアントPCの数分の1。まぁでも人が集まらないような個人のブログでは十分な内容でした

(場所によっては512Mなんてのもあるらしい。俺も最初はこのぐらいでいいだろうと思ってたけどやっぱだめだ)

CPU1コアで簡単に言えばワンオペ状態。いや悪かったよ。。。バイト追加するから辞めないでね。。。。。

 

変更内容

で、今までは最低額の24円/日。容量には困ってないので35円/日に。これでも1000円切るのでkagoyaやっぱ安いわ。

 

変更実施

①まず既存のインスタンスを止めます。停止を押すだけ。

 

②同じコントロールパネルの「スペック変更」を押します

 

③変更後のスペックを選択します(画像再掲)

 

④3分程度たてば完了。ステータス画面が自動で切り替わります。その後起動を押せばおわりです。

無事新人が入りまして、深夜のワンオペレーション状態は解消されるでしょう。たぶん。

AMP(Accelerated Mobile Pages)に対応させてみた

AMPとは”Accelerated Mobile Pages”のことだそうな。モバイル端末で高速に表示させるための対応を施したものの呼び名らしい。AMPページ、とか書いてあるのみるけどあれページがダブってるな。どうでもいいけど。

 

で、なんでも試したがりのオレサマとしては是非やってみたい。

 

使ってるテンプレートがちょっといじるだけでAMPに対応するらしかったので早速試してみました

雷のマークがつきました。このリンクがモバイル向けページへのリンクで、Googleに申請することでそこへのリンクを検索結果で表示してくれるらしい。

雷マークをみたら試してみてください

 

ブログの参照元について

当方別サイトでもいくつか書いてるんですが、そこのアクセス元が「にほんブログ村」のみな状況です。

もしかすると別なところからもくる人がいるのかも知んないけど、とりあえず記事を更新すると集まってきてくれるのはみんなブログ村。

一応検索サイトへ登録したり先日はてなとつないでみたりしてるんだけど一向に変わる様子なし。

もう少し様子を見たほうがいいのかしらん。。

Ping送信がうまくいかない(一応解決)

記事更新を外部に伝えるためのPING送信機能がいまいち。

当方一番メジャーな(というか代替はほとんどなさそう)な「WordPress Ping Optimizer」を使っていたのだけれど送信後にエラーだったり更新されなかったりでいまいち機能してくれていない。

ということで別なプラグイン(WebSub/PubSubHubbub)にかえてみてのテスト

これでうまくいくならありがたいのだが・・・・

 

追伸:うまくいった模様。ふー助かったぜ

 

追伸2:どうやらWebSub/PubSubHubbubでは更新通知されない模様。もともとの機能の方に設定してたのが有効になっただけらしい。。。

WordPressにはてなスター

はてなとの連携を進めてたのは前に書いてましたが、46年間生きてきて「はてなスター」なるものに初めて出会い、自サイトに組み込んでみたいという欲求にかられ、はや休日の半分を消化しています。

 

付け方わかんねぇ・・・・・。

 

参考情報は出てくるんだけど、さすがに10年以上も前のものなので「はてなスターをつけました!」って書いててもどこにもない・・・

きっとテーマ変えたりしてるうちに消えちゃったんでしょう。

そのうち

てのもでてきたりして欲求は消え去ったのでした・・・。

 

もし付け方わからなくてここにたどり着いた方がいたらマジごめんなさい。。

 

 

ちなみに特定のプラグインがあればの話ですがはてなスターの導入自体は簡単です。

①使うプラグインは「All in One SEO」。管理画面から設定をひらく

②「詳細設定」までスクロール。「投稿のヘッダーに追加記入」欄に自分用トークンを含んだjavascriptを貼り付け

だけでOK。個別投稿ページを開いてソースを開いて「HatenaStar.js」があればOK。

 

ただこれだけでは付いてるのわかんないしあんまり意味がない・・・・・・

BingWebマスター

SEO対策っていうんだろうか、未登録だったBingに登録してみた。

Bingなんて正直言って使ってないし新しいPC起動してIE立ち上げるとまずBINGを消す作業から、と思ってるくらいなので個人的には全然気にしてなかったのだけれどもWordpressとか各種プラグインとか見てると大抵Googleと並んでBingが出てくるので

 

しょうがねぇな、登録してやっか(なぜに上から目線)

 

ということで登録してみた。

なぜか未だにこのサイトのサイトマップを読み込んでもらえないんだが、とりあえず申請は終わった感じ。

 

その後いろいろ見てたら「モバイルフレンドリテストツール」なんてものがあったので試してみた。

サイトがどんだけモバイルで見るのに適しているかを示すものらしいが、問題はなさそうだ。

まぁこれもすべてサイトのテンプレートのおかげなんだろうけど、悪い気はしない

さて、BlogpeopleにPINGが飛ばない原因を探すか・・・

戦いは続く・・・・・

【決定版!】WordPressに投稿したらはてなブログに更新情報を載せる【18/08/02再追記】

いやー大変だった・・・

 

【やりたいこと】

被リンクもなく陸の孤島状態の我がブログを少しでも多くの人に見てもらおうと(単にPVを増やしたいだけとも言う)はてなブログを開設し、そこに「更新したよー」っていうのを載せたいと考えた。しかも手作業じゃなく投稿したら自動で。

たぶん似たようなことをやってる人は多いだろうから大きなことは言えないが、とりあえず少しは形になったのでここに記しておく

 

なお本作業についてはとある方の記事を参考に(というか丸パクリ)しているが、訳あってここでは出せないことをお詫びしておきたい。ごめんなさい。
※はてなからここへは俺ルールで一方通行にしているので

 

【やったこと】

・参考資料探し(偉大なお方の記事のおかげでここまでできた。けどここでは書かない)

はてなのAPIのさわりを学ぶ

・要所要所で詰まったのでGoogle先生の教えを請い続けた

・function.phpの編集(これが一番でかい)

・HTTP_Requestをインストール pear install HTTP_Request
※ちなみにこれのせいでレンタルサーバで動かしてるサイトは連携できなかった。まぁしょうがない。

・WordPressのデバッグモードをONにした
※あ、終わったからOFFにしておこう

・/usr/share/pear/HTTP/Request.phpの修正
※PHP7だと”&new”がエラーになっちゃうのでアンドを消した

・あとはひたすらトライ&エラー

 

【おろかなてん】

・マルチサイト設定で2つ動かしてるけど両方でサービス停止させた

・ちょっとやってできそうと思ってカスタマイズしてはまった(←カスタマイズあるある)

 

今回参考にしたサイトさんでは投稿した内容がそのまま掲載される作りだった。

ただし同じものが2つあるとGoogle先生に怒られるかと考え、内容をURLだけにしようとした

これがはまった原因。

 

以下、提供情報に追加・変更した分

if(strpos(site_url(),’domain1‘) !== false){$category = “domain1用カテゴリ“;}
if(strpos(site_url(),’domain2‘) !== false){$category = “domain2用カテゴリ“;}
※マルチサイトなので投稿元に応じてカテゴリを変えようとした。我ながらかなり泥臭い手法

$orgurl = htmlspecialchars(“誘導案内文<br>”).get_permalink($post);
※本文部分にはURLと、簡単な誘導用の文章(当初URLだけでいいかと考えていたが、ゆーざびりてーの向上を目指して変更)

$orgPcturl = wp_get_attachment_url(get_post_thumbnail_id(get_the_ID($post)), ‘medium’ );
※アイキャッチ画像のURLを取得

$orgPct = htmlspecialchars(“<br><p><img src=”.$orgPcturl.” /></p>”);
※画像を表示。そのままだと前のURLにくっついちゃうので改行を強引に挿入
あわせてスマホで見た際にTOPページでも画像が出るようにPタグで括った
なおこれは必ず画像を入れることを前提にしている。
画像がないとこの作りではリンクなしの画像が貼られてしまうので注意
(if文で画像があれば~をつければOK)

<?xml version=”1.0″ encoding=”utf-8″?>
<entry xmlns=”http://www.w3.org/2005/Atom”
xmlns:app=”http://www.w3.org/2007/app”>
<title>{$subject} が投稿された旨のメッセージ</title>
<author><name>{$author}</name></author>
<content type=”text/plain”>{$orgurl}</content>
<category term=”{$category}” />
<updated>{$created}</updated>
<app:control>
<app:draft>no</app:draft>
</app:control>
</entry>

 

以上、備忘録でした
連携サイトを伏せてはみたもののこんなの検索すればあっという間なんだよな・・・・まぁいいや

ああ、日曜がまるまる潰れた・・・・・

 

※追記:アドレスだけでは物足りなかったのでアイキャッチ画像に指定した画像をとってきて表示させられるように作り変えた。

※追記2:スマホのTOP画面にアイキャッチ画像を入れたかったがやりかたがわかんなかった。実はPタグで括られたイメージファイルを表示させるという至極単純な作りだった。

※追記3:アイキャッチ画像をはてなブログに載せることはできていたけど、アイキャッチ画像としては表示できていなかった(都度編集が必要だった)

先日事故で設定が消えたから書き直したら再現しなくなった・・・・・

はてなに問い合わせまでした自分が恥ずかしい・・・しかも原因わかんねぇし

【備忘録】新規サイト建設時にやること

使わなくなったレンタルサーバーのスペースが余っていて、腐らせとくのはもったいないと思ってサイトをたてたら土日まるまる使ってしまう状態だったのでやることを書いておく
次があるかどうかはわからんけど。

背景)

・レンタルサーバーは3年契約で月額88円(3168円の支払い済。あと2年以上あり)
・レンタルサーバーはターミナル接続もできなければSSLも非対応。メールは一応使える程度
・ドメインはなし(先日切れた)
・かけられる時間は土日程度

①ドメインを取得(ここで取得済)

②WordPressは管理元提供のコンパネで自動インストール。

③WordPressにプラグインをあてる(2020/02一部更新。追加したものが多数あって書ききれないから、せめて入れなおしたものだけ訂正)
All In One SEO Pack
BackWPup BackUpWordPress
Broken Link Checker
Contact Form 7 Ninja Forms
Crazy Bone
Favicon by RealFaviconGenerator
Google XML Sitemaps
Image Watermark
Jetpack by WordPress.com
Pixabay Images WPC Pixabay
WebSub/PubSubHubbub
WordPress Ping Optimizer

※振り返ってみると多いな・・・

④固定ページ作成(プライバシーポリシーとお問い合わせフォーム)

⑤WordPressの細かい設定(つまった点を書いておく)
・パーマリンクを /%category%/%postname% にしたら固定ページが使えなくなった→.htaccessを作る

⑥GoogleAdsenseの設定・設置

⑦GoogleAnalysticsの設定

ブログ村登録

以上、だいぶ飛ばしてるところもありそうだけどこんな感じ。性格上、作ってるときは熱心だけど一度出来ちゃうとあとは放置になりそうなので気をつけないと

HTTPS化に成功(含:LetsEncriptの導入方法)(2020/02更新)

 

もうちょっとするとGoogleChromeで非HTTPSサイトに警告がでるようになるっていうのはニュースにもなっててご存知の方も多いかと思います。


※かくいう@itもまだSSL化してなかったのね・・・・。

さすがに「安全じゃないよ」って出されるのは書いてる側としても本意ではないのでSSL化させることにしました。

 

条件は下記

・極力お金はかけない(というかかけられない)
・1つのサーバで複数のドメインを使っているのでまとめて適用させたい(いずれもwordpress)
・何よりめんどくさくない方法で。

 

で、みつかったのが無料のサーバ証明書を発行してくれる「Let’s encrypt」。
※StartSSLっていうのも前まではあったみたいだけど提供終了したみたい

 

当方の環境は以下
・OS:CentOS7.5
・http:Apache2.4
・SSL化したいドメイン:3pei.info, 〇〇.net

 

で、以下が作業手順です。難しそうに見えるかもしれませんが、案外簡単です

 

①証明書作成用のアプリをインストール

yum install certbot python-certbot-apache

 

②登録したいドメインを付けて実行
※下記は1つの証明書に複数のドメインを入れる場合です。特に理由がなければ別々にしたほうがきれいだと思います

certbot certonly --webroot -w /var/www/html/ -d 3pei.info -d 〇〇.net

 

③出来上がった証明書をapacheに登録

vim /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/letsencrypt/live/3pei.info/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/3pei.info/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/3pei.info/chain.pem

 

④httpdをReloadしてできあがり

 

⑤Wordpress側を対応させるためプラグインをインストール(Really Simple SSL)
※マルチサイト設定にしてるけど有効化は個別に
※プラグインに頼らなくともできることがわかったので、その後このプラグインは消しました。ただ作業が面倒なのでやめておいたほうがいいです
(後から後から次々と問題が出てくる)

 

⑥GoogleAnaryticsの設定をhttpsに変更

 

⓻3か月で証明書が切れるそうなので毎月初めに自動更新するようcronに登録
 ※/etc/cron.monthlyに以下内容のファイルを保存
certbot renew –webroot-path /var/www/html/ –post-hook “systemctl reload httpd”
 ※上記コマンドに –force-renew をつければ強制更新されるのでそれで動作確認

 

 

できあがり。Really Simple SSLが全部HTTPSにリダイレクトしてくれるので余計な設定不要。

細かい話をすればサブサイト側で証明書の詳細見たときにメインサイトの名前もでてしまうが、まぁいいや(←改善済)

とりあえず何も詰まることなく完了。こううまくいくときはたいてい後で致命的な問題がみつかるんだよな・・・・。

 

補足:自動更新内容はこんな感じです

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Processing /etc/letsencrypt/renewal/登録済みドメイン名.conf
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Cert not yet due for renewal ←更新の必要ないよの意

※これを登録してあるドメイン数分繰り返す。

登録してある = /etc/letsencrypt/live にファイルがあると登録済みと認識される

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

The following certs are not due for renewal yet:
/etc/letsencrypt/live/登録済みドメイン名/fullchain.pem expires on 2020-03-30 (skipped)
No renewals were attempted.
No hooks were run.
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

これが何もない時。

 

更新されるとこんな感じ(更新失敗例つき)

 

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Processing /etc/letsencrypt/renewal/更新対象ドメイン名.conf
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Cert is due for renewal, auto-renewing…
Non-interactive renewal: random delay of 282 seconds
Plugins selected: Authenticator webroot, Installer None
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for 更新対象ドメイン名
Using the webroot path サーバのWebRoot for all unmatched domains.
Waiting for verification…
Cleaning up challenges

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
new certificate deployed without reload, fullchain is
/etc/letsencrypt/live/更新対象ドメイン名/fullchain.pem
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Processing /etc/letsencrypt/renewal/更新失敗ドメイン名.conf
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Cert is due for renewal, auto-renewing…
Plugins selected: Authenticator webroot, Installer None
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for 更新失敗ドメイン名
Using the webroot path /var/www/html for all unmatched domains.
Waiting for verification…
Challenge failed for domain 更新失敗ドメイン名
http-01 challenge for 更新失敗ドメイン名
Cleaning up challenges
Attempting to renew cert (更新失敗ドメイン名) from /etc/letsencrypt/renewal/更新失敗ドメイン名.conf produced an unexpected error: Some challenges have failed.. Skipping.

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

The following certs could not be renewed:
/etc/letsencrypt/live/更新失敗ドメイン名/fullchain.pem (failure)

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
The following certs are not due for renewal yet:
/etc/letsencrypt/live/更新不要ドメイン名/fullchain.pem expires on 2020-03-30 (skipped)

The following certs were successfully renewed:
/etc/letsencrypt/live/更新対象ドメイン名/fullchain.pem (success)

The following certs could not be renewed:
/etc/letsencrypt/live/更新失敗ドメイン名/fullchain.pem (failure)
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Running post-hook command: systemctl reload httpd ←更新されたドメインがあるときは自動的にreloadが走る
なおreloadはWEB表示には影響しないので安心(restartは影響する)

1 renew failure(s), 0 parse failure(s)
IMPORTANT NOTES:
– The following errors were reported by the server:

Domain: 更新失敗ドメイン名
Type:   unauthorized
Detail: Invalid response from
http://更新失敗ドメイン名/.well-known/acme-challenge~

To fix these errors, please make sure that your domain name was
entered correctly and the DNS A/AAAA record(s) for that domain
contain(s) the right IP address.

 

ちなみにここで出てくる「更新失敗ドメイン名」はFreenumで取得してたのをうっかり忘れてて使えなくなってしまったもの。

つまり更新時に名前解決ができない状態だったために、自動更新が機能しなかったんだと考えられます。

以上、何かの参考になれば幸いです。

LimitInternalRecursion

記事を投稿するとかなりの確率でサイトが見えなくなるのを本日確認。

エラーログを見るとこんなのが

[Fri May 04 11:27:08.719567 2018] [mpm_prefork:notice] [pid 1445] AH00170: caught SIGWINCH, shutting down gracefully
[Fri May 04 11:29:46.665220 2018] [suexec:notice] [pid 1447] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Fri May 04 11:29:46.686983 2018] [so:warn] [pid 1447] AH01574: module rewrite_module is already loaded, skipping
[Fri May 04 11:29:46.688993 2018] [auth_digest:notice] [pid 1447] AH01757: generating secret for digest authentication …
[Fri May 04 11:29:46.689539 2018] [lbmethod_heartbeat:notice] [pid 1447] AH02282: No slotmem from mod_heartmonitor
[Fri May 04 11:29:46.840757 2018] [mpm_prefork:notice] [pid 1447] AH00163: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.1.15 configured — resuming normal operations
[Fri May 04 11:29:46.840799 2018] [core:notice] [pid 1447] AH00094: Command line: ‘/usr/sbin/httpd -D FOREGROUND’
[Fri May 04 11:34:44.720010 2018] [core:error] [pid 1507] [client 199.116.77.28:34360] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace., referer: http://site.ru

どうやらループしているらしいと先生からのお告げあり(.ruも気にはなるんだが)。

LimitInternalRecursion と wordpress で検索すると.htaccessの書き方が悪そうな話もあり、あらためて見直してみた。それが上の図。

当方マルチサイト設定にしているが、その際の設定と通常のパーマリンクの設定が重複してそうな雰囲気。なのでばっさり消してみた(.htaccessを晒すのは汚部屋を開放するようで若干抵抗あるが・・・・・)。

なるほど、設定時には「他の WordPress ルールを置き換えてください」って書いてたっけ。

さて、この記事の投稿でまた落ちるかどうか・・・・・。

 

追伸:落ちなかったみたい。で、ログをあらためてみてみたら・・・・・

[Fri May 04 03:43:54.747861 2018] [core:error] [pid 26833] [client 103.67.235.97:51989] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace., referer: http://site.ru
[Fri May 04 03:44:01.543547 2018] [core:error] [pid 26820] [client 103.67.235.97:52588] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace., referer: http://site.ru
[Fri May 04 06:19:16.487610 2018] [core:error] [pid 26832] [client 52.44.220.246:49961] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace., referer: http://site.ru
[Fri May 04 06:19:26.805741 2018] [core:error] [pid 26831] [client 52.44.220.246:50556] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace., referer: http://site.ru
[Fri May 04 06:19:47.270084 2018] [core:error] [pid 26801] [client 52.44.220.246:56732] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace., referer: http://site.ru
[Fri May 04 06:20:09.177729 2018] [core:error] [pid 26833] [client 52.44.220.246:59947] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace., referer: http://site.ru
[Fri May 04 06:20:16.120511 2018] [core:error] [pid 27045] [client 52.44.220.246:33326] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace., referer: http://site.ru
[Fri May 04 07:39:39.610058 2018] [core:error] [pid 26828] [client 148.72.28.201:57559] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace., referer: http://site.ru
[Fri May 04 07:39:42.044593 2018] [core:error] [pid 26832] [client 148.72.28.201:58007] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace., referer: http://site.ru
[Fri May 04 08:02:56.990200 2018] [core:error] [pid 26833] [client 50.63.164.149:40541] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace., referer: http://site.ru
[Fri May 04 08:02:56.992022 2018] [core:error] [pid 27581] [client 50.63.164.149:40367] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace., referer: http://site.ru
[Fri May 04 08:29:31.847545 2018] [core:error] [pid 26802] [client 119.59.104.22:52382] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace., referer: http://site.ru
[Fri May 04 08:29:35.973199 2018] [core:error] [pid 26801] [client 119.59.104.22:53202] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace., referer: http://site.ru

ねぇ暇なの?何しようとしてるのさ・・・・

WPQUADでダブルレクタングル

JuralMin / Pixabay

adsenseネタです。

ここではadsense表示用にはテーマ備え付けのものと「WP QUAD」というプラグインを使っているんですが、「WP QUAD」だとよく「ダブルレクタングル」って呼ばれている2枚並べての掲載ができないなーと思ってました

なんてことはない、設定画面でadsenseを選択しないで2つテンプレートを貼り付ければいいだけだったので使ってみました
(本来の使い方ではないのかもしれないけど、用はたせるかな、と)

これで2枚並んで表示できるようになると思います
※間違ってたらご指摘いただけると幸い。

リンクをきれいに表示してくれるWPプラグインPz-LinkCardを入れてみた

J-P_M / Pixabay

↑これ。なんかないかなーと思って探してたらすぐ見つかりました

設定方法などは公式をご覧いただくとして、とにかく使いやすいし見た目もいい。

リンクを張るのが楽しくなりそうなプラグインだ

(書いてて俺はサクラか?と思ったがまぁいい)