bbatsche.PHP

Ansible PHPサイトロール

ビルドステータス ライセンス Ansible Galaxy リリースバージョン ダウンロード数

このAnsibleロールは、指定されたバージョンのPHPをサーバーにインストールし、PHPを実行するNginxサイトを設定します。このロールはPhpenvを使用して、異なるバージョンのPHPを管理します。PHPの5.2から7.2までの任意のバージョンをインストールできるはずです(ただし、PHP 5.2をインストールする場合は、人生の選択を真剣に考え直す必要があるかもしれません)。

要件

Phpenvは、サーバーにGitがインストールされている必要がありますが、最近のサーバーにはGitがないものは少ないでしょう。

このロールは、LinuxのファイルシステムACLと「web-admin」というグループを利用して、特定のディレクトリへのアクセスを付与します。これらのステップを手動で設定するか、bbatsche.Baseロールをインストールすることができます。

さらに、Ubuntu Xenialにこのロールをインストールするには、Ansibleのバージョンが2.2以上である必要があります。Ansible 2.1は、Ubuntu Trustyによってまだサポートされています。

ロール変数

  • domain — 作成するサイトのドメイン
  • dynamic_php — Nginxがサイトのすべてのリクエストをindex.php経由で書き換えるかどうか。このオプションは、ほとんどのモダンなフレームワークで使用されます。デフォルトは「いいえ」
  • max_upload_size — 最大アップロードサイズ(MB単位)。デフォルトは「10」
  • php_max_file_uploads — 同時にアップロード可能なファイルの最大数。デフォルトは20
  • timezone — PHPで設定するタイムゾーン。デフォルトは「Etc/UTC」
  • mysql_socket — localhost接続時に使用するMySQLソケットのパス。
  • install_mariadb — デフォルトのMySQLライブラリではなくMariaDBクライアントライブラリをインストールするか。デフォルトは「いいえ」
  • php_session_save_handler — セッションを保存するためのハンドラ。例えば、セッションデータをRedisに保存するために使用できます。デフォルトは「files」
  • php_session_path — セッションデータを保存するパス。デフォルトは"{{ phpenv_root }}/versions/{{ php_version }}/var/run/session"
  • php_realpath_cache_size — ファイルとディレクトリの実際のパスを見つけるためのキャッシュサイズ。デフォルトは「256k」
  • php_realpath_cache_ttl — 実パスキャッシュにおけるエントリの保存期間。デフォルトは600
  • php_max_execution_time — PHPが作業を行うことが許可される最大時間(ファイルシステムのような外部リソースの呼び出しを除く)。デフォルトは30。
  • php_default_socket_timeout — ソケットからデータを待機する際のタイムアウト。デフォルトは60
  • php_memory_limit — PHPが単一プロセスに割り当てることを許可される最大メモリ量。デフォルトは「128M」
  • php_version — PhpenvでインストールするPHPのバージョン。
  • phpenv_config_options — PHPのconfigureコマンドに渡すフラグのリスト(Phpenvにすでに含まれているデフォルトに加えて)。デフォルト: defaults/main.ymlを参照
  • phpenv_config_options_removed — Phpenvの標準リストから削除するフラグのリスト。デフォルトは--with-tidyのみ
  • pecl_extensionsPECLからインストールする追加拡張のリスト。各値にはnameversionが必要です
  • composer_packages — グローバルにインストールするためのコンポーザーパッケージのリスト。各値にはnameversionプロパティが必要です。
  • phpenv_version — インストールするPhpenvのバージョン。デフォルトはGit SHA: "0852611"
  • phpenv_composer_version — インストールするPhpenv Composer Pluginのバージョン。デフォルトはGit SHA: "1a6611d"
  • php_build_version — インストールするPHP Buildのバージョン。デフォルトはGit SHA: "5d166fe"
  • xdebug_version — インストールするXdebugのバージョン。デフォルトは「2.5.5」
  • copy_phpinfo — 新しいサイトにphpinfo()ページをコピーするかどうか。デフォルトは「いいえ」
  • copy_index_php — 新しいサイトにindex.phpスタブファイルをコピーするかどうか。デフォルトは「いいえ」
  • disabled_function — PHPがウェブから実行されるときに無効にする関数のリスト。
  • open_basedir — このドメインが読み書きできる追加パスのリスト。このリストには必ずドメインのルート自体、現在のPHPバージョンの「var」ディレクトリ(セッションストレージ用)、およびドメインの一時ディレクトリが含まれます。
  • http_root — すべてのサイトが作成されるディレクトリ。デフォルトは「/srv/http」
  • phpenv_root — Phpenvとそのサポートファイルをインストールする場所。デフォルトは「/usr/local/phpenv」

