如何在CentOS 7上安装OrCRM

・18 分钟阅读

使用不同的系统?

OroCRM是一款基于OroPlatform的免费开源客户关系经理CRM应用程序,OroPlatform是完全可定制的开源业务应用程序平台软件,OroPlatform为你提供创建定制应用程序所需的所有特性。

前提条件

  • 一个CentOS 7服务器实例,
  • 一个sudo用户

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

使用向导更新基本系统如何更新Centos 7 ,系统更新后,继续安装所需的依赖项。

安装Nginx和PHP 7

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

安装Nginx 。


sudo yum -y install nginx

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


sudo systemctl start nginx
sudo systemctl enable nginx

PHP 7在默认的YUM存储库中不可用,但是我们可以使用Remi存储库来获取和安装php7的最新版本,首先,添加并启用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

安装最新版本的PHP 7以及OroCRM所需的PHP模块。


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

编辑默认的PHP配置文件。


sudo nano /etc/php.ini

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


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

memory_limit = 512M
cgi.fix_pathinfo=0

编辑php fpm配置文件。


sudo nano /etc/php-fpm.d/www.conf

默认情况下,php配置为与Apache一起运行,并侦听端口9000 ,我们需要更改用户和组,以及它将运行的Unix套接字文件,查找以下行并进行必要的更改,如下所示。


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

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


sudo systemctl start php-fpm
sudo systemctl enable php-fpm

将php套接字文件的所有权提供给Nginx用户。


sudo chown nginx:nginx /var/run/php-fpm/php-fpm.sock

安装MariaDB

MariaDB是MySQL的开源fork ,安装MariaDB 。


sudo yum -y install mariadb mariadb-server

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


sudo systemctl start mariadb
sudo systemctl enable mariadb

默认安装MariaDB附带几个测试数据库和匿名用户,在配置数据库之前,你需要先保护MariaDB服务器,你可以通过运行mysql_secure_installation脚本来保护它。


sudo mysql_secure_installation

你会被要求输入当前MariaDB root密码,默认情况下,新的MariaDB安装中没有root密码,按Enter键进行操作,为MariaDB服务器的root用户设置一个强密码,并用Y回答所有问题。

创建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 Javascript运行时 OroCRM会使用node,js来编译Javascript用于构建应用程序的用户界面,CentOS的默认存储库包含一个过时的node,js版本,因此你需要会Nodesource存储库添加到系统中以获取最新版本。


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

安装Node.js和Git 。


sudo yum -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
php -r"unlink('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.3 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实用程序生成一个随机字符串,运行pwgen实用程序 sudo yum -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参数以在生产模式中安装应用程序,只有在安装和配置所有必需的依赖项后,才会进行安装。

安装过程中,你会被问到设置Supervisor帐户的几个问题,这些问题如下。


Administration setup.
Application URL (http://localhost): http://crm.example.com
Organization name (OroCRM): My Organization
Username (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/conf.d/orocrm.conf

填充文件。


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;
}

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

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

 
sudo nginx -t

 

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


[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

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


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

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


sudo systemctl restart nginx

如果在服务器上运行防火墙,则需要配置防火墙以设置HTTP服务的异常,允许Nginx从网络外部连接。


sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --zone=public --permanent --add-service=https
sudo firewall-cmd --reload

你现在可以访问http://crm.example.com上的应用程序,使用安装过程中设置的Supervisor用户名和密码登录。

设置计划任务和后台作业

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

 
sudo crontab -e

 

将以下行添加到文件。


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

这将每分钟运行一次cron作业,以便最早处理计划任务,如电子邮件队列。

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

安装Supervisor。


sudo yum -y install supervisor

编辑Supervisor配置文件。


sudo nano /etc/supervisord.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=nginx
redirect_stderr=true

启动并使Supervisor在引导时自动启动。


sudo systemctl start supervisord
sudo systemctl enable supervisord

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


sudo supervisorctl status

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


[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现在已安装在你的服务器上了 。

Haojinghui profile image