How to Install TYPO3 on CentOS 7

By | October 29, 2016


TYPO3 is a powerful open source content management system. It manages workflows, has support for multiple languages, and it is expandable with plug-ins that make more functions possible.

TYPO3 is widely used in Europe, especially in Germany and Denmark. It is written in PHP and uses the common LAMP stack (Linux, Apache, MySQL/MariaDB, PHP).

One disadvantage of TYPO3 is that it has a relatively steep learning curve. To help with this, TYPO3 supplies you with specific distributions, which create a basic system.

In this tutorial, we will install TYPO3’s current LTS Version with the Official Introduction Package. This is a small, responsive website that helps you find your way into the TYPO3 world.

Note: Although this tutorial references MySQL as a database, TYPO3 also works well with MariaDB.


  • CentOS server
  • Root access

For this tutorial a ProfitBricks CentOS 7 64bit image has been used.

If you are familiar with the command line and have a CentOS server ready, it will take approx. 20 minutes to complete this tutorial.

Install the necessary packages

First, we will ensure that your server is up-to-date and install the necessary TYPO3 programs. Afterwards, you will need to start the database and web server and ensure that these will automatically start every time you start your computer.

yum check-update 
yum -y update
yum -y install httpd php mysql-server php-mysql php-pdo php-soap php-gd
systemctl start mysql httpd
systemctl enable mysql httpd

Set the root MySQL password

Assign a password for the root user, who then has the administrator rights for the database server. After this password has been assigned, empty the terminal. We will disable the Bash history for the next steps.

set +o history
mysqladmin password 'your_db_admin_password'

Store the MySQL password in a configuration file

To avoid having to constantly enter your password, you can store it within the directory via a file named .my.cnf.

echo [client] >/root/.my.cnf
echo password = 'your_db_admin_password' >>.my.cnf
chmod 400 /root/.my.cnf

Note: If you prefer, you can skip this step and use the -p switch whenever using MySQL at the command line instead.

Create the database and the user

Now create a database and a database user with full access in MySQL. Enter these commands directly into the shell.

mysql -e "CREATE DATABASE typo3test;"
mysql -e "CREATE USER 'jdoe'@'localhost' IDENTIFIED BY 'jdoe_password';"
mysql -e "GRANT ALL PRIVILEGES ON typo3test . * TO 'jdoe'@'localhost';"
# Enable the Bash history again
set -o history

Prepare the web server

Next, create a backup of the web server configuration.

cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.orig

Then allow the use of .htaccess files. To do this, edit the httpd.conf file and set AllowOverride to None.

<Directory "/var/www/html">
. . .
AllowOverride None
. . .

Adjust some PHP variables for TYPO3

To ensure that TYPO3 works well, some standard PHP values will need to be adjusted.

  • max_execution_time should be set to 240 (seconds).
  • upload_max_filesize should be increased to at least 10Mb.
  • post_max_size should be increased to at least 10Mb.

Then restart the web server in order to ensure that the new settings take effect.

cp /etc/php.ini /etc/php.ini.orig
sed -i 's/max_execution_time = 30/max_execution_time = 240/' /etc/php.ini
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 10M/' /etc/php.ini
sed -i 's/post_max_size = 8M/post_max_size = 10M/' /etc/php.ini
apachectl restart

Download and unpack the TYPO3 source code

You can download the current TYPO3 LTS version via Sourceforge. There is a zip file and a .tar.gz file. I will assume that the .tar.gz file will be downloaded.

cd /opt/

Once the download is complete, extract the package and change the owner.

tar -zxvf typo3_src-6.2.15.tar.gz 
chown -R apache:apache typo3_src*

Prepare the TYPO3 directory structure

Switch to the directory where the web files are located and set the TYPO3 basic structure.

cd /var/www/html/
ln -s /opt/typo3_current typo3_src
ln -s typo3_src/typo3 typo3
ln -s typo3_src/index.php index.php
chown -R apache:apache /var/www/html/
chmod -R 775 /var/www/html/

Now all preparations are completed for a CentOS system.

Install TYPO3

The installation takes place via a web-based installer. Access the server as follows:


If you have problems connecting to the server please check if the firewall service is running:

ps -ef |grep firewalld

If the firewall is running you will need to turn it off:

systemctl stop firewalld

Screenshot of installing TYPO3 on CentOS 7. Step one: System environment check

In step one of the installer, TYPO3 will now evaluate and determine that the system is prepared for TYPO3.

Important: If you get an error that the directory is not writable you may have to disable SELinux and reboot.

sed  -i 's/enforcing/disabled/' /etc/selinux/config 
init 6

Screenshot of installing TYPO3 on CentOS 7. Step two: Establishing a database connection

Step two: Enter your designated MySQL username and password.

Screenshot of installing TYPO3 on CentOS 7. Step three: Select a database

Step three: Select the chosen database.

Screenshot of installing TYPO3 on CentOS 7. Step four: Enter the TYPO3 username and password

Step four: Enter/set the name and the password of the TYPO3 administrator. Be sure to change the default admin username to something different.

Screenshot of installing TYPO3 on CentOS 7. Step five: Download the distributions

Step five: Enable the option to download the distributions.

Installing TYPO3 on CentOS 7: Login screen

Now the system is ready and you can log in to the TYPO3 backend.

Installing TYPO3 on CentOS 7: Install the official introduction package

Choose to install The official Introduction Package.

Installation Complete

Installation finished.

Installing TYPO3 on CentOS 7: Screenshot of installation complete

Congratulations – Done!

The frontend is accessible under http://your_server_ip/.

The backend is accessible under http://your_server_ip/typo3/.

Note: For added security, you may want to either password protect the backend, allow only a certain range of IP addresses to access that directory, or both.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.