Поиск по сайту:

Как установить SuiteCRM с Nginx и Free Lets Encrypt SSL на Ubuntu 22.04


Это руководство существует для этих версий ОС

  • 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 и т. д.

    В этом посте вы узнаете, как установить SuiteCRM с помощью веб-сервера Nginx и Lets Encrypt SSL в Ubuntu 22.04.

    Предпосылки

    • 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 (простой брандмауэр).

    Проверьте, работает ли брандмауэр.

    $ 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.

    Импортировать ключ подписи Nginxs.

    $ 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
    

    Установите Нгинкс.

    $ sudo apt install nginx
    

    Проверьте установку.

    $ nginx -v
    nginx version: nginx/1.20.2
    

    Включите службу Nginx.

    $ sudo systemctl enable nginx
    

    Шаг 3 — Установите и настройте MariaDB

    Ubuntu 22.04 поставляется с версией 10.6.7 MariaDB. Выполните следующую команду, чтобы установить его.

    $ 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, используя следующую команду.

    $ 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. Для этого нам нужно добавить PHP-репозиторий Ondrejs.

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

    Затем установите PHP и его расширения, необходимые для SuiteCRM.

    $ 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. Вы можете получить ссылку для скачивания с официального сайта SuiteCRM.

    В нашем руководстве мы будем устанавливать SuiteCRM версии 7, поскольку она поддерживается в течение длительного периода времени. Вы можете установить версию v8, если хотите, но первоначально у нее будет более короткий период поддержки.

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

    Создайте корневой веб-каталог для обслуживания 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-сертификат.

    Чтобы установить SSL-сертификат с помощью Lets Encrypt, нам нужно загрузить инструмент Certbot. Для этого мы будем использовать установщик пакета Snapd.

    Установите установщик снапа.

    $ sudo apt install snapd
    

    Убедитесь, что ваша версия Snapd обновлена.

    $ sudo snap install core 
    $ sudo snap refresh core
    

    Установите Сертбот.

    $ sudo snap install --classic certbot
    

    Используйте следующую команду, чтобы убедиться, что команда Certbot выполняется, создав символическую ссылку на каталог /usr/bin.

    $ 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 на вашем сервере.

    Создайте групповой сертификат Диффи-Хеллмана.

    $ 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
    

    Нам нужно установить для пользователя/группы Unix процессов PHP значение 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 МБ. Чтобы увеличить размер загрузки, откройте файл конфигурации PHP для редактирования.

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

    Найдите следующую строку.

    upload_max_filesize = 2M
    

    Измените его значение на 20 МБ, как показано на рисунке.

    upload_max_filesize = 20M
    

    Найдите следующую строку.

    post_max_size = 8M
    

    Измените его значение на 20 МБ, как показано на рисунке.

    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.

    Кроме того, установите настройки языкового стандарта системы.

    После завершения нажмите кнопку «Далее» внизу страницы, чтобы продолжить. Вам будут представлены детали завершения настройки SuiteCRM.

    Нажмите кнопку Далее, чтобы продолжить. Вам будет представлена страница входа.

    Введите учетные данные администратора и нажмите «Войти», чтобы открыть панель управления SuiteCRM.

    Вы можете начать использовать SuiteCRM для управления данными о вашем бизнесе и клиентах.

    Шаг 9 — Настройте задания Cron

    SuiteCRM нуждается в заданиях cron для правильной работы. Отредактируйте файл crontab пользователей nginx.

    $ sudo crontab -e -u nginx
    

    Добавьте следующую строку в конец файла.

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

    Сохраните и закройте файл.

    Заключение

    На этом руководство по установке SuiteCRM с использованием сервера Nginx с Lets Encrypt SSL в Ubuntu 22.04 завершено. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.