Knowledgebase

How to Install Nginx, PHP-FPM, and MySQL on OpenBSD 7 Print

  • 0

OpenBSD 7, Nginx, PHP-FPM (FastCGI Process Manager), and MySQL (OEMP) work as a collection to form a web stack that makes it possible to run dynamic applications on a server. Nginx runs as the web server, FastCGI process manager (PHP-FPM) adds dynamic processing for PHP scripts, and MySQL works as the database server.

In this article, you will install Nginx, PHP with PHP-FPM, and MariaDB as the drop-in replacement MySQL on OpenBSD 7.

Prerequisites

Deploy a Rcs OpenBSD 7 server and SSH to the server as root. Then, update the server.

# pkg_add -u

1. Install Nginx

By default, Nginx is available in the openBSD7 repository packages. Install it with the following command:

# pkg_add nginx

Enable Nginx to start at boot time.

# rcctl enable nginx

Start the Nginx web server.

# rcctl start nginx

2. Install PHP

Install PHP.

# pkg_add php

Select your preferred version based on applications you intend to run. For system-wide compatibility, install PHP 7.4 (option 2).

Ambiguous: choose package for php
    0: <None>
    1: php-7.3.33
    2: php-7.4.26
    3: php-8.0.13

PHP-FPM is automatically installed with the PHP package. Next, you have to start it up and allow it to run when the server starts.

Enable PHP-FPM to run at boot time.

# rcctl enable php74_fpm

Start PHP-FPM.

# rcctl start php74_fpm 

Install the necessary modules for PHP to connect to the MySQL server.

# pkg_add php-mysqli php-pdo_mysql

Output:

Ambiguous: choose package for php-mysqli
    0: <None>
    1: php-mysqli-7.3.33
    2: php-mysqli-7.4.26
    3: php-mysqli-8.0.13
Your choice: 2

You can also install other PHP modules commonly required by most web applications.

# pkg_add php-gd php-intl php-xmlrpc

Enable PHP modules.

# cp /etc/php-7.4.sample/* /etc/php-7.4

3. Configure Nginx for PHP-FPM

Install Nano or your favorite text editor.

# rcctl pkg_add nano

Edit the main Nginx configuration file.

# nano /etc/nginx/nginx.conf

Within the server { block, add the following lines of code for Nginx to pass all PHP processing to the PHP-FPM socket.

location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass   unix:run/php-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
    }

Save and close the file.

Test the Nginx configuration.

# nginx -t

Output:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Edit the main PHP-FPM configuration file.

# nano /etc/php-fpm.conf

Confirm that PHP-FPM connects through the socket /var/www/run/php-fpm.sock, and also runs with the user, group www.

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = www
group = www

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
;                            a specific port;
;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses
;                            (IPv6 and IPv4-mapped) on a specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
; If using a TCP port, never expose this to a public network.
listen = /var/www/run/php-fpm.sock

4. Install MariaDB

Install the MariaDB service.

# pkg_add mariadb-server

Initialize the database server to create necessary binaries and system tables.

 # mysql_install_db

Start the MySQL daemon.

# rcctl start mysqld

Secure MySQL by setting a new root password and removing insecure defaults.

# mysql_secure_installation 

You will receive multiple prompts, accept decisively to tighten your database server security.

Switch to unix_socket authentication [Y/n] 

Change the root password? [Y/n] 

Remove anonymous users? [Y/n] 

Disallow root login remotely? [Y/n] 

Remove test database and access to it? [Y/n] 

Reload privilege tables now? [Y/n] 

Enable MySQL to start at boot time.

# rcctl enable mysqld

5. Test the Installation

By default, Nginx uses the /var/www/htdocs directory as webroot. Create a new PHP sample file in that directory to test the web server.

# nano /var/www/htdocs/test.php

Paste the following PHP code:

<?php

phpinfo();

?>

Enter your server's public IP address in a web browser and load the test.php file. Your output should be similar to:

PHP Output

