如何在 Ubuntu 22.04 上使用 Nginx 和 Free Lets Encrypt SSL 安装 SuiteCRM如何在 Ubuntu 22.04 上使用 Nginx 和 Free Lets Encrypt SSL 安装 SuiteCRM如何在 Ubuntu 22.04 上使用 Nginx 和 Free Lets Encrypt SSL 安装 SuiteCRM如何在 Ubuntu 22.04 上使用 Nginx 和 Free Lets Encrypt SSL 安装 SuiteCRM
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 22.04 上使用 Nginx 和 Free Lets Encrypt SSL 安装 SuiteCRM

本教程适用于这些操作系统版本

  • Ubuntu 22.04(Jammy Jellyfish)
  • Ubuntu 16.04(Xenial Xerus)

在此页

  1. 先决条件
  2. 第 1 步 - 配置防火墙
  3. 第 2 步 - 安装 Nginx
  4. 第 3 步 - 安装和配置 MariaDB
  5. 第 4 步 - 安装 PHP 和扩展
  6. 第 5 步 - 下载 SuiteCRM
  7. 第 6 步 - 安装和配置 SSL
  8. 第 7 步 - 配置 Nginx 和 PHP
    1. 配置PHP-FPM
    2. 配置 PHP 上传大小
    3. 配置 Nginx

    SuiteCRM 是一个用 PHP 编写的开源客户关系管理解决方案。在 SugarCRM 停止发布其社区版后,它是流行的 SugarCRM 软件的一个分支。它用于为所有客户数据创建一个中央存储库,以获得可用于增强和培养业务关系的洞察力。

    它的一些功能包括文档存储、电子邮件营销、日历、社交媒体集成、区域管理、细分、营销自动化、潜在客户资格、内部聊天集成、客户支持、社交 CRM、销售人员自动化、营销活动、移动 CRM 和报告。它可以与第三方 SMTP 中继服务集成,如 Mandrill、Sendgrid、Amazon SES 等。您可以安装插件来扩展 SuiteCRM 的功能。它可以与第三方应用程序集成,如 Mautic、Facebook、Twitter、MailChimp、Zoom、Quickbooks、DocuSign 等。

    在本文中,您将学习如何使用 Nginx Web 服务器安装 SuiteCRM,并在 Ubuntu 22.04 上使用 Lets Encrypt SSL。

    先决条件

    • A server running Ubuntu 20.04.

    • A non-root sudo user.

    • A Fully Qualified Domain Name (FQDN) pointing to the server like suitecrm.example.com.
    • Make sure everything is updated.

      $ sudo apt update
      $ sudo apt upgrade
      
    • Few packages that your system needs.

      $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
      

      Some of these packages may already be installed on your system.

    第 1 步 - 配置防火墙

    第一步是配置防火墙。 Ubuntu 默认带有 ufw (Uncomplicated Firewall)。

    检查防火墙是否正在运行。

    $ sudo ufw status
    

    您将获得以下输出。

    Status: inactive
    

    允许 SSH 端口,以便防火墙在启用时不会中断当前连接。

    $ sudo ufw allow OpenSSH
    

    也允许 HTTP 和 HTTPS 端口。

    $ sudo ufw allow http
    $ sudo ufw allow https
    

    启用防火墙

    $ sudo ufw enable
    Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
    Firewall is active and enabled on system startup
    

    再次检查防火墙的状态。

    $ sudo ufw status
    

    您应该会看到类似的输出。

    Status: active
    
    To                         Action      From
    --                         ------      ----
    OpenSSH                    ALLOW       Anywhere
    80/tcp                     ALLOW       Anywhere
    443                        ALLOW       Anywhere
    OpenSSH (v6)               ALLOW       Anywhere (v6)
    80/tcp (v6)                ALLOW       Anywhere (v6)
    443 (v6)                   ALLOW       Anywhere (v6)
    

    第 2 步 - 安装 Nginx

    Ubuntu 附带旧版本的 Nginx。要安装最新版本,您需要下载官方 Nginx 存储库。

    导入 Nginx 签名密钥。

    $ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    	| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
    

    添加 Nginx 稳定版本的存储库。

    $ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
    http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
        | sudo tee /etc/apt/sources.list.d/nginx.list
    

    更新系统存储库。

    $ sudo apt update
    

    安装 Nginx。

    $ sudo apt install nginx
    

    验证安装。

    $ nginx -v
    nginx version: nginx/1.20.2
    

    启用 Nginx 服务。

    $ sudo systemctl enable nginx
    

    第 3 步 - 安装和配置 MariaDB

    Ubuntu 22.04 附带 MariaDB v10.6.7。运行以下命令来安装它。

    $ sudo apt install mariadb-server
    

    保护 MariaDB 安装。

    $ sudo mysql_secure_installation
    

    您将面临各种提示。回答如下。

    Enter current password for root (enter for none): Press Enter
    Switch to unix_socket authentication [Y/n] Type y
    Change the root password? [Y/n] Type n
    Remove anonymous users? [Y/n] Type y
    Disallow root login remotely? [Y/n] Type y
    Remove test database and access to it? [Y/n] Type y
    Reload privilege tables now? [Y/n] Type y
    

    使用以下命令连接到 MariaDB shell。

    $ sudo mysql
    

    为 SuiteCRM 创建一个新数据库。

    $ CREATE DATABASE suitecrm;
    

    创建一个新的数据库用户并为 t 使用强密码。

    $ CREATE USER 'suitecrmuser'@'localhost' identified by 'yourpassword';
    

    授予用户对数据库的权限。

    $ GRANT ALL PRIVILEGES ON suitecrm.* TO 'suitecrmuser'@'localhost';
    

    刷新所有权限。

    $ FLUSH PRIVILEGES;
    

    退出 MySQL 外壳。

    $ exit
    

    第 4 步 - 安装 PHP 和扩展

    Ubuntu 22.04 附带 PHP 8.1,SuiteCRM 尚不支持。我们需要安装 PHP 8.0。为此,我们需要添加 Ondrejs PHP 存储库。

    $ sudo add-apt-repository ppa:ondrej/php
    

    接下来,安装 SuiteCRM 所需的 PHP 及其扩展。

    $ sudo apt install php-imagick php8.0-fpm php8.0-mysql php8.0-common php8.0-gd php8.0-imap php8.0-curl php8.0-zip php8.0-xml php8.0-mbstring php8.0-bz2 php8.0-intl php8.0-gmp
    

    验证安装。

    $ php --version
    PHP 8.0.18 (cli) (built: May  1 2022 04:42:09) ( NTS )
    Copyright (c) The PHP Group
    Zend Engine v4.0.18, Copyright (c) Zend Technologies
        with Zend OPcache v8.0.18, Copyright (c), by Zend Technologies
    

    第 5 步 - 下载 SuiteCRM

    下载最新稳定版 SuiteCRM。您可以从 SuiteCRMs 官方网站获取下载链接。

    对于我们的教程,我们将安装 SuiteCRM 的 v7,因为它在较长时间内受支持。如果需要,您可以安装 v8 版本,但它最初的支持期较短。

    $ wget -O suitecrm.zip https://suitecrm.com/files/147/SuiteCRM-7.12/614/SuiteCRM-7.12.5.zip
    

    创建一个 Web 根目录来服务 SuiteCRM。 -p 标志在路径中创建顶级目录(如果它们不存在)。

    $ sudo mkdir -p /var/www/
    

    提取下载的 zip 存档。

    $ sudo unzip suitecrm.zip -d /var/www/
    

    -d 标志指定存档的目标目录。

    它将保存在/var/www/SuiteCRM-7.12.5/目录下。我们重命名它以使其更简单。

    $ sudo mv /var/www/SuiteCRM-7.12.5/ /var/www/suitecrm
    

    切换到网络根目录。

    $ cd /var/www/suitecrm
    

    为各种目录设置正确的所有权和权限。

    $ sudo chown -R nginx:nginx .
    $ sudo chmod -R 755 .
    $ sudo chmod -R 775 cache custom modules themes data upload
    $ sudo chmod 775 config_override.php 2>/dev/null
    

    第 6 步 - 安装和配置 SSL

    在配置 Nginx 之前,我们需要设置 SSL 证书。

    要使用 Lets Encrypt 安装 SSL 证书,我们需要下载 Certbot 工具。为此,我们将使用 Snapd 包安装程序。

    安装快照安装程序。

    $ sudo apt install snapd
    

    确保您的 Snapd 版本是最新的。

    $ sudo snap install core 
    $ sudo snap refresh core
    

    安装 Certbot。

    $ sudo snap install --classic certbot
    

    使用以下命令通过创建指向 /usr/bin 目录的符号链接来确保 Certbot 命令运行。

    $ sudo ln -s /snap/bin/certbot /usr/bin/certbot
    

    停止 Nginx 服务器,因为它会干扰 Certbot 工具。

    $ sudo systemctl stop nginx
    

    生成 SSL 证书。

    $ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m  -d suitecrm.example.com
    

    上述命令会将证书下载到服务器上的 /etc/letsencrypt/live/suitecrm.example.com 目录。

    生成 Diffie-Hellman 组证书。

    $ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
    

    为 Lets Encrypt 自动更新创建一个挑战网站根目录。

    $ sudo mkdir -p /var/lib/letsencrypt
    

    创建 Cron 作业以更新 SSL。它将每天运行以检查证书并在需要时更新证书。为此,首先,创建文件 /etc/cron.daily/certbot-renew 并打开它进行编辑。

    $ sudo nano /etc/cron.daily/certbot-renew
    

    粘贴以下代码。

    #!/bin/sh
    certbot renew --cert-name suitecrm.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
    

    通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

    更改任务文件的权限以使其可执行。

    $ sudo chmod +x /etc/cron.daily/certbot-renew
    

    第 7 步 - 配置 Nginx 和 PHP

    配置 PHP-FPM

    打开文件 /etc/php/8.0/fpm/pool.d/www.conf。

    $ sudo nano /etc/php/8.0/fpm/pool.d/www.conf
    

    我们需要将 PHP 进程的 Unix 用户/组设置为 nginx。找到文件中的 user=www-data 和 group=www-data 行并将它们更改为 nginx。

    ...
    ; Unix user/group of processes
    ; Note: The user is mandatory. If the group is not set, the default user's group
    ;       will be used.
    user = nginx
    group = nginx
    ...
    

    另外,在文件中找到 listen.owner=www-data 和 listen.group=www-data 行并将它们更改为 nginx。

    listen.owner = nginx
    listen.group = nginx
    

    通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

    配置 PHP 上传大小

    PHP 设置上传文件大小的限制。 PHP 设置的默认大小为 2 MB。要增加上传大小,请打开 PHP 配置文件进行编辑。

    $ sudo nano /etc/php/8.0/fpm/php.ini
    

    找到以下行。

    upload_max_filesize = 2M
    

    将其值更改为 20MB,如图所示。

    upload_max_filesize = 20M
    

    找到以下行。

    post_max_size = 8M
    

    将其值更改为 20MB,如图所示。

    post_max_size = 20M
    

    找到以下行。

    ;cgi.fix_pathinfo=1
    

    通过删除分号并将其值更改为 0 来取消注释。

    cgi.fix_pathinfo=0
    

    按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

    重启 PHP-fpm 进程。

    $ sudo systemctl restart php8.0-fpm
    

    配置 Nginx

    创建并打开文件 /etc/nginx/conf.d/suitecrm.conf 进行编辑。

    $ sudo nano /etc/nginx/conf.d/suitecrm.conf
    

    将以下代码粘贴到其中。

    server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name suitecrm.example.com;
    
        root /var/www/suitecrm;
        error_log /var/log/nginx/suitecrm.error.log;
        access_log /var/log/nginx/suitecrm.access.log;
        client_max_body_size 20M;
    
        index index.php index.html index.htm;
        
        ssl_certificate      /etc/letsencrypt/live/suitecrm.example.com/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/suitecrm.example.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/suitecrm.example.com/chain.pem;
    
        ssl_session_timeout  5m;
        ssl_session_cache shared:MozSSL:10m;
        ssl_session_tickets off;
    
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
        ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
    
        location / {
            # try to serve file directly, fallback to app.php
            try_files $uri /index.php$is_args$args;
        }
    
        location ~ \.php$ {
            # try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
    
            fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
            #Note: If you install SuiteCRM on iRedMail server, you should use the TCP socket instead.
            #fastcgi_pass 127.0.0.1:9999
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
    
            fastcgi_buffer_size 128k;
            fastcgi_buffers 256 16k;
            fastcgi_busy_buffers_size 256k;
            fastcgi_temp_file_write_size 256k;
        }
    
        # Don't log favicon
        location = /favicon.ico {
            log_not_found off;
            access_log off;
        }
    
        # Don't log robots
        location = /robots.txt  {
            access_log off;
            log_not_found off;
        }
    
        # Deny all attempts to access hidden files/folders such as .htaccess, .htpasswd, .DS_Store (Mac), etc...
        location ~ /\. {
            deny all;
            access_log off;
            log_not_found off;
        }
    
        # A long browser cache lifetime can speed up repeat visits to your page
        location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
            access_log        off;
            log_not_found     off;
            expires           360d;
        }
    }
    
    # enforce HTTPS
    server {
        listen       80;
        listen       [::]:80;
        server_name  suitecrm.example.com;
        return 301   https://$host$request_uri;
    }
    

    完成后按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

    打开文件 /etc/nginx/nginx.conf 进行编辑。

    $ sudo nano /etc/nginx/nginx.conf
    

    在行 include /etc/nginx/conf.d/*.conf; 之前添加以下行。

    server_names_hash_bucket_size  64;
    

    通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

    验证 Nginx 配置文件语法。

    $ 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 服务以启用新配置。

    $ sudo systemctl restart nginx
    

    第 8 步 - 安装和配置 SuiteCRM

    在浏览器中打开站点 https://suitecrm.example.com,您将看到设置向导。

    选中我接受框并单击下一步按钮继续。您将看到检查预安装要求的屏幕。

    如果一切正常,请单击“下一步”按钮继续。

    输入在步骤 3 中设置的数据库凭据。输入 localhost 作为主机名。此外,输入管理员帐户的详细信息并输入 https://suitecrm.example.com 作为实例 URL。

    您可以配置其他设置,例如演示数据、SMTP 服务器设置、品牌、系统区域设置、安全性和数据库设置。

    要启用 SMTP 设置,请展开页面的 SMTP 服务器规范部分并填写适当的值。如果您使用的是 Gmail 或 Microsoft exchange,则可以使用专用按钮来配置它们。对于我们的教程,我们使用 Amazon SES。

    此外,设置系统区域设置。

    完成后,单击页面底部的“下一步”按钮继续。您会看到 SuiteCRMs 配置完成的详细信息。

    单击下一步按钮继续。您将看到登录页面。

    输入管理员帐户凭据并单击登录以打开 SuiteCRM 仪表板。

    您可以开始使用 SuiteCRM 来管理您的业务和客户数据。

    第 9 步 - 设置 Cron 作业

    SuiteCRM 需要 cron 作业才能正常运行。编辑 nginx 用户 crontab 文件。

    $ sudo crontab -e -u nginx
    

    在文件末尾添加以下行。

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

    保存并关闭文件。

    结论

    关于在 Ubuntu 22.04 上使用带有 Lets Encrypt SSL 的 Nginx 服务器安装 SuiteCRM 的教程到此结束。如果您有任何问题,请在下面的评论中发表。

©2015-2025 艾丽卡 support@alaica.com