TYPO3 is a free and open-source Enterprise-grade content management system. It provides multiple enterprise-level features such as scalable CMS with multisite support, multilingual installations, strong security implementation, blazingly fast, and can be run anywhere.

Using TYPO3 CMS allows you to build flexible and reliable websites. The TYPO3 CMS is backend a vibrant professional community. And by design, the TYPO3 CMS is a pluggable content management system with adaptable and decoupled architecture.

In this guide, you will install TYPO3 CMS – Enterprise-grade Content Management System – on Rocky Linux 9 server. You will set TYPO3 CMS with the httpd web server, MariaDB database, and the latest version of PHP 8.0. This guide includes the implementation of HTTPS via Certbot and Letsencrypt, which will be used to secure TYPE3 deployment.

Prerequisites

First, you must have the following requirements to complete this guide:

  • Once Rocky Linux 9 server – This example uses a Rocky Linux with the hostname ‘TYPO3-Rock’.
  • A non-root user with sudo/root privileges.
  • An SELinux running on permissive mode.
  • A domain name pointed to a server IP address – This example uses the domain ‘hwdomain.io‘.

That’s it. When all requirements are ready, you can now start the installation.

Installing httpd Web Server

TYPO3 is an enterprise-grade CMS (Content Management System) and web application written in PHP. It can be run with various types of the web server. In this example, you will install and run TYPE3 CMS with the httpd web server.

Before installing any package, enter the following dnf command to add the EPEL (Extra Package for Enterprise Linux) repository to your system. This repository will be needed later for installing additional packages.

sudo dnf install epel-release

Now run the following dnf command to install the httpd web server. When prompted, input y to confirm and press ENTER to proceed.

sudo dnf install httpd

<img alt="install httpd" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/1-install-httpd.png64770a8bb1c8d.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="342" loading="lazy" src="data:image/svg xml,” width=”750″>

Once httpd installed, enter the following systemctl command utility to start and enable the httpd web server. This will run the httpd web server and enable it to start automatically at system startup.

sudo systemctl start httpd

sudo systemctl enable httpd

Verify the httpd web server status using the systemctl command below. You should receive an output such as ‘enabled‘, which confirms that the httpd service will be run automatically at boot. And the status of the httpd web server is running.

sudo systemctl is-enabled httpd

sudo systemctl status httpd

<img alt="verify httpd" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/2-verify-httpd.png64770a8bc86e9.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="237" loading="lazy" src="data:image/svg xml,” width=”750″>

Before accessing your httpd installation, you must open the HTTP and HTTPS protocols on your Rocky Linux system via firewalld.

Enter the following firewall-cmd command to add both HTTP and HTTPS ports to the firewalld. Then, reload the firewalld to apply the changes.

sudo firewall-cmd --add-service={http,https} --permanent

sudo firewall-cmd --reload

The output ‘success‘ confirms the operation’s success. You can now verify the list of firewalld rules via the following command.

sudo firewall-cmd --list-all

In the ‘services’ section, you should see both HTTP and HTTPS protocols added to the firewalld.

<img alt="setup firewalld" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/3-setup-firewalld.png64770a8bec0f5.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="296" loading="lazy" src="data:image/svg xml,” width=”730″>

Now that you have installed the httpd web server and configured firewalld. Next, you will start the MariaDB database server installation.

Installing MariaDB Server

In this section, you will install the MariaDB database server and secure the deployment automatically using the ‘mariadb-secure-installation’ command.

To start, enter the following dnf command to install the MariaDB database server.

sudo dnf install mariadb-server

Input y when prompted and press ENTER to proceed.

<img alt="install mariadb" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/4-install-mysql.png64770a8c18eab.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="452" loading="lazy" src="data:image/svg xml,” width=”750″>

Now start and enable the MariaDB service using the following systemctl command utility. The MariaDB service should now be running and also enabled, which means the MariaDB service will start automatically upon the bootup.

sudo systemctl start mariadb

sudo systemctl enable mariadb

Enter the following systemctl command to verify the MariaDB service and ensure that the service is running and enabled.

sudo systemctl is-enabled mariadb

sudo systemctl status mariadb

An output ‘enabled‘ confirms that the MariaDB server is enabled and will be run automatically upon the system startup. The output ‘active (running)‘ confirms that the MariaDB server is running.

<img alt="start verify mariadb" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/5-verify-mariadb.png64770a8c5ac58.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="257" loading="lazy" src="data:image/svg xml,” width=”750″>

