Install PIMCore on Ubuntu 20.04

Updated on February 14, 2022
Install PIMCore on Ubuntu 20.04 header image

Introduction

PIMCore is a free and open-source Enterprise Content Management System based on PHP. It has simple and flexible user and administrator interfaces for ease of use. Some important features of the platform are:

  • Data management capabilities to distribute large amounts of data for multi-channel publishing and solve data challenges such as data quality management.
  • Personalized digital experience management to deliver content to any output channel and device.
  • Web content management to manage multi-site, multi-lingual, and mobile-friendly content.
  • Multi-channel delivery to automate publishing processes across devices and channels for consistency and accuracy.
  • Personalization & analytics to deliver a positive brand experience and build customer loyalty.
  • Print publishing (Web2Print) for creating product catalogs, price sheets, and personalized marketing.

Some products of the PIMCore platform are:

  • Product Information Management (PIM). Manage, and distribute product data.
  • Master Data Management (MDM). Offer the right data on the right channel.
  • Digital Asset Management (DAM). Manage, merge, share and transform digital media assets.
  • Customer Data Platform (CDP). Watch your customer activities for personalized marketing.
  • Digital Experience Platform (DXP). Manage personalized, headless digital experiences on any channel.

This article guides you on how to install PIMCore on Ubuntu 20.04 server.

Prerequisites

Perform the following steps first:

Server Requirements

  • Apache >= 2.4
  • PHP >= 8.0
  • MySQL >= 8.0 or MariaDB >= 10.3

Step 1. Install Required Packages

Update system package list to update all packages to the latest available versions.

$ sudo apt update

The latest versions of PIMCore only support PHP version 8.0. Ubuntu 20.04 does not contain PHP 8.0 in its default repository list. To install it, add the PHP repository to the APT.

Add ppa:ondrej/php repository.

 $ sudo apt -y install software-properties-common

 $ sudo add-apt-repository ppa:ondrej/php

Update system package manager.

 $ sudo apt update

Install PHP 8.0 and more modules.

 $ sudo apt install apache2 mysql-server php8.0 libapache2-mod-php8.0 php8.0-mysql php8.0-curl php8.0-xml php8.0-zip php8.0-mbstring php8.0-intl php8.0-opcache php8.0-imagick php8.0-gd php8.0-cli php8.0-fpm libapache2-mod-fcgid wget unzip -y

Edit the PHP configuration file.

$ sudo nano /etc/php/8.0/fpm/php.ini

Find the following lines and change the values like below. Save and close the file.

memory_limit = 256M
upload_max_filesize = 100M
post_max_size = 100M

Enable Apache2 with PHP-FPM.

 $ sudo a2enmod proxy_fcgi setenvif

 $ sudo a2enconf php8.0-fpm

Restart Apache service.

 $ sudo systemctl restart apache2

Step 2. Create PIMCore Database

Start the MySQL service on system startup.

$ sudo systemctl enable mysql

Run mysql_secure installation script to ensure MySQL database server is secure form breaches.

$ sudo mysql_secure_installation

When prompted, answer the questions as shown below:

  • Setup VALIDATE PASSWORD plugin? Press N, then Enter.
  • Remove anonymous users? Press Y, then Enter.
  • Disallow root login remotely? Press Y, then Enter.
  • Remove test database and access to it? Press Y, then Enter.
  • Reload privilege tables now? Press Y, then Enter.

Run MySQL shell login command and enter your password to continue.

$ sudo mysql -u root -p

Create a database named elefant.

CREATE DATABASE pimcore charset=utf8mb4;

Create a database user pimcoreuser with a password MySecurePassword. Change the value of MySecurePassword to your own secure password.

CREATE USER 'pimcoreuser'@'localhost' IDENTIFIED BY 'MySecurePassword';

Grant the database user full access to the database.

GRANT ALL ON pimcore.* TO 'pimcoreuser'@'localhost' WITH GRANT OPTION;

Save all the changes to take effect.

FLUSH PRIVILEGES;

Exit MySQL shell.

exit;

Step 3. Install PIMCore

Install required dependencies.

$ sudo apt install curl git

Install Composer.

$ curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Change to document root.

$ cd /var/www/

Set up the project using composer.

$ sudo COMPOSER_MEMORY_LIMIT=-1 composer create-project pimcore/skeleton pimcore

Change to the installation directory.

$ cd /var/www/pimcore

Run the installer to create an administrator account, and enter your database credentials.

$ sudo ./vendor/bin/pimcore-install

Set the ownership of the directory to the web-root user and group.

$ sudo chown www-data:www-data -R /var/www/pimcore/

Change the access permissions.

$ sudo chmod -R 755 /var/www/pimcore/

Step 4. Configure Apache Server

Allow port 80 through the firewall.

$ sudo ufw allow 80

Create a new Apache configuration file, pimcore.conf.

$ sudo nano /etc/apache2/sites-available/pimcore.conf

Add the following lines of code to the file. Save and close the file.

<VirtualHost *:80>
    ServerAdmin admin@example.com
    DocumentRoot /var/www/pimcore/public
    ServerName example.com

     <Directory /var/www/pimcore/public/>
          Options FollowSymlinks
          AllowOverride All
          Require all granted
     </Directory>

     ErrorLog ${APACHE_LOG_DIR}/error.log
     CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Enable Apache rewrite mode.

$ sudo a2enmod rewrite

Enable the new Apache configuration file.

$ sudo a2ensite pimcore.conf

Disable Apache default configuration file.

$ sudo a2dissite 000-default.conf

Restart Apache service for changes to take effect.

$ sudo systemctl restart apache2

5. Access PIMCore Web Platform

To access the PIMCore administrator web platform, go to your browser and visit http://myServerIp/admin/. For example:

http://192.0.2.11/admin/

Conclusion

You have installed PIMCore on your Ubuntu 20.04 server. You can now access the administrator by logging in with your administrator credentials.

You can now check the official documentation to learn more on how to use PIMCore.