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) |
Software¶
Operating Systems
Akeneo PIM application’s behaviour has been tested on some operating systems only. We cannot guarantee the behaviour of the application on servers different from:
Debian (Linux) | ≥ 7 (64 bits) |
Ubuntu (Linux) | ≥ 13.04 (64 bits) |
CentOS / RHEL* (Linux) | ≥ 6 |
- 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.2 |
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
php5-curl | No specific configuration |
php5-gd | No specific configuration |
php5-intl | No specific configuration |
php5-mcrypt | No specific configuration |
php5-apc / php5-apcu | Depends on the installed PHP version (php5-apc for 5.4 and php5-apcu for PHP 5.5) |
Besides these modules, the following configuration is the minimal configuration required:
For Apache php.ini file: (“/etc/php5/apache2/php.ini”)
memory_limit = 512M
date.timezone = Etc/UTC
For CLI php.ini file: (“/etc/php5/cli/php.ini”)
memory_limit = 768M
date.timezone = Etc/UTC
The timezone defined should match your location.
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 between the following database server configurations:
- Full SQL database with MySQL
- Hybrid SQL storage with MySQL and MongoDB
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
Here is the complete formula to check if you have, by far, 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 Millions
Warning
In order to prevent any performance issue, you should use the hybrid storage. In version 1.4.0 to 1.4.12 it is strongly recommended to use it together with the DirectToMongoDBBundle, which offers a way faster saving strategy.
In 1.4.13 the behavior implemented in this bundle became the native one, so no extra bundle is needed to improve your hybrid storage installation.
MySQL (SQL) | ≥ 5.1 |
MongoDB (NoSQL) | 2.4 or 2.6 |
Warning
Due to changes in API MongoDB 3.0 is not supported.
Depending on the configuration you will pick, you will need to respect part 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 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 Gaufrette to store media and files uploaded from the application. Gaufrette is configured by default to store these files on the application server filesystem, but this configuration can easily be changed in favor of, for example, a distributed remote storage system (see Gaufrette 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.