Lastly, run the following ‘mariadb-secure-installation’ command to secure the MariaDB deployment.

sudo mariadb-secure-installation

You will now be asked with the following configurations – You can input y to confirm or n for no.

  • Change authentication to unix_socket? input n.
  • Change the MariaDB root password? input y to confirm, input the new password for your MariaDB server and repeat the password.
  • Disable remote root login? input y to confirm – the root user should not be allowed to connect remotely.
  • Remove anonymous user? input y to confirm.
  • Remove the default database ‘test’? input y to confirm and remove the test database.
  • Lastly, input y to reload tables privileges and apply new changes.

When MariaDB deployment is finished, you’re ready to create a new database and user for TYPO3 CMS deployment.

Creating MariaDB Database and User

In this section, you will create a new MariaDB database and user that will be used for the TYPO3 CMS installation.

First, log in to the MariaDB shell via the ‘mariadb‘ command below. Input your MariaDB root password and press ENTER.

sudo mariadb -u root -p

Now run the following MariaDB queries to create a new database and user. In this example, you will create a new database ‘typo3db‘ with the user ‘typo3‘. Be sure to change the password in the following queries, and be sure to use the ‘utf8mb4‘ as the default character set for your database.

CREATE DATABASE typo3db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

GRANT ALL PRIVILEGES ON typo3db.* to [email protected] IDENTIFIED BY 'typo3password';

FLUSH PRIVILEGES;

<img alt="create databae and user" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/6-create-database-user.png64770a8c911ca.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="158" loading="lazy" src="data:image/svg xml,” width=”750″>

Next, verify the list of available users on MariaDB using the following query. You should see the new user ‘typo3‘ added and available on your MariaDB server.

SELECT USER,host FROM mysql.user;

<img alt="verify user" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/7-show-users.png64770a8ca4f28.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="242" loading="lazy" src="data:image/svg xml,” width=”524″>

Lastly, verify the privileges for the MariaDB user ‘typo3‘ using the following query. You should see the user ‘typo3‘ has all privileges to the database ‘typo3db‘.

SHOW GRANTS FOR [email protected];

<img alt="show user grants" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/8-show-user-grants.png64770a8ce2501.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="201" loading="lazy" src="data:image/svg xml,” width=”750″>

Now type quit to log out from the MariaDB shell.

With this, you have now finished the MariaDB database configuration for the TYPO3 CMS installation. Move to the next step to start PHP installation.

Installing PHP 8.0

TYPO3 CMS is mainly written in PHP, and at the time of this writing, the latest version of TYPO3 CMS supports PHP 8.x packages. In this section, you will install PHP 8.0, which is available by default on the Rocky Linux 9 repository.

Enter the following dnf command to install PHP 8.0 packages. When prompted, input y to confirm and press ENTER to proceed.

sudo dnf install php php-common php-mysqlnd php-gd php-curl php-json php-intl php-bcmath php-zip php-apcu php-mbstring php-fileinfo php-xml php-soap

<img alt="install php" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/9-install-php.png64770a8d10a39.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="570" loading="lazy" src="data:image/svg xml,” width=”750″>

Once PHP is installed, open the config file ‘/etc/php.ini’ using the following nano editor command.

sudo nano /etc/php.ini

Change the default php.ini configurations with the following lines.

memory_limit = 512M

max_execution_time = 300

max_input_vars = 2000

date.timezone = Europe/Stockholm

post_max_size = 30M

upload_max_filesize = 30M

Save and exit the file ‘/etc/php.ini’ when finished.

Now run the following systemctl command utility to restart the httpd service and apply the new changes that you have made to the ‘php.ini’ file.

sudo systemctl restart httpd

You can also verify the current PHP version via the ‘php’ command below. You should receive an output that PHP 8.0 is installed on your system.

php --version

<img alt="verify php" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/10-verify-php.png64770a8d3cce2.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="262" loading="lazy" src="data:image/svg xml,” width=”651″>

Now you’ve installed PHP 8.0 packages and configured the php.ini file. In the next step, you will install Composer – dependencies manager for PHP – that will be used for installing PHP dependencies of TYPO3 CMS.

Installing Composer

Composer is an application-level PHP dependencies manager. It can be installed manually via the official installer script, or you can install it via the EPEL repository.

Enter the following dnf command to install Composer from the EPEL repository. When prompted, input y to confirm and press ENTER to proceed.

sudo dnf install composer

<img alt="install composer" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/11-install-composer.png64770a8d69a56.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="199" loading="lazy" src="data:image/svg xml,” width=”750″>

