Compare commits

..

45 Commits
2.2 ... master

Author SHA1 Message Date
Emilien M f6652efe77
Merge pull request from HanXHX/improvements/misc
Many improvements
2023-05-30 13:22:51 +02:00
Emilien Mantel 0a9a5c7aaf 🚀 Manages Ubuntu 20.04 + 22.04 2023-05-30 12:55:12 +02:00
Emilien Mantel 726d769d26 💚 Fix linters errors 2023-05-30 12:52:46 +02:00
Emilien Mantel b363238e10 📝 Add build status (master branch) on README 2023-05-30 12:46:24 +02:00
Emilien Mantel 73355bfe30 🔥 Remove TravisCI 2023-05-30 12:45:04 +02:00
Emilien Mantel f54176c880 👷 Add Github Action 2023-05-30 12:44:15 +02:00
Emilien Mantel ec779b858a Add Ansible molecule 2023-05-30 12:43:45 +02:00
Emilien Mantel 539dc205f5 🚀 Manage Debian 12 2023-05-30 12:33:43 +02:00
Emilien Mantel 85378ac422 🚨 Fix crashes on latest ansible versions and fixes lint 2023-05-30 10:56:48 +02:00
Emilien Mantel 483b6c78b5 🙈 Ignore pycharm files 2023-05-30 10:50:00 +02:00
Klaus Zerwes 746b05ca4a
fix pool.conf template in case some VARs are not defined ()
vars not defined in defaults should be processed only if they are defined (avoid AnsibleUndefinedVariable errors)

Co-authored-by: Klaus Zerwes <Klaus.Zerwes@rosalux.org>
2022-11-07 17:22:57 +01:00
Klaus Zerwes b4afb45dd4
honor php_install_fpm in case it is set to 'false' ()
Co-authored-by: Klaus Zerwes <Klaus.Zerwes@rosalux.org>
2022-11-07 11:03:58 +01:00
Totooow 0a51826e2f
Add env vars on PHP-FPM pool template ()
Co-authored-by: Théo Adolphe <theo.adolphe@skilleos.com>
2022-10-06 16:36:02 +02:00
Emilien M e9e74e2db6
Modernize
* Fix lint errors due to ansible-lint latest version
* Drop debian stretch support
2022-10-06 14:47:06 +02:00
Emilien Mantel 4aef107c1a 🐛 Fix multiple PHP versions install
With Sury packages...
2022-02-22 13:41:02 +01:00
Emilien Mantel 28caf6d9c9 Remove useless provision in Vagrant 2022-02-22 13:31:19 +01:00
Emilien M 309824dabf
New release ()
* Manages Debian 11
* Migrate to new TravisCI version
* Fix lint errors
* Use FQCN builtins
* Drop Ubuntu Xenial support (16.04)
2021-09-01 09:57:23 +02:00
Emilien Mantel 3209f6b010 Quickfix 2020-05-27 13:06:19 +02:00
Emilien Mantel 759a85a325 Fix FPM ini file 2020-05-27 12:59:25 +02:00
Emilien Mantel 704ebb3937 Manage pm.max_requests on PHP pool 2020-05-27 10:15:42 +02:00
Emilien Mantel 4feb3be7d5 Upgrade README.php 2019-12-26 18:10:56 +01:00
Emilien Mantel c0922f8430 Option: autoremove default pool 2019-12-26 16:42:16 +01:00
Emilien Mantel ade8aaad9e Remove useless files 2019-12-26 15:38:54 +01:00
Emilien M a19adf5150
Improvements ()
- Store configuration in local facts
- Better socket generator
- php_admin_value/php_value
- Manages PHP 7.4 on Debian
2019-12-26 14:13:00 +01:00
Emilien Mantel 9738ae9614 Manages flags on PHP-FPM 2019-12-16 17:28:39 +01:00
xelgand 73fa4dc212 fix uninstall xdebug block for FreeBSD () 2019-04-23 09:31:45 +02:00
Emilien M 75f09eaf59
Delete default pool if necessary ()
(when default pool 'www' not in pool list)
2019-04-19 14:36:35 +02:00
Emilien M 5abe99568a
Support Debian Buster () 2019-04-19 14:36:20 +02:00
Emilien Mantel 8b2c92a047 Force python 2.7 on travis 2019-04-19 11:28:50 +02:00
Emilien Mantel 0171ae8e20 Quick changes 2019-04-19 11:18:46 +02:00
Emilien Mantel 95892782ea Fix version compare 2019-04-19 10:59:00 +02:00
Emilien Mantel f5b9eb78b7 Remove legacy 'include' module 2019-04-19 10:28:00 +02:00
Emilien Mantel 5ef6d09ac6 Min ansible version: 2.6 2019-02-20 16:40:02 +01:00
Emilien Mantel e45df940cd Compat Ansible 2.5+ 2019-01-28 14:46:58 +01:00
Emilien Mantel 6c3aa5443a Remove legacy and useless file 2019-01-28 10:35:42 +01:00
Emilien Mantel 847941ebc6 Update README.md 2018-10-29 14:27:38 +01:00
Emilien Mantel feff5576d2 Travis: test with ansible 2.4 to 2.6 2018-10-29 14:18:37 +01:00
Emilien Mantel 04547b496f Force install python-apt on Vagrant+Docker 2018-10-29 14:15:02 +01:00
Emilien Mantel 9f048ae918 Support PHP 7.3 on Debian/FreeBSD
- Fixes some issues on FreeBSD (Vagrant problems, loading vars files...)
- Add some platforms on Travis
2018-10-29 12:30:14 +01:00
Emilien Mantel 6a85f02fc1 Fix apcu package for Debian based systems 2018-03-19 08:51:58 +01:00
Emilien Mantel 4611a5a795 Merge branch 'master' into freebsd 2018-03-18 21:47:24 +01:00
Emilien Mantel 9e59ba5b47 Fix vagrantfile for FreeBSD 2018-03-18 21:46:47 +01:00
Emilien Mantel 9aa0f76c03 Support FreeBSD 11/12 2018-03-18 21:29:47 +01:00
Emilien Mantel e87d158424 Manage Ubuntu 16.04/18.04 2018-03-18 19:30:21 +01:00
Emilien Mantel 5878040e84 Mass cleanup and drop jessie support 2018-03-18 17:28:57 +01:00
59 changed files with 1181 additions and 338 deletions

8
.ansible-lint 100644
View File

@ -0,0 +1,8 @@
---
# TODO: enable later
enable_list:
- fqcn-builtins
skip_list:
- role-name

43
.github/workflows/ci.yml vendored 100644
View File

@ -0,0 +1,43 @@
---
name: ci
'on':
pull_request:
push:
branches:
- master
jobs:
yaml-lint:
name: YAML Lint
runs-on: ubuntu-latest
steps:
- name: Fetch code
uses: actions/checkout@v3
- name: Set up Python 3.
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install test dependencies.
run: pip3 install yamllint
- name: Lint code.
run: |
yamllint .
ansible-lint:
name: Ansible Lint
runs-on: ubuntu-latest
steps:
- name: Fetch code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Run ansible-lint
uses: ansible/ansible-lint-action@v6.15.0

17
.github/workflows/galaxy.yml vendored 100644
View File

@ -0,0 +1,17 @@
---
name: Deploy on Ansible Galaxy
'on':
- push
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v2
- name: galaxy
uses: robertdebock/galaxy-action@1.2.0
with:
galaxy_api_key: ${{ secrets.galaxy_api_key }}

35
.github/workflows/molecule.yml vendored 100644
View File

@ -0,0 +1,35 @@
---
name: Molecule
'on':
pull_request:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
scenario:
- debian-10
- debian-11
- debian-12
- ubuntu-18.04
- ubuntu-20.04
- ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v3
with:
path: "${{ github.repository }}"
- name: Molecule
uses: gofrolist/molecule-action@v2.3.19
with:
molecule_options: --base-config molecule/_shared/base.yml
molecule_args: --scenario-name ${{ matrix.scenario }}
molecule_working_dir: "HanXHX/ansible-php"

4
.gitignore vendored
View File

