OroCRM es una aplicación gratuita y de código abierto de Customer Relationship Manager (CRM) desarrollada en OroPlatform. OroPlatform es un software de plataforma de aplicaciones empresariales de código abierto totalmente personalizable. OroPlatform le proporciona todas las funciones necesarias para crear una aplicación personalizada. OroCRM está construido utilizando el marco PHP Symfony y almacena sus datos en el servidor de base de datos MySQL / MariaDB. Es una aplicación CRM lista para la empresa que ofrece toneladas de funciones. También se integra con muchas aplicaciones de terceros, como Magento Store, MailChimp, Zendesk, etc. Es multilingüe y tiene una interfaz de usuario totalmente receptiva, que le brinda la capacidad de administrarla también utilizando dispositivos móviles.
Prerrequisitos
En este tutorial, usaremos crm.example.com
como el nombre de dominio señalado al servidor. Reemplace todas las apariciones de crm.example.com
con su nombre de dominio real.
Actualice su sistema base utilizando la guía Cómo actualizar CentOS 7 . Una vez que su sistema ha sido actualizado, proceda a instalar las dependencias requeridas.
Instalar Nginx y PHP 7
OroCRM se puede instalar en cualquier servidor web de producción que soporte PHP. OroCRM admite todas las versiones de PHP superiores a 7.0. En este tutorial, utilizaremos Nginx con PHP-FPM y PHP 7.1.
Instala Nginx.
sudo yum -y install nginx
Inicie Nginx y permita que se inicie automáticamente en el arranque.
sudo systemctl start nginx
sudo systemctl enable nginx
PHP 7 no está disponible en el repositorio predeterminado de YUM, pero podemos usar el repositorio Remi para obtener e instalar las últimas compilaciones de PHP 7. Primero, agregue y habilite el repositorio Remi.
sudo rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum -y install yum-utils
sudo yum-config-manager --enable remi-php71
Instale la última versión de PHP 7 junto con los módulos PHP requeridos por OroCRM.
sudo yum -y install php php-fpm php-ctype php-curl php-fileinfo php-gd php-intl php-json php-mbstring php-mcrypt php-mysql php-pcre php-simplexml php-tokenizer php-xml php-zip php-tidy php-soap php-opcache php-posix
Edite el archivo de configuración PHP predeterminado.
sudo nano /etc/php.ini
Encuentra las siguientes líneas. Descomente y realice los cambios como se muestra.
date.timezone = Asia/Kolkata
;Replace "Asia/Kolkata" with your appropriate timezone
memory_limit = 512M
cgi.fix_pathinfo=0
Edite el archivo de configuración PHP-FPM.
sudo nano /etc/php-fpm.d/www.conf
Por defecto, PHP-FPM está configurado para ejecutarse con Apache y para escuchar el puerto 9000
. Tendremos que cambiar el usuario y el grupo, así como el archivo de socket Unix en el que se ejecutará. Encuentre las siguientes líneas y realice los cambios necesarios como se muestra.
user = nginx
group = nginx
;listen = 127.0.0.1:9000
;Comment out or remove the above line and add the following line.
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nobody
listen.group = nobody
Inicie PHP-FPM y permita que se inicie en el arranque.
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
Proporcione la propiedad del archivo de socket PHP-FPM al usuario de Nginx.
sudo chown nginx:nginx /var/run/php-fpm/php-fpm.sock
Instalar MariaDB
MariaDB es una bifurcación de código abierto de MySQL. Instala MariaDB.
sudo yum -y install mariadb mariadb-server
Inicie MariaDB y permita que se inicie automáticamente en el arranque.
sudo systemctl start mariadb
sudo systemctl enable mariadb
La instalación predeterminada de MariaDB viene con algunas bases de datos de prueba y usuarios anónimos. Antes de configurar la base de datos, primero deberá asegurar el servidor MariaDB. Puede asegurarlo ejecutando el mysql_secure_installation
script.
sudo mysql_secure_installation
Se le pedirá la contraseña de root actual de MariaDB. Por defecto, no hay una contraseña de root en una nueva instalación de MariaDB. Presione la Enter
tecla para continuar. Establezca una contraseña segura para el usuario raíz de su servidor MariaDB y responda Y
a todas las demás preguntas formuladas. Las preguntas formuladas se explican por sí mismas.
Crear la base de datos para OroCRM
Inicie sesión en el shell MySQL como usuario root ejecutando.
mysql -u root -p
Proporcione la contraseña para que el usuario raíz de MariaDB inicie sesión.
Ejecute las siguientes consultas para crear una base de datos y un usuario de la base de datos para la instalación de OroCRM.
CREATE DATABASE oro_data;
CREATE USER 'oro_user'@'localhost' IDENTIFIED BY 'StrongPassword';
GRANT ALL PRIVILEGES ON oro_data.* TO 'oro_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Puede reemplazar el nombre de la base de datos oro_data
y el nombre de usuario de oro_user
acuerdo con su elección. Asegúrese de cambiar StrongPassword
a una contraseña muy segura .
Instalar Node.js y Composer
OroCRM también requiere Node.js JavaScript runtime. OrodeM utilizará Node.js para compilar el JavaScript, que se utiliza para construir la interfaz de usuario de la aplicación. El repositorio predeterminado de CentOS contiene una versión desactualizada de Node.js, por lo que deberá agregar el repositorio Nodesource a su sistema para obtener la última versión.
sudo curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
Instala Node.js y Git.
sudo yum -y install nodejs git
Git se usará para clonar el repositorio de OroCRM desde Internet. También deberá instalar Composer. Composer es una herramienta de gestión de dependencias para aplicaciones PHP. Debido a que OroCRM está escrito en el marco de Symfony, necesitará Composer para instalar las dependencias y la aplicación.
Instalar Composer.
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
Mueva Composer al /usr/bin
directorio para que pueda ejecutarse desde cualquier parte del sistema.
sudo mv composer.phar /usr/bin/composer
Proporcionar permiso de ejecución al compositor.
sudo chmod +x /usr/bin/composer
Instale OroCRM
Hay muchas formas de descargar OroCRM en su servidor. La forma más adecuada de obtener la versión más actualizada es clonar el repositorio a través de Git.
Clone el repositorio de OroCRM.
cd /usr/share/nginx/
sudo git clone -b 2.3 https://github.com/oroinc/crm-application.git orocrm
Copie el parameters
archivo de ejemplo en el parameters
archivo predeterminado utilizado por OroCRM.
cd orocrm
sudo cp app/config/parameters.yml.dist app/config/parameters.yml
Antes de continuar, deberá actualizar el parameters.yml
archivo para proporcionar la base de datos y la información de correo electrónico.
sudo nano app/config/parameters.yml
Encuentra las siguientes líneas.
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: ~
database_name: oro_crm
database_user: root
database_password: ~
Actualice la configuración anterior de acuerdo con la base de datos que ha creado para almacenar datos de OroCRM. En nuestro caso, debería verse así.
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: 3306
database_name: oro_data
database_user: oro_user
database_password: StrongPassword
Si tiene un servidor SMTP listo y desea utilizar las funciones de envío de correo electrónico de inmediato, puede actualizar la configuración del correo como se muestra.
mailer_transport: smtp
mailer_host: mail.example.com
mailer_port: 456
mailer_encryption: ssl
mailer_user: [email protected]
mailer_password: EMailPassword
Si no tiene un servidor de correo listo, puede omitirlo por ahora dejando los valores existentes. Siempre puede cambiar la configuración del correo electrónico a través del panel de control.
Establezca una cadena aleatoria secret
reemplazando ThisTokenIsNotSoSecretChangeIt
. Se requiere una cadena aleatoria para codificar los datos de la sesión. Una cadena de ejemplo se verá así.
secret: uxvpXHhDxCFc9yU1hV1fMwjSoyVUzGh4WBMBBBa3XEgrRUF5OuB2h8iNl9JRDqcd
Puede generar una cadena aleatoria utilizando la pwgen
utilidad. Instale la pwgen
utilidad ejecutando sudo yum -y install pwgen
. Para generar una cadena aleatoria, ejecute pwgen -s 64 1
.
Guarde el archivo y salga del editor. Instale las dependencias PHP requeridas a través del compositor.
sudo composer install --prefer-dist --no-dev
El uso --no-dev
garantizará que Composer solo instale las dependencias necesarias para ejecutar el servidor web en modo de producción. El script tardará unos minutos en descargar e instalar las dependencias PHP requeridas.
Instala la aplicación.
sudo php app/console oro:install --env=prod
Esto construirá el caché web y escribirá la base de datos. El --env=prod
parámetro se proporciona para instalar la aplicación en modo de producción. La instalación solo continuará si todas las dependencias requeridas están instaladas y configuradas.
Durante la instalación, se le harán algunas preguntas para configurar la cuenta de administrador. Las preguntas son las siguientes.
Administration setup.
Application URL (http://localhost): http://crm.example.com
Organization name (OroCRM): My Organization
Username (admin):
Email: [email protected]
First name: John
Last name: Doe
Password:
Load sample data (y/n): y
Proporcione la información. Cargue los datos de muestra para evaluar el producto antes de usarlo para la producción.
Calentar la caché de documentación de la API:
sudo php app/console oro:api:doc:cache:clear
Configuración de Nginx, firewall y permisos
Cree un archivo de bloque de servidor Nginx para servir la aplicación a los usuarios.
sudo nano /etc/nginx/conf.d/orocrm.conf
Rellene el archivo.
server {
server_name crm.example.com;
root /usr/share/nginx/orocrm/web;
location / {
# try to serve file directly, fallback to app.php
try_files $uri /app.php$is_args$args;
}
location ~ ^/(app|app_dev|config|install)\.php(/|$) {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
}
# Enable Gzip compression
gzip on;
gzip_buffers 16 8k;
gzip_comp_level 5;
gzip_disable "msie6";
gzip_min_length 1000;
gzip_http_version 1.0;
gzip_proxied any;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css image/svg+xml;
gzip_vary on;
# Enable browser caching
# One week for javascript and css
location ~* \.(?:css|js) {
expires 1w;
access_log off;
add_header Cache-Control public;
}
# Three weeks for media: images, fonts, icons, video, audio etc.
location ~* \.(?:jpg|jpeg|gif|png|ico|tiff|woff|eot|ttf|svg|svgz|mp4|ogg|ogv|webm|swf|flv)$ {
expires 3w;
access_log off;
add_header Cache-Control public;
}
error_log /var/log/nginx/orocrm_error.log;
access_log /var/log/nginx/orocrm_access.log;
}
Asegúrese de cambiarlo crm.example.com
con su nombre de dominio real. La configuración anterior también incluye la configuración requerida para la compresión GZip y el almacenamiento en caché del navegador. La compresión Gzip comprime los datos antes de enviarlos al navegador. Al habilitar el almacenamiento en caché del navegador, se almacenan los recursos estáticos en la memoria caché web del equipo cliente. La próxima vez que el usuario acceda al sitio, la mayor parte del contenido estático se carga desde la propia caché web del usuario. Estos dos métodos aumentan la velocidad de la aplicación dramáticamente.
Verifique el archivo de configuración de Nginx para ver si hay algún error.
sudo nginx -t
La salida debería ser similar a la siguiente.
[user@vultr ~]$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Proporcione la propiedad de los archivos OrOCRM al usuario de Nginx.
sudo chown -R nginx:nginx /usr/share/nginx/orocrm
Reinicie Nginx para aplicar la nueva configuración.
sudo systemctl restart nginx
Si está ejecutando un firewall en su servidor, deberá configurar el firewall para establecer una excepción para el servicio HTTP. Permita que Nginx se conecte desde fuera de la red.
sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --zone=public --permanent --add-service=https
sudo firewall-cmd --reload
Ahora puede acceder a la aplicación en http://crm.example.com
. Inicie sesión con el nombre de usuario y la contraseña de administrador que estableció durante la instalación.
Configurar tareas programadas y trabajos en segundo plano
Para ejecutar automáticamente las tareas programadas, puede agregar una entrada de trabajo Cron. Abierto crontab
.
sudo crontab -e
Agregue la siguiente línea al archivo.
*/1 * * * * /usr/bin/php /usr/share/nginx/orocrm/app/console oro:cron --env=prod > /dev/null
Esto ejecutará el trabajo cron cada minuto para que las tareas programadas, como las colas de correo electrónico, se procesen lo antes posible.
También deberá configurar Supervisor para ejecutar el servicio de Message Queue. Se requiere que al menos un proceso se esté ejecutando en todo momento para que un consumidor procese los mensajes. Un consumidor normalmente puede interrumpir el proceso de mensajes de muchas maneras. Para garantizar que el servicio se ejecute continuamente, utilizaremos el servicio Supervisor. Configuraremos Supervisor para ejecutar cuatro procesos en paralelo. Si alguno de los cuatro procesos se detiene por algún motivo, el Supervisor intentará iniciarlo nuevamente.
Instalar Supervisor.
sudo yum -y install supervisor
Edite el archivo de configuración de Supervisor.
sudo nano /etc/supervisord.conf
Agregue las siguientes líneas al final del archivo.
[program:oro_message_consumer]
command=/usr/bin/php /usr/share/nginx/orocrm/app/console --env=prod --no-debug oro:message-queue:consume
process_name=%(program_name)s_%(process_num)02d
numprocs=4
autostart=true
autorestart=true
startsecs=0
user=nginx
redirect_stderr=true
Inicie y permita que Supervisor se inicie automáticamente en el momento del arranque.
sudo systemctl start supervisord
sudo systemctl enable supervisord
Puede ver el estado de los procesos ejecutando lo siguiente.
sudo supervisorctl status
Debería ver que los procesos se están ejecutando.
[user@vultr ~]$ sudo supervisorctl status
oro_message_consumer:oro_message_consumer_00 RUNNING pid 13596, uptime 0:02:13
oro_message_consumer:oro_message_consumer_01 RUNNING pid 13595, uptime 0:02:13
oro_message_consumer:oro_message_consumer_02 RUNNING pid 13594, uptime 0:02:13
oro_message_consumer:oro_message_consumer_03 RUNNING pid 13593, uptime 0:02:13
OroCRM ahora está instalado en su servidor. Ahora puede usar la aplicación para administrar las tareas rutinarias de su organización. Para obtener más información sobre OroCRM, puede visitar su sitio web oficial .