Настройка MySQL 5.7 на Ubuntu 16.04 под Bitrix

В MySQL 5.7 по-умолчанию включен innodb_file_per_table=1 и с ним вы нормальных «попугаев» по базе данных не получите

Поэтому первым делом делаем дамп базы, выключаем это в /etc/mysql/my.cnf и заливаем обратно

Ниже приведен конфиг на котором только что поставленный битрикс на core i5 выдает под 100 попугаев

root@ubuntu:~# cat /etc/mysql/my.cnf
#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

[mysqld]
sql_mode = ""
performance-schema = false
table_open_cache = 1024
thread_cache_size = 4
query_cache_size = 32M
query_cache_type = 1
tmp_table_size = 128M
max_heap_table_size = 128M
innodb_file_per_table = 0
innodb_buffer_pool_size = 1024M
innodb_flush_log_at_trx_commit = 2
innodb_buffer_pool_instances = 2
innodb_flush_method = O_DIRECT
transaction-isolation = READ-COMMITTED


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

Также требуется увеличить лимиты на число открытых файлов (иначе table_open_cache может просто не отрабатывать)

mkdir /etc/systemd/system/mysql.service.d/
printf '[Service]\nLimitNOFILE = infinity\nLimitMEMLOCK = infinity\n' >> /etc/systemd/system/mysql.service.d/limits.conf


И перезапустить mysql
systemctl daemon-reload
systemctl restart mysql


Также в рекомендую менять только
innodb_buffer_pool_size — для InnoDB
key_buffer_size — для MyISAM
Чтобы база входила в оперативную память, но при этом значение это должно быть меньше чем всего ram на сервере
Настройки всего остального в MySQL часто приносят прямо противоположный результат

Bitrix: pcre.recursion_limit — Замечание. Возможны проблемы в работе сдлинными строками из-за системных ограничений

Битрикс при тестировании конфигурации выдает, что необходимо ulimit -s unlimited для веб-сервера
Решаем проблему следующим образом
CentOS 7:
Создать каталог /etc/systemd/system/httpd.service.d, в нем создаем файл start.conf с содержимым:
[Service]
LimitSTACK=infinity


и перечитать конфигурацию systemd и перезапустить веб-сервер
systemctl daemon-reload
systemctl restart httpd


CentOS 6
Отредактировать файл /etc/init.d/httpd и дописать в него ulimit -s unlimited в секцию start ()

start() {
echo -n $"Starting $prog: "
ulimit -s unlimited
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}


Перезапустить веб-сервер apache
/etc/init.d/httpd restart


update: при использовании PHP 7 надо указать в php.ini pcre.jit=0

WordPress работа по протоколу https (редирект на https с использованием nginx)

Как сделать в wordpress корректный редирект с http на https если используется nginx в качестве front-end чтобы не было бесконечного редиректа

Первый вариант: настройка WordPress

В Nginx к остальным параметрам проксирования добавить строчку:
proxy_set_header X-Forwarded-Protocol "https";

Затем в wp-config.php добавить следующую проверку:

// Проверка https
if( !empty( $_SERVER['HTTP_X_FORWARDED_PROTOCOL'] ) ) {
$_SERVER['HTTPS'] = 'on';
}


Этот код нужно добавлять перед строкой
require_once(ABSPATH . ‘wp-settings.php’);

После этого WordPress понял, что работает по HTTPS, и начал отдавать контент правильно.

Второй вариант: настройка Apache

В Nginx к остальным параметрам проксирования добавить строку:
proxy_set_header X-Forwarded-Proto $scheme;

Затем в виртуалхосте Apache добавить строку:
SetEnvIf X-Forwarded-Proto https HTTPS=on

Этот вариант так же помогает WordPress правильно угадать протокол.

Источник https://kel.mn/wordpress-https/

Тест скорости записи жесткого диска утилитой dd

sync; dd if=/dev/zero of=tempfile bs=1M count=1024; sync

Файл закешировался, проверить скорость его чтения из буфера можно так:

dd if=tempfile of=/dev/null bs=1M count=1024

очищаем буфер, проверяем скорость чтения с диска:

sysctl -w vm.drop_caches=3
dd if=tempfile of=/dev/null bs=1M count=1024


update
говорят правильно мерить скорость записи с ключем oflag=direct
dd bs=1M count=256 if=/dev/zero of=test oflag=direct

Закрыть доступ к xmlrpc в wordpress

Закрываем доступ к xmlrpc.php файлу в wordpress

# cat .htaccess
<Files xmlrpc.php>
Order deny,allow
deny from all
</Files>

Bitrix веб окружение проверка системы ругается на сокеты - Работа с сокетами - Ошибка! Не работает

Bitrix веб окружение проверка системы ругается на сокеты — Работа с сокетами — Ошибка! Не работает

Причины:

1. Домен не резолвится на сервере или резолвится на 127.0.0.1 и запросы не попадают в нужный виртуалхост
Правим /etc/hosts чтобы резолвился на нужный внешний IP адрес сервера

2. Зашли в админку по https, а на сервере стоит самоподписанный/кривой SSL сертификат. Заходить по http или поставить правильный и правильно сертификат.
Проверить работу сертификата можно на https://www.ssllabs.com/ssltest/

Bitrix вебокружение настройка https и редирект http на https

SSL в битрикс веб окружении слушает nginx
Следовательно правим
vi /etc/nginx/ssl/cert.pem

и пишем в него

ключ
сертификат
цепочка


и затем
service nginx restart

А чтобы сделать редирект на https (дабы сайт всегда работал по безопасному протоколу) создадим файл /home/bitrix/www/.htsecure

touch /home/bitrix/www/.htsecure

Редирект на PHP средствами PHP скрипта

<?php
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://mail.example.com/roundcube/');

exit();

?>

Улучшаем работу WiFi 2.4GHz в условиях коллизий от кучи точек вокруг

Когда вокруг куча точек wi-fi и не удается уйти на свободный канал (в сети 2.4GHz лучше использовать не пересекающиеся каналы 1,6,11 и, запрещенный не всеми поддерживающийся 14 (техника apple не поддерживает выше 11, остальные девайсы если сделаны для России — максимум 13й)) то можно улучшить качество сети изменением размера пакетов

Порог фрагмента: 2306 (по-умолчанию 2346)
Порог RTS: 2307 (по-умолчанию 2347)
Интервал Beacon: 50 (по-умолчанию 100)

Теперь ваши пакетики будут отличаться от пакетиков соседей и информацию о сети будет точка рассылать каждые 50ms, а не 100

Перепрошивка wifi модуля Intel 5100 ABG в 5100 AGN под Linux

Попал тут в руки старый ноутбук который не поддерживает 802.11n, что весьма печально, так как у меня на моем роутере включен только этот стандарт, а низкоскоростные отключены.
На windows есть драйвера которые «разблокируют» 802.11n, на Linux же придется перешивать
Как же это сделать? Очень просто, есть проект iwleeprom который все сделает за нас. Прошивка выполнялась под Ubuntu 16.04.1

wget https://github.com/0x90/iwleeprom/archive/master.zip
unzip master.zip
cd iwleeprom-master
make


Для работы с /dev/mem потребуются права суперпользователя

sudo -s

Теперь делаем бэкап EEPROM

./iwleeprom -o eeprom.orig

(выбираем карточку, у меня одна, нажимаем 1)

И патчим карточку (все будет сделано автоматически)

./iwleeprom -p

(выбираем карточку также нажав 1)

После reboot видим (в dmesg) что наш 5100 ABG превратился в 5100 AGN
* Всё на ваш страх и риск, как любая прошивка "железа"

Управление автозагрузкой сервисов в Debian и Ubuntu

Управление загрузкой сервисов с системой инициализации upstart

Проверить статус (отображение статуса всех сервисов)
service --status-all
Добавить в автозапуск
update-rc.d имя_сервиса defaults
Удалить из автозапуска
update-rc.d -f имя_сервиса remove

Управление загрузкой сервисов с системой инициализации systemd

Проверить статус (отображение статуса всех сервисов)
systemctl list-units --type service --all
Проверить включен ли сервис
systemctl is–enabled имя_сервиса
Добавить в автозапуск
systemctl enable имя_сервиса
Удалить из автозапуска
systemctl disable имя_сервиса

Как отключить окно оповещений об обновлениях в Ubuntu и не перезагружаться при обновлениях ядра

В Ubuntu довольно надоедливая система оповещений о наличии обновлений или необходимости перезагрузки после установки обновлений

Я же предпочитаю обновляться вручную при помощи команд

apt-get update && apt-get dist-upgrade

Как же отключить систему оповещений?

# cd /etc/xdg/autostart/
# sudo sed -i "/^Hidden=/{ s/false/true/ ; q }; $ aHidden=true" update-notifier.desktop


А чтобы было всегда свежее ядро без необходимости перезагрузки используйте Ksplice. Для Desktop версий Ubuntu и Fedora доступ к его репозиторию бесплатный.

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

# vi /etc/uptrack/uptrack.conf
autoinstall = yes

Кэширование и сжатие в .htaccess для Google PageSpeed

Google PageSpeed https://developers.google.com/speed/pagespeed/insights/ не проходит проверку на сжатие и кэширование

Параметры, которые ему нужны


# cat .htaccess


AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript image/svg+xml

ExpiresActive On
ExpiresDefault "access plus 7 day"

Настройка почты в Bitrix веб окружении

Почта в битрикс веб-окружении отправляется через msmtp

Чтобы настроить запускаем /root/menu.sh (само запускается при входе) и там жмем

1. Create Management pool of server

и потом после создания pool когда уже в меню будет много менюшек

6. Manage sites in the pool
4. Change email settings on site

Enter site name(default) or 0 for exit:
Email is not configured for site=’default’

Enter from address (ex. bob@example.org): noreply@site.ru
Enter server address or DNS (127.0.0.1):
Enter server port (25):
Do you want to use SMTP authentication on the 127.0.0.1:25? (N|y)
Do you need TLS enable for 127.0.0.1:25 (n|Y): n

То есть ввести только email и выключить TLS

Конфиг будет выглядить как


# cat /home/bitrix/.msmtprc

# smtp account configuration for default
account default
logfile /home/bitrix/msmtp_default.log
host 127.0.0.1
port 25
from noreply@site.ru
keepbcc on
auth off


Проверить работу почты можно в админке Битрикса — Инструменты — Проверка системы

Тюнингуем Apache в CentOS 7

В CentOS 7 apache по дефолту жрет много памяти, делаем так

vi /etc/httpd/conf/httpd.conf

И добавляем в конец файла

Timeout 45
KeepAlive Off

StartServers 2
MinSpareServers 4
MaxSpareServers 8
ServerLimit 50
MaxClients 50
MaxRequestsPerChild 400

Обновить MySQL 5.1 до 5.5 в CentOS 6 не трогая PHP из REMI

Используйте пакет compat-mysql51 https://blog.remirepo.net/pages/English-FAQ#mysql


rpm -e --nodeps mysql-libs

yum install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

yum --enablerepo=remi install compat-mysql51 mysql mysql-server

service mysqld restart
mysql_upgrade

3proxy не ротейтит логи

Проверьте и исправьте права на каталог куда он пишет их, в данном случае на /var/log/3proxy/

# chown nobody:nobody /var/log/3proxy

При этом, изначально файл лога создается с правами root, от чего я не заметил неверных прав и даже спросил автора сей программы, однако после ротации уже пишется с владельцем выставленном в конфиге

А вот и конфиг который прост как автомат калашникова и всегда работает как надо и безопасен так как не под root

users user:CL:password

daemon

log /var/log/3proxy/3proxy.log D
rotate 30

auth strong
proxy -64 -a

setgid 99
setuid 99


Также после установки для безопасности от локальных юзеров сделайте
chmod 600 /etc/3proxy.cfg
chown root:root /etc/3proxy.cfg

ну и права как я писал выше
chmod 750 /var/log/3proxy
chown nobody:nobody /var/log/3proxy



если 3proxy не стартует - значит старая версия 3proxy без поддержки ipv6 и надо в конфиге просто указывать proxy -a

Управление аппаратным RAID Adaptec через консоль

Источник: https://wiki.hetzner.de/index.php/Adaptec_RAID_Controller/ru

Adaptec аппаратный RAID-контроллер

Утилита arcconf служит для управления контроллером из командной строки.

asm (Adaptec Storage Manager) — графическая утилита.

Как можно проверить состояние аппаратного RAID?

Для проверки статуса Adaptec RAID-контроллера должна быть установлена утилита командной строки arcconf. В Rescue-системе она установлена по умолчанию.

Состояние RAID можно получить следующей командой:

arcconf GETCONFIG 1 LD

Состояние жестких дисков можно получить следующей командой:

arcconf GETCONFIG 1 PD

так как при этом выводится масса дополнительной информации, рекомендуется отфильтровать вывод. Например:

arcconf getconfig 1 pd|egrep "Device #|State\>|Reported Location|Reported Channel|S.M.A.R.T. warnings"

Как создать аппаратный RAID?

Вне зависимости от того, требуется ли изменить существующий RAID, или создать новый (после установки RAID-контроллера), его необходимо настроить. Первое, что нужно сделать, это удалить диски из их логических дисков:

arcconf DELETE LOGICALDRIVE

например, так:

arcconf DELETE 1 LOGICALDRIVE 0

или так (для всех дисков):

arcconf DELETE 1 LOGICALDRIVE ALL

Теперь можно создать новый RAID:

arcconf CREATE LOGICALDRIVE [Options] [Channel# ID#]

создание RAID-0 (максимальный размер, диски на Channel 0, Port 0 и 1, без подтверждения):

arcconf CREATE 1 LOGICALDRIVE MAX 0 0 0 0 1 noprompt

создание RAID-1 (максимальный размер, диски на Channel 0, Port 0 и 1, без подтверждения):

arcconf CREATE 1 LOGICALDRIVE MAX 1 0 0 0 1 noprompt

создание RAID-5 (максимальный размер, диски на Channel 0; Port 0, 1 и 2, без подтверждения):

arcconf CREATE 1 LOGICALDRIVE MAX 5 0 0 0 1 0 2 noprompt

создание RAID-10 (максимальный размер, диски на Channel 0; Port 0, 1, 2 и 3, без подтверждения):

arcconf CREATE 1 LOGICALDRIVE MAX 10 0 0 0 1 0 2 0 3 noprompt

JBOD (одиночный диск на Channel 0, Port 2):

arcconf CREATE 1 JBOD 0 2 noprompt

Как при помощи arcconf запустить REBUILD для RAID, находящегося в состоянии DEGRADED?

Для начала необходимо проверить, все ли жёсткие диски определяются:

arcconf GETCONFIG 1 PD

Если нет, то можно запустить ручное сканирование:

arcconf RESCAN 1

состояние RAID должно отображаться как degraded:

root@rescue ~ # arcconf getconfig 1 ld
Controllers found: 1
----------------------------------------------------------------------
Logical device information
----------------------------------------------------------------------
Logical device number 0
Logical device name : Device 0
RAID level : 1
Status of logical device : Degraded
Size : 1428470 MB
Read-cache mode : Enabled
Write-cache mode : Enabled (write-back)
Write-cache setting : Enabled (write-back)
Partitioned : No
Protected by Hot-Spare : No
Bootable : Yes
Failed stripes : No
Power settings : Disabled
--------------------------------------------------------
Logical device segment information
--------------------------------------------------------
Segment 0 : Inconsistent (0,0) 9VS38R1D
Segment 1 : Present (0,1) 9VS38RKE


Может быть необходимо удалить метаданные:

arcconf TASK START 1 DEVICE 0 0 CLEAR

Так как обычно ‘automatic failover’ включен, rebuild должен уже запуститься. В противном случае жёсткий диск добавляется в RAID как Hot-Spare. Rebuild запускается автоматически:

arcconf SETSTATE 1 DEVICE 0 0 HSP LOGICALDRIVE 0

После rebuild RAID-массива на Hot-Spare диск этот диск продолжает быть помечен как Hot-Spare. После замены сбойного диска данные автоматически переносятся на новый диск. С помощью arcconf можно удалить метку Hot-Spare и назначить новый (заменённый) диск как новый Hot-Spare. Подробная информация расположена на сайте Adaptec Adaptec KB5117

Например, настройка Device 0;0 на Controller 1 с ‘Hot-Spare’ на ‘Ready’:

arcconf setstate 1 device 0 0 rdy

Как можно считать значения SMART на жестких дисках в RAID

С помощью модуля sg можно обратиться непосредственно к жёстким дискам на контроллере. Например, для первого жёсткого диска:

smartctl -d sat -a /dev/sg1

В зависимости от операционной системы может потребоваться обновление smartmontools или ядра.

Как восстановить массив

Если массив обнаруживается в состоянии failed или offline, есть шанс форсировать его активацию или создать новый массив без потери данных. Однако, при этом восстановление не гарантируется. Нельзя исключить и потерю данных

При определённых обстоятельствах включение массива online может оказаться возможным с помощью следующей команды:

arcconf SETSTATE LOGICALDRIVE OPTIMAL [ADVANCED

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

arcconf SETSTATE 1 LOGICALDRIVE 0 OPTIMAL ADVANCED nocheck noprompt

Разрешить root логин в PhpMyAdmin в Ubuntu 16.04 в MySQL 5.7

Разрешить

update mysql.user set plugin='mysql_native_password' where user='root';
flush privileges;


Запретить

update mysql.user set plugin='auth_socket' where user='root';
flush privileges;


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

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';

См также https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html