如何在Ubuntu 16.04上使用Nginx安装SuiteCRM

SuiteCRM是一个基于PHP的开源CRM(客户关系管理)软件。这是流行的CRM软件SugarCRM的一个分支,并有...

如何在Ubuntu 16.04上使用Nginx安装SuiteCRM

SuiteCRM是一个基于PHP的开源CRM(客户关系管理)软件。 它是流行的CRM软件“SugarCRM”的一个分支,在“SugarCRM”决定停止免费版本的开发之后,它变得越来越流行。 SuiteCRM已被提名为2015年和2016年BOSSIE上最好的开源CRM软件。

在本教程中,我将逐步向您展示如何安装开源CRM“SuiteCRM”。 该软件将运行在带有MariaDB数据库和使用Ubuntu 16.04系统的Nginx Web服务器下。

我们将要做什么

  1. 安装Nginx Web服务器
  2. 安装和配置PHP-FPM
  3. 安装和配置MariaDB
  4. 下载和配置SuiteCRM
  5. SuiteCRM Web安装程序
  6. 最后的步骤

先决条件

  • Ubuntu 16.04服务器
  • 根特权

第1步 - 安装Nginx Web服务器

SuiteCRM是一个基于网络的软件,它需要一个Web服务器。 我们可以使用Apache或Nginx的这个软件。 在本教程中,我们将使用Nginx Web服务器而不是Apache Web服务器。

连接到你的Ubuntu服务器并更新存储库。

ssh root@hakase-labs.co
sudo apt update

现在使用apt命令按以下方式安装Nginx Web服务器。

apt install -y nginx

安装完成后,启动nginx并使其每次在系统启动时自动启动。

systemctl start nginx
systemctl enable nginx

Nginx Web服务器已安装,并且正在默认HTTP端口80下运行。请使用netstat命令进行检查,或者使用curl查看HTTP状态代码。

netstat -plntu
curl -I localhost

安装Nginx

第2步 - 安装和配置PHP-FPM

SuiteCRM与多个PHP版本兼容。 在本教程中,我们将使用最新版本的PHP 7.0进行SuiteCRM安装。

使用以下apt命令安装PHP和PHP-FPM 7以及其他所需的扩展。

apt install -y php7.0-fpm php7.0-mcrypt php7.0-imap php7.0-curl php7.0-cli php7.0-mysql php7.0-gd php7.0-xsl php7.0-json php7.0-intl php-pear php7.0-dev php7.0-common php7.0-mbstring php7.0-zip php-soap libcurl3 curl

安装完成后,进入PHP配置目录并编辑'cli'和'fpm'配置的php.ini文件。

cd /etc/php/7.0/

编辑php.ini文件。

vim cli/php.ini
vim fpm/php.ini

更改最大上载文件大小值。 SuiteCRM至少需要6MB,但我们将设置100MB作为值。

upload_max_filesize = 100M

取消注释CGI行(如下所示)并将值更改为0。

cgi.fix_pathinfo=0

对于会话路径配置,取消注释下面的行。

session.save_path = "/var/lib/php/sessions"

而已。 保存这些更改并退出。

现在,我们需要为PHP会话文件创建一个新目录,并将目录的所有者更改为“www-data”用户和组。

mkdir -p /var/lib/php/sessions
chown -R www-data:www-data /var/lib/php/sessions

PHP和PHP-FPM配置已经完成。 现在启动该服务,并使其在系统启动时每次启动。

systemctl start php7.0-fpm
systemctl enable php7.0-fpm

默认情况下,在Ubuntu系统上,PHP-FPM将在sock文件下运行,而不是使用系统端口。 使用下面的netstat命令检查它。

netstat -pl | grep php

并确保您看到的结果与以下屏幕截图中显示的内容类似。

安装PHP

第3步 - 安装和配置MariaDB

在这一步中,我们将安装MariaDB并配置root密码。 然后为SuiteCRM安装配置一个新的数据库。

使用下面的apt命令安装MariaDB。

apt install -y mariadb-server mariadb-client

安装完成后,启动该服务并使其每次在系统启动时启动。

systemctl start mysql
systemctl enable mysql

接下来,使用“mysql_secure_installation”命令配置MariaDB root密码,如下所示。

mysql_secure_installation

您将被问到配置,输入“Y”并按“Enter”键。

Set root password? [Y/n] Y
New password:
Re-enter new password:

Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

MariaDB的root密码已经被配置。

现在我们将为SuiteCRM安装创建一个新的数据库和用户。 创建一个名为'suitecrm_db'的数据库和一个新的用户'crmadmin',密码为'hakase-labs123'。 连接到mysql shell并运行下面的mysql查询。

mysql -u root -p
Type your password:

CREATE DATABASE suitecrm_db;
CREATE USER 'crmadmin'@'localhost' IDENTIFIED BY 'hakase-labs123';
GRANT ALL PRIVILEGES ON suitecrm_db.* TO 'crmadmin'@'localhost';
FLUSH PRIVILEGES;

安装并配置MariaDB数据库

用于SuiteCRM安装的MariaDB数据库配置已完成。

第4步 - 下载和配置SuiteCRM

在这一步中,我们将执行一些将为SuiteCRM安装准备系统的任务。 我们将下载SuiteCRM源代码,配置UFW防火墙,生成Letsencrypt证书以及为SuiteCRM配置nginx虚拟主机。

- 下载SuiteCRM源代码

suiteCRM源代码在Github上可用。 确保你的系统上安装了git命令。 或者,如果您没有git包,请使用下面的apt命令进行安装。

apt install -y git

