在Ubuntu 16.04上如何安装OroCRM

・17 分钟阅读

使用不同的系统?

OroCRM是一款基于OroPlatform的免费开源客户关系经理CRM应用程序,OroPlatform是完全可定制的开源业务应用程序平台软件,OroPlatform为你提供创建定制应用程序所需的所有特性,OroCRM使用PHP Symfony框架构建并将它数据存储到MySQL MariaDB数据库服务器中,它是一个企业完备的CRM应用程序,它还集成了许多第三方应用程序如Magento Store MailChimp zendesk等,它是多语言的,有响应性的用户界面,这为你提供了使用移动设备管理它的能力。

前提条件

  • Ubuntu 16.04服务器实例,
  • 非root的sudo用户 ,

在本教程中,我们会使用crm.example.com作为指向服务器的域名,实用应用中,请将所有的crm.example.com替换为你的实际域名。

系统更新后,继续安装所需的依赖项。

安装Nginx和PHP 7

OroCRM可以安装在任何支持PHP的Web服务器上,OroCRM支持所有大于7.0的PHP版本,在本教程中,我们会在PHP fpm和PHP 7.1中使用Nginx 。

安装Nginx 。


sudo apt -y install nginx

启动Nginx并使其在启动时自动启动。


sudo systemctl start nginx
sudo systemctl enable nginx

PHP 7.1在默认的apt库中不可用,首先,添加PHP的PPA存储库。


sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php

安装PHP 7,1以及OroCRM所需的PHP模块。


sudo apt update
sudo apt -y install php7.1 php7.1-fpm php7.1-common php7.1-curl php7.1-gd php7.1-intl php7.1-json php7.1-mbstring php7.1-mcrypt php7.1-mysql php7.1-xml php7.1-xml php7.1-zip php7.1-tidy php7.1-soap php7.1-opcache

编辑加载的PHP配置文件。


sudo nano /etc/php/7.1/cli/php.ini

查找以下行,取消注释,并且按如下所示进行更改。


date.timezone = Asia/Kolkata
;Replace"Asia/Kolkata" with your appropriate timezone

cgi.fix_pathinfo=0

启动php并使其在启动时启动。


sudo systemctl start php7.1-fpm
sudo systemctl enable php7.1-fpm

安装MariaDB

MariaDB是MySQL的开源fork ,添加MariaDB 10.2存储库。


sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://kartolo.sby.datautama.net.id/mariadb/repo/10.2/ubuntu xenial main'

安装MariaDB 。


sudo apt -y update
sudo apt -y install mariadb-server

启动MariaDB,并且使它在启动时自动启动。


sudo systemctl start mariadb
sudo systemctl enable mariadb

创建Database for OroCRM

运行时,以root用户身份登录到shell 。


mysql -u root -p

提供MariaDB root用户登录的密码。

运行以下查询,创建用于orocm安装的数据库和数据库用户。


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;

你可以根据你的选择替换数据库名oro_data和用户名oro_user ,请确保将StrongPassword更改为强健的密码。

安装Node.js和Composer

OroCRM还需要node .js,OroCRM会使用node.js来编译Javascript用于构建应用程序的用户界面,Ubuntu的默认存储库包含一个过时的node.js版本,因此你需要会Nodesource存储库添加到你的系统中以获得最新版本。


sudo curl --silent --location https://deb.nodesource.com/setup_8.x | sudo bash -

安装Node.js和Git 。


sudo apt -y install nodejs git

Git会用于从互联网克隆OroCRM存储库 你还需要安装Composer ,Composer是PHP应用程序的一个依赖管理器工具,因为OroCRM是在Symfony框架中编写的,所以需要Composer来安装依赖项和应用程序。

安装编辑器。


php -r"copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php

将Composer移到/usr/bin目录,以便,它可以从系统中的任何位置执行。


sudo mv composer.phar /usr/bin/composer

向编辑器提供执行权限。


sudo chmod +x /usr/bin/composer

安装OroCRM

有很多方法可以在你的服务器上下载OroCRM ,获取最新版本最合适的方法是通过Git克隆存储库。

克隆OroCRM存储库


cd /usr/share/nginx/
sudo git clone -b 2.4 https://github.com/oroinc/crm-application.git orocrm

将例子parameters文件复制到OroCRM使用的默认parameters文件。


cd orocrm
sudo cp app/config/parameters.yml.dist app/config/parameters.yml

你还需要更新parameters.yml文件以提供数据库和电子邮件信息,才能继续进行进一步的操作。


sudo nano app/config/parameters.yml

查找下列行。


database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: ~
database_name: oro_crm
database_user: root
database_password: ~

根据为存储ORCRM数据而创建的数据库更新上述配置,在我们的例子中,它应该是这样的。


database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: 3306
database_name: oro_data
database_user: oro_user
database_password: StrongPassword

如果已准备好SMTP服务器,并且希望立即使用电子邮件发送功能,则可以按照如下所示更新邮件服务器设置。


