如何在 CentOS 7 上使用 Nginx 安装 SuiteCRM
在此页
- 我们将做什么
- 先决条件
- 第 1 步 - 安装 Nginx Web 服务器
- 第 2 步 - 安装和配置 PHP-FPM
- 第 3 步 - 安装和配置 MariaDB
- 第 4 步 - 下载并配置 SuiteCRM
- 下载 SuiteCRM
- 配置防火墙
- 生成新的 SSL Letsencrypt
- 配置 SuiteCRM Nginx 虚拟主机
SuiteCRM是一款基于PHP的开源CRM(客户关系管理)软件。它是流行的 CRM 软件 SugarCRM 的分支,在后者背后的团队决定停止免费版本的开发后变得更加流行。 SuiteCRM 在 BOSSIE 2015 和 2016 年被提名为最佳开源 CRM 软件。
在本教程中,我们将向您展示如何使用 Nginx 作为 Web 服务器来安装和配置 SuiteCRM。 CRM 软件将在启用 HTTPS 的 LEMP 堆栈下运行。为此,我们将使用 CentOS 7 作为主要操作系统。
我们将要做什么
- 安装 Nginx Web 服务器
- 安装和配置 PHP-FPM
- 安装和配置 MariaDB
- 下载并配置 SuiteCRM
- 通过 Web 安装程序安装 SuiteCRM
- 最终配置
先决条件
- CentOS 7 服务器
- 根权限
第 1 步 - 安装 Nginx Web 服务器
我们必须做的第一步是连接服务器并安装 SuiteCRM 的基本堆栈。使用以下命令通过 SSH 连接到服务器:
ssh
以 root 用户身份连接后,我们需要在我们的系统上安装第三方存储库。具体来说,我们需要在安装 Nginx 之前在系统上安装 EPEL(Extra Package for Enterprise Linux)存储库。
按照以下方式使用 yum 命令安装 EPEL 存储库:
yum -y install epel-release
现在我们可以在系统上安装 Nginx Web 服务器。
yum -y install nginx
如果安装完成,启动该服务并使用 systemctl 命令使其在开机时自动运行,如下所示。
systemctl start nginx
systemctl enable nginxNginx Web 服务器现已安装,默认情况下,它在端口 80 上运行。使用 netstat 或 curl 命令检查它。
netstat -plntu
curl -I localhost确保端口 80 处于 LISTEN 状态,并且 curl 命令在其输出中给出 200 HTTP 状态代码。
第 2 步 - 安装和配置 PHP-FPM
在这一步中,我们将在 CentOS 7 服务器上安装和配置 PHP-FPM 版本 7。默认情况下,centOS 不为新的 PHP 版本 7 提供存储库。因此我们需要为 PHP-FPM 7 安装添加一个不同的存储库。
使用 rpm 命令将新的 PHP 7 存储库 webtatic 添加到系统。
sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
现在使用 yum 命令安装 PHP 7 包和扩展,如下所示。
sudo yum install -y php71w-fpm php71w-cli php71w-common php71w-imap php71w-gd php71w-mbstring php71w-mcrypt php71w-mysql php71w-xml
如果安装完成,使用 vim 编辑默认的 php.ini 配置文件。
vim /etc/php.ini
将 SuiteCRM 安装的最大上传文件大小更改为 100MB。 SuiteCRM 至少需要 6MB 以上。
upload_max_filesize = 100M
取消注释以下 CGI 行并将值更改为 0。
cgi.fix_pathinfo=0
对于会话路径配置,取消注释该行并将路径更改为 /var/lib/session ,如下所示。
session.save_path = "/var/lib/php/session"
就是这样。保存更改并退出 vim。
现在为会话路径创建一个新目录,并将该目录的所有权权限更改为 nginx 用户和组。
mkdir -p /var/lib/php/session
chown -R nginx:nginx /var/lib/php/session接下来,我们需要编辑 php-fpm 配置。为此,转到 /etc/php-fpm.d 目录并编辑配置文件 www.conf。
cd /etc/php-fpm.d/
vim www.conf现在将用户和组行更改为 nginx。
user = nginx
group = nginxPHP-FPM 将在 unix 套接字文件下运行,而不是使用系统端口。
改变监听线:
listen = /var/run/php-fpm/php-fpm.sock
设置 Unix 套接字文件的权限和套接字文件的所有权,如下所示。
listen.owner = nginx
listen.group = nginx
listen.mode = 0660就是这样。保存更改并退出编辑器。
现在启动 PHP-FPM 服务并将其添加为在开机时自动启动。
systemctl start php-fpm
systemctl enable php-fpm这样,PHP-FPM 就安装好了并运行套接字文件。
您可以使用 netstat 命令进行检查:
netstat -pl | grep php
确保您看到了 php-fpm.sock 文件。
第 3 步 - 安装和配置 MariaDB
在此步骤中,我们将安装 MariaDB,然后启动并使其在每次系统启动时启动。最后,我们将为 SuiteCRM 安装创建新的数据库和用户。
使用以下 yum 命令从 CentOS 存储库安装 mariadb。
yum install -y mariadb mariadb-server
使用以下命令启动 MariaDB 服务并启用它以启动启动时间。
systemctl start mariadb
systemctl enable mariadb所以 MariaDB 现在已经安装并运行了。现在,我们需要使用 mysql_secure_installation 命令配置 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 安装创建一个新数据库和一个新用户。为此,使用用户 root 和密码登录到 MySQL shell。
mysql -u root -p
创建一个名为 suitecrm_db 的新数据库和一个密码为 hakase-labs123 的新用户 crmadmin。所有这些都可以使用下面的 mysql 查询来完成。
CREATE DATABASE suitecrm_db;
CREATE USER 'crmadmin'@'localhost' IDENTIFIED BY 'hakase-labs123';
GRANT ALL PRIVILEGES ON suitecrm_db.* TO 'crmadmin'@'localhost';
FLUSH PRIVILEGES;这样SuiteCRM安装的数据库配置就完成了。
第 4 步 - 下载并配置 SuiteCRM
在此步骤中,我们将为 SuiteCRM 安装执行一些任务。我们将下载 SuiteCRM 源代码,配置 Firewalld,生成新的 SSL Letsencrypt,并为 SuiteCRM 配置 nginx 虚拟主机。让我们开始吧。
下载 SuiteCRM
如果还没有,请使用下面的 yum 命令在您的系统上安装 git。
yum -y install git
现在转到 /opt 目录并使用 git 命令下载 SuiteCRM 代码,如下所示。
cd /opt/
git clone https://github.com/salesagility/SuiteCRM.git suitecrm之后创建一个缓存目录,对suitecrm目录下的一些文件和目录进行权限修改,然后将所有suitecrm代码的所有者修改为nginx用户和组。
cd /opt/suitecrm
mkdir -p /opt/suitecrm/cache
chmod -R 775 cache custom modules themes data upload config_override.php
chown nginx:nginx -R /opt/suitecrm因此 suiteCRM 代码已下载到服务器上的 /opt/suitecrm/ 目录中。
配置防火墙
如果您的服务器上没有运行 Firewalld,请使用以下命令安装它。
yum -y install firewalld
启动该服务并使其在引导时运行。
systemctl start firewalld
systemctl enable firewalld接下来,我们需要打开新端口 HTTP 和 HTTPS。它用于 SuiteCRM 访问。为此运行以下 firewall-cmd 命令。
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent现在使用以下命令重新加载 firewalld 规则。
firewall-cmd --reload
所以现在,新的 HTTP 和 HTTPS 端口已添加到 Firewalld。如果要查看详细配置,请运行以下命令。
firewall-cmd --list-all
生成新的 SSL Letsencrypt
在本教程中,我们将使用 SSL 访问 SuiteCRM。为此,我们将使用来自 letsencrypt 的免费 SSL 证书。
要生成新的 SSL letsencrypt 证书,我们需要先将 letsencrypt 命令工具 certbot 安装到我们的系统中。它在 CentOS 存储库中可用。使用以下 yum 命令安装 certbot。
yum -y install certbot
certbot安装完成后,生成suiteCRM域名suitecrm.hakase-labs.co的SSL证书文件。
运行以下命令生成 SSL 证书文件。
certbot certonly --standalone -d suitecrm.hakase-labs.co
系统将询问您用于更新通知的电子邮件地址 - 输入您的电子邮件并按 Enter 键继续。
对于 Letsencrypt TOS,键入 A 同意并再次按 Enter。对于共享电子邮件地址查询,键入 N 并按 Enter。
证书生成完成后,您将得到如下结果。
/etc/letsencrypt/live/domain.com 目录中会生成新的证书文件。
配置 SuiteCRM Nginx 虚拟主机
进入Nginx配置目录/etc/nginx,使用Vim编辑器在conf.d目录下新建文件suitecrm.conf文件。
cd /etc/nginx/
vim conf.d/suitecrm.conf在那里,在下面粘贴 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 "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
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 /usr/share/nginx/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:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}就是这样。保存更改并退出 Vim。
现在测试 nginx 配置并确保没有错误。完成后,重新启动服务。
nginx -t
systemctl restart nginx这样,SuiteCRM 安装的 nginx 配置就完成了。
第 5 步 - SuiteCRM Web 安装程序
打开 Web 浏览器并访问 SuiteCRM 域名:suitecrm.hakase-labs.co。
您将被重定向到 HTTPS 连接 install.php,您将获得有关 GNU AFFERO 许可证的页面。选中我接受框并单击下一步。
在系统环境页面,确保所有结果都OK。
然后单击“下一步”继续。
接下来是管理和数据库配置。键入您的数据库信息,例如 dbname、dbuser 和 dbpassword。对于管理员配置,输入您的用户名、电子邮件和密码。
滚动到底部并单击下一步以继续安装 SuiteCRM。
稍等片刻,安装完成后,您将被重定向到登录页面,如下所示。
在此页面上,键入管理员用户和密码,然后按“登录”按钮。
您将获得如下所示的 SuiteCRM 仪表板。
这样SuiteCRM就安装好了。
第 6 步 - 最终配置
在最后一步中,我们需要向 cronjob 添加配置。
基本上,我们需要创建新的 cron 作为 nginx 用户和组。
sudo crontab -e -u nginx
并粘贴以下配置。
* * * * * cd /opt/suitecrm; php -f cron.php > /dev/null 2>&1
保存并退出。
就是这样。在 CentOS 7 上使用 Nginx Web 服务器的 SuiteCRM 安装已经完成。
参考
- https://suitecrm.com/wiki/index.php/安装