Server side set up for hosting¶
Hardware¶
Here is the minimum server configuration to run Akeneo PIM application:
CPU | Quad-core, type Intel Xeon 1220 or above |
Memory | 8GB minimum |
Hard drive | SAS HDD 15k RPM, 20GB minimum (RAID 1 minimum recommended) |
Warning
Should you use VCPu, keep in mind that VCPus do not provide same level of performance as real CPUs. Amazon servers, for instance, offer only 10 to 25% of performances of a real CPU.
Software¶
Operating Systems
Akeneo PIM only works on Linux servers. The application’s behaviour has been tested on several operating systems. We cannot guarantee the behaviour of the application on servers different from:
Debian (Linux) | ≥ 8 (64 bits) |
Ubuntu (Linux) | ≥ 14.04 (64 bits) |
CentOS / RHEL* (Linux) | ≥ 7 |
- RHEL stands for Red Hat Enterprise Linux.
Web server and configuration
We can only guarantee the behaviour on the following web server:
Apache web server | ≥ 2.4 |
The web server will also need the following libraries and modules:
mod rewrite | Required |
mod php5 | Required (no CGI, no FastCGI, nor FPM) |
PHP required modules and configuration
PHP | >= 5.6.24 |
php5-curl | No specific configuration |
php5-gd | No specific configuration |
php5-intl | No specific configuration |
php5-mcrypt | No specific configuration |
php5-apcu | apc.enable_cli=1 |
php5-imagick | Only required for Enterprise Edition |
Warning
function exec() is required in order to handle data import/export, check if it hasn’t been disabled in your php.ini.
Warning
To avoid a security vulnerability, please make sure you are using PHP >= 5.6.24. More details available at: https://github.com/FriendsOfPHP/security-advisories/issues/259#issuecomment-369274526 and https://github.com/php/php-src/commit/0e2447cd11f4b72257e5d2609f923177e9736c3c
Besides these modules, the following configuration is the minimal configuration required:
- Setup Apache php.ini file
/etc/php5/apache2/php.ini
Note
If you have several php versions on your server, these files can be located in /etc/php/x.x/apache2/php.ini
and /etc/php/x.x/cli/php.ini
.
$ sudo vim /etc/php5/apache2/php.ini
memory_limit = 512M
date.timezone = Etc/UTC
- Setup CLI php.ini file
/etc/php5/cli/php.ini
$ sudo vim /etc/php5/cli/php.ini
memory_limit = 768M
date.timezone = Etc/UTC
Note
Use the time zone matching your location, for example America/Los_Angeles or Europe/Berlin. See http://www.php.net/timezones for the list of all available timezones.
Database servers
Depending on your data volume (number of products, number of attributes per product, number of basic, localized or scopable attributes, number of locales, number of scopes, etc.) you will have to choose a strategy to store your products, which will determine your database server configurations:
- Full SQL database with MySQL. All your data will be stored in MySQL.
- Hybrid SQL storage with MySQL and MongoDB. Your product related data will be stored in MongoDB. The other data will still remain in MySQL.
To make an educated choice you should try to find out how many product values your database will store. For example, for one product:
- A simple attribute will generate only one product value
- A localized attribute will generate as many product values as you have locales enabled
- A scopable attribute will generate as many product values as you have channels
- A localizable and scopable attribute will generate: (number of enabled locales * number of channels) product values
We consider that MySQL can store up to 5 million product values. Here is the complete formula to check if you have more product values than the recommended threshold that MySQL can manage alone:
N products * (
N simple attributes
+ ( N localized attributes * N enabled locales )
+ ( N scopable attributes * N existing channels )
+ ( N scopable AND localizable attributes * N enabled locales * N existing channels )
) > 5 Million
MySQL (SQL) | 5.1 ≤ version ≤ 5.6 |
MongoDB (NoSQL) | 2.4 or 2.6 |
Warning
Due to changes in its API, MongoDB 3.0 is not supported.
Warning
MySQL 5.7 is not officially supported but works as experimental mode if you disable the ONLY_FULL_GROUP_BY mode.
Depending on the configuration you pick, you will need to respect parts or all of the following requirements.
MySQL
To use this database you will also require the distribution package:
mysql-server | Required |
and the following PHP modules:
php5-mysql | Required |
MongoDB
To use this database you will also require the distribution package:
mongodb-server | Required |
and the following php modules:
php5-mongo | Required |
Network
The following ports should be opened on the server host for the PIM to work properly:
HTTP or HTTPS | 80 or 443 | Required |
MySQL | unix socket or 3306 (if MySQL server on a different host) | Required |
SSH | 22 | Required (for deployment) |
Files and folders access rights
Most of the application folders and files require only read access. Here is a list of folders that also need write access for the Apache user:
app/cache | Contains application cache files |
app/logs | Contains application log files |
app/uploads | Contains files uploaded to the application by users or during import processes |
web | Contains the web assets required by the application |
These permissions are the ones required by the Symfony Framework (see its official documentation for more information).
Akeneo PIM application uses an abstraction layer called Flysystem to store media and files uploaded from the application. By default, Flysystem is configured to store these files on the application server, but this configuration can easily be changed in favor of, for example, a distributed remote storage system (see Flysystem documentation for more information).
The app/uploads folder could be located elsewhere depending on the configuration you defined in the parameters.yml of your Akeneo PIM application instance.
Please note that neither the Apache user or the CLI should be the root user of the system.