Sef mode bitrix: Как отключить php safe_mode для определенного каталога в общедоступной среде хостинга?

Содержание

PHP: Ограниченные или недоступные в безопасном режиме функции

dbmopen() Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
dbase_open() Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
filepro() Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
filepro_rowcount() Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
filepro_retrieve() Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
ifx_* sql_safe_mode ограничения (не путать с safe_mode)
ingres_* sql_safe_mode ограничения (не путать с safe_mode)
mysql_* sql_safe_mode ограничения (не путать с safe_mode)
pg_lo_import() Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
posix_mkfifo() Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
putenv() Подчиняется настройкам the safe_mode_protected_env_vars и safe_mode_allowed_env_vars. Ознакомьтесь с более подробным описанием функции putenv().
move_uploaded_file() Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
chdir() Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
dl() Эта функция недоступна в безопасном режиме.
backtick operator Эта функция недоступна в безопасном режиме.
shell_exec() (функция эквивалентна backticks) Эта функция недоступна в безопасном режиме.
exec() Вы можете запускать исполняемые файлы, ограниченные деревом каталогов, указанным в safe_mode_exec_dir. Исходя из практических соображений, использовать .. при указании пути запрещено. Следует заметить, что к аргументу этой функции применяется escapeshellcmd().
system() Вы можете запускать исполняемые файлы, ограниченные деревом каталогов, указанным в safe_mode_exec_dir. Исходя из практических соображений, использовать
..
при указании пути запрещено. Следует заметить, что к аргументу этой функции применяется escapeshellcmd()
passthru() Вы можете запускать исполняемые файлы, ограниченные деревом каталогов, указанным в safe_mode_exec_dir. Исходя из практических соображений, использовать .. при указании пути запрещено. Следует заметить, что к аргументу этой функции применяется escapeshellcmd().
popen() Вы можете запускать исполняемые файлы, ограниченные деревом каталогов, указанным в safe_mode_exec_dir. Исходя из практических соображений, использовать .. при указании пути запрещено. Следует заметить, что к аргументу этой функции применяется escapeshellcmd().
fopen() Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
mkdir() Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
rmdir() Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
rename() Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
unlink() Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
copy() Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. (для параметров source и target)
chgrp() Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
chown() Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
chmod() Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. Кроме того, вы не можете устанавливать UID, SGID и sticky-биты.
touch() Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
symlink() Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. (Замечание: проверка выполняется только для параметра target)
link() Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. (Замечание: проверка выполняется только для параметра target)
apache_request_headers() В безопасном режиме, заголовки, начинающиеся с authorization (независимо от регистра), не возвращаются.
header() В безопасном режиме, текущий UID скрипта будет добавлен к realm-части заголовка WWW-Authenticate, если вы его устанавливаете (используется для HTTP-аутентификации).
переменные PHP_AUTH В безопасном режиме, переменные PHP_AUTH_USER
, PHP_AUTH_PW и AUTH_TYPE недоступны как элементы массива $_SERVER. Несмотря на это, вы все еще можете использовать переменную REMOTE_USER для идентификации пользователя. (Замечание: актуально только для PHP 4.3.0 и выше)
highlight_file(), show_source() Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
parse_ini_file() Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
set_time_limit() Не имеет никакого эффекта, если используется безопасный режим.
max_execution_time Не имеет никакого эффекта, если используется безопасный режим.
mail() В безопасном режиме пятый параметр недоступен.
session_start() Владелец скрипта должен совпадать с владельцем каталога session.save_path, если используются хранилище по умолчанию files и session.save_handler.
Все функции работы с файлами и потоками. Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. (смотрите также php.ini опцию safe_mode_include_dir.

Как установить «1С-Битрикс» на локальный компьютер: порядок действий

Какое программное обеспечение потребуется

Минимальные требования к использованию CMS на ПО и хостинге таковы:

  • Разрешение на применение файла .htaccess.
  • MySQL сервера 4.1.11 или новее.
  • Zlib (есть компрессия для сокращения времени выгрузки обновления).
  • Установка Битрикс выполняется исключительно в корневую серверную папку.
  • safe_mode не функционирует.
  • short_open_tag функционирует.
  • На сервере есть Apache 1.3.0 или более новая версия.
  • PHP 5.3 или версией выше.
  • Memory_limit для ОП составляет не меньше 64 Мб для версии «Бизнес» или 32 Мб для версии «Старт».
  • Есть элементы взаимодействия с сокетами для постоянного обновления.

«1С-Битрикс» выполнен на PHP и отлично работает на любой UNIX или Windows-платформе. Система пользуется БД MySQL.Также «1С-Битрикс» подходит для всех актуальных типов браузеров: Google Chrome, Яндекс.Браузер, Opera, Mozilla Firefox и другие. Если есть акселератор PHP (например, eAccelerotor), продукт будет работать лучше. Оптимально использование рабочего режима PHP как модуля Apache.

Для качественной работы продукта нужны такие расширения PHP:

  • Zlib compression. Это библиотека компрессии. Применяется для функционирования соответствующего модуля, а также при обновлениях. Сокращает число направляемых данных от сервера к клиенту.
  • PHP XML. Применяется для работы системы обновлений. Включена в обычной установке PHP. В наличии встроенная поддержка для версии под Windows.
  • FreeType. Библиотека нужна для механизма CAPTCHA.
  • GD. Библиотека для работы с картинками. Нужна для формирования диаграмм и графиков.
  • POSIX и Perl-compatible. Это обеспечение регулярных выражений. Нужны для функционирования внутренних механизмов продукта.

Для изучения хостинга «1С-Битрикс» на соответствие требованиям воспользуйтесь скриптом bitrix_server_test.php с сайта продукта. Отправьте его в корневую директорию, выполните запуск и изучите полученные данные. После установки на хостинг изучите свой проект специальным инструментом «Проверка сайта». Для запуска сайта, сделанного на «1С-Битрикс» вы можете выбрать любой хостинг, который отвечает техническим требованиям. По сути, это любой shared-хостинг.

Изучите все нюансы, касающегося вашего проекта: что это за сайт, какая у него редакция, каким образом выполнен, каковы особенности структуры, как выполнено кэширование, какое число пользователей пребывает на сайте ежедневно, сколько страниц и др. CMS предлагает пользователям ряд сертифицированных хостингов, услуги которых отвечают всем требованиям.

Установка на локальный компьютер

Первым делом отправьте архивные файлы CMS на локальный компьютер. Выполните распаковку архива в корневой каталог сайта. Вам понадобится около 120 Мб места на диске, но тут все зависит от версии продукта.

Перед тем, как начать инсталляцию, откройте в браузере страницу http://<ваш_сайт>/index.php, где <ваш_сайт> — это действительный URL вашего сайта.

Начинаем инсталляцию и первым делом знакомимся с содержанием лицензионного соглашения. Принимаем его условия.


Принимаем условия лицензионного соглашения

На следующем этапе вводим лицензионный ключ. Выбираем тип установки и кодировку сайта.


Вводим лицензионный ключ и выбираем кодировку сайта

Заполните поля регистрации, кликните «Я хочу получать обновления». Так вы сможете в дальнейшем обновлять продукт. В противном же случае продукт установится, но обновлений вы не получите. С версии 16.5.7 и выше CMS дал возможность помечать новую или имеющуюся установку ПО особой отметкой, не влияющей на блокирование системы обновлений. Следовательно, вы не столкнетесь с предупреждением ERROR_WRONG_CODE.

На вкладке «Установка для разработки» вы можете делать тесты, не закрывая доступ к сайту и не выполняя локальную инсталляцию продукта. Это поможет избежать совместного доступа к одной установке.

Кликните по специальному флажку, если хотите провести инсталляцию с применением UTF=8. Выбор стоит между ним и WIN-1251. Применение последней актуально с устаревшими версиями MySQL (до 4.0).

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


Предварительная проверка

Если проверка не пройдена, то сверху экрана появится красная надпись с указанием на несоответствие. Подробный текст о несоответствии находится внизу. Если при установке на UTF-8 красным будут помечены параметры mbstring.func_overload и mbstring.internal_encoding, то для исправления нужно указать в файле php.ini следующие строки:

mbstring.func_overload = 2
mbstring.internal_encoding = UTF-8.

Выполнив необходимые действия, жмем «Далее». Теперь нужно сделать БД MySQL.


Формируем БД MySQL

Формируется конфигурационный файл взаимодействия с БД, далее сведения выгружаются в базу.

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

  • Сервер. MySQL, значение localhost:[номер_порта]. Номер порта находится в конфигурационных файлах MySQL.
  • Пользователь БД. Создаем нового пользователя.
  • Имя: вводим произвольный логин СУБД для доступа к БД.
  • Пароль.
  • Формируем новую БД.
  • Имя БД.
  • Тип таблиц БД: обычный или Innodb.

Выбираем «Создать новую БД». Мы подходим к этапу, на котором будем выполнять установку продукта. Отслеживается процесса по специальному графическому индикатору.


Установка продукта

Далее заполняем вкладки с параметрами сайта и создаем учетную запись администратора.


Создаем учетную запись администратора

Заполняем следующие поля:

  • логин,
  • пароль,
  • подтверждение пароля,
  • электронная почта,
  • имя,
  • фамилия.

Сохраняем данные. Далее откроется окно с предложением выбрать подходящее решение для сайта:

  • Корпоративный сайт производственной компании. Выбор для организаций производственного типа.
  • Корпоративный сайт услуг. В качестве примере выбран сайта банка. Это решение для компаний в области оказания услуг.
  • Демо-сайт для разработчиков.
  • «1С-Битрикс»: Сайт сообщества. Для тех, кто делает сайт социального сообщества.
  • «1С-Битрикс»: Персональный сайт. Сайт для пользователя, создающего собственный сайт.
  • Интернет-магазин.
  • Инфопортал — для СМИ.

Выбираем модуль:


Готовые модули

Модуль загрузится автоматически. Специальный индикатор также отображает степень загрузки.

Перенос на хостинг

Чтобы перенести сайт на хостинг, проверьте его на соответствие техническим требованиям, которые указаны выше. Используйте скрипт restore:php. Перед этим внимательно его проверьте. Далее создайте архив сайта во вкладке «Резервное копирование» в «Настройках».

Чтобы перенести сайт, выгрузите файл с архивом в корневую директорию сайта. При переносе с локального ПК на хостинг самостоятельно расположите все части рядом с restore:php.

После скачивания архива вам предложат указать пароль для распаковки файлов. Укажите настройки соединения с БД, если при бэкапе был создан дамп БД.


Восстановление базы данных

После распаковки кликните «Удалить локальную копию». Восстановление после этого завершится.

Не забывайте: при переносе сайта с локального компьютера на хостинг могут измениться показатели скорости сайта. Подробно том, как измерить скорость загрузки и при необходимости ускорить сайт, читайте в статье «Оптимизация сайта на “Битрикс”».

Веб-окружение» / Блог компании Агентство AGIMA / Хабр

В определённый момент появилась задача — перевести, существующий и активно работающий в production, проект на работу в кластере серверов. Т.к. проект разработан на базе 1C-Bitrix, было принято решение построить кластер с использованием «1С-Битрикс»: Веб-окружение». Цель данного мероприятия — получить возможность выдерживать большие нагрузки при наплывах посетителей сайта, а также возможность в дальнейшем быстрее масштабироваться горизонтально.

Собственно, если мы обратимся на сайт вендора, то там увидим что:

«1С-Битрикс»: Веб-окружение» — Linux служит для быстрой и простой установки всего ПО, необходимого для работы продуктов и решений «1С-Битрикс» на Linux-платформах CentOS 6 (i386, x86_64) и CentOS 7 (x86_64). Устанавливать необходимо на «чистый» CentOS, без уже установленного веб-сервера.

В состав «1С-Битрикс: Веб-окружение» — Linux входят: mysql-server, httpd, php, nginx, nodejs push-server, memcached, stunnel, catdoc, xpdf, munin, nagios, sphinx.

По сути, данный комплекс ПО содержит в себе настроенный LAMP, консольную панель управления сервером, плюс дополнительные, необходимые для работы некоторых модулей 1C-Bitrix, пакеты. Весь софт настроен с учётом особенностей 1C-Bitrix, а именно:

  • установлены необходимые расширения (gd, zip, socket, mbstring)
  • включена поддержка short-тегов
  • заданы необходимые значения для параметров memory_limit, max_input_vars, safe mode, opcache.validate_timestamps, opcache.revalidate_freq, mbstring.func_overload, default_charset, display_errors и др.
  • установлен одинаковой часовой пояс для БД, php и на самом сервере
  • и др.

Это позволяет в большинстве случаев не заниматься настройкой сервера и его тюнингом.

Итак, у нас было 2 app сервера (назовём их app01 и app01), 2 db сервера (db01, db02), 1 сервер под кэширование (cache01, ну вы поняли), точнее была идея реализовать структуру кластера подобным образом. Под этот план были получены 5 серверов, с установленными на них последними версиями centos7 (к сожалению, debian, ubuntu, fedora, rhel и др. не подходят), кроме os на серверы больше ничего не устанавливалось.

Т.к. мы собираем кластер, то необходимо определить, какой из серверов будет основным. Из-за особенностей балансировки запросов к приложению, один из серверов, где будет работать httpd, будет также содержать nginx. Все входящие запросы будет принимать также он, и после этого перенаправлять запрос на одну из доступных web-нод. Мы выбрали основным сервер app01.

В дальнейшем работа пошла по следующему плану:

1. Установить bitrixenv

Установка не подразумевает сверхъестественных знаний linux или администрирования. Заходим на каждый сервер через ssh и выполняем такие команды:

cd ~
wget http://repos.1c-bitrix.ru/yum/bitrix-env.sh
chmod +x bitrix-env.sh
./bitrix-env.sh

Ставить bitrixenv необходимо на все серверы, которые планируется использовать в кластере. Даже если сервер будет работать только как инстанс memcached, bitrixenv необходим, т.к. позволяет управлять всем кластером из основного сервера.
2. Настроить bitrixenv

Т.к. использовать весь этот зоопарк мы будем как кластер, то производить настройку серверов можно через меню окружения на app01. Для этого заходим на сервер через ssh, и запускаем файл /root/menu.sh. При первом запуске необходимо задать пароль для пользователя bitrix (аналогичную операцию необходимо провести на всех серверах, где планируется запуск сайта):

Собственно, это тот пользователь, под которым будет работать приложение. После этого мы видим экран, предлагающий создать пул серверов:

Тут нам необходимо выбрать первый пункт меню. В процессе создания окружение запросит имя текущего сервера, тут то мы и указываем app01:

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

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

Теперь нам необходимо добавить в созданный пул все доступные серверы. Для этого воспользуемся первым пунктом меню и увидим такие варианты:

Опять выбираем первый пункт меню, и указываем ip нового сервера, его имя в кластере (те самые app02, db01, db02, cache01) и root-пароль от подключаемого сервера. Таким образом, поочерёдно добавляем каждый имеющийся сервер. После того, как все серверы зарегистрированы в кластере, мы должны получить примерно такой список на главном экране окружения:

Настройку ролей серверов пока отложим на следующий шаг.


3. Перенос проекта

Т.к. наше приложение изначально работает на одном сервере, то модуль масштабирования и управления кластером отключены, база не реплицирована. Сам перенос ничего сверхъестественного из себя не представляет — упаковали папки bitrix и upload, сняли дамп БД.

После того, как архивы и дампы готовы, заходим на app01, и тянем через git код проекта в дефолтную папку сайта в bitrixenv — /home/bitrix/www, скачиваем wget-ом или curl-ом архивы и дамп БД, распаковываем архивы и заливаем дамп в БД на app01, переносим записи cron.

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

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


4. Включение кластерного режима работы

После того, как приложение было перенесено на app01, и мы проверили корректность его работы, пришла пора заняться самым интересным — масштабированием. Для начала необходимо установить модули scale и cluster в админ-панели 1C-Bitrix. Во время установки ничего особо делать не нужно, вся работа происходит далее.

Как только модули установлены, переходим в ssh-соединение с основным сервером, а это app01, и открываем меню bitrixenv (лежит тут /root/menu.sh). Прежде чем приступить к дальнейшей настройке, необходимо выяснить один важный момент — bitrixenv оперирует понятием “роль сервера”. Не имеет особого значения, как называется сервер в пуле, т.к. каждый сервер содержит весь софт, который входит в пакет bitrixenv, мы всегда можем назначить ему одну или несколько ролей, а можем снять их с него или поменять на другие. Основные роли это — mgmt (балансировщик, т.е. nginx), web (т.е. httpd/apache), mysql_master и mysql_slave (инстанс БД, slave появляется уже когда начинаем делать репликацию), memcached (сервер с memcached). Общая картина теперь понятна, и мы решили начать с memcached-сервера. Для этого заходим в пункт

4. Configure memcahed servers > 1. Configure memcached service

и видим запрос имени сервера, который будет выполнять роль memcached-сервера. У нас уже есть заготовленный для этого сервер cache01, поэтому смотрим в список доступных серверов. Если cache01 есть в списке, значит никаких проблем с установкой нет, и мы можем дать серверу выбранную роль.

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

Пришло время добавить второй app-сервер. Для этого переходим по пути

8.  Manage web nodes in the pool > 1. Create web role on server,

где нам необходимо указывать имя сервера и способ синхронизации между основной и новой web-нодой. Исходя из документации bitrixenv и предварительных испытаний, нашему проекту было достаточно выбрать первый вариант (за один шаг происходит и копирование проекта и настройка конфигов ноды). После того, как фоновые работы закончатся, мы должны увидеть в главном меню примерно такую картину:

Обратим внимание на то, что в колонке Roles напротив сервера app02 указана роль web.
Осталось разобраться с БД, её настройка занимает больше всего времени. Для начала вкратце объясню, как раздаются роли mysql в контексте bitrixenv. По-умолчанию на основном сервере кластера стоит master версия БД. В нашем случае необходимо было вынести БД на отдельный сервер и добавить ещё один сервер с slave-версией БД. В bitrixenv нельзя просто так взять и перенести master с одного сервера на другой)

