SCROLL

Посты автора «jakonda»

MediaWiki – это написанная в PHP платформа для разработки вики-сайтов. Рассмотрим установку ее на Debian 8 Jessie/Ubuntu Server 14.04 LTS.

 

[stextbox id=’warning’]В системе уже установлен стек LAMP (Linux, Apache, MySQL, PHP), инструкция как установить LAMP. Все действия будут производится под пользователем root.[/stextbox]

 

Подготовка системы

Перед началом установки обновляем систему до актуального состояния:

apt-get update && sudo apt-get upgrade -y

 

Устанавливаем необходимые зависимости:

apt-get install php5-apcu php5-intl php5-gd php5-cli -y

 

Установка MediaWiki

Скачиваем актуальную версию MediaWiki , распаковываем скачанный архив и перемещаем в каталог веб-сервера:

phpMyAdmin — это приложение для удобного администрирования MySQL серверов. Разберем как установить его на Debian 8 Jessie/Ubuntu Server 14.04 и настроить безопасность доступа.

 

Подготовка системы

Перед началом установки обновляем систему до актуального состояния:

apt-get update && sudo apt-get upgrade -y

 

Установка phpMyAdmin

Для установки в терминале вводим:

apt-get install phpmyadmin

В процессе установки, в запросе на какой веб-сервер будет настроен phpMyAdmin, выбираем apache2. В конце установки, в запросе настроить базу данных для phpMyAdmin, нажимаем «Да», вводим пароль от учетной записи (root) и задаем пароль для доступа к phpMyAdmin.

SSO (Single Sing-on) – позволяет пользователям вошедшим в систему не вводить пароль при авторизации на доменных сетевых ресурсах. Этот же механизм можно запросто прикрепить к Apache, что бы позволить доменным пользователям проходить аутентификацию, например на внутреннем сайте компании, не вводя имя пользователя и пароль.

 

Исходные данные:

  • Контроллер домена (DC1) на Windows Server 2012 R2, домен JAKONDA.LOCAL
  • Веб-сервер (webserver) (Apache 2.4.10) на Debian 10 Buster.

 

[stextbox id=’info’]ИНФОРМАЦИЯ. Данная статья так же применительная будет ко всем debian-like системам.[/stextbox]

 

Подготовка системы

# Обновляем информацию о репозиториях и обновляем установленные пакеты:

apt-get update && apt-get upgrade -y

 

Указываем FQDN (Fully Qualified Domain Name) имя системы, в файле /etc/hostname:

webserver.jakonda.local

Файл /etc/hosts приводим к виду таким образом, чтобы в нём была запись с полным доменным именем компьютера и с коротким именем, ссылающаяся на один из внутренних IP хоста:

127.0.0.1 localhost 
127.0.1.1 webserver.jakonda.local webserver

 

Настраиваем синхронизацию времени с контроллером домена, выполняем установку NTP, выполняем синхронизацию времени с контроллером домена:

apt-get install ntp ntpdate

ntpdate dc1.jakonda.local

[stextbox id=’info’]Более подробно о синхронизации времени на Debian можно почитать в этой статье[/stextbox]

Ioncube Loader это PHP модуль, который предназначен для декодирования файлов, защищенных с помощью IonCube Encoder.

 

Рассмотрим как подключить модуль Ioncube Loader к PHP 7.2 версий в Debian 8 Jessie

 

Установка модуля Ioncube Loader

Скачиваем модуль, распаковываем его и копируем в каталог с остальными модулями PHP:

wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar xzf ioncube_loaders_lin_x86-64.tar.gz
cp ioncube/ioncube_loader_lin_7.2.so /usr/lib/php/20170718/ioncube_loader.so

[stextbox id=’info’]Посмотреть расположение каталога с модулями PHP, можно командой:
php -i | grep extension_dir[/stextbox]

Рассмотрим установку PHP 7.2 в Debian 8 Jessie/Ubuntu Server 14.04. Последние версии PHP, имеются в репозитории (PPA) от Ondřej Surý.

[stextbox id=’info’]ИНФОРМАЦИЯ. Ниже описанные действия так же применимы к Debian 9 Stretch[/stextbox]

 

Добавление PPA в Debian 8, 9

apt-get install apt-transport-https software-properties-common lsb-release ca-certificates -y
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
apt-get update

 

Добавление PPA в Ubuntu 14.04

add-apt-repository ppa:ondrej/php
apt-get update

 

Установка PHP 7.2

Установка базовых пакетов для работы с PHP 7.2:

apt-get install php7.2 php7.2-common php7.2-cli

 

Список всех пакетов для работы с PHP 7.2:

php7.2-bcmath - Bcmath module for PHP
php7.2-bz2 - bzip2 module for PHP
php7.2-cgi - server-side, HTML-embedded scripting language (CGI binary)
php7.2-cli - command-line interpreter for the PHP scripting language
php7.2-common - documentation, examples and common module for PHP
php7.2-curl - CURL module for PHP
php7.2-dba - DBA module for PHP
php7.2-dev - Files for PHP7.2 module development
php7.2-enchant - Enchant module for PHP
php7.2-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary)
php7.2-gd - GD module for PHP
php7.2-gmp - GMP module for PHP
php7.2-imap - IMAP module for PHP
php7.2-interbase - Interbase module for PHP
php7.2-intl - Internationalisation module for PHP
php7.2-json - JSON module for PHP
php7.2-ldap - LDAP module for PHP
php7.2-mbstring - MBSTRING module for PHP
php7.2-mysql - MySQL module for PHP
php7.2-odbc - ODBC module for PHP
php7.2-opcache - Zend OpCache module for PHP
php7.2-pgsql - PostgreSQL module for PHP
php7.2-phpdbg - server-side, HTML-embedded scripting language (PHPDBG binary)
php7.2-pspell - pspell module for PHP
php7.2-readline - readline module for PHP
php7.2-recode - recode module for PHP
php7.2-snmp - SNMP module for PHP
php7.2-soap - SOAP module for PHP
php7.2-sodium - libsodium module for PHP
php7.2-sqlite3 - SQLite3 module for PHP
php7.2-sybase - Sybase module for PHP
php7.2-tidy - tidy module for PHP
php7.2-xml - DOM, SimpleXML, WDDX, XML, and XSL module for PHP
php7.2-xmlrpc - XMLRPC-EPI module for PHP
php7.2-xsl - XSL module for PHP (dummy)
php7.2-zip - Zip module for PHP

По-умолчанию кодировка в MySQL (5.5) сервере, установлена latin1, рассмотрим как ее изменить на utf-8. Данная инструкция применима ко всем разновидностям Linux, но выполнятся настройка будет на Debian 8 Jessie.

 

Останавливаем работу сервера MySQL, добавляем следующие параметры в файл конфигурации /etc/mysql/my.cnf:

service mysql stop

[client]
default-character-set = utf8

[mysqld]
init_connect="SET NAMES utf8"
character-set-server = utf8
collation-server = utf8_unicode_ci

 

Запускаем сервер MySQL и в консоли MySQL проверяем установленную кодировку по-умолчанию:

service mysql start

mysql -uroot -p

show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

SHOW VARIABLES LIKE 'collation%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_unicode_ci |
| collation_server     | utf8_unicode_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

Разберем как делать резервную копию системы контроля заявок OTRS. Разработчики системы, позаботились за ранее о резервировании и восстановление данных системы, создав специальные  скрипты.

 

Скрипты резервирования (backup.pl) и восстановления (restore.pl) находятся в /opt/otrs/scripts (каталог OTRS может отличатся, в зависимости куда он у вас установлен).

 

Резервное копирование

Синтаксис использования скриптов (backup.pl):

backup.pl -d /data_backup_dir/ [-c gzip|bzip2] [-r 30] [-t fullbackup|nofullbackup|dbonly]

 

Для создания полной резервной копии выполните команду:

./backup.pl -d /backup/
Backup /backup//2010-09-07_14-28/Config.tar.gz ... done
Backup /backup//2010-09-07_14-28/Application.tar.gz ... done
Dump MySQL rdbms ... done
Compress SQL-file... done

Разберем как интегрировать OTRS с Active Directory. Рассмотрим два варианта аутентификации, обычная и прозрачная (SSO).

 

Исходные данные:

  • Развернутая система OTRS 6.0.5 (по этой статье)
  • Домен контроллер Windows Server 2012 R2 (JAKONDA.LOCAL)

 

Для интеграции OTRS с Active Directory, необходимо создать пользователя который будет выступать администратором OTRS и с помощью которого будет осуществляться чтение LDAP, для авторизации всех остальных пользователей системы OTRS.

 

Создание пользователя в Active Directory

Создаем пользователя (прим. admin.otrs), снимаем галочку «Требовать смены пароля при следующем входе в систему», выставляем галочки «Запретить смену пароля пользователем», «Срок действия пароля не ограничен». После создания пользователя, в свойствах его, указываем адрес электронной почты.

Разберем как установить открытую систему обработки заявок OTRS 6.0.5 (Open-source Ticket Request System) на Debian 8 Jessie/Ubuntu 14.04 Trusty Tahr.

 

[stextbox id=’warning’]В системе уже установлен стек LAMP (Linux, Apache, MySQL, PHP), инструкция как установить LAMP. Все действия будут производится под пользователем root.[/stextbox]

 

Подготовка системы

Перед началом установки обновляем систему до актуального состояния:

apt-get update && sudo apt-get upgrade -y

Устанавливаем необходимые зависимости:

apt-get install -y libapache2-mod-perl2 libdbd-mysql-perl libtimedate-perl libnet-dns-perl libnet-ldap-perl libio-socket-ssl-perl libpdf-api2-perl libsoap-lite-perl libtext-csv-xs-perl libjson-xs-perl libapache-dbi-perl libxml-libxml-perl libxml-libxslt-perl libyaml-perl libarchive-zip-perl libcrypt-eksblowfish-perl libencode-hanextra-perl libmail-imapclient-perl libtemplate-perl libdatetime-perl libdbd-odbc-perl libdbd-pg-perl libauthen-ntlm-perl -y

Для правильного функционирования доменной среды Active Directory, является корректная работа службы времени Windows (W32Time).

 

Схема работы синхронизации времени в доменной среде Active Directory:

  • Контроллер корневого домена в лесу AD, которому принадлежит FSMО-роль PDC-эмулятора, синхронизируется с внешними источниками точного времени. Он же является источником времени для всех остальных контроллеров этого домена.
  • Контроллеры дочерних доменов в AD, синхронизируют время с вышестоящих контроллеров домена AD.
  • Рядовые члены домена (сервера и рабочие станции) синхронизируют свое время с ближайшим к ним доступным контроллером домена, соблюдая топологию AD.

 

Служба времени в Windows (W32Time) не имеет графического интерфейса и настраивается из командной строки (утилита w32tm), с помощью ветки реестра HKLM\System\CurrentControlSet\Services\W32Time\Parameters и посредством Групповой политики (Group Policy Managment)

 

Для определения какому контроллеру домена принадлежит FSMО-роль PDC-эмулятора, в командной строке от Администратора, выполним команду:

netdom query FSMO

Рассмотрим установку стека LAMP (Linux, Apache, MySQL, PHP) на Debian 8 Jessie.

 

Подготовка системы

Обновляем систему до актуального состояния:

apt-get update && sudo apt-get upgrade -y

 

Установка Apache

Устанавливаем веб-сервер Apache, выполняем команду:

apt-get install apache2-mpm-prefork

 

Для проверки, в браузере открываем http://192.168.1.2 (адрес моей системы), и на экране отобразится стандартная страница Apache.

На развернутом Asterisk 13, во время звонка (входящего\исходящего) в консоли и в логах наблюдаю вывод множественных предупреждений вида:

 

