TestRail – Test Case Management Software for QA and Development Teams.
Собственно – этого достаточно для описания)
Ниже – описание процесса его установки на Debian с NGINX, Let’s Encrypt, PHP-FPM, MariaDB и Exim.
Домашняя страница проекта – www.gurock.com/testrail
Документация по установке – тут>>>.
Устанавливать будем на AWS EC2.
Содержание
LEMP и SSL
Логинимся на сервер:
[simterm]
$ ssh [email protected] -i bttrm-testrail-eu-west-1.pem
[/simterm]
Обновляем пакеты и систему:
[simterm]
root@ip-172-31-25-137:/home/admin# apt update && apt upgrade
[/simterm]
Let’s Encrypt
Устанавливаем клиент Let’s Encrypt:
[simterm]
root@ip-172-31-25-137:/home/admin# apt install -y git unzip root@ip-172-31-25-137:/home/admin# git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
[/simterm]
Получаем сертификат через standalone аутентификатор:
[simterm]
root@ip-172-31-25-137:/home/admin# /opt/letsencrypt/letsencrypt-auto certonly -d testrail.example.com ... 1: Spin up a temporary webserver (standalone) 2: Place files in webroot directory (webroot) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1 ... - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/testrail.example.comd/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/testrail.example.com/privkey.pem Your cert will expire on 2019-06-19. ...
[/simterm]
NGINX
Устанавливаем NGINX:
[simterm]
root@ip-172-31-25-137:/home/admin# apt -y install nginx
[/simterm]
К настройке вернёмся чуть позже.
PHP
Добавляем репозиторий для PHP 7.2:
[simterm]
root@ip-172-31-25-137:/home/admin# wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add - OK root@ip-172-31-25-137:/home/admin# echo "deb https://packages.sury.org/php/ stretch main" | sudo tee /etc/apt/sources.list.d/php.list deb https://packages.sury.org/php/ stretch main
[/simterm]
Обновляем списки доступных пакетов:
[simterm]
root@ip-172-31-25-137:/home/admin# apt update
[/simterm]
Устанавливаем PHP и необходимые для TestRail модули:
[simterm]
root@ip-172-31-25-137:/home/admin# apt -y install php7.2 php7.2-fpm php7.2-mysql php7.2-curl php7.2-json php7.2-mbstring php7.2-xml php7.2-zip
[/simterm]
Находим файлы настроек PHP:
[simterm]
root@ip-172-31-25-137:/home/admin# find /etc/ -name php.ini /etc/php/7.2/cli/php.ini /etc/php/7.2/fpm/php.ini
[/simterm]
Обновляем оба два /etc/php/7.2/fpm/php.ini
и /etc/php/7.2/cli/php.ini
, добавляем загрузку библиотек:
... extension=mysql.so extension=curl.so
Установка ionCube
Загружаем его архив:
[simterm]
root@ip-172-31-25-137:/home/admin# cd /tmp/ root@ip-172-31-25-137:/tmp# wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
[/simterm]
Распаковываем его, переносим в /opt
:
[simterm]
root@ip-172-31-25-137:/tmp# tar xfpz ioncube_loaders_lin_x86-64.tar.gz root@ip-172-31-25-137:/tmp# mv ioncube /opt/
[/simterm]
Добавляем zend_extension
в оба ini-файла, как в примере выше:
... extension=mysql.so extension=curl.so zend_extension=/opt/ioncube/ioncube_loader_lin_7.2.so
Настройка NGINX
Генерируем ключ:
[simterm]
root@ip-172-31-25-137:/tmp# openssl dhparam -out /etc/nginx/dhparams.pem 2048
[/simterm]
Добавляем файл настроек виртуалхоста – /etc/nginx/conf.d/testrail.example.com
:
server { listen 80; server_name testrail.example.com; # Lets Encrypt Webroot location ~ /.well-known { root /var/www/html; allow all; } location / { # office1 allow 194.***.***.24/29; # office2 allow 91.***.***.78/32; # arseny home allow 188.***.***.48/32; deny all; return 301 https://testrail.example.com; } } server { listen 443 ssl; server_name testrail.example.com; root /var/www/testrail.example.com; access_log /var/log/nginx/testrail.example.com-access.log; error_log /var/log/nginx/testrail.example.com-error.log warn; # office1 allow 194.***.***.24/29; # office2 allow 91.***.***.78/32; # arseny home allow 188.***.***.48/32; deny all; ssl_certificate /etc/letsencrypt/live/testrail.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/testrail.example.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_dhparam /etc/nginx/dhparams.pem; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; ssl_session_timeout 1d; ssl_stapling on; ssl_stapling_verify on; location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar|otf|ttf)\$ { try_files \$uri =404; } location / { try_files $uri $uri/ /index.php?$args; } location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|js|woff)$ { access_log off; log_not_found off; expires max; } location ~ \.php(?:/|$) { try_files $uri =404; fastcgi_pass unix:/run/php/testrail.example.com.sock; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors on; fastcgi_index index.php; } }
Проверяем синтаксис, перечитываем конфиги:
[simterm]
root@ip-172-31-25-137:/tmp# nginx -t && service nginx reload
[/simterm]
Настройка PHP-FPM
Создаём файл настроек /etc/php/7.2/fpm/pool.d/testrail.example.com.conf
:
[testrail.example.com] user = www-data group = www-data listen = /run/php/testrail.example.com.sock listen.owner = www-data listen.group = www-data pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 ;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f [email protected] ;php_flag[display_errors] = off ;php_admin_value[error_log] = /var/log/fpm-php.www.log ;php_admin_flag[log_errors] = on ;php_admin_value[memory_limit] = 32M
Перезапускаем FPM, проверяем – создался ли новый пул:
[simterm]
root@ip-172-31-25-137:/tmp# service php7.2-fpm restart root@ip-172-31-25-137:/tmp# ps aux | grep fpm root 15008 0.5 2.7 400684 28368 ? Ss 11:00 0:00 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf) www-data 15010 0.0 0.6 400676 6904 ? S 11:00 0:00 php-fpm: pool testrail.example.com www-data 15011 0.0 0.6 400676 6904 ? S 11:00 0:00 php-fpm: pool testrail.example.com www-data 15012 0.0 0.6 400676 6904 ? S 11:00 0:00 php-fpm: pool www www-data 15013 0.0 0.6 400676 6904 ? S 11:00 0:00 php-fpm: pool www
[/simterm]
Проверка PHP
Создаём рабочий каталог:
[simterm]
root@ip-172-31-25-137:/tmp# mkdir -p /var/www/testrail.example.com
[/simterm]
Создаём файл /var/www/testrail.example.com/info.php
:
<?php phpinfo() ?>
Проверяем в браузере:
MySQL
Устанавливаем:
[simterm]
root@ip-172-31-25-137:/tmp# apt -y install mariadb-server
[/simterm]
Запускаем первоначальную настройку:
[simterm]
root@ip-172-31-25-137:/tmp# mysql_secure_installation
[/simterm]
Создаём базу данных:
[simterm]
MariaDB [(none)]> CREATE DATABASE testrail DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> GRANT ALL ON testrail.* TO 'testrail'@'localhost' identified by 'uo***8a'; Query OK, 0 rows affected (0.00 sec)
[/simterm]
Установка TestRail
Триал получаем тут>>>.
В письме придёт ссылка на скачивание файла и сам ключик.
Загружаем архив:
[simterm]
root@ip-172-31-25-137:/tmp# wget https://secure.gurock.com/downloads/testrail/testrail-latest-ion70.zip
[/simterm]
Распаковываем, и переносим в каталог проекта:
[simterm]
root@ip-172-31-25-137:/tmp# unzip testrail-latest-ion70.zip root@ip-172-31-25-137:/tmp# cp -r testrail/* /var/www/testrail.example.com/ root@ip-172-31-25-137:/tmp# chown -R www-data:www-data /var/www/testrail.example.com/
[/simterm]
Открываем в браузере – и продолжаем установку там:
Настраиваем подключение к базе данных:
Создаём каталог логов:
[simterm]
root@ip-172-31-25-137:/tmp# mkdir /var/www/testrail.example.com/logs root@ip-172-31-25-137:/tmp# chown -R www-data:www-data /var/www/testrail.example.com/
[/simterm]
Настраиваем детали проекта:
Почту добавим позже, пропускаем:
Создаём администратора, лицензионный ключ – в письме:
Готово:
Логинимся:
cron-задачи
Далее – добавим выполнение задач по расписанию.
Проверяем работу скрипта task.php
:
[simterm]
root@ip-172-31-25-137:/home/admin# php /var/www/testrail.example.com/task.php root@ip-172-31-25-137:/home/admin# echo $? 0
[/simterm]
Ошибок нет – можно добавлять в cron
:
* * * * * www-data /usr/bin/php /var/www/testrail.example.com/task.php
Exim и почта
Для отправки почты используем локальный Exim.
Устанавливаем:
[simterm]
root@ip-172-31-25-137:/home/admin# apt -y install exim4-base
[/simterm]
Настраиваем его:
[simterm]
root@ip-172-31-25-137:/home/admin# dpkg-reconfigure exim4-config
[/simterm]
Проверяем:
[simterm]
root@ip-172-31-25-137:/home/admin# echo "Exim test" | mailx -s "Exim test" [email protected]
[/simterm]
Переходим в настройки почты самого TestRail – Administration > Site Settings > Email:
Проверить отправку почты можно через форму восстановления пароля.
Готово.