Welcome to OroCRM the Open Source Customer Relationship Management (CRM) application.
OroCRM is a Symfony 2 based application with the following requirements:
- PHP 5.6 or above with command line interface
- PHP Extensions:
- GD
- Mcrypt
- JSON
- ctype
- Tokenizer
- SimpleXML
- PCRE
- ICU
- MySQL 5.1 or above
- PostgreSQL 9.1 or above
OroCRM uses Composer to manage package dependencies, this is the a recommended way to install OroCRM.
- If you do not have the Composer yet, download it and follow the instructions on http://getcomposer.org/ or simply run the following command:
curl -s https://getcomposer.org/installer | php
OroCRM uses fxpio/composer-asset-plugin to manage dependency on third-party asset libraries. The plugin has to be installed globally (per user):
composer global require "fxp/composer-asset-plugin:~1.2"
- Clone https://github.com/orocrm/crm-application.git OroCRM project with:
git clone https://github.com/orocrm/crm-application.git
- Go to crm-application folder and look at list of releases.
git branch -a
- Select the latest release (release_branch for example can be 1.10)
git checkout release_branch
-
Make sure that you have NodeJS installed
-
Install OroCRM dependencies with the Composer. If the installation process is too slow you can use the "--prefer-dist" option. Run Composer installation:
php composer.phar install --prefer-dist --no-dev
-
Create the database with the name specified in the previous step (default name is "oro_crm").
-
Install the application and the admin user with the Installation Wizard by opening install.php in the browser or from CLI:
php app/console oro:install --env prod
Note: If the installation process times out, add the --timeout=0
argument to the command.
- Enable WebSockets messaging
php app/console clank:server --env prod
- Configure crontab or scheduled tasks execution to run command below every minute:
php app/console oro:cron --env prod
Note: app/console
is a path from project root folder. Please make sure you are using full path for crontab configuration if you are running console command from a different location.
Installed PHP Accelerators must be compatible with Symfony and Doctrine (support DOCBLOCKs).
Note that the port used in Websocket must be open in firewall for outgoing/incoming connections.
Using MySQL 5.6 on HDD is potentially risky as it can result in performance issues.
Recommended configuration for this case:
innodb_file_per_table = 0
Ensure that timeout has the default value
wait_timeout = 28800
See Optimizing InnoDB Disk I/O for more information.
The default MySQL character set utf8 uses a maximum of three bytes per character and contains only BMP characters. The utf8mb4 character set uses a maximum of four bytes per character and supports supplemental characters (e.g. emojis). It is recommended to use utf8mb4 character set in your app/config.yml:
...
doctrine:
dbal:
connections:
default:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
row_format: dynamic
...
Using utf8mb4 might have side effects. MySQL indexes have a default limit of 767 bytes, so any indexed fields with varchar(255) will fail when inserted, because utf8mb4 can have 4 bytes per character (255 * 4 = 1020 bytes), thus the longest data can be 191 (191 * 4 = 764 < 767). To be able to use any 4 byte charset all indexed varchars should be at most varchar(191). To overcome the index size issue, the server can be configured to have large index size by enabling sysvar_innodb_large_prefix. However, innodb_large_prefix requires some additional settings to work:
- innodb_default_row_format=DYNAMIC (you may also enable it per connection as in the config above)
- innodb_file_format=Barracuda
- innodb_file_per_table=1 (see above performance issues with this setting)
More details about this issue can be read here
You need to load uuid-ossp
extension for proper doctrine's guid
type handling.
Log into the database and run sql query:
CREATE EXTENSION "uuid-ossp";
To load sample data you need to run console command
php app/console oro:migration:data:load --fixtures-type=demo --env=prod
OroCRM application is based on the Symfony standard application, so the web server configuration recommendations are the same.