如何在Debian 9上安装SuiteCRM

本教程将演示如何在Debian 9上安装最新版本的SuiteCRM平台。SuiteCRM是SugarCRM的一个分支,是一个企业级开放源代码...

如何在Debian 9上安装SuiteCRM

SuiteCRM是SugarCRM的一个分支,是一种用PHP编程语言编写的企业开源客户关系管理(CRM)平台,可用于创建业务战略,行动和决策。

本教程将介绍在Debian 9上安装最新版本SuiteCRM平台所需的所有步骤,以便为您的企业部署功能强大的在线平台。 CRM应用程序将部署在Apache HTTP服务器,PHP和MariaDB数据库引擎下的Debian Linux上。

要求

  • 一台裸机服务器或虚拟专用服务器,具有最少2Gb的RAM和Debian 9服务器的最低限度安装。
  • 通过机器控制台访问root帐户或通过SSH远程访问。 除了root帐户,您还可以通过sudo命令使用具有root权限的帐户。
  • 配置了静态IP地址的外部网络接口或配置为为该接口租用静态IP地址的DHCP服务器。
  • 一个公共注册域名,以便从互联网上访问该应用程序。 如果应用程序部署在Intranet中,则可以执行安装过程并通过服务器IP地址访问网站。
  • 在您的场所配置的邮件服务器,以便使用网站注册或其他应用程序功能。 您也可以使用公共邮件服务,例如Gmail或Yahoo !, Microsoft Exchange或其他软件来发送和接收邮件。

准备服务器

在第一步中,使用root帐户或通过sudo获得root用户权限的用户登录到服务器控制台,并使用以下命令设置系统名称。 确保相应地替换本例中使用的机器主机名。

hostnamectl set-hostname www.mycrm.org

在更改了系统主机名后,发出以下命令以验证机器名是否已正确应用。

hostnamectl

cat /etc/hostname

hostname –s

hostname –f

接下来,通过发布以下命令,确保更新系统存储库,软件包和内核。

apt update

apt upgrade

最后,在完成更新过程后,通过执行以下命令重新启动计算机以应用主机名更改和内核更新。

systemctl reboot

在机器重新启动后,重新登录到服务器控制台并执行以下命令以安装一些命令行实用程序,如wget,curl和zip,稍后将用于通过Internet下载软件并提取zip存档文件。

apt install wget curl zip unzip

安装Apache和PHP

SuiteCRM应用程序将在Debian上部署在LAMP之上。 我们要安装的LAMP的第一个组件是Apache HTTP服务器和PHP动态编程语言解释器。 执行以下命令以在系统中安装Apache Web服务器和所有必需的PHP模块。

apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-gd php7.0-opcache php7.0-mbstring php7.0-xml php7.0-json php7.0-zip php7.0-curl php7.0-imap

安装MariaDB数据库

我们将在Debian服务器中安装的LAMP软件包的下一个组件是MariaDB数据库引擎。 应用程序需要RDBMS数据库来存储不同的平台配置,例如用户,会话,联系人,产品,目录和其他。 要安装MariaDB数据库引擎和访问数据库所需的PHP模块,请在机器控制台中执行以下命令。

apt install mariadb-server php7.0-mysql mariadb-client

安装完所有LAMP组件后,检查Apache Web服务器和MariaDB守护程序是否已启动并正在运行,并通过发出以下命令之一监听端口80和3306 TCP上的网络连接。

netstat –tlpn

ss- tulpn

Netstat实用程序在Debian 9系统中默认不存在。 要在Debian Stretch服务器中安装netstat实用程序,请执行以下命令。

apt install net-tools

为了安全地通过HTTPS协议访问CRM网站,以确保服务器和客户端浏览器之间的流量安全,请确保您也启用Apache TLS模块和SSL站点配置文件,方法是发出以下命令。

a2enmod ssl

a2ensite default-ssl.conf

  接下来,通过发出以下命令来启用Apache重写模块。 如果要通过放置在您的域webroot中的.htaccess文件即时修改Web服务器配置,则需要重写模块。

a2enmod rewrite

systemctl restart apache2

  接下来,通过在Apache配置文件中放置所需的规则来激活重写模块。 首先,我们将在Apache默认配置文件中应用重写规则。 因此,打开/etc/apache2/sites-enabled/000-default.conf文件以使用文本编辑器进行编辑,并在DocumentRoot语句后面插入以下URL重写规则,如以下摘录所示。

nano /etc/apache2/sites-enabled/000-default.conf

