PHP

PHP-FPMの設定はUNIX socketとポート番号、どちらが良いのか

TECH
中津川 篤司

nginxでPHPを使えるように設定する場合、PHP-FPMを使います。そして連携させる際の設定として、UNIX socketとポート番号設定のどちらかが指定できます。今回はそのどちらがベストなのか検証してみました。 実行結果 まずは実行結果です。以下はポート番号での設定です。 Concurrency Level: 5 Time taken for tests: 3.905 seconds Complete requests: 50 Failed requests: 40 (Connect: 0, Receive: 0, Length: 40, Exceptions: 0) Total transferred: 3988340 bytes HTML transferred: 3981490 bytes Requests per second: 12.81 [#/sec] (mean) Time per request: 390.455 [ms] (mean) Time per request: 78.091 [ms] (mean, across all concurrent requests) Transfer rate: 997.52 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 91 214 226.8 146 984 Processing: 66 140 125.0 122 973 Waiting: 31 81 121.6 62 895 Total: 208 354 249.9 268 1087 以下はUNIX socketの場合です。 Concurrency Level: 5 Time taken for tests: 3.802 seconds Complete requests: 50 Failed requests: 37 (Connect: 0, Receive: 0, Length: 37, Exceptions: 0) Total transferred: 3988335 bytes HTML transferred: 3981485 bytes Requests per second: 13.15 [#/sec] (mean) Time per request: 380.218 [ms] (mean) Time per request: 76.044 [ms] (mean, across all concurrent requests) Transfer rate: 1024.37 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 107 204 38.2 208 286 Processing: 70 147 40.0 140 241 Waiting: 49 85 21.8 86 127 Total: 269 351 47.5 340 525 実行したのが簡単なスクリプトなのでほとんど違いは出ていませんが、それでもUNIX socketの方が高速に処理されています。 向き不向き UNIX socketの方が処理速度は高速ですが、同じサーバ上で処理されている場合に限ります。リモートの場合はポート番号での接続になります。つまりHTTPサーバとアプリケーションサーバを分離し、スケーリングさせる際にはポート番号での利用になるでしょう。 設定の違い UNIX socketかポート番号かは設定に違いがあります。具体的にはnginxの /etc/nginx/conf.d/default.conf と PHP-FPMの /etc/php/7.0/fpm/pool.d/www.conf です。 /etc/nginx/conf.d/default.conf の違いです。 # UNIX socketの場合 fastcgi_pass unix:/run/php/php7.0-fpm.sock; # ポート番号の場合 fastcgi_pass 127.0.0.1:9000; /etc/php/7.0/fpm/pool.d/www.conf の違いは以下です。 # UNIX socketの場合 listen = /run/php/php7.0-fpm.sock # ポート番号の場合 listen = 127.0.0.1:9000 この設定によって、動作を変えられます。 まとめ 一台のサーバでnginxとPHP-FPMを運用する際にはUNIX socketを使いましょう。複数台構成になったらポート番号を使いましょう。実行速度に大きな差がある訳ではありませんが、パフォーマンスはUNIX socketの方が良いようです。

CloudGarageでサーバセットアップ【その5:WordPressをインストールする】

TECH
中津川 篤司

インスタンスを簡単に立ち上げられるCloudGarageですが、立ち上げただけでは意味がありません。このインスタンスを使って開発を行っていかなければなりません。とは言え、自分の作りたいものはあるのに、セットアップで色々と時間が取られるのは面倒なはずです。 慣れてきたらKUSANAGI/CentOS-7.3-64bitなどのイメージから選択しても良いですが、まずは自分でイチから作業してみると何かトラブルがあってもリカバリーできるようになります。サーバの動きを掴んでおくと、後々役立つことも多いでしょう。 前回はデータベースサーバを立ち上げて、アプリケーションサーバ(nginx + PHP-FPM)と連携できるところまで進めました。今回はPHPアプリケーションの代表例とも言える、WordPressをインストールします。 WordPressはイメージもあります CloudGarageでWordPressを使う方法は3パターンあります。 WordPressホスティングプランを使う インストール済みイメージを使う 自分で構築する WordPressホスティングプランを使う場合、運用代行なども可能です。構成としてはnginx + HHVMとなっています。インストール済みイメージを使う場合、Apache + mod_phpという組み合わせになります。自分で構築する(今回のパターンです)は構成を自由に選べるのが特徴です。 すでにWordPressに慣れていて、特に問題がない場合はインストール済みイメージを使っても良いでしょう。しかし何かトラブルがあったり、細かくカスタマイズしたいと思った時には一度構築を経験しておくと何かと役立つはずです。 WordPressをダウンロード、解凍する まずアプリケーションサーバにSSHでログインします。 ssh -p 22022 (アプリケーションサーバのIPアドレス)そしてnginxのルートディレクトリに移動します。 $ cd /usr/share/nginx/html/ここにWordPressのファイルをダウンロードします。執筆時点での最新バージョンは4.9.8ですが、変わっている可能性があります。日本語 — WordPressにて確認してください。 wget https://ja.wordpress.org/wordpress-4.9.8-ja.tar.gzダウンロードしたら、ファイルを解凍します。 tar xfz wordpress-4.9.8-ja.tar.gz元ファイルは不要なので削除します。 rm wordpress-4.9.8-ja.tar.gz今回はwordpressというディレクトリにインストールしています。ディレクトリは必要に応じて変更してください。また、ディレクトリをnginxのユーザと合わせておきます。 sudo chown -R www-data:www-data wordpressWebブラウザからアクセス 設置が終わったら、Webブラウザからアクセスします。 http://(アプリケーションサーバのIPアドレス)/wordpress になります。 インストール時にデータベース設定が聞かれます。データベースはあらかじめ作成しておきましょう。また、ポート番号を変更している場合には (データベースサーバのIPアドレス):33060 のようにコロンに続けてポート番号を指定します。後は通常のセットアップと変わりません。 問題なく完了したらログインして管理画面に入れるのを確認しましょう。 画像のアップロードもできれば、ファイルの書き込み権限も正しく与えられているのが確認できます。 まとめ ここまででCloudGarageの二つのインスタンス(アプリケーションサーバとデータベースサーバ)を使って、nginx + PHP-FPMの組み合わせでPHPアプリケーションをインストールする流れが完成しました。 より複雑なシステム構築になると、Gitを使ったり、CI(継続的インテグレーション)による自動化なども考えるようになるでしょう。ともあれ、システム構築の基本は変わりませんので、ここまでの流れを覚えておくと様々に応用が効くはずです。

CloudGarageでサーバセットアップ【その3:nginxとPHP-FPMを連携させる】

TECH
中津川 篤司

インスタンスを簡単に立ち上げられるCloudGarageですが、立ち上げただけでは意味がありません。このインスタンスを使って開発を行っていかなければなりません。とは言え、自分の作りたいものはあるのに、セットアップで色々と時間が取られるのは面倒なはずです。 慣れてきたらKUSANAGI/CentOS-7.3-64bitなどのイメージから選択しても良いですが、まずは自分でイチから作業してみると何かトラブルがあってもリカバリーできるようになります。サーバの動きを掴んでおくと、後々役立つことも多いでしょう。 前回はHTTPサーバを立ち上げるところまでいきましたので、今回はPHPを使えるようにします。 nginxとPHPの組み合わせについて PHPを手軽に使おうと思うとApache + mod_phpという組み合わせが一番簡単でしょう。しかし最近ではHTTPサーバとしてより高速なnginxとPHP-FPMを組み合わせるケースが増えています。FPMとはFastCGI Process Managerの略です。FastCGIは実行プロセスを常時立ち上げておくことで実行速度を高速化する技術です。PHP-FPMを用いることで、nginx上でも高速なPHP実行環境が手に入ります。 PHP-FPMをインストールする インストールはaptで行えます。 sudo sudo apt-get install -y php php-fpm そして起動します。 sudo service php7.0-fpm start これでPHP側の準備は完了です。設定ファイルである /etc/php/7.0/fpm/pool.d/www.conf を見ると、次のように書かれています。 user = www-data listen = /run/php/php7.0-fpm.sock この二つの情報を覚えておきます。 nginxの設定 nginxの設定ファイルを編集します。ファイルは /etc/nginx/conf.d/default.conf です。 〜.php というアクセスがあると location ~ [^/]\.php(/|$) { 以下の設定が適用されます。ファイル名を取得して $document_root$fastcgi_script_name というPHPファイルを実行します。 $document_root は root で定義されている /usr/share/nginx/html/ です。 server { listen 80; # 省略 # root を移動(全体に関係するので) root /usr/share/nginx/html/; location / { # / へのアクセスを index.php へのアクセスとしたい場合は追加 if (!-e $request_filename) { rewrite ^/(.+)# /index.php?q=$1 last; break; } index index.php index.html index.htm; } # PHP FPMの設定 location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+\.php)(/.+)$; if (!-f $document_root$fastcgi_script_name) { return 404; } fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; } # 省略 } さらにPHPが www-data というユーザで実行されていますので、nginxも合わせておきます。これは /etc/nginx/nginx.conf です。 # 変更前 user nginx; # 変更後 user www-data; /usr/share/nginx/html/ も www-data 向けにします。 sudo chown -R www-data:www-data /usr/share/nginx/html/ 実行してみる では /usr/share/nginx/html/index.php というファイルを作成して、以下の内容を記述します。 <?php phpinfo(); ?> これでサーバにアクセスしてみます。URLは https://ドメイン名/index.php になります。 PHP Infoが表示されればPHPは正しく動作しています。後はWordPressをはじめとして好きなPHPソフトウェアをインストールしたり、Webアプリケーションの開発が行えるでしょう。 PHPはWeb開発で最も人気のあるプログラミング言語でしょう。実際に使っている方も多いはずです。CloudGarageを使って素早くPHP開発環境を整えてみてください! 次回は別インスタンスでデータベースを立ち上げてPHPから接続してみます。

2018年 5~7月開催のオススメ CMS系イベントを一挙ご紹介

イベント・勉強会
セッションチーム

こんにちは。CloudGarageセッションチームのナカエです。 気候の良さも手伝い春から夏にかけては例年各地で規模の大きいTech・ITイベントが開催されます。 ということで、今回はフロントエンド・CMS系にフォーカスして2018年5-7月に開催されるイベントを一挙ご紹介いたします。 定番のものや新たに開催されるものなど、どれもオススメです。 ※本記事は2018年4月20日時点の情報です。 WordCamp Osaka 2018 ・世界中で開かれているWordPressの代表的なイベントであり、前回は京都で開催され大盛況でした。今回は2018年6月2日(土)・3日(日)の2日間にわたり、関西大学梅田キャンパスKANDAI Me RISE にて開催されます。昨年同様にCloudGarageでもブース出展をさせていただきます。 https://twitter.com/wordcamposaka/status/986078411436077056 公式サイト:WordCamp Osaka 2018 日程:2018年6月2日(土)・3日(日) 場所:関西大学梅田キャンパスKANDAI Me RISE     MTDDC Meetup Hokkaido 2018 ・MTDDCは「Movable Type Developers & Designers Conference」の略で、MTに携わる技術者やデザイナー向けのカンファレンス。 ・4年半ぶり2度めの北海道開催! (個人的な意見ですが、札幌に行きたいので毎年やって欲しいw) ・CloudGarageでもブース出展をさせていただきます。 https://twitter.com/mt_ezo/status/986156275086995456 公式サイト:MTDDC Meetup HOKKAIDO 2018 日程:2018年6月9日(土) 場所:TKP札幌駅カンファレンスセンター   PHPカンファレンス福岡2018 ・年々規模を拡大し、参加者数や発表者数を増やしてきたPHPカンファレンス福岡は今年で4回目。 ・初心者から上級者まで、PHPerでもPHPerでない方でも興味ある方は是非! ・PHPを中心に、それ以外のトピックも広くカバーした内容になるとのことです。 https://twitter.com/phpcon_fukuoka/status/983944509347119105 公式サイト:PHPカンファレンス福岡2018 日程:2018年6月16日(土) 場所:FFB ホール(福岡ファッションビル8階)   contents.nagoya(コンテンツ ドット ナゴヤ) ・よりよいウェブサイトのために「コンテンツ」にクローズアップしたイベント。 ・これだけ多くのCMSが一堂に会するイベントは他にはそうそうないのでは。ブース出展の各CMSロゴを見るだけでも壮観です。 https://twitter.com/contents758/status/986901085020307456 公式サイト:contents.nagoya(コンテンツ ドット ナゴヤ) 日程:2018年7月7日(土) 場所:名古屋国際センタービル   WordCamp Ogijima 2018 ・世界中で開かれているWordPressの代表的なイベント「WordCamp」が瀬戸内海の小島、男木島で初開催です。 ・美しい自然の中でキャンプやBBQも企画されているようで、大都市のWordCampとはまたひと味違った楽しみなイベントです。 https://twitter.com/WCOgijima/status/985782089000734720 公式サイト:WordCamp Ogijima 2018 日程:2018年7月15日(日) 場所:男木小中学校体育館   以上です。 他にもたくさん開催されるかと思いますが、現在公開されているイベントをいくつかピックアップしてみました。 イベント情報は、公開され次第どんどん更新されていきます。やっぱり今年も面白そうなイベントがたくさん開催される予感。とっても楽しみですね。 皆さん、「このイベント気になるな」と思ったら、この機会に参加してみてはいかがでしょうか。 ちなみに我々セッションチームは今回紹介した全てのイベントに参加しようと、意外とマジで考えてますw それぞれの会場でお目にかかれれば幸いです。それではまた! ------------------------ あ、最後に今週末4/27はうちの中村が主催するCloudGarage MeetUPが岡山で開催です。 なんか面白いネタ仕込んでるようですので、ご予定合えば飲みに来てくださいね。 CloudGarage Deep Meetup in Okayama

2017年 東京開催のオススメIT系イベントを一挙ご紹介

イベント・勉強会
セッションチーム

2017年下半期に東京で開催されるオススメIT系イベントを一挙ご紹介します。

オープンソースカンファレンス2016に参加してきた!

イベント・勉強会
セッションチーム

11月5日(土)、6日(日) オープンソースカンファレンス2016 Tokyoの参加レポートです。

PHP カンファレンス 2016 に参加してました!

イベント・勉強会
セッションチーム

WEB業界のスペシャリストによるPHP最新情報から、初心者向けのプログラムまで展開されちゃう国内最大のPHPイベントに参加してきました。。セッション内容や会場の様子などをかきました。

ページトップへ