How to install WordPress

This Tutorial was written on Ubuntu 20.04.

Install

  • Login as root
  • Update and upgrade
apt-get update
apt-get dist-upgrade

Install Apache

  • Install, start and enable Apache2
apt-get install apache2
systemctl enable --now apache2
  • Install requirenments and dependencies
apt-get install gnupg2 ca-certificates apt-transport-https software-properties-common

Install PHP

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
wget -qO - https://packages.sury.org/php/apt.gpg | apt-key add -
  • Update and install
apt-get update -y
apt-get install php libapache2-mod-php php-pear php-cgi php-common php-mbstring php-zip php-net-socket php-gd php-xml-util php-gettext php-mysql php-bcmath unzip wget git

Install MariaDB

  • Install, start and enable mariadb
apt-get install mariadb-server mariadb-client
systemctl enable --now mariadb
  • Now do the installation wizard:
mysql_secure_installation

Configure

Create WordPress Database

  • Login to the mysql shell
mysql -u root -p
  • Create database and user. Replace strongpassword with a random password, you are going to need it later.
CREATE DATABASE wordpressdb;
GRANT ALL PRIVILEGES ON wordpressdb.* to wordpressuser@localhost identified by 'strongpassword';
  • Flush privileges and exit
FLUSH PRIVILEGES;
QUIT;

Download WordPress

  • Go to the Webserver Root directory
cd /var/www/html
  • Download and unzip the latest WordPress release
wget https://wordpress.org/latest.zip
unzip latest.zip

Setup Site config

  • Move the WordPress folder to a folder named like your domain (optional)
mv wordpress yourdomain.com
  • Copy sample config
cd yourdomain.com
cp wp-config-sample.php wp-config.php
  • Edit config
nano wp-config.php
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpressdb' );

/** MySQL database username */
define( 'DB_USER', 'wordpressuser' );

/** MySQL database password */
define( 'DB_PASSWORD', 'strongpassword' );

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

define('FS_METHOD', 'direct');
  • Change owner of wordpress content to www-data
chown -R www-data:www-data /var/www/html/yourdomain.com

Apache Virtual Host

  • Create and edit site config (change yourdomain.conf every time)
nano /etc/apache2/sites-available/yourdomain.conf
<VirtualHost *:80>
ServerAdmin user@yourdomain.com
        ServerName yourdomain.com
        DocumentRoot /var/www/html/yourdomain.com

        <Directory "https://yourdomain.com/var/www/html/yourdomain.com">
             AllowOverride All
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/yourdomain.error.log
        CustomLog ${APACHE_LOG_DIR}/yourdomain.access.log combined
</VirtualHost>
  • Enable this config
a2ensite yourdomain
a2enmod rewrite
systemctl restart apache2

Install via WebGUI

  • Now you can access the WordPress instance via the local IP Adress and do the initial setup.
  • Then setup port-forwarding and open it up to the internet

Secure

Enable HTTPS with certbot

  • Install Certbot
apt-get install certbot python3-certbot-apache -y
  • Download and activate cert (Replace yourdomain.com)
certbot --apache --agree-tos --redirect --hsts --uir --staple-ocsp --email user@yourdomain.com -d yourdomain.com,www.yourdomain.com

Automatic Cert renewal

  • Open crontab
crontab -e
  • Add the following line at the bottom
@daily certbot renew --quiet &amp;&amp; systemctl reload apache2

Update

  • [ ] ToDo: ToDo
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
Scroll to Top