Logo

dev-resources.site

for different kinds of informations.

PHP-FPM 7.2 on OpenBSD 6.4

Published at
12/13/2018
Categories
php
phpfpm
httpd
openbsd
Author
nabbisen
Categories
4 categories in total
php
open
phpfpm
open
httpd
open
openbsd
open
Author
8 person written this
nabbisen
open
PHP-FPM 7.2 on OpenBSD 6.4

Summary

PHP-FPM, PHP FastCGI Process Manager, is a part of PHP package in OpenBSD packages nowadays.
So installing PHP (php-7.? due to the version) comes with php7?_fpm automatically šŸ’ƒ
I'll show you how to set it up in this post šŸ˜ƒ

Environment
  • OS: OpenBSD 6.4 amd64
  • PHP: 7.2
āœæ āœæ āœæ

Installation

The first step is to install the PHP package:

# pkg_add php
Ambiguous: choose package for php
a       0: <None>
        1: php-5.6.38p0
        2: php-7.0.32p1
        3: php-7.1.22
        4: php-7.2.10
Your choice: 
Enter fullscreen mode Exit fullscreen mode

I chose "4" because of each support term of the PHP versions.

Then these directories/files were made:

$ ls /etc/php*
/etc/php-7.2.ini          /etc/php-fpm.conf

/etc/php-7.2:
server
/etc/php-7.2.sample:
gd.ini       opcache.ini
Enter fullscreen mode Exit fullscreen mode

Well, the .ini files in /etc/php-7.2.sample are PHP extensions.
According to necessity, copy each of them to /etc/php-7.2/ to activate the extensions:

# ln -sf /etc/php-7.2.sample/%target-ini-files% /etc/php-7.2/
Enter fullscreen mode Exit fullscreen mode

Also edit /etc/php-7.2.ini as needed.
For example:

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
;upload_max_filesize = 2M
upload_max_filesize = 5M
Enter fullscreen mode Exit fullscreen mode

Besides, the manual is also installed as /usr/local/share/doc/pkg-readmes/php-7.2 which declares:

The main OpenBSD php packages include php-fpm, FastCGI Process Manager.
This manages pools of FastCGI processes: starts/restarts them and maintains a minimum and maximum number of spare processes as configured. You can use rcctl(8) to enable php-fpm at boot, and start it at runtime:2

rcctl enable php72_fpm
rcctl start php72_fpm

OK. We're ready.
Let's start daemon:

# rcctl enable php72_fpm
# rcctl start php72_fpm
Enter fullscreen mode Exit fullscreen mode

* Troubleshooting: If you fail to start php72_fpm (or php71_fpm), it might be the known bug.

Usage

Next, we have to prepare a web server.
So let's edit /etc/httpd.conf to add fastcgi socket in SERVERS sections like this:

types {
    include "/usr/share/misc/mime.types"
}

ext_addr="egress"

server "default" {
    listen on $ext_addr port 80

    root "/htdocs"
    directory index index.php

    location "*.php*" {
        fastcgi socket "/run/php-fpm.sock"
    }
}
Enter fullscreen mode Exit fullscreen mode

Note that chroot works in this context.
Therefore, fastcgi socket "/run/php-fpm.sock" in /etc/httpd.conf actually means fastcgi socket "/var/www/run/php-fpm.sock".
This is the same to that root "/htdocs" means "/var/www/htdocs".

Testing

Let's make /var/www/htdocs/index.php for testing like this:

# echo "<?php phpinfo(); ?>" > /var/www/htdocs/index.php
# # delete the file above afterwards as needed
Enter fullscreen mode Exit fullscreen mode

Then browsing your host will show you the whole phpinfo!

āœæ āœæ āœæ

Happy serving šŸ’ƒ

Featured ones: