Как установить и включить mbstring

Чтобы установить mbstring в Ubuntu/Debian необходимо выполнить команду:

sudo apt-get install php-mbstring

В CentOS так:

sudo yum install php-mbstring

Активировать/деактивировать модуль можно так:

sudo phpenmod mbstring
sudo phpdismod mbstring

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

sudo service apache2 restart

Посмотрим активирован ли mbstring:

php -i | grep -i mbstring

Изменение connect_timeout в MySQL

connect_timeout — количество секунд, в течение которых сервер mysql ожидает пакет подключения, прежде чем прервать соединение.

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

mysql -u USER -p
show variables like "connect_timeout";
quit;

Значение connect_timeout можно указать в файле /etc/mysql/my.cnf, например:

[mysqld]
connect_timeout=10

В реальном времени можно изменить выполнив SQL запрос (после перезапуска MySQL оно сбросится на стандартное или указанное в файле конфигурации):

SET GLOBAL connect_timeout=10;

Стандартное значение равно 10, минимальное — 2, максимальное 31536000.

Изменение wait_timeout и interactive_timeout в MySQL

wait_timeout — Количество секунд, в течение которых сервер ждет активности в неинтерактивном соединении, прежде чем закрыть его.
В момент соединения значение wait_timeout берется из глобального значения wait_timeout или interactive_timeout в зависимости от типа клиента (как определено опцией CLIENT_INTERACTIVE connect для mysql_real_connect ())

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

mysql -u USER -p
show variables like "wait_timeout";
show variables like "interactive_timeout";
quit;

По умолчанию значения wait_timeout и interactive_timeout равняются 28800 секунд = 8 часов.
Минимально можно установить 1, максимум — 31536000, максимум (для Windows) — 2147483.

Можно изменить значение wait_timeout выполнив SQL запрос, например:

set global wait_timeout = 28800;
set global interactive_timeout = 28800;

Чтобы установленное значение не сбросилось, его нужно указать в файле /etc/mysql/my.cnf, в блоке mysqld:

[mysqld]
wait_timeout = 28800
interactive_timeout = 28800

Контроль доступа Apache2

Контроль доступа Apache2 версии 2.4 немного отличается от 2.2, например чтобы разрешить доступ всем, в версии 2.4 нужно указывать:

Require all granted

Разрешить доступ указанным IP-адресам:

Require local
Require ip 192.168.56.1 192.168.22.10

Разрешить всем кроме указанного IP:

Require all granted
Require not ip 192.168.56.1

Разрешить указанному хосту:

Require host example.com

Запретить всем:

Require all denied

А в версии Apache2 2.2, разрешить доступ всем так:

Order allow,deny
Allow from all

Запретить всем:

Order deny,allow
Deny from all

Разрешить доступ указанным IP:

Order allow,deny
Allow from 192.168.56.1 192.168.22.10

Разрешить указанному хосту:

Order Deny,Allow
Deny from all
Allow from example.com

После изменений в конфигурации Apache2 необходима перезагрузка (если изменения были в файле .htaccess, то перезагрузка не требуется):

sudo service apache2 restart

Смотрите также:
Использование .htaccess

Как удалить iRedMail

Приведу пример удаления iRedMail.
На тесте удалю установленный iRedMail 0.9.7 с Ubuntu Server 16.04 используя скрипт удаления — clear_iredmail.

Перейдем в директорию tools установщика iRedMail, сохраним в нее скрипт, в моем случае это:

cd /root/iRedMail-0.9.7/tools/
wget https://ixnfo.com/wp-content/uploads/2017/08/clear_iredmail.zip
unzip clear_iredmail.zip

Сделаем его исполняемым:

chmod +x clear_iredmail.sh

И запустим:

bash clear_iredmail.sh

Скрипт удалит mysql, ssl, amavisd, clamav, spamassassin, dovecot, postfix, iredapd, пользователей и т.д., нужно быть осторожным если на сервере установлено еще что-то кроме iRedMail.
В коде скрипта можно увидеть поэтапно расписанный процесс удаления iRedMail.

Решение ошибки host NAME greeted me with my own hostname NAME

Заметил однажды на одном сервере, что Postfix не всегда отправляет письма, в логах была следующая ошибка:

warning: host NAME[192.168.5.5]:25 greeted me with my own hostname NAME

Посмотрев имя хоста:

hostname -f

Обнаружил что оно не правильное и совпадает с тем на которое шлется почта!

Изменил имя хоста на правильное в следующих файлах (в редакторе nano Ctrl+X для выхода, y/n для сохранения или отмены изменений):

sudo nano /etc/hostname
sudo nano /etc/postfix/main.cf
sudo nano /etc/hosts

Все, после этого ошибка не появлялась и почта успешно доставлялась.

Как отключить обновления Windows 10

Опишу несколько вариантов отключения обновлений Windows 10:

1) Отключим службу обновления.
Откроем окно «Службы» через Панель управления либо нажмем комбинацию клавиш Win+R и в окне «Выполнить» введем:

services.msc

В списке служб, обычно в конце найдем «Центр обновления Windows» (Windows Update), нажмем по нему левой кнопкой мыши два раза, в открывшемся окне выберем «Тип запуска: Отключена» и нажмем кнопку «Остановить«, после этого нажмем «ОК» и закроем окна.

2) Можно отключить автоматическую загрузку драйверов из интернета.
Клавишами Win+R откроем окно «Выполнить» и введем:

rundll32 newdev.dll,DeviceInternetSettingUi

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

3) Можно скрыть обновления запустив официальную утилиту Show or hide updates и нажав «Hide updates«.

4) Также можно для любого сетевого подключения включить переключатель «Задать как лимитное подключение«, открыв «Параметры» — «Сеть и интернет» и выбрав нужное сетевое подключение, после этого Windows не будет скачивать обновления по через это сетевое подключение.

5) Откроем «Редактор локальной групповой политики», нажав клавиши Win+R и введя:

gpedit.msc

Выберем «Конфигурация компьютера» -> «Административные шаблоны» -> «Компоненты Windows» -> «Центр обновления Windows«, потом справа «Настройка автоматического обновления«. В открывшемся окне выберем «Включено» и желаемый параметр, например «уведомление о загрузке и Автоматическая установка«.

Решение ошибки «Service virtual port has existed already»

Заметил однажды на Huawei MA5683T при добавлении ONT, а именно service port, следующую ошибку:

Failure: Service virtual port has existed already

Как и сообщает ошибка, service port уже прописан для данного ONT.
В моём случае просто была опечатка в ONT ID, случайно указал не тот, после указания правильного все прописалось.

А если необходимо прописать несколько service port для одного ONT, то смотрите мою статью — Добавление ONT с trunk портом на Huawei SmartAX MA5683T

Решение ошибки ERROR 1067 (42000) at line 211: Invalid default value for ‘blablabla’

Заметил однажды при импорте sql файла следующую ошибку:

ERROR 1067 (42000) at line 211: Invalid default value for ‘blablabla’

Она возникает в связи с тем что новые версии MySQL сервера используют строгий режим и такие параметры как NO_ZERO_DATE не позволяют вносить в базу значения даты как например ‘0000-00-00’.

Подключимся к mysql серверу:

mysql -u root -p

Выполним запрос который отобразит значения sql_mode:

show variables like 'sql_mode';

Скопируем строку с этими значениями и выйдем из mysql:

exit

Откроем файл конфигурации например в текстовом редакторе nano (Ctrl+X для выхода, y/n для сохранения или отмены изменений):

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

У меня в файле не было sql_mode=, по этому в конце файла вставим строку со скопированными ранее значениями убрав из нее NO_ZERO_IN_DATE,NO_ZERO_DATE, в моё случае получилось следующее:

sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

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

sudo service mysql restart

Все, теперь при импорте данной ошибки не должно быть.