[Jan 27 11:59:26] WARNING[30698][C-00000001]: ast113.c:869 sccp_wrapper_asterisk113_rtp_write: SEP10F311B61D8A: Can't send 10 type frames with SCCP write on channel SCCP/555-00000005
[Jan 27 11:59:27] WARNING[30698][C-00000001]: ast113.c:869 sccp_wrapper_asterisk113_rtp_write: SEP10F311B61D8A: Can't send 10 type frames with SCCP write on channel SCCP/555-00000005
[Jan 27 11:59:28] WARNING[30698][C-00000001]: ast113.c:869 sccp_wrapper_asterisk113_rtp_write: SEP10F311B61D8A: Can't send 10 type frames with SCCP write on channel SCCP/555-00000005
[Jan 27 11:59:28] WARNING[30698][C-00000001]: ast113.c:869 sccp_wrapper_asterisk113_rtp_write: SEP10F311B61D8A: Can't send 10 type frames with SCCP write on channel SCCP/555-00000005

 

Данные предупреждения возникают не зависимо от того какой протокол связи используется. Предупреждения никак не влияют на текущее соединение, абоненты слышат друг друга, все работает. Только забивается лог этими предупреждениями.

Рассмотрим установку VMware Tools из командной строки Debian/Ubuntu Linux.

 

Монтируем образ компакт-диска VMware Tools, в виртуальную машину. Создаем каталог для монтирования CD-ROM, монтируем CD-ROM в каталог:

sudo mkdir /mnt/cdrom
sudo mount /dev/cdrom /mnt/cdrom

 

Распаковываем дистрибутив VMware Tools

tar xzvf /mnt/cdrom/VMwareTools-x.x.x-xxxx.tar.gz -C /tmp/

[stextbox id=’warning’]Примечание: x.x.x-xxxx — это версия дистрибутива VMware Tools, версия может отличатся в зависимости от вашей версии продукта VMware.[/stextbox]

Однажды столкнувшись с случайным удалением задачи в Redmine, и не возможностью ее восстановления какими либо штатными средствами, пришлось проработать шаги восстановления удаленной задачи из резервной копии базы данных MySQL (Надеюсь все делают резервные копии !?).

 

[stextbox id=’info’]Восстановить задачу представляется возможным только при наличии резервной копии базы данных. На примере будет выполнена процедура восстановления удаленной задачи c ID 81.[/stextbox]

 

Создаем временную базу данных (redmine_old) и восстанавливаем в нее данные из резервной копии.

mysqladmin -u root -p create redmine_old
mysql -u root -p redmine_old < redmine_backup.sql

Инструкция как развернуть Redmine 3.4.3, Subversion (с поддержкой WebDAV) на Debian 8 Jessie. На основе этих инструкций будет рассмотрена интеграция Redmine с SVN.

 

Redmine может отображать содержимое SVN хранилища, вести логирование изменений в хранилище, управление правами доступа к хранилищу на основе своих учетных записей и их подписок к проектам, автоматически создавать SVN хранилища для новых проектов, считывать с текстов информацию с коммитов в SVN проектах.

 

[stextbox id=’info’]Приведенная ниже инструкция основывается на том что используется система Debian 8 Jessie и установлены Redmine 3.4.3 и Subversion 1.8.10 + WebDAV. [/stextbox]

 

Устанавливаем необходимые зависимости:

sudo apt-get install libapache-dbi-perl libapache2-mod-perl2 libdbd-mysql-perl libdigest-sha-perl -y

 

Для авторизации в SVN по учётными записям Redmine, создаем символическую ссылку на скрипт Redmine.pm:

sudo ln -s /opt/redmine/extra/svn/Redmine.pm /usr/lib/x86_64-linux-gnu/perl5/5.20/Apache/Redmine.pm

Для правильной работы системы, необходимо чтобы на ней было правильное время. Следить за временем будет с помощью NTP (Network Time Protocol) — сетевой протокол для синхронизации внутренних часов компьютера с использованием сетей с переменной латентностью.

 

 

Перед началом установки обновляем систему до актуального состояния:

sudo apt-get update && sudo apt-get upgrade -y

 

 

NTP-Client

Устанавливаем NTP-клиент:

sudo apt-get install ntp ntpdate

 

Для настройки NTP-клиента, необходимо указать ему какие сервера синхронизации времени использовать.

 

В файле конфигурации /etc/ntp.conf находим строки:

server 0.debian.pool.ntp.org iburst dynamic
server 1.debian.pool.ntp.org iburst dynamic
server 2.debian.pool.ntp.org iburst dynamic
server 3.debian.pool.ntp.org iburst dynamic

Для жителей РФ вписываем:

server 0.ru.pool.ntp.org iburst dynamic
server 1.ru.pool.ntp.org iburst dynamic
server 2.ru.pool.ntp.org iburst dynamic
server 3.ru.pool.ntp.org iburst dynamic

[stextbox id=’info’]Список серверов синхронизации можно найти на сайте www.pool.ntp.org/zone/@ который рекомендуется в конфигурационном файле NTP /etc/ntp.conf[/stextbox]

 

Останавливаем службу NTP:

sudo service ntp stop

Разберем как делать резервные копии базы данных Redmine, а так же прикрепленных файлов. Реализовывать резервное копирование будем с помощью bash-скрипта.

 

Скрипт полностью с комментариями, разобраться и подстроить его под себя, не составит труда:

#!/bin/bash
# 06/01/2018 Jakonda (http://jakondo.ru)

# Резервное копирование (Redmine)

# Путь размещения резервных копий
LOCAL_DIR="/srv/backups/redmine"

EXPIRATION_DAYS=14
DATE=$(date +"%y_%m_%d")

# Создаем каталог для размещения резервных копий, если он не создан
if ! [ -d $LOCAL_DIR ]; then
mkdir $LOCAL_DIR
fi

# Создаем каталог с текущей датой
mkdir -p $LOCAL_DIR/$DATE

# Создание дампа базы данных (mysql)
mysqldump -u root -p512356 redmine | gzip > $LOCAL_DIR/$DATE/redmine_db.sql.gz

# Резервная копия прикрепленных файлов (redmine)
cd /opt/redmine/files/
tar -czvf $LOCAL_DIR/$DATE/redmine_files.tar.gz *
cd

# Удаление старых резервных копий
find $LOCAL_DIR* -mtime +${EXPIRATION_DAYS} -exec rm {} \;
# Удаление пустых каталогов
find $LOCAL_DIR* -type d -empty -exec rmdir {} \;

Если был утерян/забыт пароль учетной записи администратора (по-умолчанию — admin) от системы управления проектами Redmine. То есть несколько вариантов его сбросить, через консоль управления базой данных, через консоль RAILS.

 

Посредством базы данных MySQL

Все пользователи хранятся в базе данных Redmine, в таблице (users). Пользовательские пароли сформированы методом SHA1 + Salt. Хешированный пароль хранится в поле (hashed_password), соль в поле (salt).

 

Для сброса пароля, необходимо обновить значение (hashed_password) и сбросить (salt). Генерируем SHA1 из слова (прим. admin), полученный результат еще раз хешируем. Получаем шифрованный пароль:

echo -n admin | sha1sum | awk '{print $1}'
d033e22ae348aeb5660fc2140aec35850c4da997

echo -n d033e22ae348aeb5660fc2140aec35850c4da997 | sha1sum | awk '{print $1}'
7b2e9f54cdff413fcde01f330af6896c3cd7e6cd

Разберем как установить систему управления проектами Redmine 3.4.3 на Debian 8 Jessie.

 

Подготовка системы

Перед началом установки обновляем систему до актуального состояния:

sudo apt-get update && sudo apt-get upgrade -y

Устанавливаем необходимые зависимости (в ходе установки зависимостей, необходимо будет задать пароль для mysql):

sudo apt-get install apache2 apache2-mpm-prefork mysql-server curl libapache2-mod-passenger libmysqlclient-dev libcurl4-openssl-dev apache2-threaded-dev ruby-rmagick libmagickwand-dev -y

 

Система управления проектами Redmine написана на Ruby, поэтому для ее работы, необходимо установить Ruby подходящей версии и настроить подключение Ruby к Apache2.

В качестве памятки по работе с MySQL посредством командной строки, буду вести список наиболее полезных и часто используемых команд MySQL. (Список будет дополнятся по мере необходимости)

 

Для входа в консоль MySQL на локальной машине:

mysql -u root -p

Для входа в консоль MySQL на удаленной машине:

mysql -u root -p -h 192.168.1.2