mailer_transport: smtp
mailer_host: mail.example.com
mailer_port: 456
mailer_encryption: ssl
mailer_user: mails@example.com
mailer_password: EMailPassword

如果没有准备邮件服务器,现在可以通过保留现有值跳过它,你可以通过仪表板更改电子邮件配置。

通过替换ThisTokenIsNotSoSecretChangeItsecret中设置随机字符串,对会话数据进行编码需要一个随机字符串,例子字符串如下所示。


secret: uxvpXHhDxCFc9yU1hV1fMwjSoyVUzGh4WBMBBBa3XEgrRUF5OuB2h8iNl9JRDqcd

你可以使用pwgen实用程序生成一个随机字符串,通过运行来安装pwgensudo apt -y install pwgen 若要生成随机字符串,请运行 pwgen -s 64 1

保存文件并退出编辑器,通过composer安装所需的PHP 。


sudo composer install --prefer-dist --no-dev

使用--no-dev会确保Composer只安装在生产模式下运行web服务器所需的依赖项,脚本需要花几分钟来下载和安装所需的PHP依赖项。

安装应用程序。


sudo php app/console oro:install --env=prod

这将构建网络缓存并编写数据库,提供--env=prod参数以在生产模式中安装应用程序,只有在安装和配置所有必需的依赖项后,才会进行安装。

安装过程中,你会被询问一些设置管理员帐户的问题,这些问题如下。


Administration setup.
Application URL (http://localhost): http://crm.example.com
Organization name (OroCRM): My Org
Username (admin): admin
Email: mail@example.com
First name: John
Last name: Doe
Password:
Load sample data (y/n): y

提供信息,在将例子数据用于生产之前,加载例子数据以对它进行评估。

预热API文档缓存:


sudo php app/console oro:api:doc:cache:clear

配置Nginx,防火墙和权限

创建Nginx服务器块文件以向用户提供应用程序。


sudo nano /etc/nginx/sites-available/orocrm


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:/run/php/php7.1-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;
}

请确保将crm.example.com更改为实际的域名,上述配置还包括GZip压缩和浏览器缓存所需的配置,Gzip压缩在将数据发送到浏览器之前压缩数据,启用浏览器缓存将静态资源存储到客户端计算机的网络缓存中,下次用户访问站点时,大多数静态内容都是从自己的用户web缓存加载的,这两种方法大大提高了应用程序的速度。

启用站点。


sudo ln -s /etc/nginx/sites-available/orocrm /etc/nginx/sites-enabled/orocrm

检查Nginx配置文件中是否存在任何错误。

 
sudo nginx -t

 

输出应类似于下面的内容。


user@vultr:/usr/share/nginx/orocrm$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

向nginx用户提供OroCRM文件的所有权。


sudo chown -R www-data:www-data /usr/share/nginx/orocrm

重新启动Nginx以应用新配置。


sudo systemctl restart nginx

你现在可以访问http://crm.example.com上的应用程序,使用安装过程中设置的管理员usernamepassword登录。

设置计划任务和后台作业

要自动运行计划任务,可以添加一个作业条目,打开crontab

 
sudo crontab -e

 

将以下行添加到文件。


*/1 * * * * /usr/bin/php /usr/share/nginx/orocrm/app/console oro:cron --env=prod > /dev/null

这会每分钟运行cron作业,以便尽早处理电子邮件队列之类的计划任务。

你还需要设置Supervisor来运行Message Queue服务。要求consumer始终至少运行一个进程以处理消息。consumer通常可以通过多种方式中断消息流程,为确保服务持续运行,我们将使用Supervisor服务。我们将配置Supervisor并行运行四个进程。如果由于任何原因停止了四个进程中的任何一个,Supervisor 将尝试再次启动它。

安装Supervisor 。


sudo apt -y install supervisor

创建新的Supervisor配置文件。


sudo nano /etc/supervisor/conf.d/orocrm.conf

将以下行添加到文件。


[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=www-data
redirect_stderr=true

启动并使管理员在引导时自动启动。


sudo systemctl restart supervisor
sudo systemctl enable supervisor

通过运行以下命令,可以查看进程的状态。


sudo supervisorctl status

你应该会看到进程正在运行。


user@vultr:/usr/share/nginx/orocrm$ sudo supervisorctl status
oro_message_consumer:oro_message_consumer_00 RUNNING pid 20809, uptime 0:00:01
oro_message_consumer:oro_message_consumer_01 RUNNING pid 20808, uptime 0:00:01
oro_message_consumer:oro_message_consumer_02 RUNNING pid 20807, uptime 0:00:01
oro_message_consumer:oro_message_consumer_03 RUNNING pid 20806, uptime 0:00:01

OroCRM现在已安装在你的服务器上 现在可以使用应用程序来管理组织的常规任务,要了解有关OroCRM的更多信息你可以访问它的官方网站 。

Haojinghui profile image