handle multiple PHP versions and their modules
This commit is contained in:
59
README.md
59
README.md
@@ -1,2 +1,59 @@
|
|||||||
# php
|
# PHP Ansible Role
|
||||||
|
|
||||||
|
This Ansible role installs and configures PHP with support for multiple versions and custom modules for each version.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- Install multiple PHP versions simultaneously (e.g., PHP 8.3 and 8.4)
|
||||||
|
- Install single PHP version (just provide one version in the list)
|
||||||
|
- Configure different module lists for each PHP version
|
||||||
|
- Support for PHP-FPM
|
||||||
|
- Automatic repository setup (Sury repository for latest PHP versions)
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- Ubuntu/Debian-based systems
|
||||||
|
- Ansible 2.9+
|
||||||
|
- sudo/root privileges
|
||||||
|
|
||||||
|
## Role Variables
|
||||||
|
|
||||||
|
### Configuration
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
php_versions:
|
||||||
|
- version: "8.3"
|
||||||
|
modules:
|
||||||
|
- mysql
|
||||||
|
- gd
|
||||||
|
- xml
|
||||||
|
- mbstring
|
||||||
|
- zip
|
||||||
|
- version: "8.4"
|
||||||
|
modules:
|
||||||
|
- -mysql
|
||||||
|
- gd
|
||||||
|
- xml
|
||||||
|
- redis
|
||||||
|
- ip
|
||||||
|
```
|
||||||
|
|
||||||
|
## Installed Packages
|
||||||
|
|
||||||
|
For each PHP version, the following base packages are automatically installed:
|
||||||
|
|
||||||
|
- `php{version}-common`
|
||||||
|
- `php{version}-cli`
|
||||||
|
|
||||||
|
Additional modules are installed based on the `modules` list for each version.
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- The role uses the Sury repository to provide the latest PHP versions
|
||||||
|
- Each PHP version runs its own FPM service on different sockets/ports
|
||||||
|
- Module names should include the PHP version prefix (e.g., `php8.3-mysql`)
|
||||||
|
- For single version installations, just provide one entry in the `php_versions` list
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT
|
||||||
@@ -1,3 +1,16 @@
|
|||||||
---
|
---
|
||||||
php_sapi: fpm
|
# php_versions:
|
||||||
php_modules: []
|
# - version: "8.3"
|
||||||
|
# modules:
|
||||||
|
# - php8.3-mysql
|
||||||
|
# - php8.3-gd
|
||||||
|
# - php8.3-xml
|
||||||
|
# - php8.3-mbstring
|
||||||
|
# - php8.3-zip
|
||||||
|
# - version: "8.4"
|
||||||
|
# modules:
|
||||||
|
# - php8.4-mysql
|
||||||
|
# - php8.4-gd
|
||||||
|
# - php8.4-xml
|
||||||
|
# - php8.4-mbstring
|
||||||
|
# - php8.4-zip
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
- name: restart php-fpm
|
- name: restart php-fpm services
|
||||||
systemd_service:
|
systemd_service:
|
||||||
name: php{{ php_version }}-fpm
|
name: php{{ item.version }}-fpm
|
||||||
state: restarted
|
state: restarted
|
||||||
|
loop: "{{ php_versions }}"
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
---
|
---
|
||||||
- name: php | installing php and modules
|
- name: php | installing php common and base modules
|
||||||
apt:
|
apt:
|
||||||
name:
|
name:
|
||||||
- php{{ php_version }}-fpm
|
- php{{ item.version }}-common
|
||||||
- php{{ php_version }}-common
|
- php{{ item.version }}-cli
|
||||||
- php{{ php_version }}-cli
|
|
||||||
- php{{ php_version }}-curl
|
|
||||||
- php{{ php_version }}-opcache
|
|
||||||
state: present
|
state: present
|
||||||
|
loop: "{{ php_versions }}"
|
||||||
notify:
|
notify:
|
||||||
- restart php-fpm
|
- restart php-fpm services
|
||||||
|
|
||||||
- name: php | install extra modules
|
- name: php | install extra modules
|
||||||
apt:
|
apt:
|
||||||
name: '{{ php_modules | list }}'
|
name: "{{ item.modules | map('regex_replace', '^(.*)$', 'php' + item.version + '-\\1') | list }}"
|
||||||
state: present
|
state: present
|
||||||
force: yes
|
force: yes
|
||||||
|
loop: "{{ php_versions }}"
|
||||||
|
when: item.modules is defined and item.modules | length > 0
|
||||||
notify:
|
notify:
|
||||||
- restart php-fpm
|
- restart php-fpm services
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
---
|
---
|
||||||
- name: php | apt update cache
|
- name: php | apt update cache
|
||||||
apt:
|
ansible.builtin.apt:
|
||||||
update_cache: yes
|
update_cache: yes
|
||||||
cache_valid_time: 86400
|
cache_valid_time: 86400
|
||||||
|
|
||||||
- name: php | install requirements
|
- name: php | install requirements
|
||||||
apt:
|
ansible.builtin.apt:
|
||||||
name:
|
name:
|
||||||
- apt-transport-https
|
- apt-transport-https
|
||||||
- lsb-release
|
- lsb-release
|
||||||
@@ -14,13 +14,13 @@
|
|||||||
state: present
|
state: present
|
||||||
|
|
||||||
- name: php | add sury key
|
- name: php | add sury key
|
||||||
apt_key:
|
ansible.builtin.apt_key:
|
||||||
url: https://packages.sury.org/php/apt.gpg
|
url: https://packages.sury.org/php/apt.gpg
|
||||||
keyring: /etc/apt/trusted.gpg.d/php.gpg
|
keyring: /etc/apt/trusted.gpg.d/php.gpg
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
- name: php | add sury repository
|
- name: php | add sury repository
|
||||||
apt_repository:
|
ansible.builtin.apt_repository:
|
||||||
repo: deb https://packages.sury.org/php/ {{ ansible_distribution_release }} main
|
repo: deb https://packages.sury.org/php/ {{ ansible_distribution_release }} main
|
||||||
state: present
|
state: present
|
||||||
filename: php-sury
|
filename: php-sury
|
||||||
|
|||||||
Reference in New Issue
Block a user