Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Apache から LiteSpeed に乗り換えてみませんか? / php-conferen...
Search
TAKAHASHI Kunihiko
December 01, 2019
Technology
1
1.5k
Apache から LiteSpeed に乗り換えてみませんか? / php-conference-japan-2019-track5-hello-litespeed
2019/12/01 に行われた PHPカンファレンス2019の Track 5 で発表した「Apache から LiteSpeed に乗り換えてみませんか?」の登壇資料です。
TAKAHASHI Kunihiko
December 01, 2019
Tweet
Share
More Decks by TAKAHASHI Kunihiko
See All by TAKAHASHI Kunihiko
Webアプリケーションエンジニアだった私がホスティング事業に興味を持った理由 / Fukuoka UIJ Turn gmo pepabo
kunit
0
460
アプリケーションエンジニアな私がホスティング業界に来て感じたあれこれ / ChugokuDB Vol27
kunit
0
570
Google App Engine PHP 7.2 を試してみる #phpstudy / google app engine php 7.2
kunit
1
930
独立したコアレイヤパターンをためしてみる / try independent core layer pattern
kunit
3
940
CircleCI 2.0 を使い倒そう / phpcon kansai 2018 circlci docker
kunit
7
2.6k
PHPのバージョンアップについてあれこれ / luncers lunch study 3 php version up
kunit
0
2.1k
CircleCI の歩き方 / CircleCI #phpstudy
kunit
2
250
CircleCI 2.0 をつかってみよう / CircleCI #phpcondo2017
kunit
0
680
Docker for Mac/Winってどうなの? / #fukuokaphp docker for mac and win
kunit
0
200
Other Decks in Technology
See All in Technology
re:Invent2024 KeynoteのAmazon Q Developer考察
yusukeshimizu
1
130
0→1事業こそPMは営業すべし / pmconf #落選お披露目 / PM should do sales in zero to one
roki_n_
PRO
1
960
Cloudflareで実現する AIエージェント ワークフロー基盤
kmd09
0
280
.NET 最新アップデート ~ AI とクラウド時代のアプリモダナイゼーション
chack411
0
190
完全自律型AIエージェントとAgentic Workflow〜ワークフロー構築という現実解
pharma_x_tech
0
320
RubyでKubernetesプログラミング
sat
PRO
4
150
KMP with Crashlytics
sansantech
PRO
0
240
技術に触れたり、顔を出そう
maruto
1
140
2025年のARグラスの潮流
kotauchisunsun
0
790
駆け出しリーダーとしての第一歩〜開発チームとの新しい関わり方〜 / Beginning Journey as Team Leader
kaonavi
0
120
OPENLOGI Company Profile for engineer
hr01
1
18k
My small contributions - Fujiwara Tech Conference 2025
ijin
0
1.4k
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
230
52k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.4k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3.1k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.8k
Designing for humans not robots
tammielis
250
25k
Testing 201, or: Great Expectations
jmmastey
41
7.2k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
A designer walks into a library…
pauljervisheath
205
24k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
500
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
173
51k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
The World Runs on Bad Software
bkeepers
PRO
66
11k
Transcript
Apacheから LiteSpeedに 乗り換えて みませんか? (デモ内容補足版) 2019-12-01 PHP Conference Japan 2019
GMO Pepabo, Inc @kunit
自己紹介 ✔高橋邦彦 ✔@kunit ✔GMOペパボ株式会社 ✔ホスティング事業部所属 ✔2018年11月に東京から福岡 に移住
「みんなのPHP」でるぞー ✔ 技術評論社さんからでます ✔ 電子版は本日発売 ✔ 物理本は12/6発売 ✔ 執筆者、総勢18名!! ✔
私は1章担当しました ✔ みなさん、買ってね!
GMOペパボ株式会社 ✔ 一緒に働く仲間を募集中です! ✔ ご興味のある方はぜひお声がけください
GMOペパボ株式会社 ✔ロリポップ! ✔ムームードメイン ✔カラーミーショップ ✔SUZURI ✔minne ✔その他にも多数のサービスをして ます!
ロリポップ! 9月に新プラン追加 ✔ハイスピードプラン ✔LiteSpeed を採用しています
こんな方はいらっしゃいませんか? ✔ずっとApacheを使っていて、nginx + php-fpm に移行したいなと思ったが ✔長年熟成に熟成を重ねてきた数百行の秘 伝の mod_rewrite ルールが存在して いて
✔泣く泣くApacheを使い続けているとい う ✔あなたに特に本日の発表をおすすめしま す!
LiteSpeed とは ✔LiteSpeed Technologies が開発している Webサーバー ✔第4のWebサーバーと言われて いる ✔Apache ✔nginx
✔第3は?
LiteSpeed とは ✔有償版とオープンソース版がある ✔有償版はホスティング事業者が 嬉しい機能が満載 ✔オープンソース版は有償版に比べ て一部機能が使えない ✔ロリポップ!ハイスピードプラン では有償版を利用しています
LiteSpeed の特徴 ✔Apache 互換 ✔イベントドリブンアーキテクチャ ✔HTTP/2、QUIC、HTTP/3 ✔DoS/DDoS 対策 ✔WordPress に対するキャッ
シュ、攻撃対策
Apache 互換! ✔有償版はApacheの httpd.conf がそのままつかえる ✔有償版は .htaccess がそのままつ かえる ✔既存のApacheから5分で乗り換え
れると公式は言っている ✔オープンソース版は mod_rewrite ルールを解釈してくれる
LiteSpeed 上での PHP ✔ LiteSpeed SAPI というのが準備さ れている ✔ PHP
のコアにきちんとあるんです
Apache + mod_php ✔Apache 本体のプロセスにPHPインタプリタ がそのままロードされる ✔静的コンテンツとPHP処理プロセスは同じもの で処理される ✔静的コンテンツを大量にさばきたくても、プロ セスを増やすとPHP側も増えてしまい、DB接
続数やメモリ使用量等で問題になる ✔Apache は prefork で動作(C10K問題) ✔PHPのバージョンは全プロセス同じものとなる ✔php.ini は全プロセスで同じものとなる
nginx + php-fpm ✔nginx とは別に php-fpm を起動しておい て、リクエストを転送する ✔それぞれ別管理、別起動 ✔静的コンテンツは
nginx、PHPは php-fpm で処理できるので効率的 ✔イベントドリブン(C10K問題に強い) ✔バーチャルホストごとにPHPのバージョンを変 更可能 ✔バーチャルホストごとに php.ini 指定可能 ✔.htaccess は使えない
LiteSpeed ✔LiteSpeed WebサーバーにPHPを利用するア クセスが来た際に、PHPの処理プロセスを起動さ せることが可能 ✔もちろん、予め処理プロセスを起動しておくこと も可能だが、これもLiteSpeed Webサーバー が管理してくれる ✔イベントドリブン(C10K問題に強い)
✔一定時間処理がないPHP処理プロセスは自動的に 落としてくれる ✔LiteSpeed Webサーバー本体で静的コンテン ツを、PHPは別プロセスで処理するので効率的
LiteSpeed ✔有償版は httpd.conf/.htaccess 使用可 ✔オープンソース版は .htaccess から rewrite ルールの読み込みが可能 ✔バーチャルホストごとに細かい制御が可能(秒間
リクエスト数や帯域幅等) ✔バーチャルホストごとに php.ini 指定可能 ✔外部アプリケーションという考え方があ り、PHPの処理はこれを利用する ✔外部アプリケーションをサーバー全体もしくは バーチャルホストごとに設定可能
LiteSpeed 外部アプリケーション ✔外部アプリケーションごとにPHPのバージョ ン指定できる ✔外部アプリケーションごとに実行ユーザを変 更できる(suEXEC) ✔メモリ使用量、プロセス数を制御可能 ✔外部アプリケーションは拡張子に対して指定 する ✔つまり、同じバーチャルホストで
も、.php73 と .php72 でバージョンを変 えるというエグいこともできる
LiteSpeed ✔有償版には WordPress の wp- login.php や xmlrpc.php に対す る
Brute Force Attack Protection という機能がある ✔一定時間内に決まった回数アクセスが あるとそのIPを弾くとかが可能 ✔LiteSpeed Cache Plugin という WordPress Plugin をオフィシャ ルで提供している
LiteSpeed PHPのインストール ✔LiteSpeed 公式リポジトリからインス トール可能 ✔PHP 5.2 から 7.3 まで準備されている
✔2019/11/30 現在は 7.4 は準備され てなかった(残念) ✔yum install lsphp73 lsphp73- devel ... ✔apt-get install lsphp73 lsphp73- devel ...
説明だけだとあれなので ✔実際に動いているところを見て いただきましょう
ここから、補足ページです ✔ここ以降は当日行ったデモの内容のダイ ジェストを補足します ✔当日、デモ内容が文字が小さくて見れな かった方、本当にすみませんでした ✔アーカイブ動画もチェックしましたが、 見づらい部分もあったのでそれも含めて 補足します ✔当日時間がなくて、本来やりたかった内 容も追加しています
当日デモの環境 ✔Vagrant + VirtualBox で 作った CentOS7 環境 ✔Apache 2.4.6(CentOS)
✔nginx 1.17.6 ✔Apacheおよびnginx向け に、remi から php 7.3 をイ ンストール
当日デモの環境 ✔OpenLiteSpeed 1.6.4 ✔LiteSpeed の公式リポジトリ から 5.6/7.0/7.1/7.2/7.3 のPHPをインストール
OpenLiteSpeed の管理ツール ✔Webインターフェースの管理ツールが 付属する ✔通常は 7080 ポートでアクセスでき る(もちろん変更可能) ✔OpenLiteSpeed では英語のみでは
なく、日本語/中国語での表示が可能 ✔ちなみに、有償版の管理ツールは英語 のみ
OpenLiteSpeed の管理ツール ✔ ログイン画面
OpenLiteSpeed の管理ツール ✔ ダッシュボード(英語表示)
OpenLiteSpeed の管理ツール ✔ ダッシュボード(日本語表示)
OpenLiteSpeed の管理ツール ✔ バーチャルホスト一覧
OpenLiteSpeed の管理ツール ✔ バーチャルホスト詳細
OpenLiteSpeed の管理ツール ✔ 外部アプリケーション(バーチャルホスト単位)
OpenLiteSpeed の管理ツール ✔ 外部アプリケーションと拡張子の関連付け
OpenLiteSpeed の管理ツール ✔ 公開バーチャルホストの一覧(リスナー設定)
OpenLiteSpeed の管理ツール ✔ バーチャルホストとドメインとの関連付け(リスナー設定)
OpenLiteSpeed のPHP 7.3 ✔ OpenLiteSpeed + PHP7.3 でとった phpinfo ✔
Server API は 「LiteSpeed V 7.6」
OpenLiteSpeed のPHP 7.2 ✔ OpenLiteSpeed + PHP7.2 でとった phpinfo ✔
Server API は 「LiteSpeed V 7.6」
OpenLiteSpeed のPHP 7.1 ✔ OpenLiteSpeed + PHP7.1 でとった phpinfo ✔
Server API は 「LiteSpeed V 7.6」
OpenLiteSpeed のPHP 7.0 ✔ OpenLiteSpeed + PHP7.0 でとった phpinfo ✔
Server API は 「LiteSpeed V 7.6」
OpenLiteSpeed のPHP 5.6 ✔ OpenLiteSpeed + PHP5.6 でとった phpinfo ✔
Server API は 「LiteSpeed V 7.6」
OpenLiteSpeed のプロセス ✔ OpenLiteSpeed を起動した直後のプロセス状態 ✔ PHPにまだアクセスしてないので PHP のプロセスはいない
OpenLiteSpeed のプロセス ✔ PHP 7.3 の phpinfo にアクセスした状態 ✔ OpenLiteSpeed
の lscgid からPHPプロセス lsphp が 生成されている ✔ WebサーバーのプロセスとPHPのプロセスが親子関係になる のがなかなかおもしろい
OpenLiteSpeed のプロセス ✔ PHP 7.3/7.2/7.1 のバーチャルホストの phpinfo にアクセスした状態 ✔ OpenLiteSpeed
の lscgid からPHPプロセス lsphp が複数生成されてい る ✔ lscgid の直接の子供の lsphp が外部アプリケーションごとに生成されるもの で、それぞれの外部アプリケーション毎のプロセスは今は1つだけ子供のプロセ スをもっているが、アクセスが増えると子供のプロセスを増やしていく ✔ つまり実際のリクエストを処理しているのは一番子供の lsphp ✔ 各バーチャルホスト毎の外部アプリケーションが別々のアカウント (phpcon73/phpcon72/php71)で処理されていることもわかる
OpenLiteSpeed のプロセス ✔ OpenLiteSpeedの管理ツールをアクセスした後、 PHP 7.3/7.2/7.1 のバーチャルホストの phpinfo にアクセスした状態 ✔
OpenLiteSpeed の lscgid から各バーチャルホ スト毎の外部アプリケーション用の lsphp だけでは なくて、管理ツール用の admin_php も生成され ている
Apache httpd のPHP 7.3 ✔ Apache httpd + PHP7.3 でとった
phpinfo ✔ Server API は 「Apache 2.0 Handler」
Apache httpd のプロセス ✔ Apache httpd を起動し、PHP 7.3 の phpinfo
にアクセスした状態 ✔ httpd のプロセスが複数起動し、どのプロセ スでも静的コンテンツおよびPHPを処理する
nginx + php-fpm のPHP 7.3 ✔ nginx + php-fpm(7.3) でとった
phpinfo ✔ Server API は 「FPM/FastCGI」
nginx + php-fpm のプロセス ✔ nginx と php-fpm をそれぞれ起動し、PHP 7.3
の phpinfo にアクセスした状態 ✔ nginx のプロセスと php-fpm のプロセスは 完全に独立して存在し、静的コンテンツは nginx、PHPの処理は php-fpm 側に転送さ れて処理が行われる
当日行ったベンチマークの注意事項 ✔ ここまで説明したような Apache + mod_php、 nginx + php-fpm、OpenLiteSpeed のそれ
ぞれの 7.3 環境に対して、WordPress 5.3 をイ ンストールして、インストール直後のトップページ に対して、ベンチマークをとってみた ✔ ベンチマークで使ったのは、当日デモしていたノー トPCであり、3つのWebサーバーに対して特に チューニングは行っていないので、あくまでも参考 値 ✔ 環境がもっとリッチなもので、それぞれに対して、 もっとチューニングすれば差異がでてくるものだと 思ってください。
当日行ったベンチマークの注意事項 ✔ WordPress はこんなページ
当日行ったベンチマーク ✔ ベンチマークには ab を利用 ✔ ab -n 1000 -c
100 [URL] という形で実 施 ✔ https ではなく http アクセスでのテスト (httpsにしておいて h2load で HTTP/2 でのテストをするのも面白いかもしれないが 準備が間に合わなかった...) ✔ 当日会場で行った結果は、Apache + mod_php/nginx + php-fpm/OpenLiteSpeed ともに 45 reqs/sec 前後の値で速さは変わらなかった
当日行えなかった比較 ✔ 当日は ab -n 1500 -c 1000 [URL] というもの
を OpenLiteSpeed でのみ行った ✔ OpenLiteSpeed はチューニングなしの状態で 1000並列リクエストを reqs/sec を落とすことな く完了できる ✔ 同一環境で Apache+mod_php と nginx+php- fpm は素の状態だと途中で落ちる(ファイルのオープ ン数の上限に引っかかる等の理由で) ✔ もちろん、Apacheおよびnginx環境でもパラメー ターチューニングを行うことにより処理できるように なるが、LiteSpeedが高負荷状態にもともと強いも のとして設計されているということを説明したかった のでこの説明を当日入れた
ここまでが当日の補足 ✔ あらためて、当日プロジェクターで写したプ ロセスリスト等の結果が見づらかったことを お詫びします ✔ アーカイブ動画ではかろうじて見れるようで すので、この資料とともに見ていただけると 幸いです
LiteSpeed 使っていきましょう! ✔日本ではあまりにも知名度が低 いのがあれですが、もっと使わ れていてもおかしくないと思う ので、ぜひ試してみてくださ い!
? 質問あるかたどうぞ