「技術ログ」カテゴリーアーカイブ

Apache 2.4.xからH2Oへ移行

だいぶ前だけれど、このWordPressがうごいているWebサーバをApacheからH2Oへ移行した。
H2OがパスフレーズのあるSSL/TLS証明書を読まなくて少し悩んだ。証明書にパスフレーズが存在する場合はあらかじめ解除しておくとスムーズに進むはず。設定ファイル中に登場する/path/toやexampleは適宜環境に合わせて読み替えてね。

・httpd.conf(一部)

proxy_fcgi_moduleを介してphp-fpmを使っていた。httpd.confの全文はこちら。httpd-mpm.confはプロセスに関する設定ファイルなので省略。

・httpd-vhosts.conf

あと、H2Oに移行するにあたりWP Super Cacheの動作モードをmod_rewriteを使用するモードから『キャッシュファイルの提供に PHP を利用する。』に変更した。同プラグインのrewrite設定を眺めてmrubyに移植しようという気が起きなかったから。

・h2o.conf

この設定Version 1.7.0くらいの時に書いたものだけれど、現在version 2.0.0-beta2でも動作している。Apacheに比べると設定の記述がずいぶんスッキリしたが、特定のファイル・ディレクトリへのアクセス制御などがオミットされて移行前と機能は同等ではない。
今後はcipher-suiteの見直しや、Let’s Encryptの証明書を用いてheartprotocol.comの方もHTTP/2対応したい。いずれはワイルドカードの証明証が欲しいな。

参考Webページ

サーバの構成をCentOS7+H2O+php-fpm(PHP7)にしてみた | SUSH-i LOG
https://blog.sus-happy.net/h2o_php7/

Kazuho’s Weblog: H2OとPHPを組み合わせるの、超簡単です(もしくはmod_rewriteが不要な理由)
http://blog.kazuhooku.com/2015/06/h2ophpmodrewrite.html

h2o 解決!SSL時でのエラーについて – うま味がない
https://negima.mobi/2015/08/1754

It is an error to the SSL connection · Issue #456 · h2o/h2o
https://github.com/h2o/h2o/issues/456

このブログをHTTPS化した

YAPC::AsiaでHTTP/2のトーク聞いて熱に煽られ、HTTP/2化してみるかと一念発起。ただ主要ブラウザでは事実上HTTP/2とTLSはセット。まずはSSL証明書を入手してHTTPS化することから始めることにした。

さくらのRapidSSLがキャンペーンを行っていたので、そこでSSL証明書を入手。

今回はApache 2.4系なので、confの記述に関してはこのあたりを参考にした。
Apacheを再起動してもつながらなかったので、焦ったけれど443ポートが空いていないだけだった。ipfwで443を開けたらhttpsで無事接続できた。

WordPress側はひとまず「設定」-「一般」の”WordPress アドレス (URL)”と”サイトアドレス(URL)”をhttpからhttpsに変更しておいた。

各ブラウザで接続確認をしていたら、Firefoxで次のようなエラーが。

fxsslerror

どうやら、証明書ファイルとその秘密鍵ファイルに加えて、中間CA証明書ファイルの設定も必要みたいなのでダウンロードして設定する。中間CA証明書に関しては以下のエントリを参考にした。

これで一息ついたかと思えばそうではなく、画像ファイルのソースやこのページみたいにWebサービスの貼り付け機能など、セキュアでないリソースが一つでも混ざっているとブラウザがセキュアなページと認めてくれないらしい。画像ファイルのソースを書き換えていくのも面倒だけれど問題は後者。
ほとんどのブラウザで貼り付けたコンテンツが表示されず文脈が崩れたり、IEやEdgeだと「セキュリティで保護されたコンテンツのみ表示されます」の様に不安を与えるような表示が出たりしてよくない。ここまでHTTPSとHTTPのソースが混在することがシビアだと、現状HTTPSを導入するメリットは薄いというのが正直な感想。特にHTTPSに対応していないWebサービスの貼り付け・共有機能を用いてコンテンツを紹介している人には向いていない。

しばらくHTTPSで運用して問題点を洗い出し修正できたら、次はH2OでHTTP/2化してみたい。

mod_php

FreeBSDのPortsでPHP 5.4.27にアップデートしたらPHPが動かなくて焦った。
これまでApacheのモジュールとして動かしていたのだけれど肝心のモジュールがアップデートしたら消えていた!
すかさず lang/php5 下で make configしてApacheモジュールを含めてビルドしなおそうとしたけれどApacheモジュールに関するオプションがない!どうしたいいかと調べていたらどうやらmod_php5-5.4.27,1という別のPortsになっていた。

http://www.freebsd.org/cgi/ports.cgi?query=mod_php&stype=all

httpd.confでPHPのモジュールを読んでいるかを確認してApacheを再起動する。動いた。よかった。

そろそろ2.4.x + php-fpmにしたいですね。

参考文献

電算機孝行: FreeBSD php5-5.4.27 へアップグレード
http://near-unix.blogspot.jp/2014/04/freebsd-php5-5427.html
電算機孝行:FreeBSD www/mod_php5 をインストール
http://near-unix.blogspot.jp/2014/04/freebsd-wwwmodphp5.html

いま一つ前のエントリを拝見すると似たシチュエーションでした。mod_phpが別Portsになったのは5.4.26からだったのか…。このまえ5.4.26にしたときは何も問題がなかったのになあ。

mod_deflateその後

2014-01-05-20-05-56

 

某店でWindows Vista Basicのステッカーが50円だったので買ってきました。確かにロゴの印字が荒く感じたり全体的に右寄りでバランス悪く感じたり値段相応のチープさだけどこれはこれで。

脈絡のない前置きはさておき、Apache 2.2.26でmod_deflateをONにするとWordPressの投稿画面でメディアライブラリがうまく動かない問題は、PHPによって吐き出されたHTMLのレスポンスヘッダにContent-Encoding: gzipが付与されていないことが原因だった。.jsや.cssは圧縮されている扱いになっておりHTMLだけが圧縮されていないことになっていた。

php.iniで zlib.output_compression の項目をOnにしたら無事HTMLにレスポンスヘッダにContent-Encoding: gzip が付与されてめでたしめでたし。メディアライブラリも無事動いて画像を選択、挿入できるようになった。しかし

スクリーンショット 2014-01-05 23.47.28

と圧縮されているけれど倍率がx1なのが気になる。OS X 10.9上で SetOutputFilter DEFLATE だけ記述しmod_deflate有効にした時はHTMLもx4くらい圧縮されていたのに。また後ほど調査。

まとめ

※インストール時に必要なモジュールを含めていることを前提
Locationディレクティブでdeflate無効にする必要はなかった

・httpd.conf (Apache 2.2.26)
deflate_moduleが読み込まれているか確認
<ifModule mod_deflate.c>はIncludeでextraにある設定ファイルを読み込んでいく前に記述した

LoadModule deflate_module libexec/apache22/mod_deflate.so

=== 中略 ===

<ifModule mod_deflate.c>
    SetOutputFilter DEFLATE
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
</ifModule>

・php.ini (PHP 5.4.23)
項目があればOnに、なければ記述

zlib.output_compression = On

 

参考文献

mod_deflate – Apache HTTP サーバ
http://httpd.apache.org/docs/2.2/mod/mod_deflate.html

実用 Apache 2.0運用・管理術(4):mod_deflateによるコンテンツの圧縮転送 (1/3) – @IT –
http://www.atmarkit.co.jp/ait/articles/0510/07/news107.html

Now Browsing: 改行削除するくらいなら gzip したらいいじゃない | WWW WATCH
http://hyper-text.org/archives/2012/11/webcontents_gzip.shtml