Once Composer is installed, enter the following command to verify the Composer version.

sudo -u apache composer -V

The output below confirms that Composer v2.5.1 is installed on your Rocky Linux system.

<img alt="verify composer" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/12-verify-composer.png64770a8d9b789.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="272" loading="lazy" src="data:image/svg xml,” width=”531″>

With the Composer installed, next to the next step is to install Certbot which will be used for generating SSL/TLS certificates from Letsencrypt.

Installing Certbot

Certbot is a command-line tool for generating SSL/TLS certificates from Letsencrypt. For RHEL-based distributions, you can install Certbot from the EPEL repository.

Enter the following dnf command to install the ‘certbot‘ and ‘python3-certbot-apache’ packages to your system. Input y when prompted and press ENTER to proceed.

sudo dnf install certbot python3-certbot-apache

<img alt="install certbot" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/13-install-certbot.png64770a8dd1358.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="500" loading="lazy" src="data:image/svg xml,” width=”750″>

Once installation is finished, run the following command to verify your installation.

which certbot

certbot --version

The binary path of the ‘certbot‘ command is available at ‘/bin/certbot‘. And the version of certbot that you’ve installed is v2.1.0.

<img alt="verify certbot" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/14-verify-certbot.png64770a8deb2f7.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="142" loading="lazy" src="data:image/svg xml,” width=”447″>

With the composer and certbot installed, you’re ready to install TYPO3 CMS.

Downloading TYPO3 CMS Source Code

In this section, you will set up the target installation directory and TYPO3 CMS source code download.

Enter the following command to create a new directory ‘/var/www/typo3‘. This will be used as the root installation directory of TYPO3 CMS.

mkdir -p /var/www/typo3

Change the ownership of the ‘/var/www/typo3′ directory to the user and group ‘apache‘. Also, you must ensure that the owner of this directory can read and write into it. With this, you will give access to the TYPO3 CMS source code to the httpd web server that runs by default with an ‘apache‘ user.

sudo chown -R apache:apache /var/www/typo3

sudo chmod u rw /var/www/typo3

Now go to the ‘/var/www/typo3‘ directory and download the TYPO3 CMS source code using the following composer command.

cd /var/www/typo3

sudo -u apache composer create-project typo3/cms-base-distribution:^11 .

Output:

<img alt="download source code" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/15-download-type3-source-code.png64770a8e1e3b7.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="567" loading="lazy" src="data:image/svg xml,” width=”750″>

Once the TYPO3 CMS source code is downloaded, enter the following command to verify the list of files and directories on the ‘/var/www/typo3′ directory.

ls -lah /var/www/typo3

The output below confirms that the TYPO3 CMS source code is downloaded. Also, you must ensure the ownership of TYPO3 CMS source code is the user and group ‘apache‘.

<img alt="verify source code" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/16-verify-typo3-source-code.png64770a8e58ea9.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="357" loading="lazy" src="data:image/svg xml,” width=”612″>

Now that you’ve downloaded the TYPO3 CMS source code, you will next create and set up the httpd virtual host configuration that will be used to run TYPO3 CMS.

Setup httpd Virtual Host

In this section, you will create a new httpd virtual host configuration that will be used to run TYPO3 CMS. You’ll also generate SSL/TLS certificates from Letsencrypt via the Certbot command.

Before you start, ensure that you have the domain name pointed to your server IP address and an email address that will be used to register to Letsencrypt.

Create a new httpd virtual host config file ‘/etc/httpd/conf.d/typo3.conf’ using the following nano editor command.

sudo nano /etc/httpd/conf.d/typo3.conf

Add the following lines to the file and be sure to change the domain name of the TYPO3 CMS installation.



    ServerAdmin [email protected]

    DocumentRoot /var/www/typo3/public

    ServerName hwdomain.io

    Protocols h2 http/1.1

    

          Options FollowSymlinks

          AllowOverride All

          Require all granted

    

     ErrorLog /var/log/httpd/typo3-error.log

     CustomLog /var/log/httpd/typo3-access.log combined

    

    

            RewriteEngine on

            RewriteBase /

            RewriteCond %{REQUEST_FILENAME} !-f

            RewriteRule ^(.*) index.php [PT,L]

   

Save and exit the file ‘/etc/httpd/conf.d/typo3.conf’ when finished.

Next, run the following command to verify and ensure that you have proper httpd configurations. When successful, you should receive an output such as ‘syntax OK‘.

sudo apachectl configtest

