Установка DokuWiki

DokuWiki — движок вики, для создания документации.

На тесте установлю DokuWiki в Ubuntu Server.

Установим необходимые компоненты и активируем модуль Rewrite:

sudo apt-get install apache2 libapache2-mod-php php-xml
sudo a2enmod rewrite

Скачаем архив с последней версией DokuWiki и распакуем его:

cd /var/www/html
sudo wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
sudo tar xvf dokuwiki-stable.tgz
sudo mv dokuwiki-*/ dokuwiki

Выставим правильного владельца на все файлы (под которым работает Apache2):

sudo chown -R www-data:www-data /var/www/html/dokuwiki

Создадим тестовый файл веб конфигурации:

sudo nano /etc/apache2/sites-available/dokuwiki.conf

Добавим в него содержимое (подстроим под свои нужды, для DokuWiki необходимо AllowOverride All):

<VirtualHost *:80>
DocumentRoot /var/www/html/dokuwiki
<Directory /var/www/html/dokuwiki>
Options -Indexes
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>

Активируем веб конфигурацию и перезапустим веб сервер:

sudo a2ensite dokuwiki
sudo service apache2 reload

Откроем в браузере страницу установки http://SERVER/dokuwiki/install.php и проследуем указаниям.

После успешной установки удалим установочный файл:

sudo rm /var/www/html/dokuwiki/install.php

Если необходимо отправлять email сообщения с сервера, то можно установить например Postfix:

sudo apt-get install postfix

Смотрите также:
Установка и настройка Postfix
Установка и настройка веб-сервера Apache2

Решение проблемы «Recipient address rejected: Intentional policy rejection, please try again later»

Указал однажды на alibaba.com email одного из серверов с iRedMail, но письма почему-то не приходили.
В логах /var/log/mail.log увидел следующее сообщение:

postfix/smtpd[15026]: NOQUEUE: reject: RCPT from out171-234.dm.aliyun.com[106.11.171.234]: 451 4.7.1 <info@example.com>: Recipient address rejected: Intentional policy rejection, please try again later; from=<service@notice.alibaba.com> to=<info@example.com> proto=ESMTP helo=<out171-234.dm.aliyun.com>

В MySQL базе iredapd, в таблице greylisting_tracking увидел много записей с alibaba.com.

При желании можно отключить плагин greylisting открыв файл конфигурации:

nano /opt/iredapd/settings.py

И убрав greylisting в строке:

plugins = []

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

sudo service iredapd restart

Но я добавил домен alibaba.com в таблицу greylisting_whitelist_domains и письма сразу начали приходить, пример SQL:

INSERT INTO `greylisting_whitelist_domains` (`id`, `domain`) VALUES (NULL, 'alibaba.com');

Посмотреть список доменов в белом списке можно командой:

cd /opt/iredapd/tools/
python greylisting_admin.py --list-whitelist-domains

Смотрите также:
Белый и черный список iRedAdmin

Автоматическая установка Mikbill в Debian 7

Для теста выполню автоматическую установку Mikbill в Debian 7 и опишу процесс.

Смотрите также мою статью — Как сделать загрузочную флешку с Debian

Переключимся сразу на root пользователя:

su -

Скачаем архив с Mikbill и распакуем его:

wget http://www.mikbill.ru/mikbill.tar.gz
tar xzvf mikbill.tar.gz

Запустим скрипт установки в Debian 7:

cd DISTR/Debian7x
./install_debian7x

В процессе установки ответим на вопросы, IP-адрес страницы биллинга (на котором он будет открываться), домен биллинга, пароли MySQL.

После установки биллинг не открылся в браузере, была ошибка:

502 bad gateway

Для её решения, в текстовом редакторе открыл конфигурацию:

nano /etc/php5/fpm/pool.d/www.conf

Нашел строку:

listen = /var/run/php5-fpm.sock

И заменил её на:

listen = /var/run/php-worker-socket

После перезагрузки системы все заработало.

Проверить работает ли Mikbill и radius можно командами:

netstat -anp|grep 0.0.0.0:2007
netstat -anp|grep 0.0.0.0:1812
netstat -anp|grep 0.0.0.0:1813

Стандартный логин и пароль в панель администратора — admin/admin.
Также необходимо настроить часовой пояс в системе, набрав команду:

dpkg-reconfigure tzdata

И часовой пояс в биллинге и /etc/php5/.

Использование ethtool

ethtool — утилита для настройки сетевых интерфейсов в Linux.

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

sudo apt-get install ethtool

Посмотрим названия сетевых интерфейсов:

ifconfig -a

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

sudo su

Пример просмотра настроек eth0:

ethtool eth0

Пример просмотра информации о драйвере сетевого интерфейса:

ethtool -i eth0

Просмотр статистики сетевого интерфейса:

ethtool -S eth0

Просмотр настроек автосогласования:

ethtool -a eth0

Мигание светодиода 3 секунды на указанном сетевом интерфейсе:

ethtool -p eth0 3

Тест сетевого интерфейса:

ethtool -t eth0 online/offline

Просмотр текущего и максимального размера TX и RX буферов:

ethtool -g eth0

Ручная установка скорости 100 Mb Full Duplex на указанном сетевом интерфейсе (указанные параметры сбросятся после перезапуска системы):

ethtool -s eth0 speed 100 duplex full

Просмотр краткой справки по ethtool:

ethtool -h

Смотрите также:
Настройка сети в Linux
Изменение TX и RX буферов сетевых интерфейсов в Linux
Дистанционное включение компьютера (Wake On LAN)

Изменение TX и RX буферов сетевых интерфейсов в Linux

Установим ethtool если он не установлен:

sudo apt-get install ethtool

Посмотрим имена сетевых интерфейсов:

ifconfig -a

Посмотрим не теряются ли пакеты, например если через сервер проходит большой трафик, то может увеличиваться значение «missed»:

ip -s -s link show

Если теряются, то посмотрим текущий и максимальный размер TX и RX буферов:

ethtool -g eth0

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

sudo ethtool -G eth0 rx 512
sudo ethtool -G eth0 rx 512 tx 512

Чтобы изменения остались после перезапуска сервера, я открыл файл (в редакторе nano комбинация клавиш Ctrl+O служит для сохранения изменений, Ctrl+X для выхода):

sudo nano /etc/network/interfaces

И добавил строку:

post-up /sbin/ethtool -G eth0 rx 512 tx 512

Готово, после перезапуска сервера значения были те что надо.

Смотрите также:
Настройка сети в Linux

IPTables правила для MySQL

Чтобы открыть внешний доступ к MySQL в IPTables необходимо добавить правила:

iptables -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

Чтобы открыть доступ только конкретной сети, например 10.0.0.0/24:

iptables -A INPUT -s 10.0.0.0/24 -p tcp -m tcp --dport 3306 -j ACCEPT

Чтобы удалить правило укажем ту же команду, заменив -A на -D, например:

iptables -D INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

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

sudo iptables -nvL

Замечу, для того чтобы открыть внешний доступ, также нужно в конфигурационном файле my.cnf закомментировать строку «bind-address = 127.0.0.1».

Смотри также:
Настройка IPTables
Другие мои статьи о MySQL

Решение ошибки «md: kicking non-fresh sda1 from array»

Был когда-то случай, выпал из рейда один диск и при загрузке сервера в логах отображалось сообщение:

md: kicking non-fresh sda1 from array

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

В моем случае диск был полностью рабочий, поэтому посмотрев информацию о рейде:

cat /proc/mdstat
mdadm --detail /dev/md0

Вернул его обратно в рейд:

mdadm /dev/md0 -a /dev/sda1

Спустя некоторое время данные синхронизировались на диск и ошибка больше не появлялась.

Смотрите также:
Диагностика HDD используя smartmontools
mdadm — утилита управления программными RAID массивами
Решение проблемы с выпавшими дисками mdadm

IPTables правила для NTP и SNTP

Чтобы открыть доступ NTP клиенту и серверу в IPTables необходимо добавить правила:

sudo iptables -A OUTPUT -p udp -m udp -m multiport --dports 123 -m state --state NEW -j ACCEPT
sudo iptables -A INPUT -m state --state NEW -p udp --dport 123 -j ACCEPT

Чтобы открыть доступ только конкретной сети, например 10.0.0.0/24:

sudo iptables -A OUTPUT -p udp -m udp -m multiport --dports 123 -m state --state NEW -j ACCEPT
sudo iptables -A INPUT -s 10.0.0.0/24 -m state --state NEW -p udp --dport 123 -j ACCEPT

Чтобы удалить правило укажем ту же команду, заменив -A на -D, например:

sudo iptables -D OUTPUT -p udp -m udp -m multiport --dports 123 -m state --state NEW -j ACCEPT
sudo iptables -D INPUT -m state --state NEW -p udp --dport 123 -j ACCEPT

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

sudo iptables -nvL

Смотри также:
Настройка IPTables
Настройка NTP клиента и сервера в Linux

Установка и использование jnettop

jnettop — утилита для просмотра статистики трафика в реальном времени, с сортировкой по хостам/портам.

Команда установки в Ubuntu/Debian:

sudo apt-get install jnettop

Команда установки в CentOS:

sudo yum install jnettop

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

sudo jnettop

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

sudo jnettop -i eth0

Опишу возможные опции запуска:
-h (справка)
-v (просмотр версии)
-c (отключить фильтрацию контента)
-d (записывать отладочную информацию в файл)
-f (чтение конфигурации из файла, если не указано, то файл ищется по пути ~/.jnettop)
-i (захватить пакеты с указанного интерфейса)
—local-aggr [none|host|port|host+port] (установить локальное агрегирование на указанное значение)
—remote-aggr [none|host|port|host+port] (установить удаленное агрегирование на указанное значение)
-n (не преобразовывать IP в DNS имена)
-p (включение неразборчивого режима, чтобы принимать все пакеты которые приходят на сетевой интерфейс)
-s (выбирает одно из правил, определенных в файле конфигурации .jnettop (по его имени))
-x (позволяет специфицировать правило пользовательской фильтрации. это позволяет использовать синтаксис стиля tcpdump. не забудьте включить фильтр в кавычки при запуске из оболочки)

Решение предупреждения Asterisk «leave_voicemail: No more messages possible»

Заметил на одном из серверов следующую ошибку:

WARNING[21992][C-00000b27]: app_voicemail.c:6559 leave_voicemail: No more messages possible

Оказалось что почтовый ящик переполнен голосовыми сообщениями и они перестали сохранятся, в ответ звонящему сообщалось «Голосовой ящик абонента переполнен».

Чтобы решить эту проблему есть несколько вариантов:

1) Удалить сообщения в голосовом ящике, позвонив на номер голосовой почты.

2) Увеличить значение maxmsg в файле voicemail.conf, тем самым увеличив максимальное количество сообщений в почтовом ящике, но опять же он может быть переполнен. После изменений в файле voicemail.conf нужно их применить:

sudo asterisk -rvv
voicemail reload
quit

3) В контексте голосового ящика добавить delete=yes, например:

[voicemailcontext]
207 => 1111,Username,test@example.com,,attach=yes|tz=ua|delete=yes

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

Смотрите также:
Настройка голосовой почты в Asterisk