Translations of this page:
  • en

Installing Core Dependencies

This step installs essential utilities needed for subsequent installations.

sudo apt update && sudo apt upgrade -y
sudo apt install zip unzip software-properties-common wget curl ca-certificates -y

PHP Installation (Specified: PHP 8.4)

The Ondrej Sury PPA is used for installing and managing PHP versions. We will target PHP 8.4 as specified. You can check the available versions and their support status on the official PPA page: ondrej/php PPA

Adding Repository

The PPA must be added to your system's sources list.

sudo add-apt-repository ppa:ondrej/php -y
sudo apt update

Installing PHP and Required Modules

DokuWiki requires specific PHP modules (extensions). The following command installs PHP 8.4 alongside the necessary modules for DokuWiki's functionality (e.g., image manipulation, multi-byte string handling, XML parsing, and internationalization).

sudo apt install -y php8.4 php8.4-fpm php8.4-cli php8.4-gd php8.4-mbstring php8.4-xml php8.4-zip php8.4-intl php8.4-pdo php8.4-mysql

Note: We include php-fpm for use with high-performance web servers like Nginx or Apache via mod_fcgid or mod_proxy_fcgi. If you encounter issues, ensure `php8.4` is available in the PPA at the time of installation, as this version may be a development or future release.

MariaDB Server Installation

MariaDB is the recommended drop-in replacement for MySQL.

Installation

sudo apt install mariadb-server -y
sudo systemctl start mariadb
sudo systemctl enable mariadb

Initial Security Setup

Then, secure the installation by running the following script. Execute all steps carefully.

sudo mysql_secure_installation

* 1- Enter current password for root (enter for none):

  • Action: Press ENTER (the root MariaDB user has no password by default after installation).

* 2- Switch to unix_socket authentication [Y/n]:

  • Action: Type n. We will set a password instead.

* 3- Change the root password? [Y/n]:

  • Action: Type Y and set a strong password.
  • RESPONSE:
    1. New password: SET A STRONG PASS
    2. Re-enter new password: RE-ENTER PASS

* 4- Remove anonymous users? [Y/n]:

  • Action: Type Y. Anonymous users are a security risk.

* 5- Disallow root login remotely? [Y/n]:

  • Action: Type Y. Highly Recommended for security unless absolutely required.

* 6 - Remove test database and access to it? [Y/n]:

  • Action: Type Y.

* 7 - Reload privilege tables now? [Y/n]:

  • Action: Type Y. This applies the changes immediately.

MariaDB Service Status

When installed from the default repositories, MariaDB will start running automatically. To test the MariaDB's status, you can run the following command:

sudo systemctl status mariadb

You should see a similar output as following one:

● mariadb.service - MariaDB 10.11.13 database server
     Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; preset: enabled)
     Active: active (running) since Mon 2025-12-08 09:24:15 CET; 33min ago
       Docs: man:mariadbd(8)
             https://mariadb.com/kb/en/library/systemd/
   Main PID: 13685 (mariadbd)
     Status: "Taking your SQL requests now..."
      Tasks: 11 (limit: 244840)
     Memory: 78.8M (peak: 85.0M)
        CPU: 640ms
     CGroup: /system.slice/mariadb.service
             └─13685 /usr/sbin/mariadbd

Testing MariaDB

mysql -u root -pTypeThePasswordThatYouSet

If the installation successfully happened, you should see the following message:

user@domain:~$ mysql -u root -pTypeThePasswordThatYouSet
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 38
Server version: 10.11.13-MariaDB-0ubuntu0.24.04.1 Ubuntu 24.04
 
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]>

You can just type the following command for exit the MySQL console:

MariaDB [(none)]> EXIT;

If MariaDB is not running, you can start the service by following command:

sudo systemctl start mariadb

and also enable the service by:

sudo systemctl enable mariadb

For and additional check, you can run the following command:

sudo mysqladmin version

You should receive a response like:

mysqladmin  Ver 10.0 Distrib 10.11.13-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 
Server version          10.11.13-MariaDB-0ubuntu0.24.04.1
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /run/mysqld/mysqld.sock
Uptime:                 38 min 36 sec
 
Threads: 1  Questions: 74  Slow queries: 0  Opens: 33  Open tables: 26  Queries per second avg: 0.031

Composer Installation

Composer has an awesome description and installation guide on its webpage. You can use the following link: https://getcomposer.org/download/ and see the section that “Command-line installation”. I am just referencing the same code here:

It is better to go your home directory first:

cd ~
1. Download the terminal script
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
2. Check the hash file
php -r "if (hash_file('sha384', 'composer-setup.php') === 'c8b085408188070d5f52bcfe4ecfbee5f727afa458b2573b8eaaf77b3419b0bf2768dc67c86944da1544f06fa544fd47') { echo 'Installer verified'.PHP_EOL; } else { echo 'Installer corrupt'.PHP_EOL; unlink('composer-setup.php'); exit(1); }"

It should return the following message: Installer verified

3. Run the Script
php composer-setup.php

It should return the following message:

All settings correct for using Composer
Downloading...
 
Composer (version 2.9.2) successfully installed to: /home/USER/composer.phar
Use it: php composer.phar
php -r "unlink('composer-setup.php');"
5. Add it to the PATH

Then you can add the composer into your PATH to access the composer with just running `composer` command from any directory:

sudo mv composer.phar /usr/local/bin/composer
6. Test the Installation
composer --version

You need to see something similar like:

Composer version 2.9.2 2025-11-19 21:57:25
PHP version 8.4.15 (/usr/bin/php8.4)
Run the "diagnose" command to get more detailed diagnostics output.
Edit this page
Back to top