WordPress is a free, open-source content management system (CMS) with rich tools and features to make website development easy.
This article explains how to install WordPress on an OpenBSD 7.0 server with Nginx, MySQL, and PHP 7.4.
Prerequisites
- Deploy a new OpenBSD 7.0 Rcs server.
- SSH and Login to the server
- Install Nginx, MySQL, PHP on the server
Install PHP Extensions
WordPress requires some extra PHP extensions to run well. Install them on your OpenBSD server.
# pkg_add php-gd php-intl php-xmlrpc php-mysqli php-pdo_mysqlStart PHP-FPM.
# rcctl start php74_fpmConfigure Nginx
Enable PHP support in the main nginx.conf configuration file if not already enabled by directing all requests to PHP-FPM.
Install nano or your favorite editor.
# pkg_add nanoEdit the file.
# nano /etc/nginx/nginx.confAdd the following lines of code within the server {.....} block.
location ~ \.php$ {
try_files $uri $uri/ =404;
fastcgi_pass unix:run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}Also, add index.php within the http{ block. Your declaration should look similar to the one below.
http {
include mime.types;
default_type application/octet-stream;
index index.html index.htm index.php;Save and close the file.
Restart Nginx.
# rcctl restart nginxCreate a new WordPress database
Run MySQL.
# mysqlCreate the database.
MariaDB [(none)]> CREATE DATABASE wordpress;Create a new database user and assign a strong password.
MariaDB [(none)]> CREATE USER ‘wpuser’@’localhost’ IDENTIFIED BY ‘<strong password>’;Grant the user full rights to the WordPress database.
MariaDB [wordpress]> use wordpress;
MariaDB [wordpress]> GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';Refresh Privileges and exit the console.
MariaDB [wordpress]> FLUSH PRIVILEGES;
MariaDB [wordpress]> EXITInstall and Configure WordPress
By default, Nginx is configured with the webroot directory /var/www/htdocs. This is where we should install all WordPress files.
Download the latest WordPress tarball.
# cd ~
# wget https://wordpress.org/latest.tar.gzExtract the file.
# tar -xvfz latest.tar.gz Move extracted wordpress files to the webroot directory.
# mv wordpress/* /var/www/htdocs/Grant Nginx ownership rights to the /var/www/htdocs directory.
# chown -R www:www /var/www/htdocs/Now, launch the WordPress web installer by visiting your OpenBSD server IP.
http://SERVER_IPPrepare your database information from the main web dashboard and click ‘Let’s Go’.
Enter the Database name created earlier, a Username and associated Password. Then, under Database Host replace localhost with 127.0.0.1 to avoid PHP connection issues.

Next, if you granted Nginx ownership rights to the /var/www/htdocs directory, a wp-config.php file will be automatically created to Install WordPress on your server.
Run the installation and enter your Site Title, Administrator Username, Password, and Email Address to continue.
Finally, log in to your new WordPress CMS to get started with building your websites on the platform.
Secure the Server for Production
First, delete the WordPress installation script to prevent potential attacks on your website.
# rm /var/www/htdocs/wp-admin/install.phpThen, ensure that your server has an active SSL certificate to avoid being blocked by most web browsers that may require strict https access.
To get started, set up a free let’s encrypt SSL certificate by create an acme-client configuration file.
Using your favorite editor, create the file /etc/acme-client.conf.
# nano /etc/acme-client.confPaste the following code and replace example.com with your active domain name.
authority letsencrypt {
api url "https://acme-v02.api.letsencrypt.org/directory"
account key "/etc/acme/letsencrypt-privkey.pem"
}
authority letsencrypt-staging {
api url "https://acme-staging-v02.api.letsencrypt.org/directory"
account key "/etc/acme/letsencrypt-staging-privkey.pem"
}
domain example.com {
alternative names { www.example.com }
domain key "/etc/ssl/private/example.com.key"
domain full chain certificate "/etc/ssl/example.com.crt"
sign with letsencrypt
}Save and close the file.
Now, request an SSL certificate by running the following command.
# acme-client -v example.comFinally, restart Nginx.
# rcctl restart nginxConclusion
We installed WordPress on an OpenBSD 7.0 server in this guide and secured the installation with an SSL certificate. You can further develop modern websites on the CMS with free themes and plugins available on the platform.