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 Apache
Install Apache web server.
1 | pkg install apache24 |
Enable apache24 service.
1 | sysrc apache24_enable="YES" |
Run the apache24 service.
1 | service apache24 start |
Browse http://serverIP to test if the Apache web server is running properly.
Configure VirtualHost
Next, configure the virtual host for the domain musaamin.my.id.
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 virtual host configuration files.
1 | mkdir /usr/local/etc/apache24/vhosts |
Create a folder for Apache logs.
1 | mkdir /var/log/apache |
Create a virtual host configuration file.
1 | nano /usr/local/etc/apache24/vhosts/musaamin.my.id.conf |
Fill in the virtual hosts configuration file.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <VirtualHost *:80> DocumentRoot /var/www/musaamin.my.id ServerName musaamin.my.id ServerAlias www.musaamin.my.id ErrorLog /var/log/apache/musaamin.my.id_error.log CustomLog /var/log/apache/musaamin.my.id_access.log common <Directory /var/www/musaamin.my.id> Order allow,deny Allow from all Require all granted AllowOverride All </Directory> </VirtualHost> |
Open the Apache configuration file.
1 | nano /usr/local/etc/apache24/httpd.conf |
Enable the ServerName option and enter the server IP address.
1 | ServerName 207.148.123.152 |
Add include vhosts at the bottom of the line.
1 | Include etc/apache24/vhosts/*.conf |
Check for configuration errors.
1 | apachectl -t |
If there is no mistake.
1 | Syntax OK |
Restart the Apache service.
1 | service apache24 restart |
Browse http://musaamin.my.id.
Install PHP
Install PHP 7.4 and its extensions.
1 | pkg install php74 mod_php74 php74-mysqli php74-mbstring php74-pecl-mcrypt php74-zlib php74-curl php74-opcache php74-xml php74-xmlrpc php74-gd php74-json php74-zip |
Create a configuration file to connect Apache with PHP.
1 | nano /usr/local/etc/apache24/Includes/php.conf |
Fill in the php.conf file.
1 2 3 4 5 6 7 8 9 | <IfModule dir_module> DirectoryIndex index.php index.html <FilesMatch "\.php$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source </FilesMatch> </IfModule> |
https://www.youtube.com/watch?v=qZkNDpylDoE
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 |
Restart the Apache service.
1 | service apache24 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
Open the Apache configuration file.
1 | nano /usr/local/etc/apache24/httpd.conf |
Enable SSL module and rewrite.
1 2 | LoadModule ssl_module libexec/apache24/mod_ssl.so LoadModule rewrite_module libexec/apache24/mod_rewrite.so |
Restart the Apache service.
1 | service apache24 restart |
Install certbot Let’s Encrypt.
1 | pkg install py37-certbot-apache |
Request SSL for the musaamin.my.id domain.
1 | certbot --apache -d musaamin.my.id -d www.musaamin.my.id |
If successful, certbot changes the virtual host configuration file musaamin.my.id.conf.
1 | nano /usr/local/etc/apache24/vhosts/musaamin.my.id.conf |
The contents of the virtual hosts file.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <VirtualHost *:80> DocumentRoot /var/www/musaamin.my.id ServerName musaamin.my.id ServerAlias www.musaamin.my.id ErrorLog /var/log/apache/musaamin.my.id_error.log CustomLog /var/log/apache/musaamin.my.id_access.log common <Directory /var/www/musaamin.my.id> Order allow,deny Allow from all Require all granted AllowOverride All </Directory> RewriteEngine on RewriteCond %{SERVER_NAME} =musaamin.my.id [OR] RewriteCond %{SERVER_NAME} =www.musaamin.my.id RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost> |
Certbot also creates new file.
1 | nano /usr/local/etc/apache24/vhosts/musaamin.my.id-le-ssl.conf |
The contents of the virtual hosts file.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <IfModule mod_ssl.c> <VirtualHost *:443> DocumentRoot /var/www/musaamin.my.id ServerName musaamin.my.id ServerAlias www.musaamin.my.id ErrorLog /var/log/apache/musaamin.my.id_error.log CustomLog /var/log/apache/musaamin.my.id_access.log common <Directory /var/www/musaamin.my.id> Order allow,deny Allow from all Require all granted AllowOverride All </Directory> Include /usr/local/etc/letsencrypt/options-ssl-apache.conf SSLCertificateFile /usr/local/etc/letsencrypt/live/musaamin.my.id/fullchain.pem SSLCertificateKeyFile /usr/local/etc/letsencrypt/live/musaamin.my.id/privkey.pem </VirtualHost> </IfModule> |
Browse https://musaamin.my.id.
Install MariaDB
Install MariaDB database.
1 | pkg install mariadb105-server mariadb105-client |
Activate 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 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 enjoy what I do, please support me on Ko-fi! https://ko-fi.com/musaamin