Now enter the following systemctl command utility to restart the httpd service and apply the changes.

sudo systemctl restart httpd

With this, you have now finished the httpd virtual host configuration for TYPO3 CMS.

Now enter the following certbot command to generate SSL/TLS certificates for your TYPO3 CMS domain name. Also, be sure t change the domain name and email address in the following command.

sudo certbot --apache --agree-tos --no-eff-email  --redirect --hsts --staple-ocsp --email [email protected] -d hwdomain.io

When finished, your SSL/TLS certificates will be available in the ‘/etc/letsencrypt/live/yourdomain.com/‘ directory. Also, your httpd virtual host configuration will automatically be configured with SSL certificates and the auto-redirect of HTTP to HTTPS.

With this, you have now finished the configuration of the httpd web server for TYPO3 CMS. You have also generated SSL/TLS certificates for your TYPO3 CMS domain name. You can now access your TYPO3 CMS installation.

Start TYPO3 Installation

Before you begin the TYPO3 CMS installation, you must create a new blank file ‘FIRST_INSTALL‘ in the ‘/var/www/typo3/public/’ directory. This will point out that you are installing the TYPO3 CMS first time on this server.

Enter the following command to create a new file ‘FIRST_INSTALL‘ within the ‘/var/www/typo3/public/’ directory.

sudo -u apache touch /var/www/typo3/public/FIRST_INSTALL

Now open up your web browser and input the domain name of your TYPO3 CMS installation (i.e: https://hwdomain.io/).

The TYPO3 CMS installer will check and verify your system environment on the first page. Ensure that you get the button ‘No problems detected, continue with installation‘, which confirms that your system is ready for TYPO3 CMS installation.

<img alt="installation start" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/18-install-start.png64770a8e80bcd.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="424" loading="lazy" src="data:image/svg xml,” width=”750″>

Now input your details of the MariaDB user that will be used for TYPO3 CMS installation.

<img alt="setupd atabase" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/19-setup-db.png64770a8ea89f7.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="686" loading="lazy" src="data:image/svg xml,” width=”741″>

Select the option ‘Use an existing empty database‘ and select the database ‘typo3db‘ in the dropdown menu. Then click Continue.

<img alt="select database" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/20-select-database.png64770a8ed8a81.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="530" loading="lazy" src="data:image/svg xml,” width=”700″>

Now input the username, email address, and password for the TYPO3 CMS admin user. Be sure to use a strong password for this.

Click Continue to proceed.

<img alt="setup admin" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/21-setup-admin.png64770a8f3f267.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="750" loading="lazy" src="data:image/svg xml,” width=”645″>

When finished, you should receive an output such as ‘Installation Complete‘.

Now select the option ‘Take me straight to the backend‘ and click the button ‘Open the TYPO3 Backend‘ to continue.

<img alt="installation finished" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/22-install-finished.png64770a8f59686.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="522" loading="lazy" src="data:image/svg xml,” width=”698″>

And you will be redirected to the TYPO3 CMS login page. Input your admin user and password, then click Login.

<img alt="login page typo3 cms" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/23-loginpage-typo3.png64770a8f7f742.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="522" loading="lazy" src="data:image/svg xml,” width=”539″>

If successful, you should see the TYPO3 CMS administration dashboard.

<img alt="dashboard typo3 cms" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/24-dashboard.png64770a8f9ce55.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="516" loading="lazy" src="data:image/svg xml,” width=”750″>

You can verify the details software that you’re using for TYPO3 CMS installation by clicking the ‘Application Information’ menu on the left side of the user profile.

You should see similar details in the following screenshot – At the time of this writing, you have installed TYPO3 CMS v11.5 with httpd/Apache web servers, PHP 8.0, and the MariaDB database server.

<img alt="verify status installation" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/05/echo/25-verify-status-installation.png64770a8fca8eb.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="495" loading="lazy" src="data:image/svg xml,” width=”517″>

Conclusion

In this guide, you have installed an enterprise-grade content management system TYPO3 CMS on a Rocky Linux 9 server. You have installed TYPO3 CMS with the httpd web server, MariaDB database server, and PHP 8.0.

In addition to that, you have also installed Certbot for generating SSL certificates from Letsencrypt. And also secured TYPO3 CMS installation via SSL/TLS certificates and configured auto-redirect from HTTP to HTTPS via Certbot.

With this, you can start your TYPO3 CMS configuration by creating a site record, adding backend users, and adding backend language to enable multi-language. To learn more about TYPO3 CMS, visit TYPO3’s official documentation.