In this tutorial, we will show you how to install WordPress on Debian 10. For those of you who didn’t know, WordPress is the most popular open-source blogging and CMS platform worldwide, powering a quarter of all websites on the Internet today. It is based on PHP and MySQL and packs a ton of features that can be extended with free and premium plugins and themes. WordPress is the simplest way to create your website or blog.
This article assumes you have at least basic knowledge of Linux, know how to use the shell, and most importantly, you host your site on your own VPS. The installation is quite simple and assumes you are running in the root account, if not you may need to add ‘sudo
‘ to the commands to get root privileges. I will show you through the step-by-step installation of WordPress free and open-source CMS on a Debian 10 (Buster).
Prerequisites
- A server running one of the following operating systems: Debian 10 (Buster).
- It’s recommended that you use a fresh OS install to prevent any potential issues.
- A
non-root sudo user
or access to theroot user
. We recommend acting as anon-root sudo user
, however, as you can harm your system if you’re not careful when acting as the root.
Install WordPress on Debian 10 Buster
Step 1. Before we install any software, it’s important to make sure your system is up to date by running the following apt
commands in the terminal:
sudo apt update sudo apt upgrade
Step 2. Installing the LAMP stack.
A Debian 10 LAMP server is required. If you do not have LAMP installed, Please read our previous tutorial to install LAMP Server on Debian 10.
Step 3. Installing WordPress on Debian 10
Now we go to WordPress’s download page and download the latest stable version of WordPress, At the moment of writing this article it is version 5.6:
wget https://wordpress.org/latest.zip
Unpack the WordPress archive to the document root directory on your server:
unzip -q latest.zip -d /var/www/html/ cd wordpress cp -a * ..
We will need to change some folder permissions:
chown www-data:www-data -R /var/www/html/
Step 4. Configuring MariaDB for WordPress.
By default, MariaDB is not hardened. You can secure MariaDB using the mysql_secure_installation
script. You should read and below each step carefully which will set the root password, remove anonymous users, disallow remote root login, and remove the test database and access to secure MariaDB:
mysql_secure_installation
Configure it like this:
- Set 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
Next, we will need to log in to the MariaDB console and create a database for WordPress. Run the following command:
mysql -u root -p
This will prompt you for a password, so enter your MariaDB root password and hit Enter. Once you are logged in to your database server, you need to create a database for WordPress installation:
CREATE DATABASE wordpressdb character set utf8 collate utf8_bin; GRANT ALL PRIVILEGES on wordpressdb.* to 'wpuser'@'localhost' identified by 'your-strong-password'; FLUSH PRIVILEGES; exit
Step 5. Configuring WordPress
In this step we will configure the main configuration file of WordPress, where we need to configure its basic parameters so that it can be connected with the database and users:
mv wp-config-sample.php wp-config.php
Now open it using any of your favorite editors, to make any changes in the WordPress configuration file:
nano wp-config.php
Here are the values that we need to update according to our previous database and user’s setup:
// ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define('DB_NAME', 'wordpressdb'); /** MySQL database username */ define('DB_USER', 'wpuser'); /** MySQL database password */ define('DB_PASSWORD', 'your-strong-password'); /** MySQL hostname */ define('DB_HOST', 'localhost');
Step 6. Configuring Apache for WordPress.
Create a new virtual host directive in Apache. For example, create a new Apache configuration file named ‘wordpress.conf
’ on your virtual server:
nano /etc/apache2/sites-available/wordpress.conf
Add the following lines:
<VirtualHost *:80> ServerAdmin admin@your_domain.com DocumentRoot /var/www/html ServerName your-domain.com <Directory /var/www/html/> Options FollowSymlinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/your-domain.com_error.log CustomLog ${APACHE_LOG_DIR}/your-domain.com_access.log combined </VirtualHost>
Now, we can restart the Apache webserver so that the changes take place:
sudo ln -s /etc/apache2/sites-available/wordpress.conf /etc/apache2/sites-enabled/wordpress.conf sudo sudo a2enmod rewrite sudo a2ensite wordpress.conf sudo systemctl restart apache2.service
Step 7. Installing an SSL certificate.
In this step, we will install the SSL (TLS) certificate. We will use a free Let’s Encrypt certificate that will work in all browsers and the CertBot application to install the certificate and keep it updated:
sudo apt install certbot python-certbot-apache
Next, run the certbot
a command that will download the certificate and create the Apache configuration to use the certificate:
sudo certbot --apache
You will then be prompted to enter an email address for the certificate. After you have entered that you must agree to the T&C’s and decide if you want to share your email address with the Electronic Frontier Foundation. This last step is optional. Once successfully, Reload Apache again to load all the new configurations:
sudo systemctl reload apache2
Step 8. Accessing the WordPress Web Interface.
WordPress will be available on HTTP port 80 by default. Open your favorite browser and navigate to https://your-domain.com
or https://server-ip-address/
and complete the required steps to finish the installation. If you are using a firewall, please open ports 80 and 443 to enable access to the control panel.
Congratulations! You have successfully installed WordPress. Thanks for using this tutorial for installing WordPress on Debian 10 Buster system. For additional help or useful information, we recommend you to check the official WordPress website.