jebovic.php
php
LAMPおよびLEMPスタック用にphp-fpmをインストールして設定し、独自のプール設定を追加し、すべてのphp.ini設定をyaml変数からカスタマイズします。
ボーナス : BlackfireおよびNewrelic APM用の拡張機能を追加
この役割は私のOPSプロジェクトの一部であり、リンクをたどって実際の動作を確認できます。OPSは、開発用VMのためのVagrantファイル、役割のオーケストレーション用のプレイブック、在庫ファイル、役割設定の例、Ansible設定ファイルなど、多くのものを提供します。
互換性
以下でテスト済みおよび承認済み:
- Debian jessie (8+)
- Ubuntu Trusty (14.04 LTS)
- Ubuntu Xenial (16.04 LTS)
役割変数
# カスタムリポジトリを使用
php_use_custom_repository: yes
php_custom_repositories_key_url: https://www.dotdeb.org/dotdeb.gpg
php_custom_repositories:
- deb http://packages.dotdeb.org jessie all
- deb-src http://packages.dotdeb.org jessie all
# インストールするパッケージを選択
php_packages:
- php7.0-fpm
- php7.0-cli
- php7.0-common
- php7.0-dev
- php7.0-opcache
- php7.0-mbstring
- php7.0-memcached
- php7.0-mysql
- php7.0-redis
- php7.0-curl
- php7.0-json
- php7.0-xsl
- php7.0-xml
- php7.0-mongodb
- php7.0-imagick
# 独自のプールを定義
php_pools:
www:
user: "www-data"
group: "www-data"
listen: "/var/run/php-fpm.sock"
listen.owner: "www-data"
listen.group: "www-data"
listen.allowed_clients: "127.0.0.1"
pm: "dynamic"
pm.max_children: "5"
pm.start_servers: "2"
pm.min_spare_servers: "1"
pm.max_spare_servers: "3"
pm.process_idle_timeout: "30s"
pm.max_requests: "500"
# カスタムphp.ini設定
php_ini_custom:
opcache:
opcache.blacklist_filename: "{{ php_fpm_root_dir }}/fpm/opcache.blacklist"
newrelic:
newrelic.enabled: "true"
newrelic.license: "REPLACE IT WITH YOUR KEY"
newrelic.logfile: "/var/log/newrelic/php_agent.log"
newrelic.appname: "{{ ansible_hostname|default('VM Test') }}"
newrelic.daemon.logfile: "/var/log/newrelic/newrelic-daemon.log"
newrelic.daemon.port: "/tmp/.newrelic.sock"
newrelic.daemon.location: "/usr/bin/newrelic-daemon"
newrelic.daemon.collector_host: "collector.newrelic.com"
newrelic.analytics_events.enabled: "true"
# Opcacheブラックリスト
php_opcache_blacklist: []
# Php FPM基本設定
php_fpm_root_dir: /etc/php/7.0
php_fpm_daemon: php7.0-fpm
php_fpm_pid: /run/php-fpm.pid
php_fpm_error_log: /var/log/php-fpm.log
php_fpm_syslog_facility: daemon
php_fpm_syslog_ident: php-fpm
php_fpm_log_level: notice
php_fpm_emergency_restart_threshold: 0
php_fpm_emergency_restart_interval: 0
php_fpm_process_control_timeout: 0
php_fpm_process_max: 128
php_fpm_process_priority: -19
php_fpm_daemonize: yes
php_fpm_rlimit_files: 1024
php_fpm_rlimit_core: 0
php_fpm_events_mechanism: epoll
php_fpm_systemd_interval: 10
php_fpm_pools_include: "{{ php_fpm_root_dir }}/fpm/pool.d/*.conf"
# 追加機能の有効化
php_blackfire_enabled: true
php_composer_enabled: true
php_newrelic_enabled: true
# Blackfire.io設定
php_blackfire_daemon: blackfire-agent
php_blackfire_test_mode: false
php_blackfire_key_url: https://packagecloud.io/gpg.key
php_blackfire_package_url: http://packages.blackfire.io/debian
php_blackfire_directory: /etc/blackfire
php_blackfire_packages:
- blackfire-agent
- blackfire-php
# Blackfireエージェント設定
php_blackfire_cert: # PEMエンコードされた証明書を設定
php_blackfire_collector: https://blackfire.io # BlackfireのデータコレクターのURLを設定
php_blackfire_http_proxy: # 使用するhttpプロキシを設定
php_blackfire_https_proxy: # 使用するhttpsプロキシを設定
php_blackfire_log_file: stderr # ログファイルのパスを設定。stderrにログを記録する場合はstderrを使用
php_blackfire_log_level: 1 # ログの詳細レベル (4: デバッグ, 3: 情報, 2: 警告, 1: エラー)
php_blackfire_server_id: "REPLACE_IT_WITH_YOUR_KEY" # Blackfire API認証に使用するサーバーIDを設定
php_blackfire_server_token: "REPLACE_IT_WITH_YOUR_KEY" # Blackfire API認証に使用するサーバートークンを設定。コマンドラインから設定するのは安全でない
php_blackfire_socket: "unix:///var/run/blackfire/agent.sock" # エージェントがトレースを読み取るソケットを設定する。値はunixソケットまたはTCPアドレスで可能
php_blackfire_spec: # json仕様書ファイルへのパスを設定
# Composer設定
php_composer_download_url: https://getcomposer.org/installer
php_composer_path: /usr/local/bin/composer
php_composer_version: ''
# Newrelic APM設定
php_newrelic_apt_key_url: https://download.newrelic.com/548C16BF.gpg
php_newrelic_apt_url: http://apt.newrelic.com/debian/
php_newrelic_packages:
- newrelic-php5
例プレイブック
- hosts: servers
roles:
- { role: jebovic.php }
例 : 設定
# 独自のプールを定義
php_pools:
my_pool:
user: "me"
group: "me"
listen: "/var/run/php-fpm.sock"
listen.owner: "www-data"
listen.group: "www-data"
listen.allowed_clients: "127.0.0.1"
pm: "dynamic"
pm.max_children: "10"
pm.start_servers: "4"
pm.min_spare_servers: "2"
pm.max_spare_servers: "6"
pm.process_idle_timeout: "300s"
pm.max_requests: "300"
# カスタムphp設定、他の役割(mailhog(メールキャッチャー)、memcached、newrelic、blackfireなど)とリンク
php_ini_custom:
Session:
session.save_handler: memcached
session.save_path: "{{ memcache_listen_address }}:{{ memcache_port }}"
mail function:
sendmail_from: [email protected]
sendmail_path: "{{ mailhog_mhsendmail_path }}"
opcache:
opcache.enable_cli: Off
opcache.blacklist_filename: /etc/php5/fpm/opcache.blacklist
newrelic:
newrelic.enabled: "true"
newrelic.license: "{{ newrelic_license }}"
newrelic.logfile: "/var/log/newrelic/php_agent.log"
newrelic.appname: "{{ ansible_hostname|default('VM Test') }}"
newrelic.daemon.logfile: "/var/log/newrelic/newrelic-daemon.log"
newrelic.daemon.port: "/tmp/.newrelic.sock"
newrelic.daemon.location: "/usr/bin/newrelic-daemon"
newrelic.daemon.collector_host: "collector.newrelic.com"
newrelic.analytics_events.enabled: "true"
タグ
- php_blackfire_config : Blackfireのみを設定し、phpおよびblackfireサービスを再起動
- php_config : 設定のみを更新し、サービスを再起動
- php_composer : composerのみをインストール
- php_blackfire : Blackfireサービスをインストール、設定、起動
- php_newrelic : php用のnewrelic APMプラグインを追加
ライセンス
MIT
著者情報
Jérémy Baumgarth https://github.com/jebovic
プロジェクトについて
Install and configure php-fpm for lamp and lemp stack, add your own pools configurations, and customize all the php.ini config from yaml variables, also included: composer, newrelic apm, blackfire apm
インストール
ansible-galaxy install jebovic.php
ライセンス
mit
ダウンロード
591
所有者