ネット上のアクセスボリュームをUPさせ効率の良い集客をご提案します。

カテゴリー「ノウハウ」の記事

DockerでWORDPRESSを導入する際のDataBaseバージョン(MySQL or Mariadb)要注意。

 / Linux Tips, Wordpress, wordpressテクニカル, トピックス, ノウハウ


昨今、大人気のDockerですが、システムはもちろんのこと中でも教育用に使われる機会は多いのではないかと感じます。WORDPRESSやLinux、各種言語の環境を素早く整えるために便利だと感じます。

初心者だけではなく、ITの専門家でも幅広くやっている方と一つに特化してやっている方で別れると思います。特に言語系技術とサーバ系技術は一緒で考えがちですがスケールが大きくなってくるとサーバ技術をきちんと持っているかどうかの違いが生じてきます。

そんなとき言語系でやられている専門家の方はDockerを使うことでハードルがぐんと下がるのではないかと思います。

前フリは長くなってしまいましたが、インターネットの世界ではWORDPRESSやPHPといった環境は圧倒的にWEBアプリケーションの中では使用頻度が高いためDockerで使用する人も多いと思います。

ということで、実際にDockerでWORDPRESSを使って見ようと思いました。
※今回はmariadbでWORDPRESSを使用したため問題なくあっさりWORDPRESSのインストールができましたが、mariadbを使わずMySQLを使う場合はバージョンをLatestバージョンにしてしまうと間違いなくハマります。

エラーが出て接続できないことでしょう。MySQLのバージョンがLatestだとVersion 8になってしまいWORDPRESSとのインターフェイスが取れなくなってしまうからですネットでもかなりVersion 8を無意識にインストールして接続できない問題で苦しんでいる方が多いようでした。

WORDPRESSで使う場合はMySQLのバージョンを5.7.xがよろしいと思います。下記のような感じで バージョン指定します。

【MySQLで接続する場合】

もし、様々な問題が生じたらやはりアプリ環境へログインして分析することが大切!

【デバッグは環境にログインしてアプリの設定を確認しよう】

CentOS6 Apache2.4へアップグレードかつHTTP2対応 SSL&phpも考慮

 / Linux Tips, テクニカル, トピックス, ノウハウ


CentOSはバージョン6,7ともレポジトリーISUを追加してhttp2対応が必要。CentOS7はApache2.4ではあるがマイナーバージョンがhttp2に対応していない。
尚更、CentOS6は対応できていない。Ubuntu/Debian系のLinuxなら比較的簡単に入れられるのでそこがCentOSの場合面倒なところ。

まず最初に現在使っているhttpd2.2.xのWEBサーバとphpを外す必要があるだろう。標準のものを使っている場合はremiの進んだバージョンのphpを使っている
場合もあるだろうが概ね下記のような感じで依存関係もチェックしながら外してゆく。その後にISUのレポジトリーを追加してhttp2対応のhttpd2.4を導入する。
このバージョンではmod_phpが古いhttpdでなければ動かないようなのでphpはfastCGIを使った方法に変更する。

現行環境の削除、レポジトリー追加とapache2.4(http2対応バージョン)+fastCGI導入

※httpd2対応のモジュールロード設定は/etc/httpd/conf.modules.d/00-base.confに追加されています。

プロセスをevent型に切り替える

httpd2対応にはhttpdプロセスのprefork型の動作では駄目です。event型に切り替える必要があります。

fastCGIの設定修正

mod_phpが使えないのでfastCGI経由でphpを動作させます。それにあたり基本設定の動作ユーザをapacheに切り替えます。

仮想サーバ設定にhttp2動作のためのデイレクティブ追加

サーバの起動

http2になっているかチェックする。

http2に対応していることがブラウザの検証ツールで確認できます。 またレスポンスヘッダーを見て確認する事もできます。

h2プロトコルの結果検証

DNS CAAレコード設置(サイト証明書を発行するSSL発行局の定義)でSSLの出処の信憑性を高める

 / Linux Tips, トピックス, ノウハウ


ドメインに対して、DNSレコードで「CAA」を指定することはサーバー証明書の発行する認証局(CA)を認識させる手段となります。現状ではDNSの定義が無いから駄目というものではありませんが将来的にはあったほうが良いと思います。グーグルのアナウンスでは明確にビジョンを打ち出しているわけではありませんが、SSLの設定レベルを検知して評価する話もちらほら出ているのでSSL設定の良すぎることに越したことはないです。
下記に自分でDNSを設定しているなら簡単にレコードを作ってくれるサイトがあるので試してみてはいかがかな。

DNSのCAAレコード作成

DNS CAAのレコードを作成するサイトへ行き次のように設定してください。最初に対象のドメインを入力し次に認証局のキーワードを
入れると候補が出てくるのでそこから単体のドメインライセンスかワイルドカードライセンスかを選択すると下方にDNSレコードの定義が出てきます。
Enter Your Domain name Select Authorized Certificate

DNSのCAAレコードフォーマット

通常DNS CAAレコードは下記のような書式で定義を行います。

文法:www.example-test.net.      CAA    flag   tag   value
例:www.example-test.net.   CAA 0 issue   ”globalsign.com”

tag各カラムの説明value
issueサーバー証明書を発行許可する認証局の指定“letsencrypt.org”などの認証局が指定している値
issuewildワイルドカード証明書を発行する認証局を指定“letsencrypt.org”などの認証局が指定している値
iodefCAA レコードの登録チェック後、証明書発行にトラブルがあった際に申請した事を通知する連絡先mailto:example@example-test.net

CentOS7/CentOS6 共通h2o Web サーバのインストール with WORDPRESSで動かしてみる。

 / Linux Tips, Wordpress, wordpressテクニカル, テクニカル, トピックス, ノウハウ


h2oサーバの導入の動機

h2o高速サーバh2oを使ってみようと思った理由はHTTP/2.xで通信できることかな。最近のGoogle検索順位は早さも大切な評価ウェイトをしめているためサイトの速度アップは重要なことです。
このHTTP/2.xのプロトコルはHTTPS通信において表示速度を向上させ並列してリクエストを処理できるため、表示速度が向上します。
Nginxも早いのですが、H2OはそのNginxを凌ぐ早さで表示できるようです。

h2oのレポジドリーの追加

h2oのインストールはCentOS7/CentOS6で共通です。基本はyumのレポジトリーに以下の記述を追加し保存するだけでyum経由でレポジトリー からのインストールが可能になります。

h2oのインストールと起動

h2oを実際にyumを使ってインストールし、起動する手順になります。

ユーザh2oの作成とドキュメントルート作成&WORDPRESSの設置

SSL & WORDPRESSを動かす際のコンフィグレーション例(h2o.conf)

今回はSSLを使ってh2o環境でWORDPRESSを動かすケースのh2o.confを挙げてみたいと思います。
let’s encryptを使ってSSLライセンス取得し、実験してみました。Let’s Encrypt取得のやり方はここ
ドキュメントルートに/opt/html/content1として、実行ユーザはh2oユーザを新たに作り設定しています。
nginxにも似ている書き方にも感じますが、インデントで設定の範囲がきまるので注意しましょう。
尚、fastCGIをh2oは直接管理できるので通常行うようなfastCGIの設定は不要です。
SSL証明書の項目設定の中でCAファイル(認証局証明、中間証明等)を設定する箇所はありません。
従ってサーバ証明書とCAファイルはcatコマンドで結合を行ってください。結合後に結合ファイルの終点と開始点の間に改行が正しく入っていなかったらエラーになりますので必ず結合の後にチェックが必要です。
最初にサーバ証明書が来るようにするのがポイントです。尚、LetsEncryptの場合fullchain.pemが既に結合されたものです。

おまけ:ソースからのh2oコンパイル

CentOS6.10のデフォルトのgccバージョン(4.4.7)では宣言エラー(同じ関数名で異なるタイプ宣言)が出てしまいました。しかしHomebrewで導入しているgccのバージョン(5.5.0)では 問題なくコンパイルが完了しました。gccバージョン毎のプロトタイプ宣言の解釈と処理の違いがあるようです。

サガワドラゴン大量フォーム投稿対策:cakephpでGoogle reCaptchaを使う。

 / Security Tips, セキュリティ日記, ノウハウ


お客様でサガワドランゴン名乗るフォーム登録で多数の迷惑メールを短時間で700通弱送るトラブルがあった。この問題のおかげでGoogle G Suite のアカウントが通数制限で送受信できなくなる問題が発生しフォームが使えなくなった。G SuiteやGmailは一日の通数制限があるのでスパマーが大量に送るとアカウントが一時的に送受信が凍結してしまう。但し一日立つと復活します。Gのメールフィルターはあまりよくない。それは、一度受信した上でフィルターをかけるため通数制限の問題に対して解決にならないのだ。

結局cakephpのバージョンが古くて2系であったためCaptchaプラグインが使えなくなっているものや、現代のSpam事情を考慮すると実装上の課題があるものが多いため、改めてGoogleのCaptchaを使うことにした。おそらく下手なcakephpプラグインを使うよりも実装は簡単で効果は高い。本音はWORDPRESSでフォームを作っていれば簡単にGoogle Captcha使えるのにね!と思います。まあ、フレームワークで作る場合は人それぞれの個性が出るので作り方のトレースをある程度行った上で導入が必要になる。 今回の環境はcakephpでしたがおそらくcakephpのどのバージョンでも使えると思う。まあ、参考にしてみてください。GoogleのreCaptchaを使うには予めユーザ登録とドメイン登録が必要。サイトキーやシークレットキーもここで取得します。やり方は過去記事のここを参考にしてみてください.Google reCaptcha

ヘッダに設置

フォームに設置

コントローラに設置

次のコードを適宜書き換えてフォームを表示する部分の処理において内容チェック処理を行う部分もしくはSubmitする直前に挿入してみてください。

特定のヘッダ項目で比較チェック

※メールのヘッダ項目やBODYの内容で特徴あるパターンでトラップさせる。サンクスメールの送信前や確認表示の前に入っているバッファで 文字列比較すると良いと思います。

文字列はUTF-8でエンコーディングという前提です。項目は攻撃を仕掛けられたサイト毎に異なるため、事前に届いている攻撃メールを調べて共通項を調べてみてください。意外とどのメールにも共通した文字列が潜んでいるものです。そこを文字列含む関数比較(preg_match)を使って検出すると良いです。後は問題あるものは適当なページへ飛ばす事です。

TOPへ戻る