Help us understand the problem. What is going on with this article?

Laradockを使ったLaravel開発環境にBlackfireを導入し簡単にプロファイリングしてみる(Mac)

Laradockを使ったLaravel開発環境にBlackfireを導入し簡単にプロファイリングしてみる(Mac)

by dip-tadachi
1 / 48

2019/07/04追記

  • PHP ProbeのWarningについての原因と対策

きっかけ


進行中のプロジェクトに影響を与えないよう既存システムの現状を把握したい。
そのため、GitHub(Enterprise)のリポジトリからソースをcloneし、ローカルでツールを利用し分析してみる。


ローカル環境は、構築/変更/削除が比較的楽なDockerで構築。
対象システムはLalavelをベースにしているため、Laradockを選択。
標準でBlackfireが用意されているため、これを有効にしプロファイリングしてみる。


Google先生に聞いてみたが、Laradock+Blackfireで良い感じのヒットがなかったため、ここに認めてみる。
なお、ここでは諸事情によりソースのcloneは行わず、defaultのwelcomeページのプロファイリングまでとする。


環境


  • MacbookPro:Retina:13-inch:Early 2015
    • 2.9 GHz Intel Core i5
    • 16 GB 1867 MHz DDR3
    • Intel Iris Graphics 6100 1536 MB
    • 512GB PCIe-based flash storage
      • macOSSierra:10.12.6-x86_64

前提条件

事前準備


Homebrew


Docker(edge)

❯ brew cask install docker-edge

brew cask install docker でもOK


参考にしたサイト


Laradock



Blackfire


参考にしたサイトとの差分


  • (vol.1)ディレクトリ名
-your
+test

  • (vol.1)laradockのenv
.laradock-env
-APP_CODE_PATH_HOST=../
+APP_CODE_PATH_HOST=../test_laravel_project

.laradock-env
-DATA_PATH_HOST=~/.laradock/data
+DATA_PATH_HOST=~/.laradock_test_project/data

.laradock-env
-INSTALL_BLACKFIRE=false
+INSTALL_BLACKFIRE=true

  • (vol.1)setup.sh
setup.sh
-cp -f conf/.laradock-env ../laradock-your_project/.env
+cp -f conf/.laradock-env ../laradock_test_project/.env

  • (オリジナル).env

※ログインした状態の Installation - Blackfire ページ Client Id Client Token Server Id Server Token を、それぞれコピー&ペースト
※ここで編集するのは個人アカウント利用のため


.env
-BLACKFIRE_CLIENT_ID=<client_id>
-BLACKFIRE_CLIENT_TOKEN=<client_token>
+BLACKFIRE_CLIENT_ID=********-****-****-****-************
+BLACKFIRE_CLIENT_TOKEN=****************************************************************

.env
-BLACKFIRE_SERVER_ID=<server_id>
-BLACKFIRE_SERVER_TOKEN=<server_token>
+BLACKFIRE_SERVER_ID=********-****-****-****-************
+BLACKFIRE_SERVER_TOKEN=****************************************************************

  • (オリジナル)php-fpmのWarning対策

test-project/laradock_test_project/php-fpm/Dockerfile
    && rm /tmp/xhprof.tar.gz \
+    && COPY ./xhprof.ini /usr/local/etc/php/conf.d \
;fi

-COPY ./xhprof.ini /usr/local/etc/php/conf.d

###########################################################################

  • (vol.1)dockerの起動
-docker-compose up --build -d nginx postgres redis workspace
+docker-compose up --build -d nginx postgres redis workspace blackfire

  • (vol.1)docker-compose ps
+laradock_blackfire_1          blackfire-agent                  Up      8707/tcp

  • (vol.2)Docker操作に使うコマンド
-docker-compose up -d nginx postgres workspace redis
+docker-compose up -d nginx postgres workspace redis blackfire

  • (オリジナル)Laravelのインストール(※バージョン指定の場合のみ)
-composer create-project --prefer-dist laravel/laravel ./
+composer create-project --prefer-dist laravel/laravel ./ "5.5.*"

  • (vol.2)Laravelの設定

.env
-DB_CONNECTION=mysql
-DB_HOST=127.0.0.1
-DB_PORT=3306
+DB_CONNECTION=pgsql
+DB_HOST=postgres
+DB_PORT=5432

.env
-DB_DATABASE=homestead
-DB_USERNAME=homestead
+DB_DATABASE=default
+DB_USERNAME=default

  • (vol.2)Laravel設定ファイルの配布準備
setup.sh
-cp -f conf/.**laravel**-env ../your_laravel_project/.env
+cp -f conf/.**laravel**-env ../test_laravel_project/.env

  • (Blackfire)
-2. サーバにblackfire agentのインストール

※Laradockでインストールするため不要


  • (vol.2)Blackfire Companionデザイン

Screenshot.png


その他


  • (オリジナル)php-fpmのWarning対策の事象

PHP Warning: PHP Startup: Unable to load dynamic library 'tideways.so' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/tideways.so (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/tideways.so: cannot open shared object file: No such file or directory), /usr/local/lib/php/extensions/no-debug-non-zts-20170718/tideways.so.so (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/tideways.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0


※無条件で 'tideways.so' 利用状態になっているため。Laradockissue 参照。


  • PHP ProbeのWarning

Screenshot.png


2019/07/04追記

php-fpmのProbeが古かった様です・・・再構築して解消
(※これから構築する方は最新がインストールされるので問題なし)


参考


最後に


内容ボリュームが盛りだくさんなため、ここでは元記事の差分のみ記載しました。
スライドモードも試してみたかったため、やたらと区切った分読みにくいかもしれません。
誰かの参考になればと思いUPしましたが、とりあえず自分用の作業記録として残しておきます。


別途、LaradockissueGraphvizのインストールが出来るようにする提案がありますが、先行してそのPRに倣ってphpDocumentorも導入してみたいと思っています。


その他、静的解析ツール群も入れてみたいと思っていますが、Laravel公式がStyleCIを導入している点が悩ましい・・・無料枠・・・


Plan Bとして、有志の方がPHP-CS-FixerStyleCIと同等のルールを作成しているので、そちらを利用したいと思っています。


ここまで、老頭児(残滓)プログラマーがお伝えいたしました。
現場からは以上です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした