Установка Snipe-IT в Ubuntu 16.04

В ИТ-индустрии управление активами – это процесс отслеживания активов на протяжении всего их жизненного цикла, включая сбор, обслуживание, хранение и удаление. Хотя активы отличаются друг от друга, основное внимание уделяется отдельным частям аппаратного или программного обеспечения, лицензиям и файловым ресурсам (таким как цифровое искусство).

Snipe-IT – это свободное и открытое приложение, предназначенное для управления ИТ активами. Оно предоставляет веб-интерфейс для отслеживания лицензий, вспомогательных программ, расходных материалов и компонентов. Snipe-IT включает в себя пользовательские учетные записи с настраиваемыми правами на уровне группы, функции отчетности и JSON REST API для подключения, управления и расширения Snipe-IT из командной строки или сторонних приложений.

В этом мануале вы научитесь устанавливать и настраивать Snipe-IT, а также создавать учетную запись администратора.

Требования

1: Подготовка сервера

Перед загрузкой Snipe-IT подготовьте сервер: установите некоторые дополнительные библиотеки PHP, создайте базу данных MySQL и пользователя, которых Snipe-IT будет использовать для хранения своих данных.

Приложение Snipe-IT построено на фреймворке Laravel PHP и, следовательно, ему необходим менеджер зависимостей Composer для установки и управления дополнительными библиотеками PHP.

С помощью apt-get установите composer и unzip, утилиту для распаковки архивов.

sudo apt-get install composer unzip

Теперь установите дополнительные модули PHP, от которых зависит Snipe-IT:

sudo apt-get install php7.0-mbstring php7.0-xml php7.0-mcrypt php7.0-gd php7.0-zip php7.0-curl php7.0-bcmath

Вот зачем нужны эти пакеты:

  • php7.0-mbstring – модуль Multibyte String для обработки языков, которые не могут быть выражены в 256 символах.
  • php7.0-xml – модуль DOM для работы с документами XML через API объектной модели документа (DOM); модуль SimpleXML для преобразования XML в объект, которым можно управлять с помощью селекторов свойств и итераторов массивов; модуль WDDX для обмена данными в формате Web Distributed Data Exchange (WDDX); модуль XML Parser для анализа XML-документов и модуль XSL для выполнения преобразований XSLT.
  • php7.0-mcrypt – модуль Mcrypt для работы с алгоритмами блочного шифрования.
  • php7.0-gd – модуль GD для обработки изображений.
  • php7.0-zip – модуль Zip для управления сжатыми архивами Zip.
  • php7.0-curl – модуль Client URL Library для работы с числами любого размера и точностью до 2147483647 десятичных знаков.

Теперь используйте утилиту командной строки mysql для входа в MySQL в качестве пользователя root.

mysql -u root -p

Создайте нового пользователя MySQL по имени snipeit на localhost (127.0.0.1) и присвойте ему надежный пароль:

create user snipeit@127.0.0.1 identified by 'snipeit_user_password';

Затем создайте БД snipeitdb, в которой Snipe-IT сможет хранить свои данные.

create database snipeitdb;

Передайте все права на БД snipeitdb пользователю snipeit, чтобы приложение Snipe-IT имело права на выполнение всех необходимых операций в базе данных.

grant all on snipeitdb.* to snipeit@127.0.0.1;

Сбросьте привилегии, чтобы обновить параметры:

flush privileges;
exit;

Теперь на сервере есть все необходимые библиотеки, а также БД и пользователь MySQL.

2: Загрузка и настройка Snipe-IT

В соответствии с официальными инструкциями по установке для загрузки последней версии Snipe-IT нужно использовать Git. Поскольку Git может клонировать проект в пустой каталог, используйте ls и просмотрите содержимое каталога, настроенного в виртуальном хосте Nginx сервера Snipe-IT.

ls /var/www/example.com/html/

Если в каталоге есть какие-то файлы, используйте базовые команды навигации и управления файлами Linux, чтобы очистить его. Команда mv перемещает содержимое в другое место, а rm полностью удаляет его.

Читайте также: Основы навигации и управления файлами в Linux

Убедившись, что каталог пуст, загрузите Snipe-IT из официального репозитория GitHub:

git clone https://github.com/snipe/snipe-it /var/www/example.com/html/

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

Cloning into '/var/www/example.com/html/'...
remote: Counting objects: 70975, done.
remote: Compressing objects: 100% (62/62), done.
remote: Total 70975 (delta 20), reused 37 (delta 15), pack-reused 70897
Receiving objects: 100% (70975/70975), 67.04 MiB | 14.35 MiB/s, done.
Resolving deltas: 100% (44264/44264), done.
Checking connectivity... done.

Теперь у вас есть копия Snipe-IT, но перед началом установки нужно предоставить Nginx доступ к каталогам storage, public/uploads и bootstrap/cache, так как здесь Snipe-IT хранит свой кэш, логи и загруженные файлы.