FPM調整変数

PHP FPMは、env_nameによって2つのモードのうちの1つで実行されるように設定されています。開発環境では、PHP FPMは「オンデマンド」モードで実行され、プロセスの生成を最小限に抑え、リソースが限られている開発環境でアイドル状態のプロセスを減らします。他の環境では、FPMは「ダイナミック」モードで実行され、リクエストを処理するための子プロセスがすでに利用可能で、フォークする必要がありません。ダイナミックモードで実行する際は、FPMのリソース使用を調整する以下の方法があります。

  • fpm_mb_per_child — このドメインの子プロセスが消費する平均メモリ量。デフォルトは「30」
  • fpm_mem_percent — FPMが消費してもよい最大メモリ量の割合。デフォルトは「80」
  • fpm_max_children — このドメインで許可される子プロセスの最大数。デフォルトはfpm_mem_percentfpm_mb_per_childに基づいて計算されます。
  • fpm_start_percent — ドメインが最初に作成されたときに開始されるFPMの最大子プロセスの割合。デフォルトは「20」で、合計2サーバーのフロアがあります。
  • fpm_start_servers — ドメインが作成されたときに開始されるサーバーの数。デフォルトはfpm_start_percentに基づいて計算されます。
  • fpm_max_spare_percent — 負荷が減少し始めたときにアクティブに保つべきFPMの最大子プロセスの割合。デフォルトは「80」
  • fpm_max_spare_servers — スパイク後にアクティブに保つべきスパースサーバーの数。デフォルトはfpm_max_spare_percentに基づいて計算されます。

これにより、リソースの使用を総メモリの割合または静的値に基づいて調整できます。

Opcache調整変数

次の変数を使用してOpcacheを調整し、アプリケーションのパフォーマンスを向上させることができます。

  • opcache_enable_cli — デフォルトは0
  • opcache_memory_consumption — デフォルトは128
  • opcache_internal_strings_buffer — デフォルトは16
  • opcache_max_accelerated_files — デフォルトは6000
  • opcache_max_wasted_percentage — デフォルトは5
  • opcache_validate_timestamps — デフォルトは1
  • opcache_revalidate_freq — 環境が開発の場合は0に設定します。それ以外の場合はデフォルトは300です
  • opcache_fast_shutdown — デフォルトは0です。オンにするとリスクが伴う可能性があります

依存関係

このロールはbbatsche.Nginxに依存しています。このロールを最初にインストールする必要があります:

ansible-galaxy install bbatsche.Nginx

例Playbook

- hosts: servers
  roles:
  - role: bbatsche.Phpenv
    domain: my-php-site.test
    php_version: 7.1.12
    composer_packages:
    - name: phpunit/phpunit
      version: ^6.4
    pecl_extensions:
    - name: yaml
      version: 2.0.2
    - name: imagick
      version: 3.4.3

ライセンス

MIT

テスト

このロールには、各タスクを個別にまたは全体としてテストするための仕様のセットが含まれています。これらのテストを実行するには、まずヴァグラントバーチャルボックスをインストールする必要があります。仕様ファイルはサーバースペックを使用して書かれているため、Rubyとバンドラーが必要です。

仕様スイートを完全に実行するには:

$ gem install bundler
$ bundle install
$ rake

仕様スイートは、Ubuntu Trusty Tahr (14.04)、Xenial Xerus (16.04)、およびBionic Bever (18.04)を対象とします。

利用可能なrakeタスク(および仕様)を確認するには:

$ rake -T

これらの仕様は冪等性のテストを目的としていません。指定されたタスクが期待どおりの手順を実行していることを確認するためのものです。冪等性は、統合テストによって独立して検証されます。

プロジェクトについて

Install Phpenv, PHP, and set up a site in Nginx running it with PHP-FPM

インストール
ansible-galaxy install bbatsche.PHP
ライセンス
mit
ダウンロード
281
所有者