Последовательность такая:

  1. Даём роль mysql_slave серверу, на который мы планируем перенести БД
  2. На целевом сервере меняем роль mysql_slave на роль mysql_master (автоматом старый mysql_master переходит в режим mysql_slave)
  3. Удаляем роль mysql_slave на исходном сервере, бывшем master
  4. PROFIT!!!

Мы последовали этой логике таким образом:

Перешли в

3.  Configure MySQL servers > 4. Create MySQL slave

Указали сервер, которому хотим дать роль mysql_slave — db01. Дожидаемся окончания фоновых работ и видим такой результат:

Отлично, теперь переходим в

3.  Configure MySQL servers > 5. Change MySQL master

Указываем app01 и ждём. В итоге должны увидеть примерно такой результат:

Медленно и неотвратимо мы подошли к установке последней роли — mysql_slave. Для этого необходимо повторить действия, которыми мы устанавливали такую роль для db01, но указать уже db02.

Наконец, все серверы подключены и настроены.

5. Тюнинг производительности

После того, как кластер готов, есть некоторые особенности в настройке приложения, позволяющие провести дополнительную оптимизацию:

  • Прокачиваем работу с сессиями. Подробно описано здесь. Вкратце — переключаем хранение сессий в memcached.
  • Удаляем файлы /bitrix/php_interface/after_connect_d7.php и /bitrix/php_interface/after_connect.php, т.к. команды из них обрывают конвейер кластера (если не используется bitrixenv, то их лучше оставить).
  • Увеличиваем количество памяти, выделяемое memcached, и устанавливаем процент использования серверов с ролью memcached до 100%.
  • Отключаем модули php: apcu, ldap
  • Отключить модули БУС «Компрессия», и “Веб-аналитика” (по возможности).
  • Рассмотреть вариант использования локального кэша. Подробнее описано тут. В нашем случае прироста не было, но идея интересная. Решение имеет пару особенностей:
    • Количество инстансов memcached должно равняться количеству web-нод.
    • Для отдачи композитного кэша nginx-ом напрямую из локального memcached придётся поковырять конфиг nginx, из коробки не работает.

  • Перенести выполнение всех агентов на cron.

