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

Как установить систему поддержки UVdesk на Ubuntu 22.04


На этой странице

  1. Предпосылки
  2. Шаг 1. Настройка брандмауэра
  3. Шаг 2. Установите Nginx
  4. Шаг 3. Установите PHP и расширения
  5. Шаг 4. Установите MySQL
  6. Шаг 5. Настройка MySQL
  7. Шаг 6. Установите Composer
  8. Шаг 7. Загрузите и настройте UVDesk
  9. Шаг 8. Установка и настройка SSL
  10. Шаг 9. Настройка Nginx и PHP
    1. Настройка PHP-FPM
    2. Настройка 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. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.