How to install WordPress with Nginx on FreeBSD
In this FreeBSD tutorial, we will learn how to install WordPress using an Apache web server with SSL from Let’s Encrypt for HTTPS.
Free credit $100 for new account at Vultr. Register now
Install Nginx
Install Nginx web server.
1 | pkg install nginx |
Enable the nginx service.
1 | sysrc nginx_enable="YES" |
Run the nginx service.
1 | service nginx start |
Browse http://serverIP to check if the Nginx web server is running properly.
Configure Server Block
Next, configure the Nginx server block for the musaamin.my.id domain.
Create a folder for the document root.
1 2 | mkdir -p /var/www/musaamin.my.id echo "hello world" > /var/www/musaamin.my.id/index.html |
Create a folder to store block server configuration files.
1 | mkdir -p /usr/local/etc/nginx/vhosts |
Create a server block configuration file.
1 | nano /usr/local/etc/nginx/vhosts/musaamin.my.id.conf |
Fill in the server block configuration file.
1 2 3 4 5 6 7 8 9 10 11 12 13 | server { listen 80; server_name musaamin.my.id www.musaamin.my.id; root /var/www/musaamin.my.id; index index.html; location / { try_files $uri $uri/ =404; } access_log /var/log/nginx/musaamin.my.id_access.log; error_log /var/log/nginx/musaamin.my.id_error.log; } |
Open the Nginx configuration file.
1 | nano /usr/local/etc/nginx/nginx.conf |
Add the configuration below before closing http.
1 2 3 4 | http { ... include /usr/local/etc/nginx/vhosts/*.conf; } |
Check for configuration errors.
1 | nginx -t |
If there is no mistake.
1 2 | nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful |
Restart the nginx service.
1 | service nginx restart |
Browse http://musaamin.my.id.
Install PHP
Install PHP 7.4 and its extensions.
1 | pkg install php74 php74-mysqli php74-mbstring php74-pecl-mcrypt php74-zlib php74-curl php74-opcache php74-xml php74-xmlrpc php74-gd php74-json php74-zip |
Open the PHP-FPM configuration file.
1 | nano /usr/local/etc/php-fpm.d/www.conf |
Activate and adjust the following configurations.
1 2 3 4 | listen = /var/run/php74.sock listen.owner = www listen.group = www listen.mode = 0660 |
Create a php.ini file
1 2 | cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini-production.default ln -s /usr/local/etc/php.ini-production /usr/local/etc/php.ini |
Open the php.ini file.
1 | nano /usr/local/etc/php.ini |
Options activated and changed.
1 | cgi.fix_pathinfo=0 |
Enable and run the php-fpm service.
1 2 | sysrc php_fpm_enable="YES" service php-fpm start |
Configure the server block to read PHP scripts.
1 | nano /usr/local/etc/nginx/vhosts/musaamin.my.id.conf |
Change the configuration to be like below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | server { listen 80; server_name musaamin.my.id www.musaamin.my.id; root /var/www/musaamin.my.id; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { try_files $fastcgi_script_name =404; include fastcgi_params; fastcgi_pass unix:/var/run/php74.sock; fastcgi_index index.php; fastcgi_param DOCUMENT_ROOT $realpath_root; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; } access_log /var/log/nginx/musaamin.my.id_access.log; error_log /var/log/nginx/musaamin.my.id_error.log; } |
Nginx configuration test.
1 | nginx -t |
Restart the nginx service
1 | service nginx restart |
Create the info.php file.
1 | echo "<?php phpinfo(); ?>" > /var/www/musaamin.my.id/info.php |
Browse http://musaamin.my.id/info.php
Install SSL Let’s Encrypt
Install Let’s Encrypt certbot for Nginx.
1 | pkg install py37-certbot-nginx |
Request SSL for the musaamin.my.id domain.
1 | certbot --nginx -d musaamin.my.id -d www.musaamin.my.id |
If successful, certbot changes the server block configuration file.
1 | nano /usr/local/etc/nginx/vhosts/musaamin.my.id.conf |
Isinya.
1 2 3 4 5 6 7 | ... listen 443 ssl; # managed by Certbot ssl_certificate /usr/local/etc/letsencrypt/live/musaamin.my.id/fullchain.pem; # managed by Certbot ssl_certificate_key /usr/local/etc/letsencrypt/live/musaamin.my.id/privkey.pem; # managed by Certbot include /usr/local/etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /usr/local/etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot ... |
Browse https://musaamin.my.id.
Install MariaDB
Install MariaDB database.
1 | pkg install mariadb105-server mariadb105-client |
Enable and run the MariaDB service.
1 2 | sysrc mysql_enable="YES" service mysql-server start |
Secure MariaDB installation.
1 | mysql_secure_installation |
Answer the question.
1 2 3 4 5 6 7 | Enter current password for root (enter for none): ENTER Switch to unix_socket authentication [Y/n] y Change the root password? [Y/n] y Remove anonymous users? [Y/n] y Disallow root login remotely? [Y/n] y Remove test database and access to it? [Y/n] y Reload privilege tables now? [Y/n] y |
Login to MariaDB.
1 | mysql |
Create a database for WordPress.
1 2 3 4 5 | CREATE DATABASE musaamin; CREATE USER 'musaamin'@localhost IDENTIFIED BY 'rahasia'; GRANT ALL PRIVILEGES ON musaamin.* TO 'musaamin'@'localhost'; FLUSH PRIVILEGES; exit |
Install WordPress
Download the latest WordPress.
1 | wget https://wordpress.org/latest.tar.gz -O wordpress.tar.gz |
Extract wordpress.tar.gz
1 | tar xzvf wordpress.tar.gz |
Copy the contents of the wordpress folder to the document root.
1 | cp -Rfv wordpress/* /var/www/musaamin.my.id |
Change ownership.
1 | chown -R www:www /var/www/musaamin.my.id |
Delete the index.html and info.php files created earlier.
1 2 | rm -f /var/www/musaamin.my.id/info.php rm -f /var/www/musaamin.my.id/index.html |
Browse https://musaamin.my.id to install WordPress.
- Continue
- Let’s go!
- Enter the database name, username, and password that was created in MariaDB. For Database Host = 127.0.0.1. Submit
- Run the installation
- Enter the site title, username, password and email. Install WordPress.
WordPress has finished installing.
Browse https://musaamin.my.id and login to the dashboard.
If you found this article helpful and would like to support my work, consider making a donation through PayPal. Your support helps me continue creating useful content and tutorials. Thank you!
Donate via PayPal: https://paypal.me/musaamin