add vhost template and tasks
This commit is contained in:
145
README.md
145
README.md
@@ -1,12 +1,15 @@
|
||||
# PHP Ansible Role
|
||||
|
||||
This Ansible role installs and configures PHP with support for multiple versions and custom modules for each version.
|
||||
This Ansible role installs and configures PHP with support for multiple versions, custom modules, and PHP-FPM pool configurations.
|
||||
|
||||
## 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
|
||||
- Create and manage PHP-FPM pools with custom configurations
|
||||
- Support for multiple pools across different PHP versions
|
||||
- Automatic log directory creation with proper ownership
|
||||
- Support for PHP-FPM
|
||||
- Automatic repository setup (Sury repository for latest PHP versions)
|
||||
|
||||
@@ -18,7 +21,7 @@ This Ansible role installs and configures PHP with support for multiple versions
|
||||
|
||||
## Role Variables
|
||||
|
||||
### Configuration
|
||||
### PHP Installation Configuration
|
||||
|
||||
```yaml
|
||||
php_versions:
|
||||
@@ -31,13 +34,132 @@ php_versions:
|
||||
- zip
|
||||
- version: "8.4"
|
||||
modules:
|
||||
- -mysql
|
||||
- mysql
|
||||
- gd
|
||||
- xml
|
||||
- mbstring
|
||||
- zip
|
||||
- redis
|
||||
- ip
|
||||
```
|
||||
|
||||
### PHP-FPM Pool Configuration
|
||||
|
||||
```yaml
|
||||
php_pools:
|
||||
- name: "www"
|
||||
user: "www-data"
|
||||
group: "www-data"
|
||||
php_versions:
|
||||
- version: "8.3"
|
||||
- version: "8.4"
|
||||
# Pool management settings
|
||||
pm: "dynamic"
|
||||
pm_start_servers: 5
|
||||
pm_min_spare_servers: 3
|
||||
pm_max_spare_servers: 8
|
||||
pm_max_children: 100
|
||||
pm_max_requests: 200
|
||||
# Timeouts and limits
|
||||
request_slowlog_timeout: "30s"
|
||||
request_terminate_timeout: "60s"
|
||||
rlimit_files: 65536
|
||||
catch_workers_output: "yes"
|
||||
# PHP settings
|
||||
admin_flag_display_errors: "Off"
|
||||
admin_flag_log_errors: "On"
|
||||
admin_value_error_reporting: "E_ALL & ~E_NOTICE"
|
||||
admin_value_memory_limit: "64M"
|
||||
admin_value_upload_max_filesize: "16M"
|
||||
admin_value_post_max_size: "16M"
|
||||
|
||||
# Remove default www pool
|
||||
php_remove_default_pool: false
|
||||
```
|
||||
|
||||
## Example Playbooks
|
||||
|
||||
### Multi-Version Setup with Custom Pools
|
||||
|
||||
```yaml
|
||||
---
|
||||
- hosts: webservers
|
||||
become: yes
|
||||
vars:
|
||||
php_versions:
|
||||
- version: "8.3"
|
||||
modules:
|
||||
- mysql
|
||||
- gd
|
||||
- xml
|
||||
- mbstring
|
||||
- zip
|
||||
- version: "8.4"
|
||||
modules:
|
||||
- mysql
|
||||
- gd
|
||||
- xml
|
||||
- mbstring
|
||||
- zip
|
||||
- redis
|
||||
|
||||
php_pools:
|
||||
- name: "app1"
|
||||
user: "app1"
|
||||
group: "app1"
|
||||
php_versions:
|
||||
- version: "8.3"
|
||||
pm: "static"
|
||||
pm_max_children: 50
|
||||
admin_value_memory_limit: "128M"
|
||||
|
||||
- name: "app2"
|
||||
user: "app2"
|
||||
group: "app2"
|
||||
php_versions:
|
||||
- version: "8.4"
|
||||
pm: "dynamic"
|
||||
pm_max_children: 100
|
||||
admin_value_memory_limit: "256M"
|
||||
|
||||
php_remove_default_pool: true
|
||||
roles:
|
||||
- php
|
||||
```
|
||||
|
||||
### Single Version with Simple Pool
|
||||
|
||||
```yaml
|
||||
---
|
||||
- hosts: webservers
|
||||
become: yes
|
||||
vars:
|
||||
php_versions:
|
||||
- version: "8.4"
|
||||
modules:
|
||||
- mysql
|
||||
- gd
|
||||
|
||||
php_pools:
|
||||
- name: "website"
|
||||
user: "www-data"
|
||||
group: "www-data"
|
||||
php_versions:
|
||||
- version: "8.4"
|
||||
roles:
|
||||
- php
|
||||
```
|
||||
|
||||
## Pool Configuration Details
|
||||
|
||||
Each pool configuration creates:
|
||||
|
||||
- **Socket file**: `/run/php/php{version}-fpm-{pool_name}.sock`
|
||||
- **Log directories**: `/var/log/php/{pool_name}/{version}/`
|
||||
- **Error log**: `/var/log/php/{pool_name}/{version}/php-errors.log`
|
||||
- **Slow log**: `/var/log/php/{pool_name}/{version}/php-slow.log`
|
||||
|
||||
The pool configuration supports all standard PHP-FPM pool directives with sensible defaults.
|
||||
|
||||
## Installed Packages
|
||||
|
||||
For each PHP version, the following base packages are automatically installed:
|
||||
@@ -47,12 +169,21 @@ For each PHP version, the following base packages are automatically installed:
|
||||
|
||||
Additional modules are installed based on the `modules` list for each version.
|
||||
|
||||
## Services
|
||||
|
||||
The role will manage PHP-FPM services for each installed version:
|
||||
- `php8.3-fpm`
|
||||
- `php8.4-fpm`
|
||||
- etc.
|
||||
|
||||
## 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
|
||||
- Each PHP version runs its own FPM service
|
||||
- Module names are simplified (e.g., `mysql` instead of `php8.3-mysql`)
|
||||
- Log directories are automatically created with proper ownership
|
||||
- Pool sockets are created with specific naming: `php{version}-fpm-{pool_name}.sock`
|
||||
- You can create multiple pools for the same PHP version with different configurations
|
||||
|
||||
## License
|
||||
|
||||
|
||||
Reference in New Issue
Block a user