Выводы

В рамках данной статьи мы разобрали последовательность действий, необходимых для настройки кластера серверов на базе bitrixenv, а также некоторых возможных подводных камней. По итогам работы с bitrixenv, и кластером на нём, можем выделить плюсы и минусы данного подхода:

Плюсы bitrixenv

  • Время установки
    Установка и базовая настройка занимает менее 30 минут. Нет необходимости настраивать элементы LAMP (как интеграцию этих служб друг с другом, так и для корректной работы проектов на 1C-Bitrix).
  • Службы для ускорения работы сайта
    Установленные и настроенные службы, которые позволяют организовать более быстрое кэширование через memcached, а не файлы, поиск с использованием движка sphinx и функционал видеозвонков и чатов на корп.портале (модуль nginx push&pull). Кроме того, nginx в окружении настроен таким образом, что при включении соответствующих опций на сайте и в меню bitrixenv, кэш отдаётся при помощи nginx сразу из memcached (в обход httpd и php)
  • Кластеризация
    Возможность включить репликацию БД, без ковыряния настроек MySQL. Подключение произвольного количества web-нод, которые будут автоматически синхронизироваться друг с другом, и memcached-нод. Управление распределением нагрузки на web- и memcached-ноды как из меню bitrixenv, так и через админ-панель проекта на 1C-Bitrix. Плюс к этому, добавление новых серверов и ролей к ним не вызывает простой проекта (кроме разве что ролей серверов БД)

