在Ubuntu 16.04上如何安装OroCRM
Haojinghui
・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
如果没有准备邮件服务器,现在可以通过保留现有值跳过它,你可以通过仪表板更改电子邮件配置。
通过替换ThisTokenIsNotSoSecretChangeIt
在secret
中设置随机字符串,对会话数据进行编码需要一个随机字符串,例子字符串如下所示。
secret: uxvpXHhDxCFc9yU1hV1fMwjSoyVUzGh4WBMBBBa3XEgrRUF5OuB2h8iNl9JRDqcd
你可以使用pwgen
实用程序生成一个随机字符串,通过运行来安装pwgen
sudo 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
上的应用程序,使用安装过程中设置的管理员username
和password
登录。
设置计划任务和后台作业
要自动运行计划任务,可以添加一个作业条目,打开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的更多信息你可以访问它的官方网站 。