Как установить PHP 5.6 в Ubuntu 16

В Ubuntu 16 при установке PHP командой apt-get install php устанавливается PHP версии 7, по этому чтобы установить PHP 5.6, можно добавить сторонний репозиторий.

Если в системе установлен PHP 7, то удалить все его компоненты можно например так:

sudo apt-get purge `dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`

Теперь добавим сторонний источник:

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php

И установим из него PHP 5.6:

sudo apt-get update
sudo apt-get install php5.6

Аналогично можно установить модули, например:

sudo apt-get install php5.6-mysql php5.6-mcrypt php5.6-mbstring php5.6-xml

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

sudo php -v

Создание RAID при установке Ubuntu

На тесте при установке Ubuntu Server 14.04 LTS создам программный RAID1.
Замечу что, при создании RAID будет автоматически использоваться mdadm.
Подключу к серверу два одинаковых диска (аналогично можно попробовать создать RAID на виртуальной машине например созданной в VirtualBox).

И так, начинаем установку Ubuntu Server, доходим до этапа разметки дисков в котором выберем метод разметки «вручную«.
Выберем первый диск и согласимся «Создать новую пустую таблицу разделов на этом устройстве«, потом аналогично сделаем со вторым.

Вверху появится «Настройка программного RAID«, выберем, согласимся записать изменения на диске которые делали выше.

Выберем «Создать MD устройство»
Далее тип устройства программного RAID, в моем случае RAID1.

Укажем что Активных 2, и резервных 0.
Выберем активные, согласимся сохранить изменения, и жмем «Закончить»

Далее выберем «Автоматическая разметка» и «Авто — Использовать весь диск«, диск для разметки выберем RAID.
Далее выберем «Закончить разметку и записать изменения на диск«, в следующем окне соглашаемся записать изменения.

Все, процесс установки системы продолжится как обычно, но уже на RAID.
В конце установки загрузчик установится на оба диска.

Рекомендую посмотреть статью — mdadm — утилита управления программными RAID массивами.

mdadm — утилита управления программными RAID массивами

Рекомендую прочитать мою статью Описание типов RAID.

Установить mdadm в Ubuntu можно командой:

sudo aptitude install mdadm

В CentOS:

yum install mdadm

На тесте соберу RAID в Ubuntu 14.04, сразу переключусь на root пользователя (далее команды пойдут аналогичны для других операционных систем):

sudo -i

В начале посмотрим список дисков командами (у меня их два несмонтированых одинакового размера /dev/sdb и /dev/sdc):

fdisk -l
df -h
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Создадим RAID 1:

mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

Проверить статус массива и его компонентов можно командами:

cat /proc/mdstat
mdadm --detail /dev/md0
mdadm -E /dev/sdb
mdadm -E /dev/sdc

Создадим файловую систему:

mkfs.ext4 -F /dev/md0

Чтобы примонтировать созданный RAID к текущей системе, создадим директорию и выполним монтирование в нее:

mkdir -p /mnt/md0
mount /dev/md0 /mnt/md0

Посмотрим детали RAID:

mdadm --verbose --detail --scan

Сохраним изменения:

mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
update-initramfs -u
echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | tee -a /etc/fstab

Все, после перезагрузки системы, RAID будет автоматически смонтирован.

Чтобы получать уведомления на электронную почту о состоянии RAID, в файле конфигурации mdadm.conf укажем на какой адрес слать и с какого (чтобы почта отправлялась в системе должен быть установлен например postfix):

MAILADDR email@example.com
MAILFROM mdadm@example.com

Перезапустим сервис мониторинга:

service mdadm restart

Можно настроить некоторые параметры ответив на вопросы командой:

dpkg-reconfigure mdadm

Описание типов RAID

Массивы RAID необходимы для повышения надежности хранения данных и увеличения скорости работы с дисками путем объединения нескольких дисков в один большой. RAID массивы могут быть как аппаратные, аппаратно-программные так и программные.

Опишу несколько типов:

RAID 0 (stripe) — Режим только для повышения производительности при чтении/записи не увеличивающий надежность. Пользователю доступен весь объем дисков, при отказе одного из дисков массив обычно разрушается и восстановить данные почти невозможно.

RAID 1 (зеркало) — На все диски запись выполняется синхронно, они полностью дублируют друг друга. Пользователю доступна половина дискового пространства. Повышается производительность только при чтении, зато это очень надежный способ защитить информацию. Минимальное количество дисков — 2.

RAID 10 (RAID 1+0) — Это массив RAID0 из массивов RAID1. Скоростной как RAID0 и надежный как RAID1. Минимальное количество дисков — четыре и их количество должно быть четным. Пользователю доступна половина дискового пространства.
RAID 0+1 — Массив RAID1 из массивов RAID0. Не популярен, так как хуже преимущества по сравнению с RAID 10.

RAID 1E — Похож на RAID10 с использованием нечётного числа дисков и минимальным количеством — 3.

RAID 5 — Доступное пользователю пространство уменьшается на один диск, надежность ниже RAID 1, производительность повышается при чтении и записи как у RAID 0. При отказе одного из дисков, данные могут быть восстановлены. Минимальное количество дисков — 3.

RAID 6 — Похож на RAID 5 в том числе и быстродействию, но чуть более надежный. Доступное пользователю пространство уменьшается на два диска, информация не теряется при отказе двух дисков. Минимальное количество дисков — 4.

Я лично предпочитаю использовать RAID 1 и RAID 6.

Решение ошибки при компиляции Asterisk «‘pjsip_tcp_transport_cfg’ has no member named ‘sockopt_params’»

Компилировал однажды Asterisk версии 13.13.1 и при выполнении make заметил следующую ошибку:

‘pjsip_tcp_transport_cfg’ has no member named ‘sockopt_params’