Минусы bitrixenv

  • Балансировщик всегда вместе с основной web-нодой
    Т.к. у нас уже был свой балансировщик, мы столкнулись с тем, что невозможно отказаться от встроенного в bitrixenv балансировщика. Нельзя в т.ч. разместить его отдельно от основной web-ноды.
  • Много лишнего софта для некоторых ролей
    Т.к. каждый сервер в пулле содержит полную версию окружения, то получается что на db-нодах стоят httpd, memcached, sphinx, пусть они и не используются. Аналогично можно встретить MySQL на сервере, который занимается только кэшированием, но в этом случае MySQL можно остановить в меню окружения или админ.панели сайта.
  • Php работает в режиме apache2handler
    Нет возможности безболезненно включить php в работу в режиме fcgi, не говоря уже о режиме nginx+php-fpm. Так же не получится поменять версию php, без танцев с бубном.
Источники:

www.1c-bitrix.ru/products/env
dev.1c-bitrix.ru/community/blogs/rns/hidden-features-of-work-with-sessions.php
dev.1c-bitrix.ru/community/blogs/rns/the-use-of-local-caches-in-the-cluster.php
dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=32&INDEX=Y
dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=37&INDEX=Y

устанавливаем и настраиваем Битрикс — Алфавитка — блог веб-разработчика

Опубликовано:

Вступление

Наша задача в этом уроке — установить чистый Битрикс, без каких-либо шаблонов и дополнений. Перед началом убедитесь, что ваш хостинг соответствует техническим требованиям Битрикса, их можно посмотреть по этой ссылке: https://www.1c-bitrix.ru/products/cms/requirements.php

Загружаем дистрибутив Битрикса на свой сайт

Скачиваем архив с официального сайта 1c-bitrix.ru, прямая ссылка на страницу загрузок: https://www.1c-bitrix.ru/download/cms.php

Здесь в блоке «Дистрибутивы» видим ссылки на различные редакции Битрикса: Старт, Стандарт, Малый бизнес и т.п.:

Не буду детально разбирать различия между редакциями, но чем «старше» редакция, тем больше функционала в ней есть и тем дороже она стоит 🙂

Мы будем делать простейший сайт, поэтому скачиваем самую «младшую» редакцию – Старт. Загружайте архив на свой хостинг в директорию сайта и распаковывайте.

Устанавливаем Битрикс

Если во время установки возникнет непреодолимая ошибка – поищите решение проблемы в конце урока в блоке Ошибки, которые могут возникнуть на этапе установки.

Открываем главную страницу сайта и начинаем процесс установки. На первом экране жмем «Далее»:

Принимаем лицензионное соглашение (предварительно прочитав его, конечно же) и снова жмем «Далее»:

Мы устанавливаем демо-версию, поэтому регистрировать Битрикс пока что не будем => убираем галочку «Я хочу зарегистрировать свою копию продукта, устанавливать решения из Маркетплейс и получать обновления». Сайт будем устанавливать в кодировке UTF-8 => отмечаем чекбокс «Установить в кодировке UTF-8» и жмем «Далее»:

Если по каким-либо причинам нужно установить сайт в кодировке windows-1251 – просто не отмечайте чекбокс «Установить в кодировке UTF-8».

Теперь нам нужно убедиться, что настройки хостинга соответствуют требованиям Битрикса. В моем случае два параметра подсвечены красным цветом:

Версия веб-сервера не выяснен – если в самом начале вы убедились, что версия веб-сервера соответствует требованиям Битрикса, то на это предупреждение можно не обращать внимания. Практика показывает, что скрипт установщика очень часто не может определить версию веб-сервера, даже если она соответствует требованиям Битрикса.

mbstring.func_overload – а вот этот параметр обязательно нужно исправить. Обычно его можно изменить в настройках PHP, в личном кабинете хостинга.

Устанавливаю нужное значение mbstring.func_overload в настройках хостинга и продолжаю установку.

Если у вас при установке красным цветом подсвечены другие параметры – их нужно постараться исправить. В противном случае могут возникнуть проблемы в работе сайта.

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

Теперь ждем окончания установки:

Далее появляется окно для ввода данных администратора. Вводим необходимую информацию и снова жмем «Далее»:

На следующем шаге Битрикс предлагает нам установить одно из готовых решений (шаблонов). Мы решили, что в следующем уроке будем сами создавать свой шаблон с нуля, поэтому устанавливать готовые решения не будем. Чтобы ничего не устанавливать — выбираем вариант «Демо-сайт для разработчиков», жмем «Далее»:

И отменяем установку решения, нажав «Отмена», а затем «Ок» во всплывающем окне:

Отлично, решение не установилось, жмем кнопку «Перейти на сайт»:

На этом установка Битрикса завершена, а мы попали на главную страницу. В самом верху у нас отображается панель администратора с вкладками «Сайт» и «Администрирование». Вкладка «Сайт» — это публичный раздел (который виден всем посетителям). Вкладка «Администрирование» — это админка. На протяжении работы с сайтом мы будем переключаться между этими вкладками:

Удаляем лишние установщики

Вы наверняка заметили, что дистрибутив Битрикса был очень объемным (около 200 мегабайт в моем случае). Удалим лишние файлы, чтобы сайт занимал немного меньше места.

Удалим предустановленное решение из раздела «Маркетплейс». Идем на вкладку «Администрирование», далее  Marketplace => Установленные решения и удаляем имеющееся там решение:

Это еще не всё, после удаления снова возвращаемся в список решений, нажав кнопку «Вернуться в список»:

Решение всё еще осталось на сайте. Теперь нам нужно его стереть:

В итоге в списке решений должно быть пусто:

Отлично, теперь идем в Настройки => Настройки продукта => Список мастеров и удаляем установщик демо-сайта:

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

Запускаем проверку системы

В Битриксе есть инструмент «Проверка системы», который  помогает найти причины проблем в работе сайта. У нас никаких проблем и ошибок в работе сайта нет, но после установки Битрикса все-таки стоит запустить этот инструмент. В админ панели идем в раздел Настройки => Инструменты => Проверка системы и нажимаем кнопку «Начать тестирование»:

В моем случае есть несколько ошибок и замечаний, а именно:

Справа у каждого пункта есть иконка вопроса, нажав на которую можно получить подробную информацию. Разберем эти ошибки.

