Как установить SuiteCRM с Nginx и Free Lets Encrypt SSL на Ubuntu 22.04
Это руководство существует для этих версий ОС
- Ubuntu 22.04 (Jammy Jellyfish)
- Ubuntu 16.04 (Xenial Xerus)
На этой странице
- Предпосылки
- Шаг 1. Настройка брандмауэра
- Шаг 2. Установите Nginx
- Шаг 3. Установите и настройте MariaDB
- Шаг 4. Установите PHP и расширения
- Шаг 5. Загрузите SuiteCRM
- Шаг 6. Установка и настройка SSL
- Шаг 7. Настройка Nginx и PHP
- Настройка PHP-FPM
- Настроить размер загрузки PHP
- Настройка 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 завершено. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.