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

カテゴリー「テクニカル」の記事

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プロトコルの結果検証

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バージョン毎のプロトタイプ宣言の解釈と処理の違いがあるようです。

Linux(Ubuntu系)でCISCOルータをターミナル接続!

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


Ciscoルータターミナル接続

CISCOルータをWindowsパソコンで設定を行うといった場合、一番多いパターンはTeraTermを使うケースが圧倒的に多いと思う。今回はSI作業する内容が圧倒的にLinuxが多かったのでCISCOのルータもLinuxでやろうと思いました。


しかも古いパソコンを使用してLinux導入しているため、マザーボードにはRS232CのCOMポートが付いている。最近の主流はUSB変換をして接続するので意外とRS232Cでのやり方が載っているサイトが少なかった。

ということでUbuntu系のLite Linuxをたまたまクライアント機として使っていたのでそれにターミナルからCISCOに接続して使えるようにする手順のメモを残しておこう。恐らくUbuntuやDebianの流れを汲んでいるLinuxなら操作は同じだと思う。参考にされたし。


最初にすること

  1. COMポートを経由して接続するために必要なソフトをインストール
  2. 使えるシリアルポート(COMポート)の調査
  3. 利用するシリアルポートを設定し接続を行う

COMポートを経由して接続するために必要なソフトをインストール

delegated proxyサーバで1台のサーバに仮想サーバを複数立ち上げる方法

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


delegated proxyサーバを運用する場合、1台のサーバで複数サイトをどうやったら起ち上げられるのか悩んでしまう人が多いみたいなのでやり方をご紹介しようと思います。apacheサーバだと簡単に仮想サーバ作れるのですがdelegated proxyサーバだとあまり情報がネット上にも落ちていなく困ってしまうのでしょう。



下記のスクリプトは1台のサーバに複数の仮想サーバをdelegated proxyで起動したいケースのスクリプトです。delegatedでのやり方は複数あるのですが一番手間のかからないやり方は下記のポート番号を複数台でユニークに設定して割り付ける方法かと思います。内部サーバを予め起動して外部の接続を名前ベース(FQDNドメイン名)で振り分ける手法になります。nvhostは名前ベースの名称割付箇所で外部からのリクエストをproxyが名前で任意の内部サーバへ割り当てる基準とするオプションです。nvservは共通の IP アドレスを持つ内部サーバー郡のホスト名を検出し、 それらを仮想サーバーとして表す場合のオプションになります。nvservはIPベースでは同じサーバを指しても問題ないのですが、proxyが勘違いしないように名前で判別するためのものです。nvhostがフロントエンドでnvservが1IPの際のバックエンド名前割当と考えればわかりやすいかもしれません。





他にも内部サーバの1枚のNICに複数のIPアドレスを割り付けてやる方法もあります。この場合はMOUNT行を変更するだけで実現できます。nvservが不要です。

雑学:2段階認証におけるSMSの遅延について考察

 / テクニカル, トピックス


最近弊社へのサービス問い合わせで某サービスの2段階認証を顧客アカウントでログインしないといけない場面があった。結果的にログインできなくて話はクローズしましたが、以前から不思議に思っていた事ではありパスコードが合わなかったりSMSが届かなかったり、遅延して20分近く経ってから届くこともあり従来認識していたSMSに対する信頼性に疑問を感じていた。
SMSは元々メッセージのための仕組みではなくて携帯電話が現在どの地域で使われているかモバイルキャリアセンターにあるLR(ロケーションレジスター)が状態把握するためにSMSのパケットを送ってポーリング(定期チェック)するためのものだ。その隙間がかなり空いているのでメッセージを乗っけてしまえというのがSMSの始まりだ。



SMSはガラケーの時代の初期は非常に使われることが多かったがキャリアメールが登場してからは利用が大幅に減りました。そのかわりMMSや別方式の送信方法が生まれバリエーションは増えたが決定打はスマホの登場だ。完全にインターネットの技術で送信できるためもはやSMSでのメッセージは使われなくなるだろうと思っていたが4,5年前からSMSゲートウェイサービスが増えて認証のワンタイムパスワード送信で送られる需要が急増した。



ここで、一旦話は前に戻すがSMSは携帯電話(スマホが)モバイルセンター側で位置を把握できている状態(電波が届く状態)ならほぼリアルタイムに送受信できる仕組みだ。故に最近の一部のサービスでSMSが遅延してしまうのは不思議とは思っていたところではあったが、問い合わせでの2段階認証のトラブルは今回改めてSMSゲートウェイサービスを調べるきっかけを作ってくれた。



現在2段階認証はメジャーどころのサービス(SNS、決済系、ショップ)では当たり前に普及している。その中の通知手段は色々選択できるがSMSを使った通知が一番多そうだ。実際に便利なのだがここ数ヶ月で頻繁に通知遅延を起こすようになってきたので不思議と思っていたがFBで疑問を投げたところ、運良く知り合いの社長がSMSゲートウェイサービスを提供していて原因を教えていただくことができた。



つまりSMSは基本リアルタイムで送受信できるのだが、インターネットサービスで使われている2段階認証のような通知サービスは通知トランザクションが沢山発生するため、SMSの一次受付のシステムがインターネット上のサービスしている会社側で用意されそこでパスコード生成とメッセージ生成を行い蓄積し携帯キャリアのSMSゲートウェイサービスに送信しているのだ。だから一時受付システムでの糞詰まりはよくおこるのだそうだ。

更にSMSゲートウェイサービスが日本にある場合、海外にある場合で更に状況が違ってくる。海外の場合複数のキャリアを跨いでリレーしながら交換機が配送するため遅延が生じてしまうのだ。たしか日本ではVodafoneが海外への電話通信の窓口になっているはずだ。AmazonはまさにSMSゲートウェイや一時システムが海外に有るため影響を受けやすい。更にキャリア間のSMS契約が容量で決まっているため、一定時間に受け付けられるSMS数はキャリア毎に決まっているそうだ。フリーSIMだとドコモ、au、ソフトバンクとMVNO業者が契約しておりその間で交わされている仕様やリミッターはベンダーによって様々だ。だからどのベンダーのSIMを使っているかで単位時間あたりのSMSを受け付ける契約状況が違ってくるのはうなずける話。フリーSIMは料金が固定で安いので当然絞りはあるのは間違いない



最後に二段階認証のパスコード発行は一時システムの待ち行列に入ると糞詰まりを起こすと、ユーザ側はついつい再送信をしてしまう。しかし吐き出される順番はFirst in First Outで吐き出されるため、古いパスコードが送られてくるのだ。この状況だとサービス側の持っているコードとコードジェネレータが持っているのが同期取れていないと錯覚してしまう。届かないと思ったら、詰まっているSMSを一旦吐き出させて30分、1時間くらい間を空けて再開するのが良い。

TOPへ戻る