bbatsche.PHP

Ansible PHP 网站角色

构建状态 许可证 Ansible Galaxy 版本发布 下载量

这个 Ansible 角色会在你的服务器上安装指定版本的 PHP,并在 Nginx 上设置一个运行 PHP 的网站。该角色使用 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 — 是否应该通过 index.php 重写网站的所有请求。这适用于大多数现代框架。默认值为否
  • max_upload_size — 最大上传大小(MB)。默认值为 "10"
  • php_max_file_uploads — 可以同时上传的最大文件数。默认值为 20
  • timezone — PHP 配置的时区。默认值为 "Etc/UTC"
  • mysql_socket — 用于连接本地主机的默认 MySQL 套接字路径。
  • install_mariadb — 安装 MariaDB 客户端库,而不是默认的 MySQL 库。默认值为否
  • 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 配置命令的选项列表(除了 Phpenv 已包含的默认值)。默认值:见 defaults/main.yml
  • phpenv_config_options_removed — 从 Phpenv 的标准选项中 移除 的选项列表。默认值仅为 --with-tidy
  • pecl_extensions — 要从 PECL 安装的额外扩展列表。每个条目应有一个 name 和一个 version
  • composer_packages — 要全局安装的 composer 包列表。每个条目应有一个 name 和一个 version 属性。
  • phpenv_version — 要安装的 Phpenv 版本。默认值为一个 Git SHA: "0852611"
  • phpenv_composer_version — 要安装的 Phpenv Composer 插件 版本。默认值为一个 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 以两种模式之一运行。在开发环境中,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

示例剧本

- 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

测试

此角色包含了一整套测试每个任务的规范,独立或整体测试。要运行这些测试,你需要先安装 VagrantVirtualBox。规范文件使用 Serverspec 编写,因此你需要 Ruby 和 Bundler

运行完整的规范套件:

$ 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
拥有者