Перейдите в каталог установки:

cd /var/www/example.com/html/

Используйте chown с параметром -R для рекурсивного изменения пользователя и группы на www-data (это пользователь и группа Nginx); это нужно сделать во всех трех каталогах.

Читайте также: Привилегии в Linux: что это и как с этим работать

sudo chown -R www-data:www-data storage
sudo chown -R www-data:www-data public/uploads
sudo chown -R www-data:www-data bootstrap/cache

Затем используйте chmod с флагом -R, чтобы рекурсивно установить права доступа к этим каталогам. Владелец каталогов должен иметь права на чтение, изменение и исполнение, а группа и остальные пользователи – права на чтение и исполнение.

sudo chmod -R 755 storage
sudo chmod -R 755 public/uploads
sudo chmod -R 755 bootstrap/cache

Установив такие права для файлов и каталогов Nginx, можно запустить команду composer install, которая считывает список дополнительных зависимостей в файле composer.json от Snipe-IT, а затем разрешает и устанавливает их в /var/www/example.com/html/vendor.

Опция —no-dev игнорирует зависимости, которые нужны только для разработки в Snipe-IT, а не для запуска приложения.

Опция —prefer-source загружает зависимости из репозиториев с контролем версий, если такие есть.

composer install --no-dev --prefer-source

Вывод сообщает о каждой зависимости, которую пытается установить composer, указывает, была ли зависимость клонирована успешно, и в конце называет путь создания оптимизированных файлов автозагрузки, которые повышают производительность загрузки классов в приложениях PHP с поддержкой Composer.

Loading composer repositories with package information
Installing dependencies from lock file
- Installing symfony/finder (v3.3.10)
Cloning 773e19a491d97926f236942484cb541560ce862d
...
Generating optimized autoload files

Теперь можно приступать к настройке приложения. Для начала скопируйте файл .env.example, который поставляется с Snipe-IT. В нем Snipe-IT хранит переменные среды и другие настройки (часовой пояс, базовый URL, логи). Затем откройте файл .env для редактирования.

cp .env.example .env
nano .env

Найдите в файле:

# --------------------------------------------
# REQUIRED: BASIC APP SETTINGS
# --------------------------------------------
...
APP_URL=null
...

APP_URL указывает базовый URL вашей установки. Замените null своим доменным именем.

# --------------------------------------------
# REQUIRED: BASIC APP SETTINGS
# --------------------------------------------
...
APP_URL=https://example.com
...

Затем найдите такие строки:

...
# --------------------------------------------
# REQUIRED: DATABASE SETTINGS
# --------------------------------------------
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=null
DB_USERNAME=null
DB_PASSWORD=null
DB_PREFIX=null
DB_DUMP_PATH='/usr/bin'
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci
...

Здесь Snipe-IT ищет данные о БД, чтобы подключиться к базе данных MySQL.

Поскольку приложение Snipe-IT по умолчанию настроено для подключения к базе данных MySQL, работающей на локальном хосте, вам не нужно изменять первые две строки.

Вместо DB_DATABASE и DB_USERNAME укажите имя базы данных и пользователя MySQL, предназначенных для работы Snipe-IT. В DB_PASSWORD укажите пароль пользователя.

DB_PREFIX добавляет пользовательские префиксы к именам таблиц в БД Snipe-IT. Этот параметр не требуется, но он может остановить некоторые автоматизированные атаки, которые используют имена таблиц баз данных по умолчанию. Оставьте в этой строке значение null по умолчанию, если вы не хотите добавлять пользовательский префикс.

# --------------------------------------------
# REQUIRED: DATABASE SETTINGS
# --------------------------------------------
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=snipeitdb
DB_USERNAME=snipeit
DB_PASSWORD=snipeit_user_password
DB_PREFIX=null

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

Затем используйте команду artisan migrate, чтобы заполнить MySQL стандартной схемой БД Snipe-IT. С помощью этой команды Laravel выполнит миграцию данных, используя файлы /var/www/example.com/html/database/migrations/.

sudo php artisan migrate

По запросу введите yes, чтобы подтвердить запуск миграции.

В выводе вы найдете данные о миграции в режиме реального времени:

**************************************
*     Application In Production!     *
**************************************
Do you really wish to run this command? (yes/no) [no]:
> yes
Migration table created successfully.
...
Migrated:  2017_11_08_123942_labels_display_company_name

После этого используйте команду artisan key:generate, которая создаст ключ для вашей установки. Laravel запишет этот ключ в строку APP_KEY в файле .env, а Snipe-IT сможет использовать его для шифрования и расшифровки данных (например, токенов сессий).

php artisan key:generate

При появлении запроса введите yes, чтобы подтвердить, что вы хотите сгенерировать ключ приложения.

В выводе появится сгенерированный ключ и сообщение о том, что это значение было записано в файл .env.