Congratulations, you have successfully installed Nginx, MySQL, and PHP-FPM on your OpenBSD 7 server.

OpenBSD 7, Nginx, PHP-FPM (FastCGI Process Manager), and MySQL (OEMP) work as a collection to form a web stack that makes it possible to run dynamic applications on a server. Nginx runs as the web server, FastCGI process manager (PHP-FPM) adds dynamic processing for PHP scripts, and MySQL works as the database server. In this article, you will install Nginx, PHP with PHP-FPM, and MariaDB as the drop-in replacement MySQL on OpenBSD 7. Prerequisites Deploy a Rcs OpenBSD 7 server and SSH to the server as root. Then, update the server. # pkg_add -u 1. Install Nginx By default, Nginx is available in the openBSD7 repository packages. Install it with the following command: # pkg_add nginx Enable Nginx to start at boot time. # rcctl enable nginx Start the Nginx web server. # rcctl start nginx 2. Install PHP Install PHP. # pkg_add php Select your preferred version based on applications you intend to run. For system-wide compatibility, install PHP 7.4 (option 2). Ambiguous: choose package for php 0: 1: php-7.3.33 2: php-7.4.26 3: php-8.0.13 PHP-FPM is automatically installed with the PHP package. Next, you have to start it up and allow it to run when the server starts. Enable PHP-FPM to run at boot time. # rcctl enable php74_fpm Start PHP-FPM. # rcctl start php74_fpm Install the necessary modules for PHP to connect to the MySQL server. # pkg_add php-mysqli php-pdo_mysql Output: Ambiguous: choose package for php-mysqli 0: 1: php-mysqli-7.3.33 2: php-mysqli-7.4.26 3: php-mysqli-8.0.13 Your choice: 2 You can also install other PHP modules commonly required by most web applications. # pkg_add php-gd php-intl php-xmlrpc Enable PHP modules. # cp /etc/php-7.4.sample/* /etc/php-7.4 3. Configure Nginx for PHP-FPM Install Nano or your favorite text editor. # rcctl pkg_add nano Edit the main Nginx configuration file. # nano /etc/nginx/nginx.conf Within the server { block, add the following lines of code for Nginx to pass all PHP processing to the PHP-FPM socket. location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } Save and close the file. Test the Nginx configuration. # nginx -t Output: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful Edit the main PHP-FPM configuration file. # nano /etc/php-fpm.conf Confirm that PHP-FPM connects through the socket /var/www/run/php-fpm.sock, and also runs with the user, group www. ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. user = www group = www ; The address on which to accept FastCGI requests. ; Valid syntaxes are: ; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on ; a specific port; ; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on ; a specific port; ; 'port' - to listen on a TCP socket to all addresses ; (IPv6 and IPv4-mapped) on a specific port; ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. ; If using a TCP port, never expose this to a public network. listen = /var/www/run/php-fpm.sock 4. Install MariaDB Install the MariaDB service. # pkg_add mariadb-server Initialize the database server to create necessary binaries and system tables. # mysql_install_db Start the MySQL daemon. # rcctl start mysqld Secure MySQL by setting a new root password and removing insecure defaults. # mysql_secure_installation You will receive multiple prompts, accept decisively to tighten your database server security. Switch to unix_socket authentication [Y/n] Change the root password? [Y/n] Remove anonymous users? [Y/n] Disallow root login remotely? [Y/n] Remove test database and access to it? [Y/n] Reload privilege tables now? [Y/n] Enable MySQL to start at boot time. # rcctl enable mysqld 5. Test the Installation By default, Nginx uses the /var/www/htdocs directory as webroot. Create a new PHP sample file in that directory to test the web server. # nano /var/www/htdocs/test.php Paste the following PHP code: Enter your server's public IP address in a web browser and load the test.php file. Your output should be similar to: Congratulations, you have successfully installed Nginx, MySQL, and PHP-FPM on your OpenBSD 7 server.

Was this answer helpful?
Back

Powered by WHMCompleteSolution