现在进入“/ opt”目录,使用下面的git clone命令克隆版本库。

cd /opt/
git clone https://github.com/salesagility/SuiteCRM.git suitecrm

转到suitecrm目录并创建一个新的“缓存”目录。 然后更改一些文件和目录的权限,最后,我们需要将“suitecrm”目录的所有权权限更改为“www-data”用户和组。

cd /opt/suitecrm
mkdir -p /opt/suitecrm/cache
chmod -R 775 cache custom modules themes data upload config_override.php
chown www-data:www-data -R /opt/suitecrm

下载并安装SuiteCRM

SuiteCRM源代码已被下载。

- 配置UFW防火墙

在Ubuntu上,我们将使用ufw防火墙。 使用ufw命令打开新的端口HTTP,HTTPS和SSH,如下所示。

ufw allow ssh
ufw allow http
ufw allow https

现在启动防火墙,并使用ufw enable命令使其每次在系统启动时启动。

ufw enable

输入'y'并按Enter键启用防火墙。

配置UFW防火墙

如果要检查防火墙状态,请使用ufw status命令。

ufw status

你将得到防火墙状态,包括你添加的端口。

防火墙状态

- 生成Letsencrypt证书

在本教程中,SuiteCRM将使用HTTPS更安全地连接客户端和服务器。 为此,我们将使用Letsencrypt的免费SSL证书。

在生成证书文件之前,我们需要在系统上安装letsencrypt客户端代理。 它在Ubuntu存储库中可用,所以使用下面的apt命令进行安装。

apt install -y letsencrypt

安装letsencrypt之后,我们需要在生成证书文件之前停止nginx服务。

systemctl stop nginx

现在使用下面的letsencrypt命令生成SSL证书文件。

letsencrypt certonly --standalone -d suitecrm.hakase-labs.co

注意: -- standalone选项将在系统上创建一个临时Web服务器,因此我们需要在生成证书文件之前停止Nginx Web服务器。

系统会询问您的电子邮件地址以更新通知。 输入您的电子邮件地址,然后点击“确定”。

创建让我们加密证书

对于Letsencrypt协议,请选择“同意”,然后按Enter键。

接受许可协议

新的Letsencrypt SSL已经在'/etc/letsencrypt/live/domain.com'目录中生成。

SSL证书已经生成

- 为SuiteCRM配置Nginx虚拟主机

转到Nginx配置目录,在'sites-available'目录下创建一个新的虚拟主机文件'suitecrm'。

cd /etc/nginx
vim sites-available/suitecrm

在那里粘贴下面的Nginx配置。

# Server Config - hakase-labs
server {
    listen 80;
    server_name suitecrm.hakase-labs.co;

    # Automatically redirect to HTTPS
    return 301 https://$host$request_uri;
}

# Nginx SSL for SuiteCRM
server {

    server_name suitecrm.hakase-labs.co;

    # Enable http2
    listen 443 http2 ssl;

    # SSL Config
    ssl_certificate /etc/letsencrypt/live/suitecrm.hakase-labs.co/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/suitecrm.hakase-labs.co/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!MD5;

    client_max_body_size 50M;

    index index.php index.html index.htm;
    root /opt/suitecrm;

    location / {
        root /opt/suitecrm;
        index index.php index.html index.htm;
    }
 
    error_page 500 502 503 504 /50x.html;
    error_log /var/log/nginx/suitecrm.irsyadf.me.error.log;

    location = /50x.html {
        root /var/www/html;
    }

    ## Images and static content is treated different
    location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|xml|svg|wgoff2)$ {
        access_log off;
        expires max;
        root /opt/suitecrm;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

}

保存并退出。

现在激活虚拟主机,测试配置,并确保没有错误。 然后重新启动Web服务器。

ln -s /etc/nginx/sites-available/suitecrm /etc/nginx/sites-enabled/

nginx -t
systemctl restart nginx

配置虚拟主机文件

SuiteCRM安装的系统配置已完成。

第5步 - SuiteCRM Web安装程序

打开你的浏览器,在地址栏输入SuiteCRM URL,我的地址是suitecrm.hakase-labs.co

您将被重定向到HTTPS连接和install.php页面。

在出现的页面上,您将看到GNU AFFERO许可证 - 勾选“我接受”并点击“下一步”。

SuiteCRM安装程序

现在您将看到关于SuiteCRM安装的系统环境的页面。

确保所有结果都是“OK”,如下图所示。

系统检查

点击“下一步”继续。

接下来是数据库和管理员用户配置。 键入你的数据库信息,dbname'suitecrm_db',dbuser'crmadmin',密码为'hakase-labs123'。 并输入您的管理员用户,密码和电子邮件,如下所示。

数据库和站点配置

滚动到底部并点击“下一步”继续安装SuiteCRM。

等待安装,完成后,您将被重定向到登录页面,如下所示。

SuiteCRM登录

输入您的管理员用户名和密码,然后点击“登录”按钮。

现在您将能够看到默认的SuiteCRM仪表板。

SuiteCRM仪表板

SuiteCRM已经在Ubuntu 16.04系统上安装了Nginx web服务器。

第6步 - 最后一步

最后一步,我们将在www-data用户下创建一个新的Cron作业。

运行下面的命令来添加一个新的Cron作业。

sudo crontab -e -u www-data

粘贴Cron脚本配置如下。

*    *    *    *    *     cd /opt/suitecrm; php -f cron.php > /dev/null 2>&1

保存并退出。 然后重新启动Cron服务。

systemctl restart cron

Ubuntu 16.04上的SuiteCRM安装已经完成。

参考