000-default.conf文件摘录:

<Directory /var/www/html>
  Options +FollowSymlinks
  AllowOverride All
  Require all granted
</Directory>

使用CTRL + o和Ctrl + x关闭000-default.conf ,并打开Apache默认SSL站点配置文件,并在DocumentRoot指令后面添加以下代码行来插入URL重写规则,如下面的示例所示:

nano /etc/apache2/sites-enabled/default-ssl.conf

  SSL站点配置文件摘录:

<Directory /var/www/html>
  Options +FollowSymlinks
  AllowOverride All
  Require all granted
</Directory>

最后,在完成上述所有更改后,重新启动Apache守护程序以拾取迄今为止配置的所有新规则。

systemctl restart apache2

现在,您应该从远程桌面机器通过HTTP协议访问您的域或服务器IP地址。 默认的Debian网页应该显示在浏览器中。

HTTP://yourdomain.tld

防火墙配置

如果您看不到网页,请验证在Debian服务器中是否启用了UFW防火墙应用程序。 如果是这种情况,您应该插入以下规则以允许HTTP和HTTPS流量通过防火墙。

ufw allow 'WWW Full'

要么

ufw allow 80/tcp

ufw allow 443/tcp

下面描述了允许端口80和443 TCP入站流量通过防火墙的iptables防火墙原始规则。

apt-get install -y iptables-persistent

iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT

iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT

netfilter-persistent save

systemctl restart netfilter-persistent

systemctl status netfilter-persistent

systemctl enable netfilter-persistent.service

最后,在添加了所需的防火墙规则后,通过HTTPS协议访问您的域名或服务器IP地址,测试Apache Web服务器默认网页是否可以在远程浏览器中显示。 执行ifconfig或ip命令显示服务器的IP地址。

HTTP://yourdomain.tld

由于您使用的是安装时由Apache发布的自动签名证书,浏览器不信任证书,因此应在浏览器中显示“您的连接不安全”警告。 接受不受信任的证书以绕过错误并被重定向到Apache默认网页,如下图所示。

Debian上的Apache web服务器

配置MariaDB和PHP

现在,set开始保护MariaDB root帐户。 登录到MySQL控制台执行以下命令更新root帐户插件。

mysql -h localhost

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 2

Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

 

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>使用mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

 

Database changed

MariaDB [mysql]> update user set plugin =''其中user ='root';

Query OK, 1 row affected (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]>刷新权限;

Query OK, 0 rows affected (0.00 sec)

 

MariaDB [mysql]> exit

Bye

  另外,运行脚本mysql_secure_installation提供的Debian拉伸存储库以进一步保护MariaDB数据库。 该脚本会询问您以下问题:更改MySQL root密码,删除匿名用户,禁用远程root登录并删除测试数据库。 对所有问题回答yes,如下面的脚本输出示例所示。

mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB

      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

 

In order to log into MariaDB to secure it, we'll need the current

password for the root user.  If you've just installed MariaDB, and

you haven't set the root password yet, the password will be blank,

so you should just press enter here.

 

Enter current password for root (enter for none):

OK, successfully used password, moving on...

 

Setting the root password ensures that nobody can log into the MariaDB

root user without the proper authorisation.

 

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] y

New password:

Re-enter new password:

Password updated successfully!

Reloading privilege tables..

 ... Success!

 

By default, a MariaDB installation has an anonymous user, allowing anyone

to log into MariaDB without having to have a user account created for

them.  This is intended only for testing, and to make the installation

go a bit smoother.  You should remove them before moving into a

production environment.

 

Remove anonymous users? [Y/n] y

 ... Success!

 

Normally, root should only be allowed to connect from 'localhost'.  This

ensures that someone cannot guess at the root password from the network.

 

Disallow root login remotely? [Y/n] y

 ... Success!

 

By default, MariaDB comes with a database named 'test' that anyone can

access.  This is also intended only for testing, and should be removed

before moving into a production environment.

 

Remove test database and access to it? [Y/n] y

 - Dropping test database...

 ... Success!

 - Removing privileges on test database...

 ... Success!

 

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

 

Reload privilege tables now? [Y/n] y

 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB

installation should now be secure.

Thanks for using MariaDB!

通过尝试使用root帐户登录到MySQL控制台并且没有提供密码来测试是否应用了所有安全措施。 如果没有为root帐户提供密码,则应拒绝对数据库的访问,如以下命令摘录所示:

mysql -h localhost -u root

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