Ошибка! Параметр default_socket_timeout = 10, требуется 60
Значение max_input_vars должно быть не ниже 10000. Текущее значение: 1000

Эти две ошибки можно исправить, добавив 2 строчки в файл .htaccess, который лежит в корне сайта:

php_value max_input_vars 10000
php_value default_socket_timeout 60

Если это не решает проблему – обратитесь в техподдержку своего хостинга, вам должны подсказать, как правильно настроить указанные параметры.

Замечание. Агенты выполняются на хитах, рекомендуется перевести выполнение агентов на cron

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

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

И это замечание тоже не критично, если сайт работает без ошибок – это предупреждение можно игнорировать (на моей практике из-за него никогда не возникало проблем).

Ошибка! Переменная sql_mode в MySQL должна быть пустая, текущее значение: NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Кликаем на знак вопроса справа от этого пункта и получаем решение проблемы:

Вносим указанный код в указанные файлы.

После исправления всех ошибок заново запустим тестирование системы, чтобы убедиться, что в этот раз всё в порядке. Если всё в порядке – поздравляю, можете переходить к следующему уроку 🙂

Ошибки, которые могут возникнуть на этапе установки Битрикса

Parse error: syntax error, unexpected ‘::’ (T_PAAMAYIM_NEKUDOTAYIM)

Эта ошибка может появляться при первоначальном открытии сайта. Полный текст ошибки выглядит примерно так:

Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM) in /home/users/p/polzovatel/domains/bitrix.alfavitka.ru/bitrix/modules/main/lib/orm/data/datamanager.php on line 77

Скорее всего, проблема кроется в версии PHP. На момент написания этого урока рекомендуемая версия PHP для Битрикса – 7.2. Попробуйте выбрать её в настройках хостинга.

Актуальные минимальные технические требования Битрикса можно посмотреть по ссылке: https://www.1c-bitrix.ru/products/cms/requirements.php

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

Эта ошибка возникает после ввода параметров соединения с базой данных:

Скорее всего, на хостинге используется устаревшая версия MySQL. На момент написания этого урока версия MySQL должна быть не ниже 5.6.

Актуальные минимальные технические требования Битрикса можно посмот

MikroTik: Разбираемся с Safe Mode.

Safe Mode — режим настройки, в котором изменения конфигурации не записываются в постоянную память MikroTik, пока Вы собственноручно не выйдете из этого режима.

Последовательность работы с режимом Safe Mode:

— Включить режим нажатием Ctrl+X в терминале или кнопкой Safe Mode в верхнем левом углу окна Winbox.
— Сделать требуемые настройки.
— Если настройка правильная и связь с MikroTik не потеряна, выйти из Safe Mode повторым нажатием Ctrl+X в терминале или кнопкой Safe Mode в Winbox. Это сохранит внесенные изменения конфигурации в постоянную память MikroTik.
— Если связь потеряна, то надо просто подождать около 10 минут и конфигурация MikroTik вернется к состоянию до включения Safe Mode.

Дополнительно в CLI, при включенном Safe Mode:

— комбинация Ctrl+D отменяет все изменения внесенные в режиме Safe Mode;
— чтобы посмотреть все внесенные изменения, ожидающие выхода из Safe Mode, наберите

/systerm history print

И напоследок:

— Не забывайте выходить из Safe Mode! Закрыли терминал или Winbox, забыв выйти из режима? Ваши изменения конфигурации откатятся назад.
— Количество изменений, которое возможно при включенном режиме Safe Mode ограничено. В вики указано число внесенных действий — 100, поэтому в режиме Safe Mode старайтесь не вносить изменения большими объемами.
— Время, через которое MikroTik считает, что связь потеряна и требуется откатить конфигурацию, основано на TCP timeout. — Если Вы не хотите ждать столько времени, то можете либо перезагрузить MikroTik по питанию, если оборудование в непосредственной близости или уменьшить время таймаута командой, например 5 минут,

/ip firewall connection tracking set generic-timeout=00:05:00

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

Не забудьте обновить Winbox. В версии 3.4 нашел баг с включением Safe Mode. Как вариант приходилось запускать New Terminal, в нем нажимать Ctrl+X, а только потом проводить настройки в GUI. В версии 3.7 этого бага уже нет.

Почитать по теме: MikroTik Safe Mode Wiki

Mikrotik safe mode — Делюсь опытом

Скорее всего, ответ на ваш вопрос такой: mikrotik в режиме safe mode откатывается обратно где-то через 9 минут по тайм-ауту TCP. Если я не угадал сходу, то возможно вы найдете ответ на ваш вопрос далее по тексту 😉

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