pjproject-2.2.1 уже был скомпилирован.

Решил проблему собрав поновее версию pjproject-2.4.5

cd /usr/src
wget http://www.pjsip.org/release/2.4.5/pjproject-2.4.5.tar.bz2
tar -xjvf pjproject-2.4.5.tar.bz2
cd pjproject-2.4.5
CFLAGS='-DPJ_HAS_IPV6=1' ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr
make dep
make
make install

После этого, ошибка исчезла.

Полный сброс настроек на Samsung Galaxy J5

На примере выполню полный сброс настроек Samsung Galaxy J5

1) Сначала необходимо выключить телефон.

2) Нажать одновременно клавишу добавления громкости, домой (овальная внизу) и клавишу включения, держать их все три необходимо до появления логотипа Samsung, потом отпустить.

3) Клавишами громкости выделить в списке «wipe data / factory reset«, а клавишей включения выбрать (возможно также клавишей домой), в следующем окне аналогично выбрать «Yes«. И на последок выбрать «reboot system now»

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

Настройка TDM410P c asterisk

На тесте подключил китайскую плату TDM410P с четырьмя FXO-портами (красными) в PCI слот выключенного Ubuntu сервера.
Для удобства в Ubuntu на root пользователя можно переключится командой:

sudo -i

Включил сервер, выполнил команду которая отображает PCI устройства и шины:

lspci -v

В списке увидел установленную плату:

05:00.0 Ethernet controller: Digium, Inc. Wildcard TDM410 4-port analog card (rev 11)
Subsystem: Digium, Inc. Wildcard TDM410 4-port analog card
Physical Slot: 1
Flags: bus master, fast Back2Back, medium devsel, latency 64, IRQ 16
I/O ports at 1000 [size=256]
Memory at b1900000 (32-bit, non-prefetchable) [size=1K]
Expansion ROM at b1920000 [disabled] [size=128K]
Capabilities:
Kernel driver in use: wctdm24xxp
Kernel modules: wctdm24xxp

Зарегистрируем плату (параметры автоматически пропишутся в конфигурации /etc/dahdi/ и /etc/asterisk/dahdi-channels.conf):

dahdi_span_assignments -v auto
dahdi_genconf -v

Теперь плату можно увидеть командой:

dahdi_scan
dahdi_cfg -vvvv
lsdahdi

Если возникают ошибки при команде dahdi_cfg, то возможно не установлен dahdi, скомпилируем его например как я писал в статье указанной по ссылке ниже, тем более если китайская плата не имеет аппаратного шумоподавления то dahdi по любому придется собирать с Oslec.
Установка эхоподавителя Oslec и DAHDI

В файле /etc/dahdi/modules у меня указаны модули (последний wctdm24xxp как раз предназначен для TDM410P):

dahdi
dahdi_dummy
dahdi_transcode
wctdm24xxp

Подгрузить его можно командой:

modprobe wctdm24xxp

В файле /etc/dahdi/system.conf изменим зону на свою (она может сбросится после выполнения команды dahdi_genconf):

loadzone=ru
defaultzone=ru

В файле /etc/asterisk/modules.conf, в блоке [modules] должна быть строка для автозагрузки модуля chan_dahdi:

load => chan_dahdi.so

Из консоли asterisk его также можно загрузить, но он будет активен до перезапуска asterisk (первая команда открывает консоль asterisk, последняя выходит из него):

asterisk -rvv
module load chan_dahdi
quit

Перезапустить dahdi можно из консоли asterisk командой:

dahdi restart

Проверить статус можно командой (в списке должна быть Wildcard TDM410P):

dahdi show status

Я подключил к 1 порту платы провод с телефонным номером городской аналоговой линии (нумерация портов идет сверху вниз, порт что ближе к PCI слоту четвертый).
Теперь пропишем его в конце файла users.conf для первого порта (канала):

[trunk_1]
group = 1
context = DID_trunk_1
busydetect = yes
busycount = 3
busypattern = 500,500
ringtimeout = 8000
progzone = ru
usecallerid = yes
cidstart = ring
cidsignalling = bell
flash = 750
rxflash = 1250
callerid = asreceived
dahdichan = 1
trunkstyle = analog
allow = all
group = 1
pulsedial=yes
dialtone_detect=yes
signalling = fxs_ks
channel = 1

Замечу что без параметров pulsedial=yes, dialtone_detect=yes у меня не работали исходящие вызовы, а был слышен беспрерывный гудок линии (телефонные линии Укртелеком).

Добавим в конце файла /etc/asterisk/chan_dahdi.conf

context=DID_trunk_1
signalling=fxs_ks
group=1
channel => 1

Перезапустим asterisk чтобы применить изменения:

service asterisk restart

Подключимся к его консоли и посмотрим активен ли добавленный канал:

asterisk -vvr
dahdi show channels
dahdi show channel 1

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

dahdi_monitor 1 -v

В файле extensions.conf укажем куда отправлять входящие звонки (в моём случае на IP телефон с номером 6001):

[DID_trunk_1]
exten => s,1,DIAL(SIP/6001,20)
exten => s,2,Hangup()

Также добавим к диалплану в котором настроены IP телефоны, строки с шаблонами номеров телефонов куда можно звонить (в первой строке например конкретно указан номер 21545, а во второй шаблон под который попадают все номера из пяти цифр начинающиеся на семерку, буква W означает паузу перед набором):

exten => _21545,1,Dial(DAHDI/1/W${EXTEN})
exten => _7XXXX,1,Dial(DAHDI/1/W${EXTEN})

Перезапустить asterisk можно командой:

service asterisk restart

Из консоли asterisk можно по отдельности подгружать конфиги, например sip и extensions:

asterisk -rvv
sip reload
dialplan reload
quit