现在,尝试使用root帐户和密码登录到MySQL控制台,如下例所示。 您应该可以登录到MySQL控制台。 输入exit离开MySQL数据库。

mysql -h localhost -u root -p

Enter password:

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 15

Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> exit

Bye

在下一步中,如下所述,在php.ini配置文件中更改以下PHP变量。 打开/etc/php/7.0/apache2/php.ini文件进行编辑并修改以下几行。 首先,确保你备份了最初的PHP配置文件。

cp /etc/php/7.0/apache2/php.ini{,.backup}

nano /etc/php/7.0/apache2/php.ini

php.ini配置文件中搜索,编辑和更改以下变量:

file_uploads = On
default_charset = UTF-8
memory_limit = 128M
post_max_size = 60M
upload_max_filesize = 60M
memory_limit = 256M
max_input_time = 60
max_execution_time = 6000
date.timezone = Europe/London

根据您的服务器地理位置,在PHP配置文件中替换时区变量。 PHP时区列表可以在以下链接中找到http://php.net/manual/en/timezones.php

要提高网站页面的加载速度,请为PHP7启用OPCache插件。 在[opcache]语句之后,在PHP解释器配置文件的底部插入以下OPCache行,如以下摘录所示:

[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

最后,关闭php.ini配置文件并重新启动Apache守护程序,通过发出以下命令来应用更改。

systemctl restart apache2

要在浏览器中显示所有PHP设置,请执行以下命令,在您的域webroot路径中创建一个PHP信息文件。

echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php

通过以下URL从远程浏览器访问PHP信息脚本文件。 向下滚动至日期设置以验证PHP时区配置和其他设置是否已成功应用。

HTTPS://domain.tld/info.php

安装SuiteCRM

在我们为安装SuiteCRM应用程序配置了所有必需的LAMP设置后,请访问SuiteCRM官方下载页面https://suitecrm.com/download/,并通过发出以下命令获取系统中的最新zip文件存档。 在编写本指南时,最新发布的SuiteCRM版本是SuiteCRM-7.9.9.zip文件。

wget https://suitecrm.com/files/158/SuiteCRM-7.9/178/SuiteCRM-7.9.9.zip

ls

SuiteCRM zip文件归档下载完成后,将zip归档文件解压缩到当前的工作目录,并通过发出以下命令列出解压缩的文件。

unzip SuiteCRM-7.9.9.zip

ls

ls –al SuiteCRM-7.9.9

在将安装文件复制到域webroot之前,请确保将由Apache软件包安装的默认index.html文件移除到Web服务器文档根路径,并且还要删除先前创建的info.php文件。

rm /var/www/html/index.html

rm /var/www/html/info.php

SuiteCRM应用程序的安装文件位于SuiteCRM-7.9.9 /目录下的当前工作目录中。 发出ls命令列出这个目录文件。 通过发出以下命令将SuiteCRM-7.9.9 /目录的所有内容复制到Web服务器文档根路径。

cp -rf SuiteCRM-7.9.9/* /var/www/html/

接下来,通过发出以下命令将Apache运行时用户(www-data)授予对Apache文档根路径的完全写入权限。 运行ls命令列出位于/ var / www / html /目录下的已安装文件的权限。

chown -R www-data:www-data /var/www/html/

ls –al /var/www/html/

接下来,登录到MariaDB数据库控制台,并创建SuiteCRM数据库。 通过发出以下命令为数据库和具有强密码的用户选择一个名称来管理应用程序数据库。 确保使用您自己的设置更改本教程中使用的数据库名称,用户和密码。

mysql –u root -p

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 2

Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

 

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database mycrm_db;

Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]>将mycrm_db。*的所有权限授予'password1234'标识的'crm_user'@'localhost';

Query OK, 0 rows affected (0.00 sec) 

MariaDB [(none)]>刷新权限;

Query OK, 0 rows affected (0.00 sec)

 

MariaDB [(none)]> exit

Bye

现在,让我们开始SuiteCRM应用程序的安装过程。 打开浏览器并通过HTTPS协议浏览服务器的IP地址或域名。

HTTP://yourdomain.tld

在第一个安装屏幕上,SuiteCRM安装程序将显示许可协议。 选中“ 我接受 ”复选框,以便同意许可条款和条件,选择安装该应用程序的语言并点击下一步按钮以启动安装过程,如下面的屏幕截图所示。

SuiteCRM安装向导

在下一个安装屏幕中,SuiteCRM安装程序将检查您的系统环境要求,并在所有PHP和服务器配置都通过时显示并确定消息。 为了继续安装过程,点击下一步按钮,如下图所示。

系统环境

接下来,安装程序将显示数据库连接设置和站点配置页面。 在左侧窗格中,选择带MySQLi Extension的MySQL作为数据库类型,并提供为安装SuiteCRM应用程序创建的MySQL数据库名称,数据库服务器主机地址,数据库用户名和访问SuiteCRM数据库所需的密码。 另外,在“SuiteCRM数据库用户/”中选择“与管理员用户相同”。 在正确的平面上,添加应用程序管理员用户名并为管理员帐户设置强密码。 通过端口443检查SuiteCRM实例的URL地址以通过HTTPS协议与您的域名匹配,并添加管理员帐户的电子邮件地址。 使用以下图像作为指导来配置此步骤。

数据库和站点配置

接下来,在相同的安装屏幕上,点击“更多选项”菜单中的“选择演示”数据,并选择不使用演示数据填充SuiteCRM数据库。 然后,单击“方案选择”菜单并选择以启用以下SuiteCRM模块:销售,市场营销,财务,服务和项目管理。 如果您在安装应用程序时不需要模块,则可以不选中并在安装过程完成后使用应用程序管理页面启用它。

选择演示数据导入

接下来,向下滚动并点击SMTP服务器规范菜单以启用SuiteCRM电子邮件选项。 添加您想要显示在“发件人”电子邮件标题中的姓名和电子邮件地址。 然后,选择您的电子邮件服务提供商并指定邮件服务器设置。 在本指南中,我们将使用Gmail服务提供商发送电子邮件,并且可以在下面的屏幕截图中找到邮件服务器设置。 完成启用邮件服务提供商所需的设置后,点击Branded菜单并添加要在SuiteCRM应用程序的浏览器标题栏中显示的名称,并上传自己的网站徽标图像。

SMTP服务器设置

接下来,再次向下滚动并点击System Locale Settings菜单,并指定时间格式,时区和货币设置应如何显示在SuiteCRM应用程序中。 最后,现在不选中网站安全选项,点击下一步按钮完成安装过程。 你可以使用下面的图片来完成这一步。

区域设置和网站安全

安装过程完成后,您将被重定向到SuiteCRM登录页面。 为了访问应用程序管理面板,请使用安装过程中配置的管理员帐户凭据登录到SuiteCRM,如下图所示。

SuiteCRM登录

在登录到SuiteCRM管理面板之前,首先返回到服务器控制台并发出以下命令,以删除不再需要的安装目录并可能表示安全漏洞。

rm -rf /var/www/html/install/

您还可以通过HTTPS协议导航到您的服务器IP地址或域名访问SuiteCRM仪表板。 SuiteCRM管理仪表板的视图显示在下面的屏幕截图中。

HTTP://yourdomain.tld

SuideCRM仪表板

最后,为了自动将访问者重定向到HTTPS,以便他们可以从浏览器安全地访问SuiteCRM界面,通过发出以下命令返回到您的服务器终端并编辑位于域文档根路径中的自动生成的.htaccess文件。

nano /var/www/html/.htaccess

在.htaccess文件中,搜索<IfModule mod_rewrite.c>行并在RewriteEngine On语句后插入以下行规则,以自动将域流量重定向到HTTPS。

.htaccess文件摘录:

# Redirect to HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]

在文件的底部,您可以修改Web服务器本地PHP服务器设置,方法是添加其他行以反映您自己的服务器资源和配置。

# Modify PHP settings
php_value session.use_trans_sid 0
php_value register_globals 1
php_value upload_max_filesize 100M
php_value post_max_size 100M

为了执行SuiteCRM计划程序,请使用以下命令编辑您的Web服务器运行时帐户crontab文件,并添加以下cron任务以运行每分钟。

crontab -e -u www-data

crontab文件示例:

*    *    *    *    *     /usr/bin/php7.0  -f  /var/www/html/cron.php > /dev/null 2>&1

如果您想规避每次客户访问您的应用程序时生成的浏览器警告,则应考虑购买由可信认证中心颁发的证书或从Let's Encrypt CA颁发免费证书。

就这样! SuiteCRM Web应用程序已成功安装并在LAMP顶部的Debian 9服务器中配置。

为了进一步定制SuiteCRM平台,请确保您访问以下地址的应用程序wiki页面: https ://suitecrm.com/wiki/index.php/Main_Page


分享按钮