Как установить систему поддержки UVdesk на Ubuntu 22.04
На этой странице
- Предпосылки
- Шаг 1. Настройка брандмауэра
- Шаг 2. Установите Nginx
- Шаг 3. Установите PHP и расширения
- Шаг 4. Установите MySQL
- Шаг 5. Настройка MySQL
- Шаг 6. Установите Composer
- Шаг 7. Загрузите и настройте UVDesk
- Шаг 8. Установка и настройка SSL
- Шаг 9. Настройка Nginx и PHP
- Настройка PHP-FPM
- Настройка Nginx
UVdesk — это система службы поддержки на базе Saas с открытым исходным кодом, позволяющая компаниям взаимодействовать со своими клиентами и предлагать круглосуточную поддержку. Его функции включают управление билетами, поддержку базы знаний, готовые ответы и автоматическое создание билетов на основе электронных писем. Возможности Uvdesk можно расширить с помощью внешних модулей. Вы можете автоматизировать определенные действия на основе определенных триггеров, чтобы улучшить рабочий процесс.
В этом руководстве вы узнаете, как установить Uvdesk на сервер Ubuntu 22.04 с использованием Nginx, MySQL и PHP.
Предпосылки
-
A server running Ubuntu 22.04.
-
A Fully Qualified domain name (FQDN) pointing to the server. For our tutorial, we will use the
uvdesk.example.com
domain. -
A non-root user with sudo privileges.
-
Make sure everything is updated.
$ sudo apt update && sudo apt upgrade
-
Install basic utility packages. Some of them may already be installed.
$ sudo apt install wget curl nano unzip -y
Шаг 1. Настройте брандмауэр
Прежде чем устанавливать какие-либо пакеты, первым шагом является настройка брандмауэра для разрешения соединений HTTP и HTTPS.
Проверьте состояние брандмауэра.
$ sudo ufw status
Вы должны увидеть что-то вроде следующего.
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
Разрешить порты HTTP и HTTPS.
$ sudo ufw allow http $ sudo ufw allow https
Проверьте статус еще раз для подтверждения.
$ 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 22.04 поставляется с более старой версией 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.22.0
Запустите сервер Nginx.
$ sudo systemctl start nginx
Шаг 3 — Установите PHP и расширения
Ubuntu 22.04 по умолчанию поставляется с PHP 8.1. Однако UVdesk хорошо работает с PHP 8.0. Чтобы установить PHP 8.0, нам нужно использовать PHP-репозиторий Ondrejs.
Добавьте репозиторий Ondrejs PHP.
$ sudo add-apt-repository ppa:ondrej/php
Обновите список системных репозиториев.
$ sudo apt update
Установите PHP и расширения, необходимые для UVdesk.
$ sudo apt install php8.0 php8.0-curl php8.0-intl php8.0-gd php8.0-xsl php8.0-mbstring php8.0-zip php8.0-xml php8.0-bz2 php8.0-mysql php8.0-soap php8.0-mysql php8.0-fpm php8.0-gmp php8.0-bcmath php8.0-apcu php8.0-redis php8.0-imagick php8.0-imap php8.0-xdebug php8.0-tidy php8.0-ldap php8.0-opcache php8.0-mailparse
Проверьте установленную версию PHP.
$ php --version PHP 8.0.23 (cli) (built: Sep 18 2022 10:25:06) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.0.23, Copyright (c) Zend Technologies with Zend OPcache v8.0.23, Copyright (c), by Zend Technologies with Xdebug v3.1.5, Copyright (c) 2002-2022, by Derick Rethans
Шаг 4 — Установите MySQL
Ubuntu 22.04 поставляется с последней версией MySQL. Вы можете установить его с помощью одной команды.
$ sudo apt install mysql-server
Проверьте версию MySQL.
$ mysql --version mysql Ver 8.0.30-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))
Этот шаг необходим для версий MySQL 8.0.28 и выше. Войдите в оболочку MySQL.
$ sudo mysql
Выполните следующую команду, чтобы установить пароль для вашего пользователя root. Убедитесь, что он состоит из цифр, прописных и строчных букв, а также специальных символов.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';
Выйдите из оболочки.
mysql> exit
Запустите сценарий безопасной установки MySQL.
$ sudo mysql_secure_installation
Сначала вас попросят ввести пароль root. Введите его. Далее вам будет предложено установить компонент проверки пароля. Он проверяет надежность паролей, используемых в MySQL. Нажмите Y, чтобы установить его. Далее вам будет предложено установить уровень политики проверки пароля. Выберите 2, так как он самый сильный.
Securing the MySQL server deployment. Enter password for user root: VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: Y There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2 Using existing password for root. Estimated strength of the password: 100
Затем введите N, чтобы отказаться от смены пароля root. Кроме того, введите Y, чтобы удалить анонимных пользователей, запретить удаленный вход в систему root, удалить тестовую базу данных и перезагрузить таблицы привилегий.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : N ... skipping. By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y Success. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y Success. By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y Success. All done!
Шаг 5 — Настройте MySQL
Войдите в оболочку MySQL. Введите пароль root при появлении запроса.
$ sudo mysql -u root -p
Создайте образец базы данных.
mysql> CREATE DATABASE uvdeskdb;
Создайте учетную запись пользователя SQL.
mysql> CREATE USER 'uvdesk'@'localhost' IDENTIFIED BY 'Your_password2';
Предоставьте пользователю все привилегии в базе данных.
mysql> GRANT ALL PRIVILEGES ON uvdeskdb.* TO 'uvdesk'@'localhost';
Сбросить привилегии пользователя.
mysql> FLUSH PRIVILEGES;
Выйдите из оболочки.
mysql> exit
Шаг 6 - Установите Композитор
UVdesk использует Composer для управления зависимостями. Выполните следующие команды, чтобы загрузить и установить Composer.
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" $ php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" $ php composer-setup.php $ php -r "unlink('composer-setup.php');" $ sudo mv composer.phar /usr/local/bin/composer
Убедитесь, что Composer установлен правильно.
$ composer -V Composer version 2.4.2 2022-09-14 16:11:15
Шаг 7 - Загрузите и настройте UVDesk
Создайте каталог
/var/www
.$ sudo mkdir /var/www
Перейдите в каталог
www
.$ cd /var/www
Дайте текущему пользователю, вошедшему в систему, разрешение на доступ к папке
/var/www
.$ sudo chown $USER:$USER /var/www/
Используйте Composer для установки зависимостей для UVdesk.
$ composer clear-cache $ composer create-project uvdesk/community-skeleton uvdesk.example.com
Установите утилиту списков контроля доступа (acl).
$ sudo apt install acl
Предоставьте разрешения на определенные каталоги и файлы как для вошедшего в систему пользователя $USER, так и для пользователя Nginx nginx.
$ sudo setfacl -dR -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/var $ sudo setfacl -R -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/var $ sudo setfacl -dR -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/public $ sudo setfacl -R -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/public $ sudo setfacl -dR -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/config $ sudo setfacl -R -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/config $ sudo setfacl -dR -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/migrations $ sudo setfacl -R -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/migrations $ sudo setfacl -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/.env
Шаг 8 — Установите и настройте SSL
Нам нужно установить Certbot для создания SSL-сертификата. Вы можете либо установить Certbot, используя репозиторий Ubuntu, либо получить последнюю версию с помощью инструмента Snapd. Мы будем использовать версию Snapd.
Ubuntu 22.04 поставляется с установленным по умолчанию Snapd. Выполните следующие команды, чтобы убедиться, что ваша версия Snapd обновлена.
$ sudo snap install core
Установите Сертбот.
$ sudo snap install --classic certbot
Используйте следующую команду, чтобы убедиться, что команду Certbot можно запустить, создав символическую ссылку на каталог
/usr/bin
.$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Выполните следующую команду, чтобы сгенерировать SSL-сертификат.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m -d uvdesk.example.com
Приведенная выше команда загрузит сертификат в каталог
/etc/letsencrypt/live/uvdesk.example.com
на вашем сервере.Создайте групповой сертификат Диффи-Хеллмана.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Проверьте службу планировщика обновлений Certbot.
$ sudo systemctl list-timers
Вы найдете
snap.certbot.renew.service
в качестве одной из запланированных для запуска служб.NEXT LEFT LAST PASSED UNIT ACTIVATES Mon 2022-09-19 00:28:48 UTC 13min left Sun 2022-09-18 23:31:55 UTC 43min ago fstrim.timer fstrim.service Mon 2022-09-19 00:39:00 UTC 23min left Mon 2022-09-19 00:09:00 UTC 6min ago phpsessionclean.timer phpsessionclean.service Mon 2022-09-19 00:40:00 UTC 24min left n/a n/a snap.certbot.renew.timer snap.certbot.renew.service .......
Чтобы проверить, нормально ли работает обновление SSL, выполните пробный запуск процесса.
$ sudo certbot renew --dry-run
Если вы не видите ошибок, все готово. Ваш сертификат будет продлен автоматически.
Шаг 9 — Настройте 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. ; RPM: apache user chosen to provide access to the same directories as httpd user = nginx ; RPM: Keep a group allowed to write in log dir. group = nginx ...
Найдите в файле строки
listen.owner=www-data
иlisten.group=www-data
и измените их наnginx
.; Set permissions for unix socket, if one is used. In Linux, read/write ; permissions must be set in order to allow connections from a web server. Many ; BSD-derived systems allow connections regardless of permissions. The owner ; and group can be specified either by name or by their numeric IDs. ; Default Values: user and group are set as the running user ; mode is set to 0660 listen.owner = nginx listen.group = nginx
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Увеличьте время выполнения для PHP-FPM и PHP-CLI до 60 секунд.
$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 60/' /etc/php/8.0/fpm/php.ini $ sudo sed -i 's/max_execution_time = 30/max_execution_time = 60/' /etc/php/8.0/cli/php.ini
Увеличьте лимит памяти для PHP-FPM со 128 МБ до 256 МБ.
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.0/fpm/php.ini
Перезапустите службу PHP-FPM.
$ sudo systemctl restart php8.0-fpm
Измените группу каталога сеансов PHP на Nginx.
$ sudo chgrp -R nginx /var/lib/php/session
Настроить Nginx
Создайте и откройте файл
/etc/nginx/conf.d/uvdesk.conf
для редактирования.$ sudo nano /etc/nginx/conf.d/uvdesk.conf
Вставьте в него следующий код.
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name uvdesk.example.com; access_log /var/log/nginx/uvdesk.access.log; error_log /var/log/nginx/uvdesk.error.log; # SSL ssl_certificate /etc/letsencrypt/live/uvdesk.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/uvdesk.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/uvdesk.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; resolver 8.8.8.8; root /var/www/uvdesk/public; index index.php; location / { try_files $uri $uri/ /index.php?$args; } # Pass PHP Scripts To FastCGI Server location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass unix:/run/php/php8.0-fpm.sock; # Depends On The PHP Version fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; try_files $uri =404; } } # enforce HTTPS server { listen 80; listen [::]:80; server_name uvdesk.example.com; return 301 https://$host$request_uri; }
Обратите внимание, что корневой каталог, который будет использоваться в конфигурации Nginx, — это
/var/www/uvdesk/public/
, а не/var/www/uvdesk/
. .Сохраните файл, нажав 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
Шаг 10 - Установите UVDesk
Запустите URL-адрес
https://uvdesk.example.com
в своем браузере, и вы увидите следующий экран.Нажмите кнопку «Начать», чтобы начать процесс установки. Установщик проверит настройки PHP и права доступа к файлам на следующей странице.
Нажмите Приступить, чтобы продолжить. Вам будет предложено заполнить данные базы данных на следующей странице. Введите данные, указанные на шаге 4.
Нажмите Приступить, чтобы продолжить. Далее вам будет предложено создать учетную запись суперадминистратора. Заполните свои данные.
Нажмите Приступить, чтобы продолжить. Далее вам будет предложено настроить веб-сайт, дав имя префиксам Панели Участника и Клиента. Эти префиксы используются в URL-адресах веб-сайтов.
Нажмите Приступить, чтобы продолжить. Вы попадете на последнюю страницу установки.
Щелкните Установить сейчас, чтобы начать установку. После завершения вы получите следующий экран.
Вы можете получить доступ к панели администратора и веб-сайту внешнего интерфейса по указанным ссылкам. Ваша установка UVDesk готова к использованию.
Примечание. Если установка завершается сбоем из-за
ошибки SQL \SQLSTATE[42S02]: базовая таблица или представление не найдены: 1146 Таблица uvdesk.uv_support_role не существует\
, используйте перечисленные команды. ниже, чтобы решить проблему.$ cd /var/www/helpdesk.example.com/ $ php bin/console doctrine:migrations:diff $ php bin/console doctrine:migrations:migrate $ php bin/console c:c $ sudo shutdown -r now
Заключение
Вы установили систему поддержки UVdesk на сервер Ubuntu 22.04 с использованием Nginx, MySQL и PHP. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.