如何在Ubuntu 16.04上使用Nginx安装SuiteCRM
SuiteCRM是一个基于PHP的开源CRM(客户关系管理)软件。 它是流行的CRM软件“SugarCRM”的一个分支,在“SugarCRM”决定停止免费版本的开发之后,它变得越来越流行。 SuiteCRM已被提名为2015年和2016年BOSSIE上最好的开源CRM软件。
在本教程中,我将逐步向您展示如何安装开源CRM“SuiteCRM”。 该软件将运行在带有MariaDB数据库和使用Ubuntu 16.04系统的Nginx Web服务器下。
我们将要做什么
- 安装Nginx Web服务器
- 安装和配置PHP-FPM
- 安装和配置MariaDB
- 下载和配置SuiteCRM
- SuiteCRM Web安装程序
- 最后的步骤
先决条件
- 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
第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
并确保您看到的结果与以下屏幕截图中显示的内容类似。
第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;
用于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源代码已被下载。
- 配置UFW防火墙
在Ubuntu上,我们将使用ufw防火墙。 使用ufw命令打开新的端口HTTP,HTTPS和SSH,如下所示。
ufw allow ssh
ufw allow http
ufw allow https
现在启动防火墙,并使用ufw enable命令使其每次在系统启动时启动。
ufw enable
输入'y'并按Enter键启用防火墙。
如果要检查防火墙状态,请使用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'目录中生成。
- 为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安装的系统环境的页面。
确保所有结果都是“OK”,如下图所示。
点击“下一步”继续。
接下来是数据库和管理员用户配置。 键入你的数据库信息,dbname'suitecrm_db',dbuser'crmadmin',密码为'hakase-labs123'。 并输入您的管理员用户,密码和电子邮件,如下所示。
滚动到底部并点击“下一步”继续安装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安装已经完成。