Skip to content

Commit

Permalink
Add example of how to configure php for el9 based systems (#811)
Browse files Browse the repository at this point in the history
* Add example of how to configure php for el9 based systems
Drop centos stream 8, ubuntu 18.04 and Debian 10

Signed-off-by: Mike van Goor <[email protected]>

* php on el9 requires different inspec tests and fix opensuse

Signed-off-by: Mike van Goor <[email protected]>

---------

Signed-off-by: Mike van Goor <[email protected]>
  • Loading branch information
mvangoor authored Aug 2, 2024
1 parent e05c008 commit 5c2dd91
Show file tree
Hide file tree
Showing 12 changed files with 121 additions and 73 deletions.
20 changes: 4 additions & 16 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,45 +26,33 @@ jobs:
- almalinux-8
- almalinux-9
- amazonlinux-2023
- centos-stream-8
- centos-stream-9
- debian-10
- debian-11
- debian-12
- fedora-latest
- opensuse-leap-15
- oraclelinux-8
- oraclelinux-9
- rockylinux-8
- rockylinux-9
- ubuntu-1804
- ubuntu-2004
- ubuntu-2204
suite:
- basic-site
- default
- mod-auth-cas
- mod-php
- php
- module-template
- mod-wsgi
- ports
- ssl
- install-override
exclude:
# TODO: disabled due to https://github.com/chef/chef/pull/13691
- os: amazonlinux-2023
suite: mod-wsgi
# TODO: disabled due to https://github.com/chef/chef/pull/13691
- os: opensuse-leap-15
suite: mod-wsgi
# mod_php is considered old. PHP-FPM is the new hotness.
- os: amazonlinux-2023
suite: mod-php
- os: almalinux-9
suite: mod-php
- os: centos-stream-9
suite: mod-php
- os: fedora-latest
suite: mod-php
- os: rockylinux-9
suite: mod-php
steps:
- name: Check out code
uses: actions/checkout@v4
Expand Down
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ This file is used to list changes made in each version of the apache2 cookbook.

## Unreleased

- Add example of how to configure php fpm pool config for rhel9 and derivatives

## 9.3.3 - *2024-07-15*

Standardise files with files in sous-chefs/repo-management
Expand Down
10 changes: 5 additions & 5 deletions documentation/resource_apache2_mod.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ This will use a template resource to write the module's configuration file in th

## Properties

| Name | Type | Default | Description |
| ------------ | ------ | --------------------------- | ---------------------------------------------------------------------- |
| `template` | String | | Name of the template |
| `root_group` | String | `node['root_group']` | Set to override the platforms default root group for the template file |
| `template_cookbook` | String | `apache2` | Cookbook containing the template file
| Name | Type | Default | Description |
| ------------------- | ------ | --------------------------- | ---------------------------------------------------------------------- |
| `template` | String | | Name of the template |
| `root_group` | String | `node['root_group']` | Set to override the platforms default root group for the template file |
| `template_cookbook` | String | `apache2` | Cookbook containing the template file |

## Examples

Expand Down
16 changes: 5 additions & 11 deletions kitchen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,18 @@ platforms:
- name: almalinux-8
- name: almalinux-9
- name: amazonlinux-2023
- name: centos-stream-8
- name: centos-stream-9
- name: debian-10
- name: debian-11
- name: debian-12
- name: fedora-latest
- name: opensuse-leap-15
- name: oraclelinux-8
- name: oraclelinux-9
- name: rockylinux-8
- name: rockylinux-9
- name: ubuntu-18.04
- name: ubuntu-20.04
- name: ubuntu-22.04
- name: ubuntu-24.04

suites:
- name: default
Expand All @@ -47,16 +48,9 @@ suites:
- name: module_template
run_list:
- recipe[test::module_template]
- name: mod_php
- name: php
run_list:
- recipe[test::php]
excludes:
- almalinux-9
- amazonlinux-2023
- centos-stream-9
- fedora-latest
- oraclelinux-9
- rockylinux-9
- name: mod_wsgi
run_list:
- recipe[test::wsgi]
Expand Down
4 changes: 2 additions & 2 deletions spec/resources/mod_php_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@

it do
is_expected.to enable_apache2_module('php').with(
identifier: 'php7_module',
mod_name: 'libphp7.4.so'
identifier: 'php_module',
mod_name: 'libphp8.1.so'
)
end
end
Expand Down
1 change: 1 addition & 0 deletions test/cookbooks/test/metadata.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@
depends 'apache2'
depends 'apt'
# depends 'yum-ius'
depends 'php'
30 changes: 28 additions & 2 deletions test/cookbooks/test/recipes/php.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,34 @@
notifies :restart, 'apache2_service[default]'
end

apache2_mod_php '' do
notifies :reload, 'apache2_service[default]'
if apache_mod_php_supported?
apache2_mod_php '' do
notifies :reload, 'apache2_service[default]'
end
else
apache2_module 'proxy' do
notifies :reload, 'apache2_service[default]'
end
apache2_module 'proxy_fcgi' do
notifies :reload, 'apache2_service[default]'
end
apache2_mod_proxy 'proxy' do
notifies :reload, 'apache2_service[default]'
end
php_fpm_pool 'nagios' do
user default_apache_user
group default_apache_group
listen_user default_apache_user
listen_group default_apache_group
notifies :install, 'apache2_install[default]'
end
apache2_conf 'custom_php_pool' do
template_cookbook 'test'
options(
apache_php_handler: "proxy:unix:#{php_fpm_socket}|fcgi://localhost"
)
notifies :reload, 'apache2_service[default]'
end
end

file "#{default_docroot_dir}/info.php" do
Expand Down
3 changes: 3 additions & 0 deletions test/cookbooks/test/templates/custom_php_pool.conf.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<FilesMatch ".+\.ph(p[345]?|t|tml)$">
SetHandler "<%= @apache_php_handler %>"
</FilesMatch>
2 changes: 1 addition & 1 deletion test/integration/mod_auth_cas/controls/default.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

httpd_command =
case os.family
when 'fedora', 'amazon'
when 'fedora', 'amazon', 'suse'
'httpd -M'
when 'redhat'
os.release.to_i >= 9 ? 'httpd -M' : 'apachectl -M'
Expand Down
35 changes: 0 additions & 35 deletions test/integration/mod_php/controls/default.rb

This file was deleted.

69 changes: 69 additions & 0 deletions test/integration/php/controls/default.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
include_controls 'apache2-default' do
skip_control 'welcome-page'
end

httpd_command =
case os.family
when 'fedora', 'amazon', 'suse'
'httpd -M'
when 'redhat'
os.release.to_i >= 9 ? 'httpd -M' : 'apachectl -M'
else
'apachectl -M'
end

control 'PHP module enabled & running' do
impact 1
desc 'php module should be enabled with config'

if (os['family'] == 'redhat' && os['release'].to_i >= 9) || os['family'] == 'fedora'
describe command httpd_command do
its('stdout') { should match(/proxy_fcgi/) }
end
else
describe command httpd_command do
its('stdout') { should match(/php/) }
end
end

case os['family']
when 'debian', 'suse'
describe file('/etc/apache2/mods-available/php.conf') do
it { should exist }
its('content') { should match %r{SetHandler application/x-httpd-php} }
end
when 'freebsd'
describe file('/usr/local/etc/apache24/mods-available/php.conf') do
it { should exist }
its('content') { should match %r{SetHandler application/x-httpd-php} }
end
when 'redhat', 'fedora'
if os['release'].to_i >= 9
describe service('php-fpm') do
it { should be_installed }
it { should be_enabled }
it { should be_running }
end

describe file('/etc/httpd/conf-available/custom_php_pool.conf') do
it { should exist }
its('content') { should match %r{proxy:unix:/var/run/php.*-fpm.sock|fcgi://localhost} }
end
else
describe file('/etc/httpd/mods-available/php.conf') do
it { should exist }
its('content') { should match %r{SetHandler application/x-httpd-php} }
end
end
else
describe file('/etc/httpd/mods-available/php.conf') do
it { should exist }
its('content') { should match %r{SetHandler application/x-httpd-php} }
end
end

describe http('localhost/info.php') do
its('status') { should eq 200 }
its('body') { should match /PHP Version/ }
end
end
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
name: apache2-mod-php
name: apache2-php
title: Integration tests for apache2 cookbook
summary: This InSpec profile contains integration tests for apache2 cookbook
supports:
Expand Down

0 comments on commit 5c2dd91

Please sign in to comment.