@ -1,3 +1,7 @@
.vagrant* .vagrant*
*.swp *.swp
*.retry *.retry
*.log
/filter_plugins/*.pyc
/filter_plugins/__pycache__
/.idea

View File

@ -1,49 +0,0 @@
env:
- PLATFORM='docker-debian-jessie-php56' ANSIBLE_VERSION='ansible>=2.0,<2.1'
- PLATFORM='docker-debian-jessie-php70' ANSIBLE_VERSION='ansible>=2.0,<2.1'
- PLATFORM='docker-debian-jessie-php71' ANSIBLE_VERSION='ansible>=2.0,<2.1'
- PLATFORM='docker-debian-stretch-php70' ANSIBLE_VERSION='ansible>=2.0,<2.1'
- PLATFORM='docker-debian-stretch-php71' ANSIBLE_VERSION='ansible>=2.0,<2.1'
- PLATFORM='docker-debian-jessie-php56' ANSIBLE_VERSION='ansible>=2.1,<2.2'
- PLATFORM='docker-debian-jessie-php70' ANSIBLE_VERSION='ansible>=2.1,<2.2'
- PLATFORM='docker-debian-jessie-php71' ANSIBLE_VERSION='ansible>=2.1,<2.2'
- PLATFORM='docker-debian-stretch-php70' ANSIBLE_VERSION='ansible>=2.1,<2.2'
- PLATFORM='docker-debian-stretch-php71' ANSIBLE_VERSION='ansible>=2.1,<2.2'
- PLATFORM='docker-debian-jessie-php56' ANSIBLE_VERSION='ansible>=2.2,<2.3'
- PLATFORM='docker-debian-jessie-php70' ANSIBLE_VERSION='ansible>=2.2,<2.3'
- PLATFORM='docker-debian-jessie-php71' ANSIBLE_VERSION='ansible>=2.2,<2.3'
- PLATFORM='docker-debian-stretch-php70' ANSIBLE_VERSION='ansible>=2.2,<2.3'
- PLATFORM='docker-debian-stretch-php71' ANSIBLE_VERSION='ansible>=2.2,<2.3'
- PLATFORM='docker-debian-jessie-php56' ANSIBLE_VERSION='ansible>=2.3,<2.4'
- PLATFORM='docker-debian-jessie-php70' ANSIBLE_VERSION='ansible>=2.3,<2.4'
- PLATFORM='docker-debian-jessie-php71' ANSIBLE_VERSION='ansible>=2.3,<2.4'
- PLATFORM='docker-debian-stretch-php70' ANSIBLE_VERSION='ansible>=2.3,<2.4'
- PLATFORM='docker-debian-stretch-php71' ANSIBLE_VERSION='ansible>=2.3,<2.4'
sudo: required
dist: trusty
language: python
services:
- docker
before_install:
- wget https://releases.hashicorp.com/vagrant/2.0.1/vagrant_2.0.1_x86_64.deb
- sudo dpkg -i vagrant_2.0.1_x86_64.deb
install:
- pip install "$ANSIBLE_VERSION"
script:
- VAGRANT_DEFAULT_PROVIDER=docker vagrant up $PLATFORM
- >
VAGRANT_DEFAULT_PROVIDER=docker vagrant provision $PLATFORM
| grep -q 'changed=0.*failed=0'
&& (echo 'Idempotence test: pass' && exit 0)
|| (echo 'Idempotence test: fail' && exit 1)
- VAGRANT_DEFAULT_PROVIDER=docker vagrant status
notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/

6
.yamllint.yml 100644
View File

@ -0,0 +1,6 @@
---
extends: default
rules:
line-length: disable

View File

@ -1,26 +1,39 @@
Ansible PHP (+FPM) role for Debian Ansible PHP (+FPM) role for Debian / Ubuntu / FreeBSD
================================== =====================================================
[![Ansible Galaxy](http://img.shields.io/badge/ansible--galaxy-HanXHX.php-blue.svg)](https://galaxy.ansible.com/HanXHX/php) [![Build Status](https://travis-ci.org/HanXHX/ansible-php.svg?branch=master)](https://travis-ci.org/HanXHX/ansible-php) [![Ansible Galaxy](http://img.shields.io/badge/ansible--galaxy-hanxhx.php-blue.svg)](https://galaxy.ansible.com/hanxhx.php) ![GitHub Workflow Status (master)](https://img.shields.io/github/actions/workflow/status/hanxhx/ansible-php/molecule.yml?branch=master)
Install PHP (php-fpm optional) on Debian. Manage APCu, Opcache, Xdebug. Install PHP on Debian / Ubuntu / FreeBSD. Manage PHP-FPM, APCu, Opcache and Xdebug.
Managed OS / Versions Managed OS / Versions
--------------------- ---------------------
| OS | PHP 5.6 | PHP 7.0 | PHP 7.1 | PHP 7.2 | On all Debian versions, you can install all PHP versions by using [Sury's APT repository](https://deb.sury.org/).
|:-------------:|:---------:|:-------------------------:|:---------------------:|:------------:|
| Debian Jessie | Yes | Yes (from Dotdeb or Sury) | Yes (Dotdeb or Sury) | Yes (Sury) | Other cases:
| Debian Strech | No | Yes | Yes (Sury) | Yes (Sury) |
| OS | PHP 7.0 | PHP 7.1 | PHP 7.2 | PHP 7.3 | PHP >= 7.4 |
|:---------------------:|:-------------------:|:--------------------:|:--------------------:|:--------------------:|:--------------------:
| Ubuntu Bionic (18.04) | :x: | :x: | :heavy_check_mark: | :x: | :x: |
| FreeBSD 11 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Need tests... |
| FreeBSD 12 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Need tests... |
Links: Links:
- [Dotdeb](https://www.dotdeb.org)
- [Sury](https://deb.sury.org/) - [Sury](https://deb.sury.org/)
Requirements Requirements
------------ ------------
If you need PHP-FPM, you must install a webserver with FastCGI support. You can use my [nginx role](https://github.com/HanXHX/ansible-nginx). - Ansible >= 2.11
- Collections: [community.general](https://galaxy.ansible.com/community/general)
- If you need PHP-FPM, you must install a webserver with FastCGI support. You can use my [nginx role](https://github.com/HanXHX/ansible-nginx).
FreeBSD limitations
-------------------
- It doesn't split ini file for FPM/CLI. It's hardcoded as `/usr/local/etc/php.ini`.
- It can't manage multiple PHP versions at the time (like legacy Debian versions)
- You must explicitely set xdebug package name (use `pkg search xdebug` to find the good one)
Role Variables Role Variables
-------------- --------------
@ -29,7 +42,7 @@ You should look at [default vars](defaults/main.yml).
### Writable vars ### Writable vars
- `php_version`: 5.6 (default), 7.0, 7.1 - `php_version`: 7.3, 7.4... depending OS (see above)
- `php_install_fpm`: boolean, install and manage php-fpm (default is true) - `php_install_fpm`: boolean, install and manage php-fpm (default is true)
- `php_install_xdebug`: boolean, install [Xdebug](http://xdebug.org) - `php_install_xdebug`: boolean, install [Xdebug](http://xdebug.org)
- `php_extra_packages`: additional php packages to install (default is an empty list). - `php_extra_packages`: additional php packages to install (default is an empty list).
@ -46,7 +59,6 @@ Note:
- Put specific configuration in `php_ini_fpm`/`php_ini_cli`. - Put specific configuration in `php_ini_fpm`/`php_ini_cli`.
- You can override with `php_ini_fpm`/`php_ini_cli`, but it breaks idempotence. - You can override with `php_ini_fpm`/`php_ini_cli`, but it breaks idempotence.
#### OpCache settings #### OpCache settings
See [Opcache doc](https://secure.php.net/manual/en/opcache.configuration.php) See [Opcache doc](https://secure.php.net/manual/en/opcache.configuration.php)
@ -149,14 +161,14 @@ Example Playbook
- hosts: servers - hosts: servers
roles: roles:
- { role: HanXHX.php } - { role: hanxhx.php }
### Debian Jessie with PHP 7.0 CLI (no FPM) ### Debian Bullseye with PHP 8.0 CLI (no FPM)
- hosts: jessie-servers - hosts: servers
roles: roles:
- { role: HanXHX.dotdeb } - { role: HanXHX.sury }
- { role: HanXHX.php, php_version: '7.0', php_install_fpm: false } - { role: hanxhx.php, php_version: '8.0', php_install_fpm: false }
License License
------- -------
@ -169,7 +181,7 @@ Donation
If this code helped you, or if youve used them for your projects, feel free to buy me some :beers: If this code helped you, or if youve used them for your projects, feel free to buy me some :beers:
- Bitcoin: `1BQwhBeszzWbUTyK4aUyq3SRg7rBSHcEQn` - Bitcoin: `1BQwhBeszzWbUTyK4aUyq3SRg7rBSHcEQn`
- Ethereum: `63abe6b2648fd892816d87a31e3d9d4365a737b5` - Ethereum: `0x63abe6b2648fd892816d87a31e3d9d4365a737b5`
- Litecoin: `LeNDw34zQLX84VvhCGADNvHMEgb5QyFXyD` - Litecoin: `LeNDw34zQLX84VvhCGADNvHMEgb5QyFXyD`
- Monero: `45wbf7VdQAZS5EWUrPhen7Wo4hy7Pa7c7ZBdaWQSRowtd3CZ5vpVw5nTPphTuqVQrnYZC72FXDYyfP31uJmfSQ6qRXFy3bQ` - Monero: `45wbf7VdQAZS5EWUrPhen7Wo4hy7Pa7c7ZBdaWQSRowtd3CZ5vpVw5nTPphTuqVQrnYZC72FXDYyfP31uJmfSQ6qRXFy3bQ`
@ -179,4 +191,3 @@ Author Information
------------------ ------------------
- Twitter: [@hanxhx_](https://twitter.com/hanxhx_) - Twitter: [@hanxhx_](https://twitter.com/hanxhx_)
- All issues, pull-requests are welcome :)

62
Vagrantfile vendored
View File

@ -6,19 +6,24 @@
Vagrant.configure("2") do |config| Vagrant.configure("2") do |config|
vms_debian = [ vms_debian = [
{ :name => "debian-jessie-php56", :box => "debian/jessie64", :vars => { }}, { :name => "debian-buster-php73", :box => "debian/buster64", :vars => { }},
{ :name => "debian-jessie-php70", :box => "debian/jessie64", :vars => { "php_version": '7.0' }}, { :name => "debian-buster-php74", :box => "debian/buster64", :vars => { "php_version": '7.4' }},
{ :name => "debian-jessie-php71", :box => "debian/jessie64", :vars => { "php_version": '7.1' }}, { :name => "debian-bullseye-php74", :box => "debian/bullseye64", :vars => { }},
{ :name => "debian-stretch-php70", :box => "debian/stretch64", :vars => { }}, { :name => "debian-bullseye-php80", :box => "debian/bullseye64", :vars => { "php_version": '8.0' }},
{ :name => "debian-stretch-php71", :box => "debian/stretch64", :vars => { "php_version": '7.1' }} { :name => "ubuntu-bionic-php72", :box => "ubuntu/bionic64", :vars => { }},
]
vms_freebsd = [
{ :name => "freebsd-11", :box => "freebsd/FreeBSD-11.1-STABLE", :vars => {} },
{ :name => "freebsd-12", :box => "freebsd/FreeBSD-12.0-CURRENT", :vars => {} }
] ]
conts = [ conts = [
{ :name => "docker-debian-jessie-php56", :docker => "hanxhx/vagrant-ansible:debian8", :vars => { }}, { :name => "docker-debian-buster-php73", :docker => "hanxhx/vagrant-ansible:debian10", :vars => { }},
{ :name => "docker-debian-jessie-php70", :docker => "hanxhx/vagrant-ansible:debian8", :vars => { "php_version": '7.0' }}, { :name => "docker-debian-buster-php74", :docker => "hanxhx/vagrant-ansible:debian10", :vars => { "php_version": '7.4' }},
{ :name => "docker-debian-jessie-php71", :docker => "hanxhx/vagrant-ansible:debian8", :vars => { "php_version": '7.1' }}, { :name => "docker-debian-bullseye-php74", :docker => "hanxhx/vagrant-ansible:debian11", :vars => { }},
{ :name => "docker-debian-stretch-php70", :docker => "hanxhx/vagrant-ansible:debian9", :vars => { }}, { :name => "docker-debian-bullseye-php80", :docker => "hanxhx/vagrant-ansible:debian11", :vars => { "php_version": '8.0' }},
{ :name => "docker-debian-stretch-php71", :docker => "hanxhx/vagrant-ansible:debian9", :vars => { "php_version": '7.1' }} { :name => "docker-ubuntu-bionic-php72", :docker => "hanxhx/vagrant-ansible:ubuntu18.04", :vars => { }},
] ]
config.vm.network "private_network", type: "dhcp" config.vm.network "private_network", type: "dhcp"
@ -30,6 +35,8 @@ Vagrant.configure("2") do |config|
d.remains_running = true d.remains_running = true
d.has_ssh = true d.has_ssh = true
end end
#m.vm.provision "shell", inline: "apt-get update && apt-get install -y python python-apt"
m.vm.provision "ansible" do |ansible| m.vm.provision "ansible" do |ansible|
ansible.playbook = "tests/test.yml" ansible.playbook = "tests/test.yml"
ansible.verbose = 'vv' ansible.verbose = 'vv'
@ -46,12 +53,35 @@ Vagrant.configure("2") do |config|
v.cpus = 1 v.cpus = 1
v.memory = 256 v.memory = 256
end end
m.vm.provision "ansible" do |ansible| m.vm.provision "shell", inline: "apt-get update && apt-get install -y ifupdown python"
ansible.playbook = "tests/test.yml"
ansible.verbose = 'vv' m.vm.provision "ansible" do |ansible|
ansible.become = true ansible.playbook = "tests/test.yml"
ansible.extra_vars = opts[:vars] ansible.verbose = 'vv'
end ansible.become = true
ansible.extra_vars = opts[:vars]
end
end end
end end
vms_freebsd.each do |opts|
config.vm.synced_folder ".", "/vagrant", disabled: true
config.vm.base_mac = "080027D14C66"
config.vm.define opts[:name] do |m|
m.vm.box = opts[:box]
m.vm.provider "virtualbox" do |v, override|
override.ssh.shell = "csh"
v.cpus = 2
v.memory = 512
end
m.vm.provision "shell", inline: "pkg install -y python bash"
m.vm.provision "ansible" do |ansible|
ansible.playbook = "tests/test.yml"
ansible.verbose = 'vv'
ansible.become = true
ansible.extra_vars = opts[:vars].merge({ "ansible_python_interpreter": '/usr/local/bin/python' })
end
end
end
end end

View File

@ -4,6 +4,8 @@ php_version: '{{ php_default_version }}'
php_install_fpm: true php_install_fpm: true
php_install_xdebug: false php_install_xdebug: false
php_extra_packages: [] php_extra_packages: []
php_xdebug_package: null
php_autoremove_default_pool: false
# php.ini config # php.ini config
php_ini: php_ini:
@ -89,10 +91,10 @@ php_xdebug_var_display_max_depth: '3'
# PHP-FPM # PHP-FPM
php_fpm_poold: php_fpm_poold:
- pool_name: 'www' - name: 'www'
listen: '{{ php_default_fpm_sock }}' listen: '{{ php_default_fpm_sock }}'
pm: 'dynamic' pm: 'dynamic'
pm_max_children: 250 pm_max_children: 100
pm_start_servers: 10 pm_start_servers: 10
pm_min_spare_servers: 10 pm_min_spare_servers: 10
pm_max_spare_servers: 20 pm_max_spare_servers: 20

View File

@ -0,0 +1,10 @@
def php_socket(php_version, pool_name):
return '/run/php/php%s-%s-fpm.sock' % (php_version, pool_name)
class FilterModule(object):
''' PHP module '''
def filters(self):
return {
'php_socket': php_socket,
}

View File

@ -1,5 +1,12 @@
--- ---
- name: restart php-fpm - name: Restart php-fpm
service: name='{{ php_fpm_service }}' state=restarted ansible.builtin.service:
name: '{{ php_fpm_service }}'
state: restarted
when: php_install_fpm when: php_install_fpm
notify: Docker restart php-fpm
- name: Docker restart php-fpm # noqa: command-instead-of-module no-changed-when
ansible.builtin.command: 'service {{ php_fpm_service }} restart'
when: ansible_virtualization_type == 'docker'

View File

@ -0,0 +1,6 @@
---
argument_specs:
main:
short_description: Main entry point
options: {}

View File

@ -1,21 +1,35 @@
--- ---
galaxy_info: galaxy_info:
author: Emilien Mantel author: Emilien Mantel
description: Install and configure PHP 5.6/7.0/7.1 (+ FPM is wanted) role_name: php
company: namespace: hanxhx
description: Install and configure PHP 7.x/8.x
company: TripleStack
license: GPLv2 license: GPLv2
min_ansible_version: 2.0 min_ansible_version: '2.11'
platforms: platforms:
- name: Debian - name: Debian
versions: versions:
- jessie - buster
- bullseye
- bookworm
- name: Ubuntu
versions:
- bionic
- name: FreeBSD
versions:
- '11.0'
- '11.1'
- '12.0'
galaxy_tags: galaxy_tags:
- development - development
- web - web
- php - php
- php5.6 - fpm
- php5 - php7
- php7 - php8
- debian - debian
dependencies: [] - ubuntu
- freebsd
dependencies: []

View File

@ -0,0 +1,19 @@
# Molecule managed
{% if item.registry is defined %}
FROM {{ item.registry.url }}/{{ item.image }}
{% else %}
FROM {{ item.image }}
{% endif %}
{% if item.env is defined %}
{% for var, value in item.env.items() %}
{% if value %}
ENV {{ var }} {{ value }}
{% endif %}
{% endfor %}
{% endif %}
RUN apt-get update && \
apt-get install -y python3 sudo bash ca-certificates iproute2 python-apt-common \
&& apt-get clean

View File

@ -0,0 +1,36 @@
---
scenario:
test_sequence:
- dependency
- syntax
- create
- prepare
- converge
- idempotence
- verify
- destroy
dependency:
name: galaxy
options:
requirements-file: ../../requirements.yml
driver:
name: docker
role_name_check: 1
provisioner:
name: ansible
config_options:
defaults:
deprecation_warnings: false
callback_whitelist: timer,profile_tasks
fact_caching: jsonfile
fact_caching_connection: ./cache
forks: 100
connection:
pipelining: true
playbooks:
converge: ../_shared/converge.yml
prepare: ../_shared/prepare.yml
verify: ../_shared/verify.yml
verifier:
name: ansible

View File

@ -0,0 +1,25 @@
---
- name: Converge
hosts: all
gather_facts: true
handlers:
- name: Reload nginx
ansible.builtin.service:
name: nginx
state: reloaded
tasks:
- name: Include role
ansible.builtin.include_role:
name: "hanxhx.php"
post_tasks:
- name: TEMPLATE | Nginx site config
ansible.builtin.template:
src: "../../tests/templates/nginx.conf.j2"
dest: "{{ __nginx_conf }}"
mode: 0644
owner: root
group: root
notify: Reload nginx
vars_files:
- vars/misc.yml

View File

@ -0,0 +1,67 @@
---
- name: Prepare
hosts: all
gather_facts: true
vars_files:
- vars/misc.yml
handlers:
- name: Reload nginx
ansible.builtin.service:
name: nginx
state: reloaded
tasks:
- name: INCLUDE_TASKS | Pre tasks related to OS
ansible.builtin.include_tasks: "../../tests/includes/pre_{{ ansible_os_family }}.yml"
- name: USER | Create PHP user
ansible.builtin.user:
name: 'foo'
system: true
create_home: false
shell: '/usr/sbin/nologin'
- name: COMMAND | Fix nginx config
ansible.builtin.command: "cp {{ __nginx_conf | dirname }}/fastcgi_params {{ __nginx_conf | dirname }}/fastcgi.conf"
args:
creates: "{{ __nginx_conf | dirname }}/fastcgi.conf"
notify: Reload nginx
- name: LINEINFILE | Fix nginx config (second step)
ansible.builtin.lineinfile:
regexp: '^fastcgi_param\s+SCRIPT_FILENAME'
line: "fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;"
dest: "{{ __nginx_conf | dirname }}/fastcgi.conf"
notify: Reload nginx
- name: SERVICE | Ensure nginx is started
ansible.builtin.service:
name: nginx
state: started
- name: FILE | Create /var/www
ansible.builtin.file:
dest: /var/www
state: directory
owner: root
group: root
mode: 0755
- name: COPY | Add phpinfo
ansible.builtin.copy:
dest: /var/www/phpinfo.php
content: '<?php phpinfo();'
owner: root
group: root
mode: 0644
- name: COPY | Add ini test file
ansible.builtin.copy:
dest: /var/www/ini.php
content: '<?php echo ini_get("memory_limit") . "\n";'
owner: root
group: root
mode: 0644

View File

@ -0,0 +1,36 @@
---
# Force SysVinit, since systemd won't work in a Docker container
ansible_service_mgr: "sysvinit"
# ----------------------------------------
# Copied from {role_dir}/tests/test.yml
# ----------------------------------------
vhost: 'test.local'
php_extra_packages:
- '{{ php_package_prefix }}pgsql'
php_install_xdebug: true
php_autoremove_default_pool: true
php_ini_fpm:
display_errors: 'Off'
php_ini_cli:
error_reporting: 'E_ALL'
php_fpm_poold:
- pool_name: 'test_ansible'
listen: '/run/php/php-ansible1.sock'
pm: 'dynamic'
pm_max_children: 250
pm_start_servers: 10
pm_min_spare_servers: 10
pm_max_spare_servers: 20
status_path: '/status'
ping_path: '/ping'
ping_response: 'ok'
- name: 'test_ansible2'
user: 'foo'
php_env:
foo: bar
php_value:
display_errors: 'Off'
php_admin_value:
memory_limit: '98M'

View File

@ -0,0 +1,74 @@
---
- name: Verify
hosts: all
gather_facts: true
vars_files:
- vars/misc.yml
tasks:
- name: COMMAND | Test php-cli
ansible.builtin.command: php -v
changed_when: false
- name: SHELL | Check vhost
ansible.builtin.shell: "set -o pipefail && curl -v -H 'Host: {{ vhost }}' http://127.0.0.1/phpinfo.php 2> /dev/null | grep h1 | grep 'PHP Version'"
args:
executable: /bin/bash
changed_when: false
register: c
failed_when: c.stdout == ''
- name: BLOCK | Test explicit version
when: php_version is defined
block:
- name: SHELL | Test php-cli (explicit version)
ansible.builtin.shell: set -o pipefail && php -i | grep '^PHP Version => {{ php_version }}' | head -n 1
changed_when: false
register: p
failed_when: p.stdout == ''
args:
executable: /bin/bash
- name: SHELL | Check vhost
ansible.builtin.shell: "set -o pipefail && curl -v -H 'Host: {{ vhost }}' http://127.0.0.1/phpinfo.php 2> /dev/null | grep h1 | grep -o 'PHP Version {{ php_version }}' | sed -r 's/<//g'"
args:
executable: /bin/bash
changed_when: false
register: c
failed_when: c.stdout == ''
- name: SHELL | Check custom php value # noqa: command-instead-of-module
ansible.builtin.shell: "curl -H 'Host: {{ vhost }}' http://127.0.0.1/ini.php 2> /dev/null"
changed_when: false
register: c
failed_when: 'php_fpm_poold.1.php_admin_value.memory_limit not in c.stdout'
- name: URI | Check ping
ansible.builtin.uri:
url: "http://localhost{{ php_fpm_poold.0.ping_path }}"
when: php_fpm_poold.0.ping_path is defined
- name: URI | Check status
ansible.builtin.uri:
url: "http://localhost{{ php_fpm_poold.0.status_path }}"
when: php_fpm_poold.0.status_path is defined
- name: Debian extra checks
when: ansible_os_family == 'Debian'
block:
- name: SHELL | Check if we installed multiple PHP versions
ansible.builtin.shell: set -o pipefail && (dpkg -l | grep 'php[[:digit:]].*common' | wc -l)
args:
executable: /bin/bash
failed_when: false
changed_when: false
register: check_multiple_php
- name: FAIL | If we have multiple PHP version
ansible.builtin.fail:
msg: "Multiple PHP versions detected"
when: check_multiple_php.stdout != '1'

View File

@ -0,0 +1,32 @@
---
platforms:
- name: debian-10
image: dokken/debian-10
command: /lib/systemd/systemd
dockerfile: ../_shared/Dockerfile.j2
capabilities:
- SYS_ADMIN
cgroupns_mode: host
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
privileged: true
- name: debian-10-php-7.4
image: dokken/debian-10
command: /lib/systemd/systemd
dockerfile: ../_shared/Dockerfile.j2
capabilities:
- SYS_ADMIN
cgroupns_mode: host
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
privileged: true
provisioner:
inventory:
group_vars:
all:
__nginx_conf: /etc/nginx/nginx.conf
host_vars:
debian-10-php-7.4:
php_version: '7.4'

View File

@ -0,0 +1,32 @@
---
platforms:
- name: debian-11
image: dokken/debian-11
command: /lib/systemd/systemd
dockerfile: ../_shared/Dockerfile.j2
capabilities:
- SYS_ADMIN
cgroupns_mode: host
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
privileged: true
- name: debian-11-php-8.0
image: dokken/debian-11
command: /lib/systemd/systemd
dockerfile: ../_shared/Dockerfile.j2
capabilities:
- SYS_ADMIN
cgroupns_mode: host
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
privileged: true
provisioner:
inventory:
group_vars:
all:
__nginx_conf: /etc/nginx/nginx.conf
host_vars:
debian-11-php-8.0:
php_version: '8.0'

View File

@ -0,0 +1,19 @@
---
platforms:
- name: debian-12
image: dokken/debian-12
command: /lib/systemd/systemd
dockerfile: ../_shared/Dockerfile.j2
capabilities:
- SYS_ADMIN
cgroupns_mode: host
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
privileged: true
provisioner:
inventory:
group_vars:
all:
__nginx_conf: /etc/nginx/nginx.conf

View File

View File

@ -0,0 +1,19 @@
---
platforms:
- name: ubuntu-18.04
image: dokken/ubuntu-18.04
command: /lib/systemd/systemd
dockerfile: ../_shared/Dockerfile.j2
capabilities:
- SYS_ADMIN
cgroupns_mode: host
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
privileged: true
provisioner:
inventory:
group_vars:
all:
__nginx_conf: /etc/nginx/nginx.conf

View File

@ -0,0 +1,19 @@
---
platforms:
- name: ubuntu-20.04
image: dokken/ubuntu-20.04
command: /lib/systemd/systemd
dockerfile: ../_shared/Dockerfile.j2
capabilities:
- SYS_ADMIN
cgroupns_mode: host
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
privileged: true
provisioner:
inventory:
group_vars:
all:
__nginx_conf: /etc/nginx/nginx.conf

View File

@ -0,0 +1,19 @@
---
platforms:
- name: ubuntu-22.04
image: dokken/ubuntu-22.04
command: /lib/systemd/systemd
dockerfile: ../_shared/Dockerfile.j2
capabilities:
- SYS_ADMIN
cgroupns_mode: host
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
privileged: true
provisioner:
inventory:
group_vars:
all:
__nginx_conf: /etc/nginx/nginx.conf

4
requirements.yml 100644
View File

@ -0,0 +1,4 @@
---
collections:
- community.general

View File

@ -1,19 +1,46 @@
--- ---
- name: APT | Install PHP-FPM - name: APT | Install PHP-FPM for Debian based systems
apt: pkg={{ php_fpm_service }} state=present ansible.builtin.apt:
pkg: "{{ php_fpm_service }}"
state: "{{ 'present' if php_install_fpm else 'absent' }}"
when: ansible_os_family == 'Debian'
- name: SERVICE | Enable service on FreeBSD
ansible.builtin.service:
name: "{{ php_fpm_service }}"
enabled: "{{ 'true' if php_install_fpm else 'false' }}"
when: ansible_os_family == 'FreeBSD'
- name: LINEINFILE | PHP configuration - name: LINEINFILE | PHP configuration
lineinfile: ansible.builtin.lineinfile:
dest: '{{ php_etc_dir }}/fpm/php.ini' dest: '{{ php_fpm_ini }}'
regexp: '^;?{{ item.key }}' regexp: '^;?{{ item.key }}'
line: '{{ item.key }} = {{ item.value }}' line: '{{ item.key }} = {{ item.value }}'
with_dict: "{{ php_ini | combine(php_ini_fpm) }}" create: true
notify: restart php-fpm owner: root
group: root
mode: 0644
loop: "{{ php_ini | combine(php_ini_fpm) | dict2items }}"
when: php_install_fpm | bool
notify: Restart php-fpm
- name: TEMPLATE | Deploy pool configuration - name: TEMPLATE | Deploy pool configuration
template: > ansible.builtin.template:
src=etc/__php__/fpm/pool.d/pool.conf.j2 src: etc/__php__/fpm/pool.d/pool.conf.j2
dest='{{ php_etc_dir }}/fpm/pool.d/{{ item.pool_name }}.conf' dest: '{{ php_fpm_pool_dir }}/{{ item.name }}.conf'
with_items: "{{ php_fpm_poold }}" owner: root
notify: restart php-fpm group: root
mode: 0644
loop: "{{ ansible_local.hanxhx_php.fpm_pool }}"
when: php_install_fpm | bool
notify: Restart php-fpm
- name: FILE | Delete default pool if necessary
ansible.builtin.file:
path: "{{ php_fpm_pool_dir }}/www.conf"
state: absent
when:
- '"www" not in (ansible_local.hanxhx_php.fpm_pool | map(attribute="name") | list) and php_autoremove_default_pool'
- php_install_fpm | bool
notify: Restart php-fpm

View File

@ -1,39 +1,125 @@
--- ---
- name: INCLUDE_VARS | Related to OS - name: SHELL | Check if we are in multiple PHP distribution
include_vars: "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml" ansible.builtin.shell: set -o pipefail && apt-cache search php xdebug | grep 'php[[:digit:]].[[:digit:]]'
args:
- name: ASSERT | Check variables executable: /bin/bash
assert: failed_when: false
that: "php_version in php_managed_versions"
- name: INCLUDE_VARS | Related to PHP version
include_vars: "php-{{ php_version }}.yml"
- name: APT | Update cache
apt: update_cache=yes cache_valid_time=3600
changed_when: false changed_when: false
register: multiple_php
when: ansible_os_family == 'Debian'
- name: INCLUDE_VARS | Related to OS family
ansible.builtin.include_vars: "OS_Family_{{ ansible_os_family }}.yml"
- name: INCLUDE_VARS | Related to OS version
ansible.builtin.include_vars: "{{ item }}"
with_first_found:
- "{{ ansible_distribution }}-{{ ansible_distribution_release }}.yml"
- "{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml"
- "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml"
- name: SET_FACT | Transform data
ansible.builtin.set_fact:
__php_fpm_full_pool: |
[
{% for p in php_fpm_poold %}
{
name: "{{ p.name | default(p.pool_name) }}",
listen: "{{ p.listen | default(php_version | php_socket(p.name | default(p.pool_name))) }}",
user: "{{ p.user | default(php_default_user_group) }}",
group: "{% if p.user is defined %}{{ p.group | default(p.user) }}{% else %}{{ p.group | default(php_default_user_group) }}{% endif %}",
php_env: {% if p.php_env is defined %}{{ p.php_env | to_nice_json }}{% else %}{}{% endif %},
php_value: {% if p.php_value is defined %}{{ p.php_value | to_nice_json }}{% else %}{}{% endif %},
php_admin_value: {% if p.php_admin_value is defined %}{{ p.php_admin_value | to_nice_json }}{% else %}{}{% endif %},
{% for k, v in p.items() | list %}
{% if k not in ['name', 'pool_name', 'listen', 'user', 'group', 'php_env', 'php_value', 'php_admin_value'] %}
{{ k }}: "{{ v }}"{% if not loop.last %},{% endif %}
{% endif %}
{% endfor %}
}{% if not loop.last %},{% endif %}
{% endfor %}
]
- name: SET_FACT | To YAML
ansible.builtin.set_fact:
php_fpm_full_pool: "{{ __php_fpm_full_pool | from_yaml }}"
- name: FILE | Creates ansible facts.d
ansible.builtin.file:
path: /etc/ansible/facts.d
state: directory
owner: root
group: root
mode: 0755
- name: COPY | Manage facts
ansible.builtin.copy:
content: "{ \"fpm_pool\": {{ php_fpm_full_pool | to_nice_json }} }"
dest: /etc/ansible/facts.d/hanxhx_php.fact
owner: root
group: root
mode: 0644
register: f
tags:
- skip_ansible_lint
- name: SETUP | Gathers new facts
ansible.builtin.setup:
when: f.changed
tags:
- skip_ansible_lint
- name: APT | Install PHP packages - name: APT | Install PHP packages
apt: pkg={{ item }} state=present ansible.builtin.apt:
with_flattened: pkg: "{{ pkgs }}"
- "{{ php_packages }}" state: present
- "{{ php_extra_packages }}" update_cache: true
notify: restart php-fpm cache_valid_time: 3600
install_recommends: false
vars:
pkgs: "{{ php_packages + php_extra_packages | flatten }}"
notify: Restart php-fpm
when: ansible_os_family == 'Debian'
- name: INCLUDE | PHP-FPM - name: PKGNG | Install PHP packages
include: fpm.yml community.general.pkgng:
when: php_install_fpm name: "{{ php_packages + php_extra_packages | flatten | join(',') }}"
notify: Restart php-fpm
when: ansible_os_family == 'FreeBSD'
- name: LINEINFILE | PHP configuration - name: IMPORT_TASKS | PHP-FPM
lineinfile: ansible.builtin.import_tasks: fpm.yml
dest: '{{ php_etc_dir }}/cli/php.ini'
- name: LINEINFILE | PHP CLI configuration
ansible.builtin.lineinfile:
dest: '{{ php_cli_ini }}'
regexp: '^;?{{ item.key }}' regexp: '^;?{{ item.key }}'
line: '{{ item.key }} = {{ item.value }}' line: '{{ item.key }} = {{ item.value }}'
with_dict: "{{ php_ini_cli }}" loop: "{{ php_ini | combine(php_ini_cli) | dict2items }}"
- name: INCLUDE | Xdebug - name: IMPORT_TASKS | Xdebug
include: xdebug.yml ansible.builtin.import_tasks: xdebug.yml
- name: APT | Install and configure opcache - name: APT | Install and configure opcache
include: opcache.yml ansible.builtin.import_tasks: opcache.yml
- name: SERVICE | Ensure PHP-FPM is started
ansible.builtin.service:
name: '{{ php_fpm_service }}'
state: started
when: php_install_fpm and ansible_virtualization_type != 'docker'
- name: BLOCK | Ensure PHP-FPM is started if running on Docker
when: php_install_fpm and ansible_virtualization_type == 'docker'
block:
- name: COMMAND | Check if PHP-FPM is started (Docker) # noqa: command-instead-of-module
ansible.builtin.command: 'service {{ php_fpm_service }} status'
register: dps
changed_when: false
failed_when: false
- name: COMMAND | Ensure PHP-FPM is started (Docker) # noqa: command-instead-of-module no-changed-when
ansible.builtin.command: 'service {{ php_fpm_service }} start'
when: dps.stdout.find('is not running') != -1

View File

@ -1,20 +1,46 @@
--- ---
- name: APT | Install APCu - name: Install opcache/apcu on Debian
apt: pkg="{{ php_apt_prefix }}apcu" state=present when: ansible_os_family == 'Debian'
block:
- name: APT | Install Opcache - name: APT | Install APCu
apt: pkg="{{ php_apt_prefix }}opcache" state=present ansible.builtin.apt:
when: php_version | version_compare('7.0', 'ge') pkg: "{{ php_apcu_package }}"
install_recommends: false
- name: APT | Install Opcache
ansible.builtin.apt:
pkg: "{{ php_package_prefix }}opcache"
install_recommends: false
- name: Install opcache/apcu on FreeBSD
when: ansible_os_family == 'FreeBSD'
block:
- name: PKGNG | Install APCu
community.general.pkgng:
name: "php{{ php_version | replace('.', '') }}-pecl-APCu"
- name: PKGNG | Install Opcache
community.general.pkgng:
name: "{{ php_package_prefix }}opcache"
- name: TEMPLATE | Configure Opcache
ansible.builtin.template:
src: "etc/__php__/mods-available/opcache.ini.j2"
dest: "{{ php_mods_dir }}/opcache.ini"
owner: root
group: root
mode: 0644
notify: Restart php-fpm
- name: TEMPLATE | Configure APCu - name: TEMPLATE | Configure APCu
template: > ansible.builtin.template:
src=etc/__php__/mods-available/opcache.ini.j2 src: "etc/__php__/mods-available/apcu.ini.j2"
dest="{{ php_mods_dir }}/opcache.ini" dest: "{{ php_mods_dir }}/apcu.ini"
notify: restart php-fpm owner: root
group: root
- name: TEMPLATE | Configure APCu mode: 0644
template: > notify: Restart php-fpm
src=etc/__php__/mods-available/apcu.ini.j2
dest={{ php_mods_dir }}/apcu.ini
notify: restart php-fpm

View File

@ -1,38 +1,44 @@
--- ---
- block: - name: BLOCK | Uninstall xdebug
- name: APT | Install php-xdebug
apt:
pkg: "{{ php_apt_prefix }}xdebug"
state: present
update_cache: yes
cache_valid_time: 3600
- name: SHELL | Get Xdebug version
shell: dpkg -l | awk '$2 ~ /xdebug$/ { print $3 }'
changed_when: false
register: xdebug_version
- name: TEMPLATE | Deploy module configurations
template:
src: "etc/__php__/mods-available/xdebug.ini.j2"
dest: "{{ php_mods_dir }}/xdebug.ini"
owner: root
mode: 0644
notify: restart php-fpm
when: php_install_xdebug when: php_install_xdebug
block:
- block: - name: APT | Install xdebug
ansible.builtin.apt:
pkg: "{{ php_xdebug_package }}"
state: present
update_cache: true
cache_valid_time: 3600
install_recommends: false
when: ansible_os_family == 'Debian'
# We can't uninstall as simple way. We can uninstall with php7.0-xdebug (virtual package), but removing virtual package doesn't affect real package. - name: PKGNG | Install xdebug
# On Jessie: php5-xdebug, php-xdebug (sury for PHP 5.6/7.0/7.1/7.2), php5-xdebug + php7.0-xdebug (dotdeb) community.general.pkgng:
# On Stretch: php-xdebug name: "{{ php_xdebug_package }}"
when: ansible_os_family == 'FreeBSD' and php_xdebug_package is defined
- name: COMMAND | Disable xdebug package - name: TEMPLATE | Deploy module configurations
command: phpdismod -v {{ php_version }} xdebug ansible.builtin.template:
args: src: "etc/__php__/mods-available/xdebug.ini.j2"
removes: "{{ php_etc_dir }}/cli/conf.d/20-xdebug.ini" dest: "{{ php_mods_dir }}/xdebug.ini"
owner: root
mode: 0644
notify: Restart php-fpm
- name: BLOCK | Uninstall xdebug
when: not php_install_xdebug when: not php_install_xdebug
block:
- name: APT | Uninstall xdebug
ansible.builtin.apt:
pkg: "{{ php_xdebug_package }}"
state: absent
when: ansible_os_family == 'Debian'
- name: PKGNG | Uninstall xdebug
community.general.pkgng:
name: "{{ php_xdebug_package }}"
state: absent
when: ansible_os_family == 'FreeBSD'

View File

@ -1,7 +1,7 @@
; Start a new pool named '{{ item.pool_name }}'. ; Start a new pool named '{{ item.name }}'.
; the variable $pool can we used in any directive and will be replaced by the ; the variable $pool can we used in any directive and will be replaced by the
; pool name ('{{ item.pool_name }}' here) ; pool name ('{{ item.name }}' here)
[{{ item.pool_name }}] [{{ item.name }}]
; Per pool prefix ; Per pool prefix
; It only applies on the following directives: ; It only applies on the following directives:
@ -20,8 +20,8 @@
; Unix user/group of processes ; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group ; Note: The user is mandatory. If the group is not set, the default user's group
; will be used. ; will be used.
user = {{ item.user | default('www-data') }} user = {{ item.user }}
group = {{ item.group | default('www-data') }} group = {{ item.group }}
; The address on which to accept FastCGI requests. ; The address on which to accept FastCGI requests.
; Valid syntaxes are: ; Valid syntaxes are:
@ -46,8 +46,8 @@ listen = {{ item.listen }}
; BSD-derived systems allow connections regardless of permissions. ; BSD-derived systems allow connections regardless of permissions.
; Default Values: user and group are set as the running user ; Default Values: user and group are set as the running user
; mode is set to 0660 ; mode is set to 0660
listen.owner = {{ item.listen_owner | default('www-data') }} listen.owner = {{ item.listen_owner | default(php_default_user_group) }}
listen.group = {{ item.listen_owner | default('www-data') }} listen.group = {{ item.listen_owner | default(php_default_user_group) }}
;listen.mode = 0660 ;listen.mode = 0660
; When POSIX Access Control Lists are supported you can set them using ; When POSIX Access Control Lists are supported you can set them using
; these options, value is a comma separated list of user/group names. ; these options, value is a comma separated list of user/group names.
@ -95,7 +95,7 @@ listen.group = {{ item.listen_owner | default('www-data') }}
; pm.process_idle_timeout - The number of seconds after which ; pm.process_idle_timeout - The number of seconds after which
; an idle process will be killed. ; an idle process will be killed.
; Note: This value is mandatory. ; Note: This value is mandatory.
pm = {{ item.pm }} pm = {{ item.pm | default('dynamic') }}
; The number of child processes to be created when pm is set to 'static' and the ; The number of child processes to be created when pm is set to 'static' and the
; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'. ; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
@ -106,33 +106,33 @@ pm = {{ item.pm }}
; forget to tweak pm.* to fit your needs. ; forget to tweak pm.* to fit your needs.
; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand' ; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
; Note: This value is mandatory. ; Note: This value is mandatory.
pm.max_children = {{ item.pm_max_children }} pm.max_children = {{ item.pm_max_children | default('250') }}
; The number of child processes created on startup. ; The number of child processes created on startup.
; Note: Used only when pm is set to 'dynamic' ; Note: Used only when pm is set to 'dynamic'
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2 ; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.start_servers = {{ item.pm_start_servers }} pm.start_servers = {{ item.pm_start_servers | default('10') }}
; The desired minimum number of idle server processes. ; The desired minimum number of idle server processes.
; Note: Used only when pm is set to 'dynamic' ; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic' ; Note: Mandatory when pm is set to 'dynamic'
pm.min_spare_servers = {{ item.pm_min_spare_servers }} pm.min_spare_servers = {{ item.pm_min_spare_servers | default('10') }}
; The desired maximum number of idle server processes. ; The desired maximum number of idle server processes.
; Note: Used only when pm is set to 'dynamic' ; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic' ; Note: Mandatory when pm is set to 'dynamic'
pm.max_spare_servers = {{ item.pm_max_spare_servers }} pm.max_spare_servers = {{ item.pm_max_spare_servers | default('20') }}
; The number of seconds after which an idle process will be killed. ; The number of seconds after which an idle process will be killed.
; Note: Used only when pm is set to 'ondemand' ; Note: Used only when pm is set to 'ondemand'
; Default Value: 10s ; Default Value: 10s
;pm.process_idle_timeout = 10s; pm.process_idle_timeout = {{ item.pm_process_idle_timeout | default('10s') }};
; The number of requests each child process should execute before respawning. ; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries. For ; This can be useful to work around memory leaks in 3rd party libraries. For
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS. ; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default Value: 0 ; Default Value: 0
;pm.max_requests = 500 pm.max_requests = {{ item.pm_max_requests | default('0') }}
; The URI to view the FPM status page. If this value is not set, no URI will be ; The URI to view the FPM status page. If this value is not set, no URI will be
; recognized as a status page. It shows the following informations: ; recognized as a status page. It shows the following informations:
@ -369,7 +369,7 @@ chdir = /
; Note: on highloaded environement, this can cause some delay in the page ; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms). ; process time (several ms).
; Default Value: no ; Default Value: no
;catch_workers_output = yes catch_workers_output = {{ item.catch_workers_output | default('no') }}
; Clear environment in FPM workers ; Clear environment in FPM workers
; Prevents arbitrary environment variables from reaching FPM worker processes ; Prevents arbitrary environment variables from reaching FPM worker processes
@ -421,5 +421,19 @@ chdir = /
;php_admin_value[error_log] = /var/log/fpm-php.www.log ;php_admin_value[error_log] = /var/log/fpm-php.www.log
;php_admin_flag[log_errors] = on ;php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M ;php_admin_value[memory_limit] = 32M
{% if item.php_env is defined %}
{% for k, v in item.php_env.items() | list %}
env[{{ k }}] = {{ v }}
{% endfor %}
{% endif %}
{% if item.php_value is defined %}
{% for k, v in item.php_value.items() | list %}
php_value[{{ k }}] = {{ v }}
{% endfor %}
{% endif %}
{% if item.php_admin_value is defined %}
{% for k, v in item.php_admin_value.items() | list %}
php_admin_value[{{ k }}] = {{ v }}
{% endfor %}
{% endif %}
; vim:filetype=dosini ; vim:filetype=dosini

View File

@ -2,9 +2,6 @@
; priority=20 ; priority=20
zend_extension=xdebug.so zend_extension=xdebug.so
{% if xdebug_version.stdout|version_compare('2.3', 'gt') %}
{% endif %}
xdebug_auto_trace={{ php_xdebug_auto_trace }} xdebug_auto_trace={{ php_xdebug_auto_trace }}
xdebug_cli_color={{ php_xdebug_cli_color }} xdebug_cli_color={{ php_xdebug_cli_color }}
xdebug_collect_assignments={{ php_xdebug_collect_assignments }} xdebug_collect_assignments={{ php_xdebug_collect_assignments }}
@ -29,9 +26,7 @@ xdebug_overload_var_dump={{ php_xdebug_overload_var_dump }}
xdebug_profiler_append={{ php_xdebug_profiler_append }} xdebug_profiler_append={{ php_xdebug_profiler_append }}
xdebug_profiler_enable={{ php_xdebug_profiler_enable }} xdebug_profiler_enable={{ php_xdebug_profiler_enable }}
xdebug_profiler_enable_trigger={{ php_xdebug_profiler_enable_trigger }} xdebug_profiler_enable_trigger={{ php_xdebug_profiler_enable_trigger }}
{% if xdebug_version.stdout|version_compare('2.3', 'gt') %}
xdebug_profiler_enable_trigger_value={{ php_xdebug_profiler_enable_trigger_value }} xdebug_profiler_enable_trigger_value={{ php_xdebug_profiler_enable_trigger_value }}
{% endif %}
xdebug_profiler_output_dir={{ php_xdebug_profiler_output_dir }} xdebug_profiler_output_dir={{ php_xdebug_profiler_output_dir }}
xdebug_profiler_output_name={{ php_xdebug_profiler_output_name }} xdebug_profiler_output_name={{ php_xdebug_profiler_output_name }}
xdebug_remote_autostart={{ php_xdebug_remote_autostart }} xdebug_remote_autostart={{ php_xdebug_remote_autostart }}
@ -48,9 +43,7 @@ xdebug_show_exception_trace={{ php_xdebug_show_exception_trace }}
xdebug_show_local_vars={{ php_xdebug_show_local_vars }} xdebug_show_local_vars={{ php_xdebug_show_local_vars }}
xdebug_show_mem_delta={{ php_xdebug_show_mem_delta }} xdebug_show_mem_delta={{ php_xdebug_show_mem_delta }}
xdebug_trace_enable_trigger={{ php_xdebug_trace_enable_trigger }} xdebug_trace_enable_trigger={{ php_xdebug_trace_enable_trigger }}
{% if xdebug_version.stdout|version_compare('2.3', 'gt') %}
xdebug_trace_enable_trigger_value={{ php_xdebug_trace_enable_trigger_value }} xdebug_trace_enable_trigger_value={{ php_xdebug_trace_enable_trigger_value }}
{% endif %}
xdebug_trace_format={{ php_xdebug_trace_format }} xdebug_trace_format={{ php_xdebug_trace_format }}
xdebug_trace_options={{ php_xdebug_trace_options }} xdebug_trace_options={{ php_xdebug_trace_options }}
xdebug_trace_output_dir={{ php_xdebug_trace_output_dir }} xdebug_trace_output_dir={{ php_xdebug_trace_output_dir }}

View File

@ -0,0 +1,9 @@
---
- name: APT | Install Sury key
ansible.builtin.apt_key:
url: 'https://packages.sury.org/php/apt.gpg'
- name: APT_REPOSITORY | Add Sury repository
ansible.builtin.apt_repository:
repo: 'deb https://packages.sury.org/php/ {{ ansible_distribution_release }} main'

View File

@ -1,7 +0,0 @@
---
- name: APT | Install DotDeb key
apt_key: url='http://www.dotdeb.org/dotdeb.gpg' state=present
- name: APT | Add Dotdeb repository
apt_repository: repo='deb http://packages.dotdeb.org {{ ansible_distribution_release }} all' state=present

View File

@ -0,0 +1,24 @@
---
- name: SET_FACT | Prepare test vars
ansible.builtin.set_fact:
__nginx_conf: /etc/nginx/nginx.conf
- name: APT | Install packages
ansible.builtin.apt:
pkg: "{{ p }}"
update_cache: true
cache_valid_time: 3600
vars:
p:
- apt-transport-https
- ca-certificates
- curl
- gpg
- lsb-release
- nginx
- vim
- name: INCLUDE_TASKS | Sury (only if a specific php_version is defined)
ansible.builtin.include_tasks: Debian/sury.yml
when: php_version is defined

View File

@ -0,0 +1,10 @@
---
- name: SET_FACT | Prepare test vars
ansible.builtin.set_fact:
__nginx_conf: /usr/local/etc/nginx/nginx.conf
php_xdebug_package: 'php72-pecl-xdebug-2.6.1'
- name: PKGNG | Install packages
community.general.pkgng:
name: ['curl', 'nginx']

View File

@ -1,7 +0,0 @@
---
- name: APT | Install Sury key
apt_key: url='https://packages.sury.org/php/apt.gpg' state=present
- name: APT | Add Sury repository
apt_repository: repo='deb https://packages.sury.org/php/ {{ ansible_distribution_release }} main' state=present

View File

@ -0,0 +1,41 @@
events {
worker_connections 1024;
}
user root;
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
server_name {{ vhost }};
root /var/www;
{% if ansible_local.hanxhx_php.fpm_pool.0.status_path is defined %}
location = {{ ansible_local.hanxhx_php.fpm_pool.0.status_path }} {
include fastcgi.conf;
fastcgi_pass unix:{{ ansible_local.hanxhx_php.fpm_pool.0.listen }};
}
{% endif %}
{% if ansible_local.hanxhx_php.fpm_pool.0.ping_path is defined %}
location = {{ ansible_local.hanxhx_php.fpm_pool.0.ping_path }} {
include fastcgi.conf;
fastcgi_pass unix:{{ ansible_local.hanxhx_php.fpm_pool.0.listen }};
}
{% endif %}
location = /ini.php {
include fastcgi.conf;
fastcgi_pass unix:{{ ansible_local.hanxhx_php.fpm_pool.1.listen }};
}
location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass unix:{{ ansible_local.hanxhx_php.fpm_pool.0.listen }};
}
}
}

View File

@ -1,23 +0,0 @@
server {
server_name {{ vhost }};
root /var/www;
{% if php_fpm_poold.0.status_path is defined %}
location = {{ php_fpm_poold.0.status_path }} {
include {{ nginx_include }};
fastcgi_pass unix:{{ php_default_fpm_sock }};
}
{% endif %}
{% if php_fpm_poold.0.ping_path is defined %}
location = {{ php_fpm_poold.0.ping_path }} {
include {{ nginx_include }};
fastcgi_pass unix:{{ php_default_fpm_sock }};
}
{% endif %}
location ~ \.php$ {
include {{ nginx_include }};
fastcgi_pass unix:{{ php_default_fpm_sock }};
}
}

View File

@ -1,18 +1,20 @@
--- ---
- hosts: all - hosts: all
name: Test all
vars: vars:
vhost: 'test.local' vhost: 'test.local'
php_extra_packages: php_extra_packages:
- '{{ php_apt_prefix }}recode' - '{{ php_package_prefix }}pgsql'
php_install_xdebug: true php_install_xdebug: true
php_autoremove_default_pool: true
php_ini_fpm: php_ini_fpm:
display_errors: 'Off' display_errors: 'Off'
php_ini_cli: php_ini_cli:
error_reporting: 'E_ALL' error_reporting: 'E_ALL'
php_fpm_poold: php_fpm_poold:
- pool_name: 'www' - pool_name: 'test_ansible'
listen: '{{ php_default_fpm_sock }}' listen: '/run/php/php-ansible1.sock'
pm: 'dynamic' pm: 'dynamic'
pm_max_children: 250 pm_max_children: 250
pm_start_servers: 10 pm_start_servers: 10
@ -21,57 +23,83 @@
status_path: '/status' status_path: '/status'
ping_path: '/ping' ping_path: '/ping'
ping_response: 'ok' ping_response: 'ok'
- name: 'test_ansible2'
user: 'foo'
php_env:
foo: bar
php_value:
display_errors: 'Off'
php_admin_value:
memory_limit: '98M'
pre_tasks: pre_tasks:
- name: APT | Install packages - name: INCLUDE_TASKS | Pre tasks related to OS
apt: pkg={{ item }} update_cache=yes cache_valid_time=3600 ansible.builtin.include_tasks: "includes/pre_{{ ansible_os_family }}.yml"
with_items: ['apt-transport-https', 'curl', 'lsb-release', 'ca-certificates']
- name: INCLUDE | Dotdeb - name: USER | Create PHP user
include: includes/dotdeb.yml ansible.builtin.user:
when: > name: 'foo'
ansible_distribution_major_version | version_compare(8, 'eq') and system: true
php_version | version_compare('7.0', 'eq') create_home: false
shell: '/usr/sbin/nologin'
- name: INCLUDE | Sury
include: includes/sury.yml
when: >
ansible_distribution_major_version | version_compare(9, 'le') and
php_version | version_compare('7.1', 'eq')
- name: APT | Install nginx
apt: pkg=nginx state=present update_cache=yes cache_valid_time=3600
- name: SHELL | Get nginx version
shell: nginx -V 2>&1 | awk -F '/' '/nginx version/ { print $2 }'
register: nginx_version
changed_when: false
- set_fact: nginx_include="fastcgi_params"
when: nginx_version.stdout | version_compare('1.6', '<', true)
- set_fact: nginx_include="fastcgi.conf"
when: nginx_version.stdout | version_compare('1.6', '>=', true)
tasks: tasks:
- name: TEMPLATE | Nginx site config - name: TEMPLATE | Nginx site config
template: ansible.builtin.template:
src: templates/site.j2 src: "templates/nginx.conf.j2"
dest: /etc/nginx/sites-enabled/{{ vhost }} dest: "{{ __nginx_conf }}"
notify: reload nginx mode: 0644
owner: root
group: root
notify: Reload nginx
- name: FILE | Delete default site - name: COMMAND | Fix nginx config
file: ansible.builtin.command: "cp {{ __nginx_conf | dirname }}/fastcgi_params {{ __nginx_conf | dirname }}/fastcgi.conf"
path: /etc/nginx/sites-enabled/default args:
state: absent creates: "{{ __nginx_conf | dirname }}/fastcgi.conf"
notify: reload nginx notify: Reload nginx
- name: LINEINFILE | Fix nginx config (second step)
ansible.builtin.lineinfile:
regexp: '^fastcgi_param\s+SCRIPT_FILENAME'
line: "fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;"
dest: "{{ __nginx_conf | dirname }}/fastcgi.conf"
notify: Reload nginx
- name: SERVICE | Ensure nginx is started
ansible.builtin.service:
name: nginx
state: started
when: ansible_virtualization_type != 'docker'
- name: Start nginx if testing with Docker
when: ansible_virtualization_type == 'docker'
block:
- name: COMMAND | Docker nginx status # noqa: command-instead-of-module
ansible.builtin.command: service nginx status
changed_when: false
failed_when: false
register: ngs
- name: COMMAND | Docker start nginx # noqa: command-instead-of-module no-changed-when
ansible.builtin.command: service nginx start
when: ngs.stdout.find('nginx is not running') != -1
handlers: handlers:
- name: reload nginx - name: Reload nginx
service: name=nginx state=reloaded ansible.builtin.service:
name: nginx
state: reloaded
notify: Docker reload nginx
- name: Docker reload nginx # noqa: command-instead-of-module no-changed-when
ansible.builtin.command: service nginx reload
notify: Docker reload nginx
when: ansible_virtualization_type == 'docker'
roles: roles:
- ../../ - ../../
@ -79,31 +107,75 @@
post_tasks: post_tasks:
- name: SHELL | Test php-cli - name: SHELL | Test php-cli
shell: php -i | grep '^PHP Version => {{ php_version }}' | head -n 1 ansible.builtin.shell: set -o pipefail && php -i | grep '^PHP Version => {{ php_version }}' | head -n 1
changed_when: false changed_when: false
register: p register: p
failed_when: p.stdout == '' failed_when: p.stdout == ''
args:
executable: /bin/bash
- name: FILE | Create /var/www - name: FILE | Create /var/www
file: dest=/var/www state=directory ansible.builtin.file:
dest: /var/www
state: directory
owner: root
group: root
mode: 0755
- name: COPY | Add phpinfo - name: COPY | Add phpinfo
copy: dest=/var/www/phpinfo.php content='<?php phpinfo();' ansible.builtin.copy:
dest: /var/www/phpinfo.php
content: '<?php phpinfo();'
owner: root
group: root
mode: 0644
- name: COPY | Add ini test file
ansible.builtin.copy:
dest: /var/www/ini.php
content: '<?php echo ini_get("memory_limit") . "\n";'
owner: root
group: root
mode: 0644
- name: SHELL | Check vhost - name: SHELL | Check vhost
shell: "curl -v -H 'Host: {{ vhost }}' http://127.0.0.1/phpinfo.php 2> /dev/null | grep h1 | grep -o 'PHP Version {{ php_version }}' | sed -r 's/<//g'" ansible.builtin.shell: "set -o pipefail && curl -v -H 'Host: {{ vhost }}' http://127.0.0.1/phpinfo.php 2> /dev/null | grep h1 | grep -o 'PHP Version {{ php_version }}' | sed -r 's/<//g'"
args: args:
warn: false executable: /bin/bash
changed_when: false changed_when: false
register: c register: c
failed_when: c.stdout == '' failed_when: c.stdout == ''
- name: SHELL | Check custom php value # noqa: command-instead-of-module
ansible.builtin.shell: "curl -H 'Host: {{ vhost }}' http://127.0.0.1/ini.php 2> /dev/null"
changed_when: false
register: c
failed_when: 'php_fpm_poold.1.php_admin_value.memory_limit not in c.stdout'
- name: URI | Check ping - name: URI | Check ping
uri: ansible.builtin.uri:
url: "http://localhost{{ php_fpm_poold.0.ping_path }}" url: "http://localhost{{ php_fpm_poold.0.ping_path }}"
when: php_fpm_poold.0.ping_path is defined when: php_fpm_poold.0.ping_path is defined
- name: URI | Check status - name: URI | Check status
uri: ansible.builtin.uri:
url: "http://localhost{{ php_fpm_poold.0.status_path }}" url: "http://localhost{{ php_fpm_poold.0.status_path }}"
when: php_fpm_poold.0.status_path is defined when: php_fpm_poold.0.status_path is defined
- name: Debian extra checks
when: ansible_os_family == 'Debian'
block:
- name: SHELL | Check if we installed multiple PHP versions
ansible.builtin.shell: set -o pipefail && (dpkg -l | grep 'php[[:digit:]].*common' | wc -l)
args:
executable: /bin/bash
failed_when: false
changed_when: false
register: check_multiple_php
- name: FAIL | If we have multiple PHP version
ansible.builtin.fail:
msg: "Multiple PHP versions detected"
when: check_multiple_php.stdout != '1'

View File

@ -1,6 +0,0 @@
php_default_version: '5.6'
php_managed_versions:
- '5.6'
- '7.0'
- '7.1'
- '7.2'

View File

@ -1,5 +0,0 @@
php_default_version: '7.0'
php_managed_versions:
- '7.0'
- '7.1'
- '7.2'

View File

@ -0,0 +1,3 @@
---
php_default_version: '8.2'

View File

@ -0,0 +1,3 @@
---
php_default_version: '7.4'

View File

@ -0,0 +1,3 @@
---
php_default_version: '7.3'

View File

@ -0,0 +1,3 @@
---
php_default_version: '7.2'

View File

@ -0,0 +1,3 @@
---
php_default_version: '7.2'

View File

@ -0,0 +1,24 @@
---
php_packages:
- '{{ php_package_prefix }}cli'
- '{{ php_package_prefix }}curl'
- '{{ php_package_prefix }}gd'
- '{{ php_package_prefix }}mysql'
- '{{ php_package_prefix }}intl'
php_xdebug_package: '{% if multiple_php.rc == 0 %}{{ php_package_prefix }}{% else %}php-{% endif %}xdebug'
php_apcu_package: '{% if multiple_php.rc == 0 %}{{ php_package_prefix }}{% else %}php-{% endif %}apcu'
php_package_prefix: 'php{{ php_version }}-'
php_mods_dir: '/etc/php/{{ php_version }}/mods-available'
php_fpm_pool_dir: '/etc/php/{{ php_version }}/fpm/pool.d'
php_fpm_service: 'php{{ php_version }}-fpm'
php_default_fpm_sock: '/var/run/php/php{{ php_version }}-fpm.sock'
php_cli_ini: '/etc/php/{{ php_version }}/cli/php.ini'
php_fpm_ini: '/etc/php/{{ php_version }}/fpm/php.ini'
php_default_user_group: 'www-data'

View File

@ -0,0 +1,20 @@
---
php_packages:
- '{{ php_package_prefix }}curl'
- '{{ php_package_prefix }}gd'
- '{{ php_package_prefix }}mysqli'
- '{{ php_package_prefix }}intl'
php_package_prefix: 'php{{ php_version | replace(".", "") }}-'
php_mods_dir: '/usr/local/etc/php'
php_fpm_pool_dir: '/usr/local/etc/php-fpm.d'
php_fpm_service: 'php-fpm'
php_default_fpm_sock: '/var/run/php-fpm.sock'
php_cli_ini: '/usr/local/etc/php.ini'
php_fpm_ini: '/usr/local/etc/php.ini'
php_default_user_group: 'www'

View File

@ -0,0 +1,3 @@
---
php_default_version: '7.2'

View File

@ -0,0 +1,3 @@
---
php_default_version: '7.4'

View File

@ -0,0 +1,3 @@
---
php_default_version: '8.1'

View File

@ -0,0 +1,3 @@
---
php_default_version: '7.0'

View File

@ -1,9 +0,0 @@
---
php_packages:
- '{{ php_apt_prefix }}cli'
- '{{ php_apt_prefix }}curl'
- '{{ php_apt_prefix }}gd'
- '{{ php_apt_prefix }}mcrypt'
- '{{ php_mysql_package }}'
- '{{ php_apt_prefix }}intl'

View File

@ -1,8 +0,0 @@
---
php_apt_prefix: 'php5-'
php_etc_dir: '/etc/php5'
php_fpm_service: 'php5-fpm'
php_default_fpm_sock: '/var/run/php5-fpm.sock'
php_mods_dir: '/etc/php5/mods-available'
php_mysql_package: 'php5-mysqlnd'

View File

@ -1,8 +0,0 @@
---
php_apt_prefix: 'php7.0-'
php_etc_dir: '/etc/php/7.0'
php_fpm_service: 'php7.0-fpm'
php_default_fpm_sock: '/var/run/php/php7.0-fpm.sock'
php_mods_dir: '/etc/php/7.0/mods-available'
php_mysql_package: 'php7.0-mysql'

View File

@ -1,8 +0,0 @@
---
php_apt_prefix: 'php7.1-'
php_etc_dir: '/etc/php/7.1'
php_fpm_service: 'php7.1-fpm'
php_default_fpm_sock: '/var/run/php/php7.1-fpm.sock'
php_mods_dir: '/etc/php/7.1/mods-available'
php_mysql_package: 'php7.1-mysql'