**************************************
*     Application In Production!     *
**************************************
Do you really wish to run this command? (yes/no) [no]:
> yes
Application key [base64:rxP+jS3Q8qtM9eBktXtS/zqrrXVY1LEMxoZkbV35Al0=] set successfully.

3: Настройка Nginx

Прежде чем приступить к работе с Snipe-IT в браузере, нужно направить Nginx на корневой каталог веб-приложения и перенаправить входящий трафик на обработчик запросов Snipe-IT.

Откройте файл виртуального хоста Nginx для Snipe-IT.

sudo nano /etc/nginx/sites-available/example.com

Найдите в нем директиву, которая определяет корневой каталог приложения:

server {
...
root /var/www/example.com/html;
...
}

Файлы веб-приложений Snipe-IT находятся в общем каталоге, который был автоматически создан при клонировании проекта из GitHub. Измените настройку Nginx и укажите public в качестве корневого каталога этого виртуального хоста.

server {
...
root /var/www/example.com/html/public;
...
}

Затем найдите стандартный блок location:

server {
...
location / {
try_files $uri $uri/ =404;
}
...
}

Измените этот блок, чтобы он передавал все запросы обработчику Snipe-IT.

server {
...
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
...
}

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

Прежде чем перезапустить веб-сервер, проверьте ошибки в файле:

sudo nginx -t

Если ошибок нет, команда сообщит «syntax is ok». Если же команда найдет ошибки, следуйте ее рекомендациям, чтобы исправить их.

После этого перезапустите Nginx:

sudo systemctl reload nginx

Убедитесь, что веб-сервер успешно перезапустился:

sudo systemctl status nginx

В выводе вы должны увидеть строку active (running).  Если это не так, повторите предыдущие шаги, чтобы устранить проблему, прежде чем продолжить.

Теперь веб-сервер Nginx полностью настроен.

4: Настройка Snipe-IT с помощью Pre-Flight

Чтобы завершить установку, откройте в браузере ссылку:

https://example.com

Это откроет первый экран утилиты Pre-Flight, которая позволяет Snipe-IT провести быструю проверку установки, чтобы убедиться, что все настроено правильно.

На этом экране вы увидите таблицу, в которой перечислены все настройки, протестированные Pre-Flight, результат теста и короткую заметку, описывающую настройку. Зеленая галочка в столбце Valid указывает, что настройка была установлена правильно. Если какая-либо настройка выделена розовым цветом и помечена красным X в столбце Valid, значит, во время проверки с этим параметром возникли проблемы. Следуйте инструкциям Snipe-IT по устранению ошибки, прежде чем продолжить.

Приложение Snipe-IT не было настроено для поддержки для электронной почты. Вы можете нажать кнопку Next: Create Database Tables внизу, в правом углу экрана, чтобы продолжить установку.

На втором экране Snipe-IT проверяет базу данных и при необходимости выполняет миграцию. Поскольку миграция базы данных была выполнена ранее вручную, Pre-Flight сообщит, что база данных уже настроена и в миграции не нуждается.

Нажмите синюю кнопку Next: Create User в правом нижнем углу экрана.

На третьем экране Snipe-IT попросит вас ввести некоторые общие настройки приложения и создать свою первую учетную запись администратора.

В поле Site Name введите метку, которую будет отображать Snipe-IT в верхней части каждого экрана. Это может быть имя вашей компании, например; в этом мануале используется имя 8host Asset Management.

В поле Email Domain введите домен, который Snipe-IT сможет использовать для отправки исходящей почты, а в поле Email Format выберите способ, которым Snipe-IT должен форматировать заголовок To: в исходящих сообщениях.

Заполните поля First Name, Last Name и Email.

Затем введите имя пользователя в поле Username и пароль, который вы хотите использовать, в поле Password. Снова введите тот же пароль в поле Confirm Password и запишите/запомните свои учетные данные, прежде чем продолжить. С их помощью вы сможете войти в Snipe-IT.

Поскольку вы создаете эту учетную запись для себя, вы можете не ставить флажок Email my credentials to the email address above.

Нажмите кнопку Next: Save User в правом углу экрана, как только укажете всю информацию.

На четвертом экране Snipe-IT сохраняет общие настройки приложения, которые вы только что ввели, создает нового пользователя (администратора) и открывает доступ к главной информационной панели.

На этом этапе установка завершена. Вы можете начать использовать Snipe-IT для управления ИТ-активами.

Заключение

Теперь у вас есть установка Snipe-IT, полностью готовая к работе.

Чтобы узнать больше о добавлении и редактировании активов в Snipe-IT, см. официальное руководство по управлению активами.

Чтобы узнать о работе с учетными записями пользователей в Snipe-IT, см. официальную документацию по управлению пользователями.

По всем другим вопросам обращайтесь к официальному руководству Snipe-IT.

Tags: ,