И хорошо, если серверная — это соседнее помещение. А это может быть и соседнее здание. И вполне возможно, что роутер вообще в другом городе, и вы пытаетесь удаленно что-то там настроить.

Safe mode — это защита от фатальных ошибок. И дело не в кривизне рук — никто не застрахован от ошибки, независимо от опыта.

Механизм прост до безобразия: вы включаете безопасный режим и, если вы из этого режима корректно не выйдете, то роутер откатывает те изменения, которые были сделаны во время сессии safe mode. Под корректным выходом из безопасного режима mikrotik подразумевает отключение безопасного режима вами собственноручно. Т.е. «все хорошо, связь не пропала, админ сам отключил…» и изменения, которые были внесены в конфигурацию, применяются.

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

 

Отключается ей же.

Для входа в безопасный режим в терминале надо нажать CTRL+X. Терминал сообщит вам, что вы находитесь в безопасном режиме:

[[email protected]] > [Safe Mode taken] [[email protected]] <SAFE>

 

 

[[email protected]] >

[Safe Mode taken]

[[email protected]] <SAFE>

Повторное нажатие CTRL+X завершит сессию safe mode. Изменения будут применены.

Реклама:


При работе с терминалом есть нюанс. Если вы просто разорвете соединение (CTRL+D), то роутер сделает откат изменений. Это не будет считаться корректным выходом из безопасного режима. В то время, как команда /quit будет считаться корректной и изменения вступят в силу.

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

В случае, если страшное все-таки произошло и вы после добавления очередного правила в firewall увидели 

то ваши действия просты — выйти перекурить подышать свежим воздухом, подумать о смысле жизни, а так же о ваших действиях, которые привели к тому, что роутер отвалился. Через 9 минут (по тайм-ауту TCP) микротик откатит ваше творчество до состояния, которое было до включения режима SAFE MODE.

Можно дальше творить и экспериментировать. Только не забудьте снова включить безопасный режим).

Официальный мануал на аглицком тут:  http://wiki.mikrotik.com/index.php?title=Manual:Console&redirect=no#Safe_Mode

В мануале еще рассматривается случай, когда кто-то другой пытается включить safe mode, когда ты работаешь на роутере. Умышленно об этом говорить не стал. Как такое возможно? Ты админ. У тебя железяки. И тут кто-то левый параллельно с тобой в этих железяках ковыряется? На практике такое должно быть исключено. Или ты дома и mikrotik — это твой домашний роутер. Кто еще, кроме тебя, будет его администрировать?

Реклама:

Читайте также

Безопасный режим — HardReset.info

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

Что я могу делать в безопасном режиме?

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

Как открыть безопасный режим на Android?

Большинство устройств Android перейдут в безопасный режим с помощью следующей инструкции:

  1. Нажмите и удерживайте кнопку питания.
  2. Нажмите и удерживайте Выключение. При необходимости подтвердите, нажав OK.
  3. Безопасный режим включается.

Если у вас возникли проблемы с доступом к безопасному режиму на вашем смартфоне, то лучшим решением является открытие плейлиста мягкого сброса на канале HardReset.info на YouTube, чтобы найти руководство по вашей модели телефона.

На представленных видео вы сможете узнать, как попасть в безопасный режим:

.

Безопасность

Операционная система

На уровне операционной системы веб-сервер Битрикс24 находится за межсетевым экраном, где все порты закрыты за исключением тех, которые используются в системных целях. Технический доступ к серверу осуществляется исключительно через подсети Битрикс.

Хранение данных

Все дата-центры, используемые Битрикс24, защищены по стандарту SAS 70 Type II (который включает доступ к физическим носителям на основе биометрических данных. и максимальная защита от вторжения) и соответствуют стандарту Safe Harbor.

Изоляция данных

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

Веб-сервер

Специализированная серверная среда, которая не позволяет записи в локальную файловую систему, используется вместе с настроенным модулем PHP, который обеспечивает изоляция среди пользователей и безопасность пользовательских данных.

Уровень браузера

Данные аутентификации, отправленные клиентским компьютером, могут быть зашифрованы с помощью JavaScript и ключа RSA. Дополнительно технология OTP (одноразовый пароль) можно использовать вместе с eToken.

Передача данных

Передача данных для всех пользователей осуществляется через SSL-шифрованное соединение (с 256-битным ключом).

Уровень приложения

Проактивная защита «Битрикс» блокирует 100% веб-атак, пытающихся использовать уязвимости приложений.У злоумышленников нет любая возможность загрузить вредоносный код через PHP. Веб-приложение соответствует стандартам WAFEC 1.0. Доступ к Битрикс24 предоставляется пользователям (компаниям) в полной изоляции от других пользователей с паролями, зашифрованными через двойной md5. Ограничение определенными подсетями также возможна регистрация потенциально опасной активности.

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *