В лог при этом пишется Notice: No suitable function found for UTF-8 encoding in
/var/www/kdn570/html/program/lib/Roundcube/rcube_charset.php on line 276
Решение править скрипт https://www.roundcubeforum.net/index.php?topic=23440.0 у меня не заработало
Помогло обновление с 1.1.10 (штатно в репозитории CentOS 7) до 1.3.3
bitrix выдает ошибку ERR_CONTENT_DECODING_FAILED
bitrix при открытии сайта выдает в браузере ошибку (а скажем через wget нормально открывается)
ERR_CONTENT_DECODING_FAILED
Ошибка в типе содержимого. Страница, которую вы пытаетесь просмотреть, не может быть показана, так как она использует неверную или не поддерживаемую форму компрессии
Лечение: прописать
define('BX_COMPRESSION_DISABLED',true);
в bitrix/php_interface/init.php (dbconf.php если старый и нет такого файла)
ERR_CONTENT_DECODING_FAILED
Ошибка в типе содержимого. Страница, которую вы пытаетесь просмотреть, не может быть показана, так как она использует неверную или не поддерживаемую форму компрессии
Лечение: прописать
define('BX_COMPRESSION_DISABLED',true);
в bitrix/php_interface/init.php (dbconf.php если старый и нет такого файла)
Поставить свежее ядро в Debian 8
Самый простой способ установить ядро в Debian 8 из Debian 9 - это использовать debian-backports
echo 'deb http://deb.debian.org/debian jessie-backports main contrib non-free' >> /etc/apt/sources.list
apt-get update
apt-get -t jessie-backports install linux-image-amd64
Получим более-менее свежее ядро 4.9, которое, в отличие от 3.16, работает, скажем с LSI MegaRAID 9361-4i (с новой прошивкой этот контроллер переименовался в AVAGO MegaRAID)
echo 'deb http://deb.debian.org/debian jessie-backports main contrib non-free' >> /etc/apt/sources.list
apt-get update
apt-get -t jessie-backports install linux-image-amd64
Получим более-менее свежее ядро 4.9, которое, в отличие от 3.16, работает, скажем с LSI MegaRAID 9361-4i (с новой прошивкой этот контроллер переименовался в AVAGO MegaRAID)
Посчитать объем баз данных MySQL
Посчитать объем баз
SELECT table_schema "Data Base Name",
sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB",sum( data_free )/ 1024 / 1024 "Free Space in MB"
FROM information_schema.TABLES
GROUP BY table_schema;
Размеры всех таблиц в БД
SELECT
table_schema as `Database`,
table_name AS `Table`,
round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
FROM information_schema.TABLES
ORDER BY (data_length + index_length) DESC;
Студент 20 с небольшим
лет попал под автобус, и — насмерть. Очнулся на том свете. В кресле
напротив увидел кого-то, похожего на человека, но светящегося изнутри
инфракрасным светом. -Где я?
— Ты в аду, сынок. Но не бойся заранее, здесь на самом деле намного
лучше, чем описывают там, на земле. Вот ты в жизни курил?
Студент опускает глаза: — Да, курил.
— Ну значит, по понедельникам для тебя будет праздник. Это у нас день
курения. Выбор — огромный, от трубки и махорки до дорогих сигар и
кальяна. Курим весь понедельник, до поздней ночи. И пофигу астма и рак —
ты ведь уже умер! А выпить ты любил?
Студент опускает голову: — Не без этого...
— У-у! Тогда готовься к праздникам по вторникам! Этот день мы пьем весь,
с самого утра, от пива и легких вин до самых крепких напитков: самогона
и спирта. И плевать на печень: ты ведь уже умер! А как насчет
наркотиков?
Студент краснеет: — Да, бывало!
— Что ж, повеселишься по средам! У нас это день наркотиков, от самых
легких, до героина и тяжелой синтетики. Хочешь — колись, хочешь — кури, и
не бойся ни ломки, ни передоза, ни ментов — ты ведь уже умер! А с
женщинами?
Студент оживляется: — А как же!
— Тогда оторвешься по четвергам! Это у нас день повального ceкcа. Дело в
том, что женщин в аду в 10 раз больше, чем мужчин, и у тебя будет
супервыбор! А о сифилисе там всяком даже не вспоминай — ты ведь уже
умер! А не был ли ты голубым?
Студент вскидывается: -Нет, что вы!
— М-да-ссс... Вот пятницы тогда станут для тебя настоящим адом!
anekdotov.net
Оптимизация картинок по cron через jpegoptim и optipng
## Optimization jpg
15 22 * * * /usr/bin/find /var/www/*/data/www/ -type f -iregex '.*\.jpe?g' -mtime -1 -exec /usr/bin/jpegoptim --preserve --quiet {} \;
## Optimization png
15 23 * * * /usr/bin/find /var/www/*/data/www/ -type f -iregex '.*\.png' -mtime -1 -exec /usr/bin/optipng --preserve --quiet {} \;
15 22 * * * /usr/bin/find /var/www/*/data/www/ -type f -iregex '.*\.jpe?g' -mtime -1 -exec /usr/bin/jpegoptim --preserve --quiet {} \;
## Optimization png
15 23 * * * /usr/bin/find /var/www/*/data/www/ -type f -iregex '.*\.png' -mtime -1 -exec /usr/bin/optipng --preserve --quiet {} \;
bitrix ошибка : Mysql query error: Unknown or incorrect time zone: 'Europe/Moscow' (400)
bitrix выдает ошибку при открытии сайта на CentOS 7
Mysql query error: Unknown or incorrect time zone: 'Europe/Moscow' (400)
Лечение - создать базу timezone в mysql сервере:
# mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql
Mysql query error: Unknown or incorrect time zone: 'Europe/Moscow' (400)
Лечение - создать базу timezone в mysql сервере:
# mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql
Windows 2016 GPT EFI deploy из под Linux rescue
В статье пойдет речь о том, как подготовить образ windows для развертывания из под Linux systemrescuecd
Производите установку VirtualBox, он позволяет осуществлять загрузку с EFI
Используйте iso-образ windows SW_DVD9_Win_Svr_STD_Core_and_DataCtr_Core_2016_64Bit_English_-3_MLF_X21-30350.ISO и Linux диск systemrescuecd-x86-5.1.1.iso
Создаем виртуальный сервер в virtualbox с диском в 20 Gb (система умещается в 13, а в архиве и того в 5, но потребуется запас для запуска на новом сервере, под дополнительные драйвера или программы если будете их устанавливать)
В настройках виртуального сервера ставите галочку на вкладке Система - Включить EFI
Загружаетесь с iso-образа, он нормально запустится с EFI загрузчика
На этапе когда инсталлятор выведет окно разметки жесткого диска необходимо будет нажать shift+f10 и в окне cmd которое откроется конвертировать диск в GPT
diskpart
sel dis 0
clean
convert gpt
exit
После чего просто нажмите Далее и система поставится на диск с GPT разметкой
Запомните пароль администратора сервера и включите доступ по RDP - включается в Server Manager - Local Server - Remote desktop - Enabled
Установите скрипт через политики безопасности который будет запускаться при старте системы (без логина пользователя в отличие от классической автозагрузки в реестре через HKLM)
Для этого запустите
gpedit.msc -
Computer configuration - Windows Settings - Scripts (Startup/Shutdown) - Startup - c:\run.cmd
Если есть необходимость в дополнительных сетевых драйверах или программах - установите их
Теперь корректно выключите виртуальный сервер и загрузите его с systemrescuecd (кстати, он тоже поддерживает efi boot)
После чего снимите образ через dd over ssh на какой-либо свой внешний сервер который будет хранилищем попутно сжимая его через gzip
dd if=/dev/sda bs=64k | pv | gzip | ssh storage@storage.com "cat > /storage/windows2016"
Сжатый образ будет занимать 5 Gb
Затем пишем скрипт установки сервера который будет выкачивать образ по ssh c storage.com и распаковывать на новом сервере и производить настройку статического ip адреса и активацию ОС, я привожу его максимально упрощенную версию
Также его можно использовать и для windows 2012 с отличиями в запуске netsh
#!/bin/bash
ssh storage@storage.com dd if=/storage/windows2016 bs=64k | gunzip | pv | dd of=/dev/sda bs=64k
blockdev --rereadpt /dev/sda
sleep 5
mount /dev/sda4 /mnt
cat <<EOF > /mnt/run.cmd
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
Reg Add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /V ClearDll /D "cmd /C Del /F /Q C:\run.cmd" /f
for /f "delims=" %%a in ('netsh interface ip show interface ^| find /i "1500" ^| find /i " connect"') do (set "string=%%a")
for /f "tokens=5,6" %%a in ('echo %string%') do (set "name=%%a %%b")
netsh interface ipv4 set address name="%name%" static `ifconfig | grep 'inet ' | grep -v 127.0.0.1 | awk '{print $2}'` `ifconfig | grep 'inet ' | grep -v 127.0.0.1 | awk '{print $4}'` `netstat -nr |awk -F ' ' '{print $2}' |egrep -v 'IP|Gateway|0.0.0.0'`
netsh interface ipv4 set dnsservers name="%name%" static 8.8.8.8 primary
timeout 10 > NUL
%windir%\system32\slmgr.vbs -ipk XXXX-XXXX-XXXX-XXXX
%windir%\system32\slmgr.vbs -ato
del c:\run.cmd
EOF
unix2dos /mnt/run.cmd
umount /mnt
Далее для развертывания системы просто загружаем исходный сервер в Linux rescue и выполняем это скрипт
После успешного копирования образа перезагружаемся и включаем в BIOS загрузку с UEFI
После загрузки Windows 2016 необходимо зайти в Управление дисками и там увеличить размер диска c: до необходимого вам
Известные баги скрипта:
Если интерфейс на сервере один и не сменит имя (это маловероятно так как windows найдет все равно новую сетевую карту) (скажем будет называться "Ethernet"), то скрипт настроить его не сможет, так как будет искать "Ethernet " поскольку пробел в (set "name=%%a %%b") ставится искусственно (иначе будет пытаться настраивать "Ethernet2" вместо "Ethernet 2"
Производите установку VirtualBox, он позволяет осуществлять загрузку с EFI
Используйте iso-образ windows SW_DVD9_Win_Svr_STD_Core_and_DataCtr_Core_2016_64Bit_English_-3_MLF_X21-30350.ISO и Linux диск systemrescuecd-x86-5.1.1.iso
Создаем виртуальный сервер в virtualbox с диском в 20 Gb (система умещается в 13, а в архиве и того в 5, но потребуется запас для запуска на новом сервере, под дополнительные драйвера или программы если будете их устанавливать)
В настройках виртуального сервера ставите галочку на вкладке Система - Включить EFI
Загружаетесь с iso-образа, он нормально запустится с EFI загрузчика
На этапе когда инсталлятор выведет окно разметки жесткого диска необходимо будет нажать shift+f10 и в окне cmd которое откроется конвертировать диск в GPT
diskpart
sel dis 0
clean
convert gpt
exit
После чего просто нажмите Далее и система поставится на диск с GPT разметкой
Запомните пароль администратора сервера и включите доступ по RDP - включается в Server Manager - Local Server - Remote desktop - Enabled
Установите скрипт через политики безопасности который будет запускаться при старте системы (без логина пользователя в отличие от классической автозагрузки в реестре через HKLM)
Для этого запустите
gpedit.msc -
Computer configuration - Windows Settings - Scripts (Startup/Shutdown) - Startup - c:\run.cmd
Если есть необходимость в дополнительных сетевых драйверах или программах - установите их
Теперь корректно выключите виртуальный сервер и загрузите его с systemrescuecd (кстати, он тоже поддерживает efi boot)
После чего снимите образ через dd over ssh на какой-либо свой внешний сервер который будет хранилищем попутно сжимая его через gzip
dd if=/dev/sda bs=64k | pv | gzip | ssh storage@storage.com "cat > /storage/windows2016"
Сжатый образ будет занимать 5 Gb
Затем пишем скрипт установки сервера который будет выкачивать образ по ssh c storage.com и распаковывать на новом сервере и производить настройку статического ip адреса и активацию ОС, я привожу его максимально упрощенную версию
Также его можно использовать и для windows 2012 с отличиями в запуске netsh
#!/bin/bash
ssh storage@storage.com dd if=/storage/windows2016 bs=64k | gunzip | pv | dd of=/dev/sda bs=64k
blockdev --rereadpt /dev/sda
sleep 5
mount /dev/sda4 /mnt
cat <<EOF > /mnt/run.cmd
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
Reg Add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /V ClearDll /D "cmd /C Del /F /Q C:\run.cmd" /f
for /f "delims=" %%a in ('netsh interface ip show interface ^| find /i "1500" ^| find /i " connect"') do (set "string=%%a")
for /f "tokens=5,6" %%a in ('echo %string%') do (set "name=%%a %%b")
netsh interface ipv4 set address name="%name%" static `ifconfig | grep 'inet ' | grep -v 127.0.0.1 | awk '{print $2}'` `ifconfig | grep 'inet ' | grep -v 127.0.0.1 | awk '{print $4}'` `netstat -nr |awk -F ' ' '{print $2}' |egrep -v 'IP|Gateway|0.0.0.0'`
netsh interface ipv4 set dnsservers name="%name%" static 8.8.8.8 primary
timeout 10 > NUL
%windir%\system32\slmgr.vbs -ipk XXXX-XXXX-XXXX-XXXX
%windir%\system32\slmgr.vbs -ato
del c:\run.cmd
EOF
unix2dos /mnt/run.cmd
umount /mnt
Далее для развертывания системы просто загружаем исходный сервер в Linux rescue и выполняем это скрипт
После успешного копирования образа перезагружаемся и включаем в BIOS загрузку с UEFI
После загрузки Windows 2016 необходимо зайти в Управление дисками и там увеличить размер диска c: до необходимого вам
Известные баги скрипта:
Если интерфейс на сервере один и не сменит имя (это маловероятно так как windows найдет все равно новую сетевую карту) (скажем будет называться "Ethernet"), то скрипт настроить его не сможет, так как будет искать "Ethernet " поскольку пробел в (set "name=%%a %%b") ставится искусственно (иначе будет пытаться настраивать "Ethernet2" вместо "Ethernet 2"
rbd to qcow2 file format
# rbd export vm5891121 vm5891121.img -p volumes
# qemu-img convert -f raw -O qcow2 vm5891121.img vm5891121.qcow2
# qemu-img convert -f raw -O qcow2 vm5891121.img vm5891121.qcow2
nginx с ngx_pagespeed и поддержкой alpn для centos / debian / ubuntu
update:
актуальные бинарники доступны по ссылке https://dl.ispsystem.info/nginx-binary/lasted/
Готовая сборка Nginx с модулем ngx_pagespeed (google pagespeed) для популярных операционных систем CentOS 6.9, 7.4 / Debian 7, 8, 9 / Ubuntu 14.04/16.04 x86_64
Также для CentOS 6 / Debian 7,8 / Ubuntu 14.4 nginx собран с openssl 1.0.2 (--with-openssl=/root/openssl-1.0.2l) чтобы была поддержка ALPN для http2, в CentOS 7.4 и других системах системный OpenSSL поддерживает ALPN начиная с версии 1.0.2
В CentOS 7.3 (в дистрибутиве openssl 1.0.1e) и меньших версиях необходимо для запуска nginx обновить пакет openssl (yum install openssl обновит до 1.0.2k-8) иначе будет ошибка запуска nginx связанная со старой библиотекой в системе
Для Debian 7 новые версии pagespeed не поддерживаются, новый nginx 1.13.6 также не собирается со старым ngx_pagespeed, поэтому используется nginx 1.12.2 stable и pagespeed старой версии 1.11.33.1-beta (bash <(curl -f -L -sS https://ngxpagespeed.com/install) -n 1.12.2 -v 1.11.33.1).
Настоятельно рекомендую мигрировать на более новую версию операционной системы
Ссылки на бинарный файл nginx - его надо просто положить в /usr/sbin/nginx вместо исходного файла (предварительно установив nginx через пакетный менеджер системы):
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-pagespeed-1.12.34.2-openssl-1.0.2l-centos6
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-pagespeed-1.12.34.2-centos7
https://dl.ispsystem.info/nginx-binary/nginx-1.12.2-pagespeed-1.11.33.1-openssl-1.0.2l-debian7
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-pagespeed-1.12.34.2-openssl-1.0.2l-debian8
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-pagespeed-1.12.34.2-debian9
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-pagespeed-1.12.34.2-openssl-1.0.2l-ubuntu14.04
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-pagespeed-1.12.34.2-ubuntu16.04
Также собраны бинарники для замены /usr/sbin/nginx с openssl 1.0.2 без модуля pagespeed для старых операционных систем где openssl не имеет поддержки alpn (требуется для http2):
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-openssl-1.0.2l-centos6
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-openssl-1.0.2l-debian7
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-openssl-1.0.2l-debian8
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-openssl-1.0.2l-ubuntu14.04
Ключи сборки соответствуют стандартным с официального репозитория nginx (посмотреть как nginx -V), за исключением опции компиляции и линковки при использовании внешнего openssl
Debian 7/8:
--with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'
изменено на
--with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-z,relro -Wl,-z,now' --with-openssl=/root/openssl-1.0.2l
CentOS 6:
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
изменено на
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -Wl,-z,now' --with-openssl=/root/openssl-1.0.2l
Так как иначе openssl не собирается с ошибками
/usr/bin/ld: /root/openssl-1.0.2l/.openssl/lib/libssl.a(s23_meth.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
/root/openssl-1.0.2l/.openssl/lib/libssl.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
objs/Makefile:365: recipe for target 'objs/nginx' failed
Возможно, это пригодится кому-либо при компиляции nginx с собственным openssl
Подключается pagespeed в nginx.conf секции http - собственно включение, запрет оптимизировать phpmyadmin и админ-панель сайтов на bitrix (с ними работает некорректно), путь к каталогу кэша nginx и ограничения.
Процесс очистки кэша будет запускаться раз в час и очищаться если размер превысит 512Mb или 100000 inodes
pagespeed on;
pagespeed Disallow */phpmyadmin/*;
pagespeed Disallow */bitrix/admin/*;
pagespeed FileCachePath /var/cache/ngx_pagespeed/;
pagespeed FileCacheSizeKb 524288;
pagespeed FileCacheInodeLimit 100000;
pagespeed FileCacheCleanIntervalMs 3600000;
Далее необходимо просто создать директорию
mkdir /var/cache/ngx_pagespeed/
После перезапуска nginx в ней появятся поддиректории с файлами кэша
Подключается http2 просто добавлением http2 в server
listen 443 ssl http2;
При использовании ISPmanager 5 можно отредактировать шаблон /usr/local/mgr5/etc/templates/default/nginx-vhosts-ssl.template
заменить
listen {% $NGINX_SSL_LISTEN_ON %} default_server;
на
listen {% $NGINX_SSL_LISTEN_ON %} ssl http2 default_server;
listen {% $NGINX_SSL_LISTEN_ON %}
на
listen {% $NGINX_SSL_LISTEN_ON %} ssl http2;
Чтобы не переписывался при обновлениях файл /usr/bin/nginx можно сделать в Debian/Ubuntu:
# dpkg-divert --divert /usr/sbin/nginx.unuse --rename /usr/sbin/nginx
# mv /usr/sbin/nginx.unuse /usr/sbin/nginx
В CentOS:
# yum install yum-plugin-versionlock
# yum versionlock nginx
Полезные ссылки:
https://www.modpagespeed.com/doc/build_ngx_pagespeed_from_source
https://habrahabr.ru/post/301452/
http://nginx.org/ru/download.html
актуальные бинарники доступны по ссылке https://dl.ispsystem.info/nginx-binary/lasted/
Готовая сборка Nginx с модулем ngx_pagespeed (google pagespeed) для популярных операционных систем CentOS 6.9, 7.4 / Debian 7, 8, 9 / Ubuntu 14.04/16.04 x86_64
Также для CentOS 6 / Debian 7,8 / Ubuntu 14.4 nginx собран с openssl 1.0.2 (--with-openssl=/root/openssl-1.0.2l) чтобы была поддержка ALPN для http2, в CentOS 7.4 и других системах системный OpenSSL поддерживает ALPN начиная с версии 1.0.2
В CentOS 7.3 (в дистрибутиве openssl 1.0.1e) и меньших версиях необходимо для запуска nginx обновить пакет openssl (yum install openssl обновит до 1.0.2k-8) иначе будет ошибка запуска nginx связанная со старой библиотекой в системе
Для Debian 7 новые версии pagespeed не поддерживаются, новый nginx 1.13.6 также не собирается со старым ngx_pagespeed, поэтому используется nginx 1.12.2 stable и pagespeed старой версии 1.11.33.1-beta (bash <(curl -f -L -sS https://ngxpagespeed.com/install) -n 1.12.2 -v 1.11.33.1).
Настоятельно рекомендую мигрировать на более новую версию операционной системы
Ссылки на бинарный файл nginx - его надо просто положить в /usr/sbin/nginx вместо исходного файла (предварительно установив nginx через пакетный менеджер системы):
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-pagespeed-1.12.34.2-openssl-1.0.2l-centos6
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-pagespeed-1.12.34.2-centos7
https://dl.ispsystem.info/nginx-binary/nginx-1.12.2-pagespeed-1.11.33.1-openssl-1.0.2l-debian7
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-pagespeed-1.12.34.2-openssl-1.0.2l-debian8
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-pagespeed-1.12.34.2-debian9
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-pagespeed-1.12.34.2-openssl-1.0.2l-ubuntu14.04
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-pagespeed-1.12.34.2-ubuntu16.04
Также собраны бинарники для замены /usr/sbin/nginx с openssl 1.0.2 без модуля pagespeed для старых операционных систем где openssl не имеет поддержки alpn (требуется для http2):
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-openssl-1.0.2l-centos6
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-openssl-1.0.2l-debian7
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-openssl-1.0.2l-debian8
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-openssl-1.0.2l-ubuntu14.04
Ключи сборки соответствуют стандартным с официального репозитория nginx (посмотреть как nginx -V), за исключением опции компиляции и линковки при использовании внешнего openssl
Debian 7/8:
--with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'
изменено на
--with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-z,relro -Wl,-z,now' --with-openssl=/root/openssl-1.0.2l
CentOS 6:
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
изменено на
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -Wl,-z,now' --with-openssl=/root/openssl-1.0.2l
Так как иначе openssl не собирается с ошибками
/usr/bin/ld: /root/openssl-1.0.2l/.openssl/lib/libssl.a(s23_meth.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
/root/openssl-1.0.2l/.openssl/lib/libssl.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
objs/Makefile:365: recipe for target 'objs/nginx' failed
Возможно, это пригодится кому-либо при компиляции nginx с собственным openssl
Подключается pagespeed в nginx.conf секции http - собственно включение, запрет оптимизировать phpmyadmin и админ-панель сайтов на bitrix (с ними работает некорректно), путь к каталогу кэша nginx и ограничения.
Процесс очистки кэша будет запускаться раз в час и очищаться если размер превысит 512Mb или 100000 inodes
pagespeed on;
pagespeed Disallow */phpmyadmin/*;
pagespeed Disallow */bitrix/admin/*;
pagespeed FileCachePath /var/cache/ngx_pagespeed/;
pagespeed FileCacheSizeKb 524288;
pagespeed FileCacheInodeLimit 100000;
pagespeed FileCacheCleanIntervalMs 3600000;
Далее необходимо просто создать директорию
mkdir /var/cache/ngx_pagespeed/
После перезапуска nginx в ней появятся поддиректории с файлами кэша
Подключается http2 просто добавлением http2 в server
listen 443 ssl http2;
При использовании ISPmanager 5 можно отредактировать шаблон /usr/local/mgr5/etc/templates/default/nginx-vhosts-ssl.template
заменить
listen {% $NGINX_SSL_LISTEN_ON %} default_server;
на
listen {% $NGINX_SSL_LISTEN_ON %} ssl http2 default_server;
listen {% $NGINX_SSL_LISTEN_ON %}
на
listen {% $NGINX_SSL_LISTEN_ON %} ssl http2;
Чтобы не переписывался при обновлениях файл /usr/bin/nginx можно сделать в Debian/Ubuntu:
# dpkg-divert --divert /usr/sbin/nginx.unuse --rename /usr/sbin/nginx
# mv /usr/sbin/nginx.unuse /usr/sbin/nginx
В CentOS:
# yum install yum-plugin-versionlock
# yum versionlock nginx
Полезные ссылки:
https://www.modpagespeed.com/doc/build_ngx_pagespeed_from_source
https://habrahabr.ru/post/301452/
http://nginx.org/ru/download.html
ЧПУ в nginx php-fpm в server
listen 188.112.121.100:80;
location / {
try_files $uri $uri/ @handler;
location ~ [^/]\.ph(p\d*|tml)$ {
try_files /does_not_exists @php;
}
}
location @handler {
rewrite ^(.*) /index.php?$1 last;
}
location @php {
fastcgi_index index.php;
fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f webmaster@example.ru";
fastcgi_pass unix:/var/www/php-fpm/www-root.sock;
fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
try_files $uri =404;
include fastcgi_params;
}
Редирект на https
return 301 https://$host:443$request_uri;
Сжатие - кэширование
gzip on;
gzip_comp_level 3;
gzip_disable "msie6";
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
expires 8d;
location / {
try_files $uri $uri/ @handler;
location ~ [^/]\.ph(p\d*|tml)$ {
try_files /does_not_exists @php;
}
}
location @handler {
rewrite ^(.*) /index.php?$1 last;
}
location @php {
fastcgi_index index.php;
fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f webmaster@example.ru";
fastcgi_pass unix:/var/www/php-fpm/www-root.sock;
fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
try_files $uri =404;
include fastcgi_params;
}
Редирект на https
return 301 https://$host:443$request_uri;
Сжатие - кэширование
gzip on;
gzip_comp_level 3;
gzip_disable "msie6";
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
expires 8d;
Как очистить базу HSTS в google chrome и firefox
chrome://net-internals/#hsts
в firefox это делается в истории (ctrl+h) правой кнопкой - забыть об этом сайте
в firefox это делается в истории (ctrl+h) правой кнопкой - забыть об этом сайте
Насаждаем cp1251 кодировку на сайте вместо utf8 в debian
# cat .htaccess
AddDefaultCharset windows-1251
php_value default_charset "cp1251"
Обычного включения в свойствах WWW домена в ISPmanager недостаточно
AddDefaultCharset windows-1251
php_value default_charset "cp1251"
Обычного включения в свойствах WWW домена в ISPmanager недостаточно
Ubuntu отключить отправку сообщений об ошибках
sudo sed -i "s/enabled=1/enabled=0/g" '/etc/default/apport'
или
sudo apt purge apport
или
sudo apt purge apport
Высокая нагрузка на cpu от процессов kidle_inject
Иногда бывает, что система практически висит, а в top наблюдается картина вида
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6098 root -51 0 0 0 0 S 55,8 0,0 4:04.49 kidle_inject/1
6099 root -51 0 0 0 0 S 55,8 0,0 4:04.20 kidle_inject/2
Процессы kidle_inject запускаются при throttling, как правило от перегрева, и не могут часто быть остановлены, есть баг https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1389077 который долгое время не могут исправить
Решение: отключить данный механизм снижения нагрузки на cpu (может привести в принципе к проблемам при перегреве
# rmmod intel_powerclamp
# echo "blacklist intel_powerclamp" > /etc/modprobe.d/disable-powerclamp.conf
Полезные ссылки:
https://wiki.ubuntu.com/Kernel/PowerManagement/ThermalIssues
https://lwn.net/Articles/528131/
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6098 root -51 0 0 0 0 S 55,8 0,0 4:04.49 kidle_inject/1
6099 root -51 0 0 0 0 S 55,8 0,0 4:04.20 kidle_inject/2
Процессы kidle_inject запускаются при throttling, как правило от перегрева, и не могут часто быть остановлены, есть баг https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1389077 который долгое время не могут исправить
Решение: отключить данный механизм снижения нагрузки на cpu (может привести в принципе к проблемам при перегреве
# rmmod intel_powerclamp
# echo "blacklist intel_powerclamp" > /etc/modprobe.d/disable-powerclamp.conf
Полезные ссылки:
https://wiki.ubuntu.com/Kernel/PowerManagement/ThermalIssues
https://lwn.net/Articles/528131/
Про новые ядра и xorg в Ubuntu 16.04 LTS
Desktop
1. Устанавливаем с образа 16.04 или 16.04.1 - получаем ядро 4.4.0 (метапакет linux-generic), которое будет постоянно с новыми security fixes всё время жизни дистрибутива
2. Устанавливаем с образа 16.04.2 и выше - получаем hwe ядро на сегодня 4.4.8 и выше (метапакет linux-generic-hwe-16.04) по модели rolling updates, то есть при выходе новых версий будет обновляться (на сегодня 4.4.10)
Xorg тоже ставится hwe (и ставить по идее надо с новым ядром всегда, а не одно ядро или иксы), пример команды для перехода
sudo apt-get install --install-recommends linux-generic-hwe-16.04 xserver-xorg-hwe-16.04
3. Устанавливаем пакет linux-generic-hwe-16.04-edge - получаем совсем свежее ядро 4.4.11 и все самое свежее (и, возможно, не тестированное)
Server
В инсталляторе при загрузке с iso присутствует выбор - ставить hwe или нет, по-умолчанию ставится 4.4.0
Можно обновить ядро перейдя на hwe
sudo apt-get install --install-recommends linux-generic-hwe-16.04
Полезные ссылки
https://wiki.ubuntu.com/Kernel/RollingLTSEnablementStack
https://wiki.ubuntu.com/Kernel/LTSEnablementStack
http://ubuntuhandbook.org/index.php/2017/02/install-remove-enablement-stacks-ubuntu-16-04/
Что ставить
Все же большинство десктопов, судя по всему, живут на свежих ядрах и свежем xorg, поэтому ставить hwe на десктоп и если используются несвободные драйвера, то иметь ввиду, что при апдейтах могут быть проблемы с графикой (но как правило, все решается через update-initramfs -u или переустановкой пакета типа nvidia-375 при загрузке в текстовом режиме), на сервер если всё работает, то скорее всего новые ядра вам не нужны, также kernel livepatch не поддерживает hwe
1. Устанавливаем с образа 16.04 или 16.04.1 - получаем ядро 4.4.0 (метапакет linux-generic), которое будет постоянно с новыми security fixes всё время жизни дистрибутива
2. Устанавливаем с образа 16.04.2 и выше - получаем hwe ядро на сегодня 4.4.8 и выше (метапакет linux-generic-hwe-16.04) по модели rolling updates, то есть при выходе новых версий будет обновляться (на сегодня 4.4.10)
Xorg тоже ставится hwe (и ставить по идее надо с новым ядром всегда, а не одно ядро или иксы), пример команды для перехода
sudo apt-get install --install-recommends linux-generic-hwe-16.04 xserver-xorg-hwe-16.04
3. Устанавливаем пакет linux-generic-hwe-16.04-edge - получаем совсем свежее ядро 4.4.11 и все самое свежее (и, возможно, не тестированное)
Server
В инсталляторе при загрузке с iso присутствует выбор - ставить hwe или нет, по-умолчанию ставится 4.4.0
Можно обновить ядро перейдя на hwe
sudo apt-get install --install-recommends linux-generic-hwe-16.04
Полезные ссылки
https://wiki.ubuntu.com/Kernel/RollingLTSEnablementStack
https://wiki.ubuntu.com/Kernel/LTSEnablementStack
http://ubuntuhandbook.org/index.php/2017/02/install-remove-enablement-stacks-ubuntu-16-04/
Что ставить
Все же большинство десктопов, судя по всему, живут на свежих ядрах и свежем xorg, поэтому ставить hwe на десктоп и если используются несвободные драйвера, то иметь ввиду, что при апдейтах могут быть проблемы с графикой (но как правило, все решается через update-initramfs -u или переустановкой пакета типа nvidia-375 при загрузке в текстовом режиме), на сервер если всё работает, то скорее всего новые ядра вам не нужны, также kernel livepatch не поддерживает hwe
перенос почтовых ящиков imapsync создание через ispmanager api
Создаем почтовые ящики через ISPmanager API
cat /tmp/1 | while read i ; do echo `echo $i | awk '{print $2}'` ; /usr/local/mgr5/sbin/mgrctl -m ispmgr email.edit domainname=`echo $i | awk '{print $2}' | cut -d '@' -f 2` greylist=on hidegreylist=on passwd=`echo $i | awk '{print $1}'` name=`echo $i | awk '{print $2}' | cut -d'@' -f 1` sok=ok ; done
Переносим почтовые ящики через imapsync
j=0 | cat /tmp/1 | while read i ; do let "j=$j+1"; echo 'синкаю' $j 'из 87 ящиков, сейчас синкаю' `echo $i | awk '{print $2}'` ; imapsync --host1 10.10.10.10 --user1 `echo $i | awk '{print $2}'` --password1 `echo $i | awk '{print $1}'` --host2 20.20.20.20 -user2 `echo $i | awk '{print $2}'` --password2 `echo $i | awk '{print $1}'` 2>&1 >> /tmp/imap.log; done
cat /tmp/1 | while read i ; do echo `echo $i | awk '{print $2}'` ; /usr/local/mgr5/sbin/mgrctl -m ispmgr email.edit domainname=`echo $i | awk '{print $2}' | cut -d '@' -f 2` greylist=on hidegreylist=on passwd=`echo $i | awk '{print $1}'` name=`echo $i | awk '{print $2}' | cut -d'@' -f 1` sok=ok ; done
Переносим почтовые ящики через imapsync
j=0 | cat /tmp/1 | while read i ; do let "j=$j+1"; echo 'синкаю' $j 'из 87 ящиков, сейчас синкаю' `echo $i | awk '{print $2}'` ; imapsync --host1 10.10.10.10 --user1 `echo $i | awk '{print $2}'` --password1 `echo $i | awk '{print $1}'` --host2 20.20.20.20 -user2 `echo $i | awk '{print $2}'` --password2 `echo $i | awk '{print $1}'` 2>&1 >> /tmp/imap.log; done
Улучшаем работу с whois
$ cat /etc/whois.conf
\.pro$ whois.afilias.net
$ grep whois .bashrc
alias whois='whois -H'
Смотреть whois сервера можно по ссылке https://www.iana.org/domains/root/db
\.pro$ whois.afilias.net
$ grep whois .bashrc
alias whois='whois -H'
Смотреть whois сервера можно по ссылке https://www.iana.org/domains/root/db
exim: увеличить timeout на отправку почты с сервера в мир
В разделе transport опции:
remote_smtp:
driver = smtp
connect_timeout = 3m
command_timeout = 3m
data_timeout = 3m
remote_smtp:
driver = smtp
connect_timeout = 3m
command_timeout = 3m
data_timeout = 3m
mariadb 5.5 : centos 7 : Unknown collation: 'utf8mb4_unicode_520_ci
Не удалось восстановить базу данных из резервной копии. Процесс завершился с ошибкой: 'ERROR 1273 (HY000) at line 104: Unknown collation: 'utf8mb4_unicode_520_ci' '
sed -i 's/utf8mb4_unicode_520_ci/utf8_general_ci/' a0129493_wor00.sql
sed -i 's/utf8mb4/utf8/' a0129493_wor00.sql
sed -i 's/utf8mb4_unicode_ci/utf8_unicode_ci/' a0129493_wor00.sql
sed -i 's/utf8mb4_unicode_520_ci/utf8_general_ci/' a0129493_wor00.sql
sed -i 's/utf8mb4/utf8/' a0129493_wor00.sql
sed -i 's/utf8mb4_unicode_ci/utf8_unicode_ci/' a0129493_wor00.sql
Остановить задания на backup в ISPmanager
Если после завершения фоновых задач и файлов в var/run "колесики" все равно продолжают крутиться о бэкапах (и процессов backup2 тоже нет), то все починить можно в ispmgr.db
update backup_queue set status=1 where status=2;
update backup_queue set status=1 where status=2;
Ограничить доступ по IP в Apache 2.4
<IfVersion >= 2.4>
Require all denied
Require ip 10.11.12.33
Require ip 188.120.252
</IfVersion>
Require all denied
Require ip 10.11.12.33
Require ip 188.120.252
</IfVersion>
maildrop debug как запустить postfix / centos / ispmanager 4
# echo date | /usr/bin/maildrop -d virtuser_505 -V 10
...
...
/etc/maildroprc(7): ISP_address="^(From|Return-Path|To|CC|BCC): "
/etc/maildroprc(8): ISP_subject="^(XX-)?Subject: "
maildrop: Attempting .mailfilter
/usr/bin/maildrop: Cannot have world/group permissions on the filter file - for your own good.
Как лечить не ясно так как права были, решение - удалить пустые .mailfilter
:-)
...
...
/etc/maildroprc(7): ISP_address="^(From|Return-Path|To|CC|BCC): "
/etc/maildroprc(8): ISP_subject="^(XX-)?Subject: "
maildrop: Attempting .mailfilter
/usr/bin/maildrop: Cannot have world/group permissions on the filter file - for your own good.
Как лечить не ясно так как права были, решение - удалить пустые .mailfilter
:-)
В ISPmanager Business не создается домен - пишется что уже существет, а его нет
Если не создается домен already exist, а на самом деле его нигде нет - то надо найти в панели ISPmanager - Сборщик мусора и там поискать и найдя удалить
Поставить старую версию rails для ruby 2.1
gem install rails -v 4.2.6
иначе будет ставиться более новая которая хочет ruby 2.2.2+
иначе будет ставиться более новая которая хочет ruby 2.2.2+
owncloud : docker не работает после включения хранилища devicemapper
owncloud требует хранилище типа devicemapper как написано тут https://linuxinsider.ru/server-collabora-online-s-nextcloud-na-ubuntu/
После его включения (лучше включать как написано в официальной документации https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/ в /etc/docker/daemon.json приложение docker перестает работать, а docker ps зависает не дожидаясь ответа от dockerd
Решение - установить поддержку LVM в систему командой apt-get install lvm2
При этом также отмечу что появляется в /var/lib/docker spare file размером 100Gb который не занимает место на диске, но влияет при копировании сервера через rsync
После его включения (лучше включать как написано в официальной документации https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/ в /etc/docker/daemon.json приложение docker перестает работать, а docker ps зависает не дожидаясь ответа от dockerd
Решение - установить поддержку LVM в систему командой apt-get install lvm2
При этом также отмечу что появляется в /var/lib/docker spare file размером 100Gb который не занимает место на диске, но влияет при копировании сервера через rsync
ISPmanager не покаызываются Ресурсы сервера на дашбоард
Почистить файлы в /usr/local/mgr5/var/sysinfostat/
Раз в час будет обновляться
Раз в час будет обновляться
pppd: The remote system (PPTP) is required to authenticate itself
При запуске pppd клиент на Ubuntu 16.04 выдает ошибку
# pppd call pptpserver
pppd: The remote system (PPTP) is required to authenticate itself
pppd: but I couldn't find any suitable secret (password) for it to use to do so.
Решение
# vi /etc/ppp/options
auth заменить на noauth
Или же указать в /etc/ppp/peers/pptpserver
# pppd call pptpserver
pppd: The remote system (PPTP) is required to authenticate itself
pppd: but I couldn't find any suitable secret (password) for it to use to do so.
Решение
# vi /etc/ppp/options
auth заменить на noauth
Или же указать в /etc/ppp/peers/pptpserver
Шаблонизатор в ISPmanager
# cp /usr/local/mgr5/etc/templates/default/nginx-vhosts.template /usr/local/mgr5/etc/templates/
# cp /usr/local/mgr5/etc/templates/default/nginx-vhosts-ssl.template /usr/local/mgr5/etc/templates/
# vi /usr/local/mgr5/etc/ispmgr.conf
Option EnableWebTemplate
Документация по шаблонизатору
# cp /usr/local/mgr5/etc/templates/default/nginx-vhosts-ssl.template /usr/local/mgr5/etc/templates/
# vi /usr/local/mgr5/etc/ispmgr.conf
Option EnableWebTemplate
Документация по шаблонизатору
ksoftirqd нагружает процессор на debian kvm
Надо добавить nohz=off к опциям загрузки ядра
# vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet nohz=off"
# update-grub
# vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet nohz=off"
# update-grub
Убивать вчерашние процессы httpd 508 ошибка
ps aux | grep httpd | awk '{if (!match($9,/[0-9]{2}:[0-9]{2}/)) print $2 }' | while read line; do kill $line; done
Запускать под юзером (!) Делается на шареде
Запускать под юзером (!) Делается на шареде
bitrix попугаи
Производительность Bitrix высчитывается в файлике
bitrix/modules/perfmon/admin/perfmon_panel.php
Строчкой
$result = number_format(doubleval(count($_SESSION["PERFMON_TIMES"]))/array_sum($_SESSION["PERFMON_TIMES"]), 2, ".", " ");
Соответственно строчка
$result = number_format(doubleval(count($_SESSION["PERFMON_TIMES"]) *2)/array_sum($_SESSION["PERFMON_TIMES"]), 2, ".", " ");
Показывает производительность в 2 раза больше. В историю, правда, пишется старый результат.
Не злоупотребляйте!
bitrix/modules/perfmon/admin/perfmon_panel.php
Строчкой
$result = number_format(doubleval(count($_SESSION["PERFMON_TIMES"]))/array_sum($_SESSION["PERFMON_TIMES"]), 2, ".", " ");
Соответственно строчка
$result = number_format(doubleval(count($_SESSION["PERFMON_TIMES"]) *2)/array_sum($_SESSION["PERFMON_TIMES"]), 2, ".", " ");
Показывает производительность в 2 раза больше. В историю, правда, пишется старый результат.
Не злоупотребляйте!
MegaCli на CentOS 7 установка
# wget --user hetzner --password download http://download.hetzner.de/tools/LSI/tools/MegaCLI/8.07.10_MegaCLI_Linux.zip
# unzip 8.07.10_MegaCLI_Linux.zip
# rpm -i 8.07.10_MegaCLI_Linux/Linux\ MegaCLI\ 8.07.10/MegaCli-8.07.10-1.noarch.rpm
# ln -s /opt/MegaRAID/MegaCli/MegaCli64 /usr/bin/megacli
# unzip 8.07.10_MegaCLI_Linux.zip
# rpm -i 8.07.10_MegaCLI_Linux/Linux\ MegaCLI\ 8.07.10/MegaCli-8.07.10-1.noarch.rpm
# ln -s /opt/MegaRAID/MegaCli/MegaCli64 /usr/bin/megacli
Поребутить reboot сервера который висит
Включаем sysrq
# echo 1 > /proc/sys/kernel/sysrq
ultimate reboot to rule them all
# echo b > /proc/sysrq-trigger
См также https://habrahabr.ru/post/98770/
# echo 1 > /proc/sys/kernel/sysrq
ultimate reboot to rule them all
# echo b > /proc/sysrq-trigger
См также https://habrahabr.ru/post/98770/
php memcache для php7
Bitrix требует именно memcache (не memcached) для работы под PHP7
Альтернативная сборка PHP7 в ISPmanager его не содержит, потому, что официальное расширение из pecl не компилируется.
Существует fork pecl php-memcache для PHP 7 и оно собирается и с ним bitrix начинает работать
Ссылка https://github.com/websupport-sk/pecl-memcache
Альтернативная сборка PHP7 в ISPmanager его не содержит, потому, что официальное расширение из pecl не компилируется.
Существует fork pecl php-memcache для PHP 7 и оно собирается и с ним bitrix начинает работать
Ссылка https://github.com/websupport-sk/pecl-memcache
VEmanager : Контейнер заблокирован длительной процедурой, такой как миграция или развертывание шаблона ОС. Попробуйте повторить действие позже.
Необходимо найти и удалить следующие файлы
На master
/usr/local/mgr5/var/run/installve.installve_11732
/usr/local/mgr5/var/run/objectlock/2VM_11732
На ноде с VE
/usr/local/mgr5/var/run/objectlock/2VM_11732_vemini
/usr/local/mgr5/var/velongtask/11732_migrateve
/usr/local/mgr5/var/run/migrateve/migrateve.11732
Искать через
find /usr/local/mgr5/var/ -type f -iname '*11732*'
Статус VDS изменяется в базе http://blog.ispsystem.info/2017/02/vds-vmmanager-openvz.html
На master
/usr/local/mgr5/var/run/installve.installve_11732
/usr/local/mgr5/var/run/objectlock/2VM_11732
На ноде с VE
/usr/local/mgr5/var/run/objectlock/2VM_11732_vemini
/usr/local/mgr5/var/velongtask/11732_migrateve
/usr/local/mgr5/var/run/migrateve/migrateve.11732
Искать через
find /usr/local/mgr5/var/ -type f -iname '*11732*'
Статус VDS изменяется в базе http://blog.ispsystem.info/2017/02/vds-vmmanager-openvz.html
Удалить старые ядра CentOS
Иногда бывает что система не обновляется так как закончилось место в /boot
Посмотреть сколько ядер стоит
# rpm -q kernel
Поставить пакет с package-cleanup
# yum install yum-utils
Удалить все ядра кроме двух последних
# package-cleanup --oldkernels --count=2
Настроить лимиты yum на число ядер
# vi /etc/yum.conf
installonly_limit=2
Посмотреть сколько ядер стоит
# rpm -q kernel
Поставить пакет с package-cleanup
# yum install yum-utils
Удалить все ядра кроме двух последних
# package-cleanup --oldkernels --count=2
Настроить лимиты yum на число ядер
# vi /etc/yum.conf
installonly_limit=2
Принудитетельно пересчитать размер баз данных в ISPmanager
update db_cache set next_check = datetime('now', '+1 minutes')
Перекешировать размер БД в ISPmanager, делается в базе ispmgr.db
Автоматически размер в Базы данных обновляется по формуле https://doc.ispsystem.ru/index.php/Размеры_баз_данных
update:
в новых версиях ISPmanager данные хранятся в отдельной базе данных
# sqlite3 /usr/local/mgr5/etc/ispmgr_dbsize.db
В ISPmanager Business файл называется
# sqlite3 /usr/local/mgr5/etc/ispmgrnode_dbsize.db
Перекешировать размер БД в ISPmanager, делается в базе ispmgr.db
Автоматически размер в Базы данных обновляется по формуле https://doc.ispsystem.ru/index.php/Размеры_баз_данных
update:
в новых версиях ISPmanager данные хранятся в отдельной базе данных
# sqlite3 /usr/local/mgr5/etc/ispmgr_dbsize.db
В ISPmanager Business файл называется
# sqlite3 /usr/local/mgr5/etc/ispmgrnode_dbsize.db
Как изменить порт RDP - Remote desktop port change
Открываем редактор реестра regedit
Открываем ветку HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp
Правим параметр PortNumber в десятичном формате
Порт RDP по умолчанию 3389
Открыть порт в windows firewall
netsh advfirewall firewall add rule name=“Custom RDP Port“ dir=in action=allow protocol=TCP localport=7777
Перезагружаем компьютер
Открываем ветку HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp
Правим параметр PortNumber в десятичном формате
Порт RDP по умолчанию 3389
Открыть порт в windows firewall
netsh advfirewall firewall add rule name=“Custom RDP Port“ dir=in action=allow protocol=TCP localport=7777
Перезагружаем компьютер
resize диска на FreeBSD KVM
Изменяем диск в VMmanager. Грузимся в rescue mfsbsd - root / mfsroot
# gpart recover vtbd0
# gpart show
# gpart resize -i 2 vtbd0
# growfs /dev/gpt/rootfs
# fsck_ufs -y /dev/gpt/rootfs
# gpart recover vtbd0
# gpart show
# gpart resize -i 2 vtbd0
# growfs /dev/gpt/rootfs
# fsck_ufs -y /dev/gpt/rootfs
mdadm : переименовать устройство md
После переноса на новосозданный RAID системы возникает необходимость переименовать устройства в те имена, которые были раньше на исходном диске. Останавливаем md5 загрузившись в rescue
# mdadm -S /dev/md5
-S - это --stop
Переименовываем в md2
# mdadm --assemble /dev/md2 /dev/sda3 --update=name
# mdadm -S /dev/md5
-S - это --stop
Переименовываем в md2
# mdadm --assemble /dev/md2 /dev/sda3 --update=name
systemd : мониторинг работы процесса и ограничения памяти
Мониторинг наличия процесса и его автоматический перезапуск при падении - прописываем в Unit - они находятся в каталоге /etc/systemd/system/multi-user.target.wants
(вернее там симлинки при включенном автозапуске на /usr/lib/systemd/system/)
[Service]
...
Restart=always
RestartSec=15
После правок не забыть про
systemctl daemon-reload
systemctl restart httpd.service
там же ограничиваем использование оперативной памяти
[Service]
MemoryLimit=1G
systemctl enable service включит автозапуск
journalctl -u httpd покажет логи httpd
RestartSec=15
(вернее там симлинки при включенном автозапуске на /usr/lib/systemd/system/)
[Service]
...
Restart=always
RestartSec=15
После правок не забыть про
systemctl daemon-reload
systemctl restart httpd.service
там же ограничиваем использование оперативной памяти
[Service]
MemoryLimit=1G
systemctl enable service включит автозапуск
journalctl -u httpd покажет логи httpd
update: правильно создать файлик в /etc/systemd/system/httpd.service.d/setting.conf с [Service]
Restart=alwaysRestartSec=15
LSI raid controller : The specified physical disk does not have the appropriate attributes to complete the requested command
При попытке создать RAID 10 через megacli выдается ошибка
# megacli -CfgSpanAdd -r10 -Array0[252:0,252:1] Array1[252:2,252:3] WB RA Direct CachedBadBBU -a0
The specified physical disk does not have the appropriate attributes to complete
the requested command. Exit Code: 0x26
И очистка (удаление) всего командами
# megacli -CfgLdDel -Lall -aAll
и
# megacli -CfgClr -aAll
было сделано и не помогает
Надо посмотреть сколько конфигураций есть:
# megacli -CfgForeign -Scan -a0
There are 3 foreign configuration(s) on controller 0.
Exit Code: 0x00
И удалить (очистить) все конфигурации:
# megacli -CfgForeign -Clear -a0
Foreign configuration 3 is cleared on controller 0.
Exit Code: 0x00
Хорошая документация https://wiki.hetzner.de/index.php/LSI_RAID_Controller/ru
megacli для debian брать тут http://hwraid.le-vert.net/debian/pool-jessie/
# megacli -CfgSpanAdd -r10 -Array0[252:0,252:1] Array1[252:2,252:3] WB RA Direct CachedBadBBU -a0
The specified physical disk does not have the appropriate attributes to complete
the requested command. Exit Code: 0x26
И очистка (удаление) всего командами
# megacli -CfgLdDel -Lall -aAll
и
# megacli -CfgClr -aAll
было сделано и не помогает
Надо посмотреть сколько конфигураций есть:
# megacli -CfgForeign -Scan -a0
There are 3 foreign configuration(s) on controller 0.
Exit Code: 0x00
И удалить (очистить) все конфигурации:
# megacli -CfgForeign -Clear -a0
Foreign configuration 3 is cleared on controller 0.
Exit Code: 0x00
Хорошая документация https://wiki.hetzner.de/index.php/LSI_RAID_Controller/ru
megacli для debian брать тут http://hwraid.le-vert.net/debian/pool-jessie/
strace процессов пользователя в apache mpm-itk
while true; do a=$(ps aux | grep apache | grep usera | awk '{print $2}'); echo "DEBUG pid is "$a; if [ -z $a ] ; then echo -e 'no pid now\n'; else echo "pid is "$a; strace -p $a; fi; sleep 1; done
Включить server-status в CentOS 7
# cat >> /etc/httpd/conf.modules.d/01-status.conf << EOF
<Location /server-status>
SetHandler server-status
Require all granted
</Location>
EOF
# systemctl reload httpd
Если мешает .htaccess сайта - можно сделать вот так на примере wordpress
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !=/server-status
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
<Location /server-status>
SetHandler server-status
Require all granted
</Location>
EOF
# systemctl reload httpd
Если мешает .htaccess сайта - можно сделать вот так на примере wordpress
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !=/server-status
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
MySQL : ошибка The used table type doesn't support FULLTEXT indexes при импорте дампа
FULLTEXT indexes в InnoDB поддерживаются начиная с версии MySQL 5.6
Варианты:
- Обновить MySQL до версии 5.6
- Исправить дамп базы указав в нем engine = MyISAM
Варианты:
- Обновить MySQL до версии 5.6
- Исправить дамп базы указав в нем engine = MyISAM
Посмотреть версию ISPmanager
Информация о типе панели и версии
/usr/local/mgr5/bin/core ispmgr -F
/usr/local/mgr5/bin/core ispmgr -V
Информация о лицензии
/usr/local/mgr5/sbin/mgrctl -m ispmgr license.info
/usr/local/mgr5/bin/core ispmgr -F
/usr/local/mgr5/bin/core ispmgr -V
Информация о лицензии
/usr/local/mgr5/sbin/mgrctl -m ispmgr license.info
iptables полезные команды
Посмотреть все правила
# iptables -L -n -v
(я предпочитаю iptables-save)
Посмотреть правила с нумерацией строк
# iptables -L INPUT -n --line-numbers
Вставить правило между 1 и 2 строкой:
# iptables -I INPUT 2 -s 120.155.16.23 -j DROP
Удалить строку 3
# iptables -D INPUT 3
Удалить все правила
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEPT
# iptables -F
# iptables -X
# iptables -t nat -F
# iptables -t nat -X
# iptables -t mangle -F
# iptables -t mangle -X
Где:
-F - Удалить (flush) правила
-X - Удалить цепочку
-t table_name - Выбрать таблицу (nat или mangle) и удалить все правила.
-P - Выбрать действия по умолчанию (такие, как DROP, REJECT, или ACCEPT).
Ограничить количество параллельных соединений к серверу для одного адреса.
Для ограничений используется модуль connlimit. Чтобы разрешить только 5 ssh соединений на одного клиента
# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 5 -j REJECT
Установить количество запросов HTTP до 10
# iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 24 -j DROP
Открыть диапазон портов
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8000:8888 -j ACCEPT
Также полезная информация http://blog.ispsystem.info/search?q=iptables
Куда пишет ISPmanager правила iptables https://doc.ispsystem.ru/index.php/Алгоритм_работы_модуля_"Брандмауэр"
# iptables -L -n -v
(я предпочитаю iptables-save)
Посмотреть правила с нумерацией строк
# iptables -L INPUT -n --line-numbers
Вставить правило между 1 и 2 строкой:
# iptables -I INPUT 2 -s 120.155.16.23 -j DROP
Удалить строку 3
# iptables -D INPUT 3
Удалить все правила
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEPT
# iptables -F
# iptables -X
# iptables -t nat -F
# iptables -t nat -X
# iptables -t mangle -F
# iptables -t mangle -X
Где:
-F - Удалить (flush) правила
-X - Удалить цепочку
-t table_name - Выбрать таблицу (nat или mangle) и удалить все правила.
-P - Выбрать действия по умолчанию (такие, как DROP, REJECT, или ACCEPT).
Ограничить количество параллельных соединений к серверу для одного адреса.
Для ограничений используется модуль connlimit. Чтобы разрешить только 5 ssh соединений на одного клиента
# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 5 -j REJECT
Установить количество запросов HTTP до 10
# iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 24 -j DROP
Открыть диапазон портов
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8000:8888 -j ACCEPT
Также полезная информация http://blog.ispsystem.info/search?q=iptables
Куда пишет ISPmanager правила iptables https://doc.ispsystem.ru/index.php/Алгоритм_работы_модуля_"Брандмауэр"
Восстанавливаем пакет bitrix окружения после ручного downgrade php CentOS 6
Если на CentOS 6 сделать downgrade php с 7 до 5.3, то пакет bitrix-env удалится из системы и не будет работать ./menu.sh и вообще ничего в целом (конфиги apache/nginx)
А поставить yum install bitrix-env не получится так как в зависимостях php7
Поэтому после downgrade качаем
wget http://repos.1c-bitrix.ru/yum/el/6/x86_64/bitrix-env-7.0-1.el6.noarch.rpm
и распаковываем в /
rpm2cpio package.rpm | cpio -idmuv
ну или в mc
цель поста - ссылка на bitrix-env-7.0-1.el6.noarch.rpm
Как делать downgrade (примерно надо руками доделывать) и другая информация http://blog.ispsystem.info/search/label/bitrix-env
Установка sphinx sphinxsearch на Debian 8
wget http://sphinxsearch.com/files/sphinxsearch_2.2.11-release-1~jessie_amd64.deb
apt-get install libodbc1
dpkg -i sphinxsearch_2.2.11-release-1~jessie_amd64.deb
vi /etc/sphinxsearch/sphinx.conf
Главно не забыть создать индексы, без команды ниже ничего не работает!
indexer --all --verbose
service sphinxsearch restart
apt-get install libodbc1
dpkg -i sphinxsearch_2.2.11-release-1~jessie_amd64.deb
vi /etc/sphinxsearch/sphinx.conf
Главно не забыть создать индексы, без команды ниже ничего не работает!
indexer --all --verbose
service sphinxsearch restart
postfix управление очередью
Прочитать письмо
postcat -b 4E62A1C0493
Посмотреть активные настройки Postfix:
postconf -d
Посмотреть сколько сообщений в очереди:
mailq | grep Requests
Посмотреть конкретно что в очереди:
mailq
Пнуть очередь на немедленную доставку:
postsuper -r ALL; postfix flush
Пнуть конкретное письмо по ID:
postsuper -r ID
Удалить письмо по ID:
postsuper -d ID
Удалить всю очередь:
postsuper -d ALL
postcat -b 4E62A1C0493
Посмотреть активные настройки Postfix:
postconf -d
Посмотреть сколько сообщений в очереди:
mailq | grep Requests
Посмотреть конкретно что в очереди:
mailq
Пнуть очередь на немедленную доставку:
postsuper -r ALL; postfix flush
Пнуть конкретное письмо по ID:
postsuper -r ID
Удалить письмо по ID:
postsuper -d ID
Удалить всю очередь:
postsuper -d ALL
Заблокировать поисковые боты в Nginx по User-Agent
Прописываем вначале server
if ($http_user_agent ~ WordPress|SemrushBot|SputnikBot|Crowsnest|PaperLiBot|peerindex|ia_archiver|Slurp|Aport|NING|JSKit|rogerbot|BLEXBot|MJ12bot|Twiceler|Baiduspider|Java|CommentReader|Yeti|discobot|BTWebClient|Tagoobot|Ezooms|igdeSpyder|AhrefsBot|Teleport|Offline|DISCo|netvampire|Copier|HTTrack|WebCopier|GrapeshotCrawler|coccocbotweb|HybridBot|magpiecrawlerHostTracker|Riddler|SentiBot|HostTracker) {
return 403;
}
if ($http_user_agent ~ WordPress|SemrushBot|SputnikBot|Crowsnest|PaperLiBot|peerindex|ia_archiver|Slurp|Aport|NING|JSKit|rogerbot|BLEXBot|MJ12bot|Twiceler|Baiduspider|Java|CommentReader|Yeti|discobot|BTWebClient|Tagoobot|Ezooms|igdeSpyder|AhrefsBot|Teleport|Offline|DISCo|netvampire|Copier|HTTrack|WebCopier|GrapeshotCrawler|coccocbotweb|HybridBot|magpiecrawlerHostTracker|Riddler|SentiBot|HostTracker) {
return 403;
}
cPanel не работает phpmyadmin
Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.
Переходим в каталог /usr/local/cpanel/base/3rdparty/phpMyAdmin/
Там есть файл .php.ini - это symlink на /usr/local/cpanel/3rdparty/php/56/etc/phpmyadmin/php.ini
Открываем его в редакторе и раскоментируем
session.save_path = "/tmp"
Перезапускаем cpsrvd (поскольку он "слушает" порт 2083 ssl на котором работает cpanel и по которому вы получаете данную ошибку по ссылке вида https://example.com:2083/cpsess3131291/3rdparty/phpMyAdmin/....) и обрабатывает php-скрипты как fastcgi (если в директории phpmyadmin разместить phpinfo это видно равно как пустой путь для сохранения сессий)
service cpanel restart
Проблема должна быть решена
"Закрыть доступ по IP" nginx bitrix окружение
vi /etc/nginx/bx/site_enabled/s1.conf
if ($http_host ~ "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}") {
return 444;
}
if ($http_host ~ "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}") {
return 444;
}
Борьба с DDOS атаками вида synflood
Подсчет числа полуоткрытых TCP-соединений:
$ netstat -na | grep ":порт\ " | grep SYN_RCVD | wc -l
Просмотр списка IP-адресов, с которых идут запросы на подключение:
$ netstat -na | grep ":порт\ " | sort | uniq -c | sort -nr
Анализ подозрительных пакетов с помощью tcpdump:
# tcpdump -n -i eth0 -s 0 -w output.txt dst port порт and host IP-сервера
Блокируем подключения атакующего:
# iptables -A INPUT -s IP-атакующего -p tcp --destination-port порт -j DROP
Ограничиваем максимальное число полуоткрытых соединений с одного IP к конкретному порту:
# iptables -I INPUT -p tcp --syn --dport порт -m iplimit --iplimit-above 8 -j DROP
Отключаем ответы на запросы ICMP ECHO:
# iptables -A INPUT -p icmp -j DROP --icmp-type 8
Устанавливаем netstat в CentOS 7:
# yum install net-tools
$ netstat -na | grep ":порт\ " | grep SYN_RCVD | wc -l
Просмотр списка IP-адресов, с которых идут запросы на подключение:
$ netstat -na | grep ":порт\ " | sort | uniq -c | sort -nr
Анализ подозрительных пакетов с помощью tcpdump:
# tcpdump -n -i eth0 -s 0 -w output.txt dst port порт and host IP-сервера
Блокируем подключения атакующего:
# iptables -A INPUT -s IP-атакующего -p tcp --destination-port порт -j DROP
Ограничиваем максимальное число полуоткрытых соединений с одного IP к конкретному порту:
# iptables -I INPUT -p tcp --syn --dport порт -m iplimit --iplimit-above 8 -j DROP
Отключаем ответы на запросы ICMP ECHO:
# iptables -A INPUT -p icmp -j DROP --icmp-type 8
Устанавливаем netstat в CentOS 7:
# yum install net-tools
Разметка диска под gpt и gmirror FreeBSD
Когда в системе только один диск достаточно сделать
Очищаем диск от старой таблицы разметки
gpart destroy -F /dev/ada0
dd if=/dev/zero of=/dev/ada0 count=1 bs=1024
Создаем разметку gpt с 3 партициями, записываем в первую загрузочный bootcode
gpart create -s gpt ada0
gpart add -t freebsd-boot -s 128k ada0
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0
gpart add -t freebsd-swap -l swapada0 -s 16G ada0
gpart add -t freebsd-ufs -l rootfsada0 ada0
После чего создаем зеркало raid1
gmirror load
gmirror label -v rootfs /dev/gpt/rootfsada0
gmirror label -v swap /dev/gpt/swapada0
Далее форматируем файловую систему
newfs -U /dev/mirror/rootfs
И затем переносим нужную систему через rsync / pax / или чистую ОС
Копирование таблицы разделов на другой диск
gpart backup ada0 | gpart restore -F /dev/ada1
И потом добавление в зеркало
gmirror insert swap /dev/ada1p2
gmirror insert rootfs /dev/ada1p3
В /boot/loader.conf при этом должно быть
geom_mirror_load="YES"
ahci_load="YES"
И в /etc/fstab
/dev/mirror/swap none swap sw 0 0
/dev/mirror/rootfs / ufs rw 1 1
Смотри также: Зеркалирование дисков на выделенном сервере
Скрипт установки: http://dl.ispsystem.info/freebsd-hetzner-install.sh
Очищаем диск от старой таблицы разметки
gpart destroy -F /dev/ada0
dd if=/dev/zero of=/dev/ada0 count=1 bs=1024
Создаем разметку gpt с 3 партициями, записываем в первую загрузочный bootcode
gpart create -s gpt ada0
gpart add -t freebsd-boot -s 128k ada0
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0
gpart add -t freebsd-swap -l swapada0 -s 16G ada0
gpart add -t freebsd-ufs -l rootfsada0 ada0
После чего создаем зеркало raid1
gmirror load
gmirror label -v rootfs /dev/gpt/rootfsada0
gmirror label -v swap /dev/gpt/swapada0
Далее форматируем файловую систему
newfs -U /dev/mirror/rootfs
И затем переносим нужную систему через rsync / pax / или чистую ОС
Копирование таблицы разделов на другой диск
gpart backup ada0 | gpart restore -F /dev/ada1
И потом добавление в зеркало
gmirror insert swap /dev/ada1p2
gmirror insert rootfs /dev/ada1p3
В /boot/loader.conf при этом должно быть
geom_mirror_load="YES"
ahci_load="YES"
И в /etc/fstab
/dev/mirror/swap none swap sw 0 0
/dev/mirror/rootfs / ufs rw 1 1
Смотри также: Зеркалирование дисков на выделенном сервере
Скрипт установки: http://dl.ispsystem.info/freebsd-hetzner-install.sh
Перенос FreeBSD с диска на диск
Если нет rsync (привет hetzner rescue)
cd /mnt-old; pax -p e -X -rw . /mnt-new
cd /mnt-old; pax -p e -X -rw . /mnt-new
bitrix получить доступ в админку сайта
В каталоге сайта создаете php файл pusti.php с секретным именем и содержимым ниже:
<?
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');
global $USER;
$USER->Authorize(1);
?>
<a href='/bitrix/admin/index.php'>ЖМИ СЮДА</a>
После работ обязательно удалите данный файл для избежания взлома сайта
<?
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');
global $USER;
$USER->Authorize(1);
?>
<a href='/bitrix/admin/index.php'>ЖМИ СЮДА</a>
После работ обязательно удалите данный файл для избежания взлома сайта
Генератор SSL конфига веб-сервера который соответствует требованиям безопасности
https://mozilla.github.io/server-side-tls/ssl-config-generator/
Смотрите также https://wiki.mozilla.org/Security/Server_Side_TLS
Генерация dhparam файла
openssl dhparam -out dhparam.pem 4096
Смотрите также https://wiki.mozilla.org/Security/Server_Side_TLS
Генерация dhparam файла
openssl dhparam -out dhparam.pem 4096
дополнительная авторизация в phpmyadmin
# cat /usr/share/phpMyAdmin/.htaccess
AuthType Basic
AuthName "Private zone"
AuthUserFile /etc/phpMyAdmin/.htpass
require valid-user
# htpasswd -c /etc/phpMyAdmin/.htpass myadmin
# grep AllowOverride /etc/httpd/conf.d/phpmyadmin.conf
# AllowOverride None
AllowOverride AuthConfig
AuthType Basic
AuthName "Private zone"
AuthUserFile /etc/phpMyAdmin/.htpass
require valid-user
# htpasswd -c /etc/phpMyAdmin/.htpass myadmin
# grep AllowOverride /etc/httpd/conf.d/phpmyadmin.conf
# AllowOverride None
AllowOverride AuthConfig
Монтируем ftp как папку
curlftpfs user:pass@ftp.example.com /mnt/ftp
Открыть запись для остальных пользователей можно опцией allow_other
Например, открываем для пользователя с uid 1001
curlftpfs ftp://user:pass@ftp.example.com /mnt/ftp -o allow_other,uid=1001,gid=1001,umask=077,default_permissions
Монтируем через /etc/fstab
curlftpfs#ftp.example.com /mnt/ftp fuse noauto,user=user:pass,allow_other,default_permissions,umask=022,_netdev 0 0
Отмонтируем
fusermount -u /mnt/ftp
Не рекомендую это решение в production, так как даже при тестирование наблюдаются проблемы с низкой скоростью и плохой загрузкой больших файлов
Открыть запись для остальных пользователей можно опцией allow_other
Например, открываем для пользователя с uid 1001
curlftpfs ftp://user:pass@ftp.example.com /mnt/ftp -o allow_other,uid=1001,gid=1001,umask=077,default_permissions
Монтируем через /etc/fstab
curlftpfs#ftp.example.com /mnt/ftp fuse noauto,user=user:pass,allow_other,default_permissions,umask=022,_netdev 0 0
Отмонтируем
fusermount -u /mnt/ftp
Не рекомендую это решение в production, так как даже при тестирование наблюдаются проблемы с низкой скоростью и плохой загрузкой больших файлов
bitrix не меняется max_execution_time
В php.ini и phpinfo(); показывается max_execution_time=900, а в http://example.com/bitrix/admin/phpinfo.php (открывается после входа в админку) - 300
Открываем bitrix/php_interface/dbconn.php и правим
@set_time_limit(900);
Там же можно править ini_set("memory_limit", "1024M");
Этот параметр реально влияет на всё в битриксе, скажем на время при импорте данных из 1С и другие скрипты
Открываем bitrix/php_interface/dbconn.php и правим
@set_time_limit(900);
Там же можно править ini_set("memory_limit", "1024M");
Этот параметр реально влияет на всё в битриксе, скажем на время при импорте данных из 1С и другие скрипты
Проблема с загрузкой лицензии ISPmanager
Если ISPmanager 5 упорно не загружает лицензию, то стоит проверить работу https на сервере выполнив команду взяв url из licctl.log
# curl -v -k -o- https://212.109.222.143/mgr5.45.state
* About to connect() to 212.109.222.143 port 443 (#0)
* Trying 212.109.222.143...
* Connected to 212.109.222.143 (212.109.222.143) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* Unable to initialize NSS database
* Initializing NSS with certpath: none
* NSS error -5938 (PR_END_OF_FILE_ERROR)
* Encountered end of file
* Closing connection 0
curl: (35) Encountered end of file
В моем случае проблема была с битыми файлами в /etc/pki/nssdb/ и исправлено заменой файлов с исправной системы
Примечательно, что изначально я запускал wget --no-check-certificate и так делать нельзя, так как проверка не была пройдена и ошибка не была видна в отличии от curl, так как панель использует libcurl
# curl -v -k -o- https://212.109.222.143/mgr5.45.state
* About to connect() to 212.109.222.143 port 443 (#0)
* Trying 212.109.222.143...
* Connected to 212.109.222.143 (212.109.222.143) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* Unable to initialize NSS database
* Initializing NSS with certpath: none
* NSS error -5938 (PR_END_OF_FILE_ERROR)
* Encountered end of file
* Closing connection 0
curl: (35) Encountered end of file
В моем случае проблема была с битыми файлами в /etc/pki/nssdb/ и исправлено заменой файлов с исправной системы
Примечательно, что изначально я запускал wget --no-check-certificate и так делать нельзя, так как проверка не была пройдена и ошибка не была видна в отличии от curl, так как панель использует libcurl
debian 6.0 поставить rsync и другой старый софт
# tail -1 /etc/apt/sources.list
deb http://archive.debian.org/debian/ squeeze main contrib non-free
apt-get update
apt-get install rsync
deb http://archive.debian.org/debian/ squeeze main contrib non-free
apt-get update
apt-get install rsync
не работает ssi в apache debian
Необходимо подключить модуль include_module
# ln -s /etc/apache2/mods-available/include.load /etc/apache2/mods-enabled/include.load
# apachectl restart
# ln -s /etc/apache2/mods-available/include.load /etc/apache2/mods-enabled/include.load
# apachectl restart
не работает поиск в phpmyadmin centos 7 из-за ошибки в php-gettext
Включаем отображение ошибок
vi /etc/httpd/conf.d/phpmyadmin.conf
php_admin_flag engine on
php_admin_value display_errors on
php_admin_value error_reporting 30711
php_admin_flag ini_set on
Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Select_string only accepts integers: 0' in /usr/share/php/gettext/gettext.php:354 Stack trace: #0 /usr/share/php/gettext/gettext.php(388): gettext_reader->select_string('0') #1 /usr/share/php/gettext/gettext.inc(293): gettext_reader->ngettext('%1$s match in <...', '%1$s matches in...', '0') #2 /usr/share/phpMyAdmin/libraries/DbSearch.class.php(337): _ngettext('%1$s match in <...', '%1$s matches in...', '0') #3 /usr/share/phpMyAdmin/libraries/DbSearch.class.php(289): PMA_DbSearch->_getResultsRow('wp_appointment_...', Array, true, '0') #4 /usr/share/phpMyAdmin/db_search.php(46): PMA_DbSearch->getSearchResults() #5 {main} thrown in /usr/share/php/gettext/gettext.php on line 354
Согласно http://bazaar.launchpad.net/~danilo/php-gettext/trunk/revision/61 проблема в php-gettext и правится в /usr/share/php/gettext/gettext.php на 435 строке комментированием кода
if (!is_int($n)) {
throw new InvalidArgumentException(
"Select_string only accepts integers: " . $n);
}
vi /etc/httpd/conf.d/phpmyadmin.conf
php_admin_flag engine on
php_admin_value display_errors on
php_admin_value error_reporting 30711
php_admin_flag ini_set on
Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Select_string only accepts integers: 0' in /usr/share/php/gettext/gettext.php:354 Stack trace: #0 /usr/share/php/gettext/gettext.php(388): gettext_reader->select_string('0') #1 /usr/share/php/gettext/gettext.inc(293): gettext_reader->ngettext('%1$s match in <...', '%1$s matches in...', '0') #2 /usr/share/phpMyAdmin/libraries/DbSearch.class.php(337): _ngettext('%1$s match in <...', '%1$s matches in...', '0') #3 /usr/share/phpMyAdmin/libraries/DbSearch.class.php(289): PMA_DbSearch->_getResultsRow('wp_appointment_...', Array, true, '0') #4 /usr/share/phpMyAdmin/db_search.php(46): PMA_DbSearch->getSearchResults() #5 {main} thrown in /usr/share/php/gettext/gettext.php on line 354
Согласно http://bazaar.launchpad.net/~danilo/php-gettext/trunk/revision/61 проблема в php-gettext и правится в /usr/share/php/gettext/gettext.php на 435 строке комментированием кода
if (!is_int($n)) {
throw new InvalidArgumentException(
"Select_string only accepts integers: " . $n);
}
Использование утилиты ddrescue для восстановления данных
ddrescue - это утилита для восстановления данных с поврежденной поверхности диска
При выборе между dd_rescue и ddrescue используйте ddrescue - подробности https://habrahabr.ru/post/236977
Сравнивая с dd_rescue - умеет сохранять сбойные блоки в лог-файл и затем восстанавливать их отдельно и не умеет пересылать данные в pipe (скажем для копирования по сети через ssh-транспорт)
ddrescue -f -n /dev/sda /dev/sdb ddrescue.log
Копируем только сбойные блоки согласно ddrescue.log делая 3 попытки их чтения
ddrescue -f -d -r3 /dev/sda /dev/sdb ddrescue.log
Как правило двух этих простых команд достаточно для восстановления данных с диска на котором появились сбойные блоки
Происходит остановка копирования при чтении с битого диска на позиции 12345
Перезапуск восстановления с байта 12345
ddrescue -f -n -i 12345 /dev/sda /dev/sdb ddrescue.log
Перезапуск восстановления с конца диска
ddrescue -f -n -R /dev/sda /dev/sdb ddrescue.log
Не забываем после всего про опцию -dr3 для перечитывания битых блоков согласно log-файлу
Заставить ddrescue перезаписать диск outfile. Необходим, когда в качестве outfile используется устройство. Используется для защиты от ошибочного повреждения данных.
-n
Пропускает фазу scrape. Уменьшает время восстановления, снижает время на попытки чтения самых трудных частей файла.
-d
При указании данной опции, ddrescue использует прямой доступ к диску, обходя кэши ядра
-r n
Задает количество повторных попыток чтения поврежденных областей
-R
ddrescue читает данные в обратной последовательности
При выборе между dd_rescue и ddrescue используйте ddrescue - подробности https://habrahabr.ru/post/236977
Сравнивая с dd_rescue - умеет сохранять сбойные блоки в лог-файл и затем восстанавливать их отдельно и не умеет пересылать данные в pipe (скажем для копирования по сети через ssh-транспорт)
Сценарий восстановления с неисправного диска на исправный
Копируем с неисправного диска /dev/sda на исправный /dev/sdb сбойные блоки пропускаем и сохраняем о них информацию в logddrescue -f -n /dev/sda /dev/sdb ddrescue.log
Копируем только сбойные блоки согласно ddrescue.log делая 3 попытки их чтения
ddrescue -f -d -r3 /dev/sda /dev/sdb ddrescue.log
Как правило двух этих простых команд достаточно для восстановления данных с диска на котором появились сбойные блоки
Происходит остановка копирования при чтении с битого диска на позиции 12345
Перезапуск восстановления с байта 12345
ddrescue -f -n -i 12345 /dev/sda /dev/sdb ddrescue.log
Перезапуск восстановления с конца диска
ddrescue -f -n -R /dev/sda /dev/sdb ddrescue.log
Не забываем после всего про опцию -dr3 для перечитывания битых блоков согласно log-файлу
Расшифровка опций
-fЗаставить ddrescue перезаписать диск outfile. Необходим, когда в качестве outfile используется устройство. Используется для защиты от ошибочного повреждения данных.
-n
Пропускает фазу scrape. Уменьшает время восстановления, снижает время на попытки чтения самых трудных частей файла.
-d
При указании данной опции, ddrescue использует прямой доступ к диску, обходя кэши ядра
-r n
Задает количество повторных попыток чтения поврежденных областей
-R
ddrescue читает данные в обратной последовательности
top в cron : простой мониторинг нагрузки сервера
# crontab -l
*/5 * * * * /bin/date >> /tmp/mon.log ; /usr/bin/top -b -n 1 >> /tmp/mon.log
В /tmp/mon.log можно будет посмотреть что было незадолго до падения сервера, как вариант
*/5 * * * * /bin/date >> /tmp/mon.log ; /usr/bin/top -b -n 1 >> /tmp/mon.log
В /tmp/mon.log можно будет посмотреть что было незадолго до падения сервера, как вариант
Установка Firefox ESR на Ubuntu 16.04
wget https://download-installer.cdn.mozilla.net/pub/firefox/releases/52.0esr/linux-x86_64/ru/firefox-52.0esr.tar.bz2
sudo -s
tar -xf firefox-52.0esr.tar.bz2 -C /opt/
dpkg-divert --divert /usr/bin/firefox.unuse --rename /usr/bin/firefox
ln -s /opt/firefox/firefox /usr/bin/firefox
Так как опция ui.use_unity_menubar true не работает (оно жестко вкопмиляно в /usr/lib/firefox/libxul.so (чтобы увидеть меню обычное нажмите alt) - ставим плагин https://addons.mozilla.org/ru/firefox/addon/compact-menu-2/
Немного не так привычно (к отдельной кнопке меню которую надо добавить через настройки панели можно привыкнуть), зато имеем целый год одну и ту же версию firefox в которой точно будет работать java-плагин
Для этого не забываем про about:config - plugin.load_flash_only = false
Обновлять эту версию придется вручную запустив с правами root и затем Справка - о Firefox
Также, как показала практика, данная версия firefox расходует в 1.5 раза меньше памяти и работает быстрее, чем из штатного репозитория
sudo -s
tar -xf firefox-52.0esr.tar.bz2 -C /opt/
dpkg-divert --divert /usr/bin/firefox.unuse --rename /usr/bin/firefox
ln -s /opt/firefox/firefox /usr/bin/firefox
Так как опция ui.use_unity_menubar true не работает (оно жестко вкопмиляно в /usr/lib/firefox/libxul.so (чтобы увидеть меню обычное нажмите alt) - ставим плагин https://addons.mozilla.org/ru/firefox/addon/compact-menu-2/
Немного не так привычно (к отдельной кнопке меню которую надо добавить через настройки панели можно привыкнуть), зато имеем целый год одну и ту же версию firefox в которой точно будет работать java-плагин
Для этого не забываем про about:config - plugin.load_flash_only = false
Обновлять эту версию придется вручную запустив с правами root и затем Справка - о Firefox
Также, как показала практика, данная версия firefox расходует в 1.5 раза меньше памяти и работает быстрее, чем из штатного репозитория
bitrix вебокружение downgrade php 7.0 до 5.6
Автоматический режим
Идем в меню битрикс окружения и меняем там
Ручной режим
vi /etc/yum.repos.d/remi-php70.repo
vi /etc/yum.repos.d/remi.repo
отключаем 7, включаем 56
yum remove php-*
yum install bitrix-env
yum install php-pecl-zendopcache
apachectl restart
Идем в меню битрикс окружения и меняем там
Ручной режим
vi /etc/yum.repos.d/remi-php70.repo
vi /etc/yum.repos.d/remi.repo
отключаем 7, включаем 56
yum remove php-*
yum install bitrix-env
yum install php-pecl-zendopcache
apachectl restart
Возвращаем поддержку NPAPI в Firefox - включаем поддержку Java
В Firefox 52 отключили поддержку всех NAPI плагинов включая Java, Acrobat, Silverlight и других кроме Flash
http://www.opennet.ru/opennews/art.shtml?num=46155
Вернуть обратно можно через
about:config и там создать параметр
plugin.load_flash_only = false
Однако, в версии 53 этот параметр отключат полностью и необходимо переходить на версию Firefox 52 ESR
http://www.opennet.ru/opennews/art.shtml?num=46155
Вернуть обратно можно через
about:config и там создать параметр
plugin.load_flash_only = false
Однако, в версии 53 этот параметр отключат полностью и необходимо переходить на версию Firefox 52 ESR
MySQL создать пользователя и выдать доступ к базе данных
Как создать пользователя в MySQL сервере и выдать права пользователю на базу данных вручную
MariaDB [(none)]> CREATE USER 'username'@'localhost' IDENTIFIED BY 'pas$w0rd';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON * . * TO 'username'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON databasename.* TO 'username'@'localhost';
MariaDB [(none)]> CREATE USER 'username'@'localhost' IDENTIFIED BY 'pas$w0rd';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON * . * TO 'username'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON databasename.* TO 'username'@'localhost';
bitrix перевод на mysqli
Переводим битрикс на MySQLi с MySQL при переносе на PHP 7
# vi /home/bitrix/www/bitrix/php_interface/dbconn.php
define("BX_USE_MYSQLI", true);
# vi /home/bitrix/www/bitrix/.settings.php
array (
'default' =>
array (
'className' => '\\Bitrix\\Main\\DB\\MysqliConnection',
'host' => 'localhost',
# vi /home/bitrix/www/bitrix/php_interface/dbconn.php
define("BX_USE_MYSQLI", true);
# vi /home/bitrix/www/bitrix/.settings.php
array (
'default' =>
array (
'className' => '\\Bitrix\\Main\\DB\\MysqliConnection',
'host' => 'localhost',
bitrix включить debug сайта
https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=2795
# vi /home/bitrix/www/bitrix/php_interface/dbconn.php
$DBDebug = true;
$DBDebugToFile = true;
# vi /home/bitrix/www/bitrix/.settings.php
'exception_handling' => array (
'value' => array (
'debug' => true,
'handled_errors_types' => E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE,
'exception_errors_types' => E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_USER_WARNING & ~E_USER_NOTICE & ~E_COMPILE_WARNING & ~E_DEPRECATED,
'ignore_silence' => false,
'assertion_throws_exception' => true,
'assertion_error_type' => 256,
'log' => array (
'settings' => array (
'file' => 'bitrix/modules/error.log',
'log_size' => 1000000,
),
),
),
'readonly' => false,
),
# vi /home/bitrix/www/bitrix/php_interface/dbconn.php
$DBDebug = true;
$DBDebugToFile = true;
# vi /home/bitrix/www/bitrix/.settings.php
'exception_handling' => array (
'value' => array (
'debug' => true,
'handled_errors_types' => E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE,
'exception_errors_types' => E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_USER_WARNING & ~E_USER_NOTICE & ~E_COMPILE_WARNING & ~E_DEPRECATED,
'ignore_silence' => false,
'assertion_throws_exception' => true,
'assertion_error_type' => 256,
'log' => array (
'settings' => array (
'file' => 'bitrix/modules/error.log',
'log_size' => 1000000,
),
),
),
'readonly' => false,
),
Firefox пишет много данных на SSD
about:config - browser.sessionstore.interval
По-умолчанию он равен 15 секундам (15000) и можно смело увеличивать аж до 30 минут
10 минут - это 600000
Источник: https://geektimes.ru/post/280792/
По-умолчанию он равен 15 секундам (15000) и можно смело увеличивать аж до 30 минут
10 минут - это 600000
Источник: https://geektimes.ru/post/280792/
Расширения отображающие IP адрес сайта в realtime для браузера
Firefox - Server IP
https://addons.mozilla.org/ru/firefox/addon/server-ip/
Chrome - Website IP
https://chrome.google.com/webstore/detail/website-ip/ghbmhlgniedlklkpimlibbaoomlpacmk
Все остальные "лазят в интернет" к внешним сайтам и не отображают то, что реально отрезолвлено скажем на основании записи в /etc/hosts и тем самым непригодны для работы
https://addons.mozilla.org/ru/firefox/addon/server-ip/
Chrome - Website IP
https://chrome.google.com/webstore/detail/website-ip/ghbmhlgniedlklkpimlibbaoomlpacmk
Все остальные "лазят в интернет" к внешним сайтам и не отображают то, что реально отрезолвлено скажем на основании записи в /etc/hosts и тем самым непригодны для работы
Дополнительные возможности phpMyAdmin не настроены в полной мере, некоторые функции были отключены
# vi config.inc.php
$cfg['PmaNoRelation_DisableWarning'] = TRUE;
$cfg['PmaNoRelation_DisableWarning'] = TRUE;
Поменять IP адрес в WWW домены в ISPmanager
После того как при помощи sed изменен IP адрес в файлах конфигурации apache/nginx/named чтобы не менять IP в WWW домены (и тем самым не портить конфиги) проще всего поменять в базе панели
# sqlite3 /usr/local/mgr5/etc/ispmgr.db
sqlite> update webdomain_ipaddr set value='188.120.234.73';
# killall core
# sqlite3 /usr/local/mgr5/etc/ispmgr.db
sqlite> update webdomain_ipaddr set value='188.120.234.73';
# killall core
ipmi reset сброс конфигурации на заводские настройки
wget ftp://ftp.supermicro.com/utility/IPMICFG/IPMICFG_1.26.0_20161227.zip(mirror)
wget http://dl.ispsystem.info/ipmi/IPMICFG_1.24.1_build.160222.zip
unzip IPMICFG_1.24.1_build.160222.zip
chmod +x IPMICFG_1.24.1_build.160222/Linux/32bit/IPMICFG-Linux.x86
IPMICFG_1.24.1_build.160222/Linux/32bit/IPMICFG-Linux.x86 -fd
wget http://dl.ispsystem.info/ipmi/IPMICFG_1.24.1_build.160222.zip
unzip IPMICFG_1.24.1_build.160222.zip
chmod +x IPMICFG_1.24.1_build.160222/Linux/32bit/IPMICFG-Linux.x86
IPMICFG_1.24.1_build.160222/Linux/32bit/IPMICFG-Linux.x86 -fd
openssl client проверяем сертификаты
Проверяем сертификат на https
openssl s_client -connect example.com:443
Проверяем сертификат на почту
openssl s_client -starttls smtp -connect mail.example.com:587
Проверка соответствия ключа сертификату
openssl x509 -noout -modulus -in cert.crt | openssl md5
openssl rsa -noout -modulus -in cert.key | openssl md5
openssl s_client -connect example.com:443
Проверяем сертификат на почту
openssl s_client -starttls smtp -connect mail.example.com:587
Проверка соответствия ключа сертификату
openssl x509 -noout -modulus -in cert.crt | openssl md5
openssl rsa -noout -modulus -in cert.key | openssl md5
Установка node.js
NodeJS устанавливается в 2 простых команды так как уже собран под все дистрибутивы (с CentOS 6 x64 точно работает)
# wget https://nodejs.org/dist/v7.6.0/node-v7.6.0-linux-x64.tar.xz
# tar -xf node-v7.6.0-linux-x64.tar.xz --strip 1 -C /usr/local/
# wget https://nodejs.org/dist/v7.6.0/node-v7.6.0-linux-x64.tar.xz
# tar -xf node-v7.6.0-linux-x64.tar.xz --strip 1 -C /usr/local/
nginx limit ограничение на число подключений с одного IP
# vi /etc/nginx/nginx.conf
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
limit_conn_zone $binary_remote_addr zone=zone:1m;
limit_conn zone 8;
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
limit_conn_zone $binary_remote_addr zone=zone:1m;
limit_conn zone 8;
Очистить семафоры apache
Ошибка при запуске apache:
[emerg] (28)No space left on device: Couldn't create accept lock (/var/lock/apache2/accept.lock.12963) (5)
Смотрим сколько семафоров занято
ipcs -s | awk '/apache/ {print $2}'
Очищаем семафоры
for i in `ipcs -s | awk '/apache/ {print $2}'`; do (ipcrm -s $i); done
Вообще, выше чем в Debian 7 (и, возможно, CentOS 6) ошибку не встречал, скорее всего в современных системах и свежих версиях apache проблему исправили
[emerg] (28)No space left on device: Couldn't create accept lock (/var/lock/apache2/accept.lock.12963) (5)
Смотрим сколько семафоров занято
ipcs -s | awk '/apache/ {print $2}'
Очищаем семафоры
for i in `ipcs -s | awk '/apache/ {print $2}'`; do (ipcrm -s $i); done
Вообще, выше чем в Debian 7 (и, возможно, CentOS 6) ошибку не встречал, скорее всего в современных системах и свежих версиях apache проблему исправили
Блокировка UserAgent через iptables
iptables -A INPUT -m string --algo kmp --string AhrefsBot -p tcp --dport 80 -j DROP
iptables -A INPUT -m string --algo kmp --string AhrefsBot -p tcp --dport 443 -j DROP
Вывод правил цепочки с указанием номеров:
iptables -L INPUT --line-numbers
Удаление правила с указанным номером:
iptables -D INPUT номерправила
iptables -A INPUT -m string --algo kmp --string AhrefsBot -p tcp --dport 443 -j DROP
Вывод правил цепочки с указанием номеров:
iptables -L INPUT --line-numbers
Удаление правила с указанным номером:
iptables -D INPUT номерправила
bitrix после переноса на другой путь до корневой папке выдает Unknown: failed to open stream: No such file or directory in Unknown on line 0
Переносим рабочий сайт на Bitrix в другой каталог. Получаем ошибку
[Thu Feb 23 10:37:58 2017] [error] [client 122.111.122.12] PHP Fatal error: Unknown: Failed opening required '/home/www/example.com/bitrix/modules/security/tools/start.php' (include_path='.:/usr/share/pear:/usr/share/php') in Unknown on line 0
Лечение:
Открываем файл .htaccess в корневом каталоге сайта и комментируем строку в конце файла
php_value auto_prepend_file "/home/www/example.com/bitrix/modules/security/tools/start.php"
[Thu Feb 23 10:37:58 2017] [error] [client 122.111.122.12] PHP Fatal error: Unknown: Failed opening required '/home/www/example.com/bitrix/modules/security/tools/start.php' (include_path='.:/usr/share/pear:/usr/share/php') in Unknown on line 0
Лечение:
Открываем файл .htaccess в корневом каталоге сайта и комментируем строку в конце файла
php_value auto_prepend_file "/home/www/example.com/bitrix/modules/security/tools/start.php"
Подписаться на:
Сообщения (Atom)