However, I passed a small amount of time with 5.6 and 7.3 from source loading 
together.
In both cases I was using init.d scritps, that I can pass you.

Take it AS-IS, I do not want to recommend BSD subsystems or show off something
that is not part of my baggage. Indeed, for any system suggestion there is a 
big truppen here,
not certenly myself.


Jul 10, 2023 13:57:15 Daniele B. <my2...@has.im>:

> Problem arising in reading you is at its origins, in plain italian "a 
> monte".. ;)
> 
> - PHP 8 is enough retrocompatible with any version you mention, and should 
> take in a
>   certain amount of benefits in performance gain and bug fixing;
> - PHP-FPM should be enough configurable and versatile to support huge amount 
> of requests;
> - multi webservers could be nice to have probably for some sorts of load 
> balancing only,
>   (having a reversed proxy is something often questionable);
> - multi webservers are surely a huge angle hole in your "resource room".
> 
> I do not know, are you maybe building your machine for testing purpose?
> 
> -- Daniele Bonini
> 
> Jul 10, 2023 13:01:10 Mike Fischer <fischer+o...@lavielle.com>:
> 
>> Hi!
>> 
>> I’m trying to figure out the best way to maintain multiple php-fpm setups at 
>> the same time and ran into a somewhat annoying issue.
>> 
>> I’m not sure how many other users might have a similar situation? If this 
>> something too non-standard, let me know and I’ll shut up ;-)
>> 
>> 
>> Background
>> ==========
>> 
>> The server supports multiple versions of PHP for websites using php-fpm. 
>> There are also multiple web servers running at the same time (on different 
>> IP/port combinations obviously). Specifically OpenBSD httpd and Apache httpd 
>> from ports.
>> 
>> OpenBSD httpd runs in its normal chroot(2) environment. Apache httpd does 
>> not use chroot(2). This requires corresponding setups for php-fpm as well. 
>> Using e.g. a non-chroot(2) php-fpm with OpenBSD httpd does not work.
>> 
>> Each php-fpm variant uses its own socket. So changing the PHP version for a 
>> web server (or even for just certain paths on that server) is as easy as 
>> pointing to the correct socket for the FastCGI mechanism of the web server.
>> 
>> 
>> Setup
>> =====
>> 
>> All available PHP Versions are supported and configured. I.e. 7.4, 8.0, 8.1 
>> and 8.2 for OpenBSD 7.3.
>> 
>> I have adjusted /etc/php-7.4.ini, /etc/php-8.0.ini, etc. as required
>> 
>> I have created and modified /etc/php-fpm-7.4cr.conf, 
>> /etc/php-fpm-7.4ncr.conf, /etc/php-fpm-8.0cr.conf, /etc/php-fpm-8.0ncr.conf, 
>> etc. The default /etc/php-fpm.conf is not actively used.
>> 
>> I have copied the /etc/rc.d/phpXX_fpm files and modified them to:
>> - use the appropriate /etc/php-fpm.conf (/etc/php-fpm-7.4cr.conf, 
>> /etc/php-fpm-7.4ncr.conf, /etc/php-fpm-8.0cr.conf, /etc/php-fpm-8.0ncr.conf, 
>> etc.)
>> - use the appropriate /etc/php.ini (/etc/php-7.4.ini, /etc/php-8.0.ini, 
>> /etc/php-8.1.ini and /etc/php-8.2.ini)
>> - adjust the pexp to match the php-fpm.conf in addition to "php-fpm-7.4: 
>> master process", e.g. "php-fpm-7.4: master process 
>> .*/etc/php-fpm-7.4cr.conf.*", etc.
>> 
>> Thus I have:
>> /etc/rc.d/php74cr_fpm
>> /etc/rc.d/php74ncr_fpm
>> /etc/rc.d/php80cr_fpm
>> /etc/rc.d/php80ncr_fpm
>> /etc/rc.d/php81cr_fpm
>> /etc/rc.d/php81ncr_fpm
>> /etc/rc.d/php82cr_fpm
>> /etc/rc.d/php82ncr_fpm
>> 
>> And all of these have been enabled using `rcctl enable php74cr_fpm 
>> php74ncr_fpm php80cr_fpm php80ncr_fpm php81cr_fpm php81ncr_fpm php82cr_fpm 
>> php82ncr_fpm` and of course started using `rcctl start …`.
>> 
>> For example:
>> # cat /etc/rc.d/php82cr_fpm
>> #!/bin/ksh
>> 
>> daemon="/usr/local/sbin/php-fpm-8.2"
>> daemon_flags="-c /etc/php-8.2-cr.ini -y /etc/php-fpm-82cr.conf"
>> 
>> . /etc/rc.d/rc.subr
>> 
>> pexp="php-fpm-8.2: master process .*/etc/php-fpm-82cr.conf.*"
>> rc_reload=NO
>> 
>> rc_cmd $1
>> #
>> 
>> 
>> (Note: I know this could be further reduced to just one master process for 
>> each version with a chroot(2) and a non-chroot(2) pool defined in the single 
>> php-fpm.conf for each PHP version. But that is irrelevant to the issue at 
>> hand.)
>> 
>> 
>> Issue
>> =====
>> 
>> `rcctl ls started` lists php74_fpm, php80_fpm, php81_fpm and php82_fpm as 
>> started even though they are neither enabled nor started!
>> 
>> The reason this happens is the pexp which is too general. E.g. for php74_fpm 
>> it is pexp="php-fpm-7.4: master process .*"
>> 
>> Modifying this to e.g. pexp="php-fpm-7.4: master process 
>> .*/etc/php-fpm.conf.*" solves the problem.
>> 
>> BUT: /etc/rc.d/php74_fpm will be overwritten when the php-7.4 port ist 
>> updated. (Same for the other versions of course.) So my change is lost and 
>> has to be reapplied. If I forget about this then at a later time I’ll become 
>> confused by the output of `rcctl ls started`.
>> 
>> 
>> Questions
>> =========
>> 
>> 1) Is there a better, update-proof way to solve this problem?
>> 
>> 2) Would it make sense to include the more specific pexp in the PHP ports? 
>> (I don’t think doing so would hurt the default use case, but maybe I’m 
>> overlooking something?)
>> 
>> 
>> OpenBSD 7.3, amd64
>> 
>> 
>> Thanks!
>> Mike

Reply via email to