sonyps4.ru

Перемещение WordPress на новый сервер. Перенос базы данных в WordPress с плагинами и без

Перенос сайта WordPress на другой хостинг задача, которая редко встает на пути. Да и если к этому прибавить, что большинство служб технической поддержки хостингов делают перенос сайта бесплатно, то вы вообще можете не столкнуться с ней. Но не зарекайтесь. Как показывает моя практика, даже техслужбе бывает, нужна ваша помощь на отдельных шагах переноса, да и завершить перенос лучше, чем вы, никто не сможет.

Шаги переноса сайта WordPress

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

  • Сделать копию сайта;
  • Сделать дамп содержимого базы данных сайта;
  • Прикрепить домен к аккаунту на новом хостинге;
  • Создать новую базу данных на новом хостинге;
  • Импортировать базу данных;
  • Перенести каталог сайта на новый хостинг;
  • Исправить файл wp-config.php;
  • Поменять сервера доменных имен сайта (DNS);
  • Проверить новый сайт и удалить (отключить) аккаунт на старом хостинге.
Сделать копию сайта

Для начала сделаем копию сайта. Сделать это можно в панели управления хостингом (DirectAdmin, ISP панели, и т.п.) через инструмент резервного копирования. Но лучше процесс контролировать и поэтому, сделайте копию сайта вручную с помощью FTP клиента, с которым вы работаете. Рекомендую программы FileZilla или WinSCP .

Через FTP клиент перекачайте все папки и файлы вашего сайта к себе на компьютер в отдельную папку. Нужны все папки и фалы сайта, которые находятся в корневом каталоге сайта, куда устанавливали WordPress. (в корневом каталоге большинство папок и файлов должно начинаться с wp-). Скорее всего это папка public_html или httpdocs . Скачивайте всё, что есть в корневом каталоге и только из него.

Сделать дамп содержимого базы данных сайта

Перенос сайта WordPress на другой хостинг требует копии (дамп) базы данных сайта. Сделать ее можно в phpMyAdmin хостинга. Войти в него можно только из панели управления хостингом.

Для входа в phpMyAdmin понадобятся учетные данные базы данных сайта: Имя базы данных, Имя пользователя БД, Пароль доступа. Они должны быть у вас, где нибудь записаны с момента . Если нет, не беда. Их можно легко восстановить. Для этого откройте файл wp-config.php через FTP клиент или в файловом менеджере панели управления хостингом и найдите в нем следующие строки:

Define("DB_NAME", "Имя базы данных для WordPress "); define("DB_USER", "Имя пользователя MySQL "); define("DB_PASSWORD", "Пароль к базе данных MySQL ");

Учетные данные базы данных восстановлены, переходим в phpMyAdmin в панели управления хостингом.

Экспорт базы данных

С дампом (копией) базы данных следующая история. Сделать копию базы данных можно многими способами (Программа mysqldump , скрипт Sypex Dumper Lite, скрипт Staggered MySQL Dump Importer, Программа Navicat) . Но так как мы вошли в скрипт phpMyAdmin, то и будем делать копию БД при помощи инструментов php MyAdmin. Этот вариант работает, только для сайтов не гигантского объема.

В phpMeAdmin, слева выберите нужную базу данных.

Вверху жмем вкладку «Экспорт»

В открывшемся окне настроим параметры экспорта:

  • Выбираем все таблицы БД;
  • Ставим галочку «SQL» формат файла БД;
  • В чекбоксе «Упаковать» можно оставить не сжимать или сжать БД. Если предполагаемый объем БД менее 2 Мб можно не сжимать. Нужно это для последующего импорта БД. По умолчанию, максимальный размер файла для импорта 2,048МБ.
  • Нажать кнопку «ОК».

Если базу данных не сжимать, в следующем окне видим дамп своей БД.

Это текстовой файл. Выделяем содержимое файла быстрыми клавишами Ctrl+A и копируем Ctrl+C . Открываем «любимый» текстовой редактор (например, Notepad++), вставляем скопированный файл и сохраняем файл БД в формате sql (Structured Query Language). Перед сохранением проверьте кодировку файла (вкладка «Кодировка» в редакторе). Файл БД должен быть в кодировке utf-8 без BOM. Всё, дамп содержимого базы данных сделан.

Не знаю по какой причине я в 2013 году привёл такой сложный вариант Экспорта базы данных. Копия делается в три шага:

  • Откройте базу данных в phpmyadmin;
  • Не выделяя чеки у таблиц нажмите кнопку «Экспорт»;
  • Выберете сжатие базы данных (если нужно);
  • Внизу нажмите кнопку действий (вперед или ОК).
  • С картинками читать .

Переходим к работе с новым хостингом.

Прикрепить домен к аккаунту на новом хостинге

На новом хостинге пройдите все шаги по покупке хостинга от регистрации до получения учетных данных для FTP соединения и входа в панель управления хостингом. (подробно читать )

Импортировать базу данных

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

  • Войдите в панель управления хостингом;
  • Войдите в MySQL и создаете базу данных с Именем базы, Именем пользователя и Паролем доступа.
  • Далее из панели управления хостингом войдите в phpMyAdmin.

В phpMyAdmin нового хостинга нужно перенести (Импорт) содержимое своей базы данных, скаченной с старого хостинга в формате sql. Перед Импортом, настраиваем его параметры:

Проверяем название БД, выставленную кодировку utf-8 и формат SQL. Нажимаем «OK». В результате переноса вы увидите все таблицы своей БД.

Перенос сайта WordPress на другой хостинг по FTP
  • Опять открываем FTP клиент. Только теперь соединяемся с новым хостингом.
  • Переносим все ранее скачанные папки и файлы своего сайта в корневой каталог нового сайта на новом хостинге. Информацию куда устанавливать сайт найдете на новом хостинге.
  • Сайт перенесен. Нужен файл wp-config.php для редактирования.
Исправить файл wp-config.php

Для удобства редактирования файла wp-config.php скачайте его и откройте в текстовом редакторе (например Notepad++).

Важно! Не редактируйте файл config.php в блокноте Windows и в редакторах Word.

В ниже следующих строках вставьте данные новой базы данных MySQL, сделанной вами на новом хостинге.

Define("DB_NAME", "Имя новой базы данных для WordPress "); define("DB_USER", "Имя пользователя MySQL "); define("DB_PASSWORD", "Пароль к новой базе данных MySQL "); define("DB_HOST", "localhost") Это имя сервера MySQL .Может быть отличен от localchost;

Файл сохраняете, и закачивайте обратно на сайт по FTP с условием перезаписи.

В принципе сайт перенесен. Но если вы откроете его в браузере, то он откроется на старом хостинге, так как не сменены имена DNS серверов (сервера доменных имен). Чтобы завершить перенос сайта WordPress на другой хостинг, нужно поменять DNS сервера к которым прикреплен ваш домен.

Поменять сервера доменных имен (DNS) сайта

Здесь два принципиальных варианта смены серверов доменных имен. Все зависит, кто управляет доменным именем вашего сайта.

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

Входите в Панель управления хостингом;

Здесь ищите DNS записи доменных имен. У каждой панели это в своем месте. Найти не сложно, выглядит это так.

Интересует «Запись» «Тип» NS. Их должно быть, как минимум две. Если в записях их нет, обратитесь в тех службу хостинга, пусть сообщат. Имена DNS серверов хостинга имеют такой вид:

  • ns1.namehost.ru;
  • ns2.namehost.ru.

Далее «идете» к своему регистратору домена. Открываете управление доменом, далее выбираете нужный домен и пункт управление dns серверами или что-то похожее. И вместо DNS серверов старого хостинга прописываете DNS сервера нового хостинга.

Второй вариант если доменное имя управляется регистратором. Делаете все тоже самое, как в первом варианте, только наоборот. На хостинге в управлении DNS прописываете адреса DNS серверов регистратора.

Это два основных варианта прописки DNS серверов. Но хостинги разные и каждый хостинг рекомендует свой вариант управления доменом.

По общепринятым меркам новые параметры DNS прописываются около 72 часов (обычно быстрее).

Проверить новый сайт

В течение суток периодически проверяйте, поменялись ли DNS сервера сайта. Для этого есть масса on-line инструментов (например http://www.cy-pr.com/tools/dns/ ), которые расскажут все о вашем сайте, в том числе всю информацию о DNS серверах сайта. Вот пример, как это выглядит.

Смена DNS серверов происходит от 3 часов до суток. Если адреса DNS поменялись и сайт работает на новом хостинге, можно удалять свой домен со старого хостинга. Сделать это нужно обязательно. На этом, про перенос сайта WordPress на другой хостинг все!

Ошибки переноса и их исправление

Разберем некоторые основные ошибки возникающие при переносе сайта WordPress.

Возможные ошибки
  • Пропали статьи и/или категории сайта,
  • Вместо текста крякозябры или знаки вопроса,
  • Вместо сайта надпись «Невозможно соединиться с базой, ошибка в строке 2»;
  • Белый экран, вместо сайта;
  • Ошибка на сервере Apache, порт 80.
Исправления ошибок
  • Проверьте кодировку файла БД (utf-8 без BOM),
  • Проверьте кодировку таблиц перенесенной БД (utf-8-general-ci),
  • Проверьте данные внесенные в файл wp-config.php. особо обратите внимание на название сервера MySQL. На новом хостинге он может отличаться от localhost;
  • Еще не переключились .
Фатальная ошибка

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

Сейчас, поддерживая около 17% сетевого контента, WordPress стремительно становится наиболее предпочитаемой CMS для среднестатистического пользователя. Но что делать с сайтами, созданными с устаревшей CMS, или без нее вообще? Означает ли переход на WordPress то, что вам придется начать все сначала и потерять уйму времени, энергии и денег, которые вы вложили в этот веб-сайт? Нет!

Перенос сайта (включая дизайн) на WordPress гораздо проще, чем вы думаете. В этом уроке мы покажем процесс переноса на примере нашего проекта. Мы также рассмотрим некоторые вопросы, с которыми вы возможно столкнётесь, и найдём на них ответы.

Подробнее, об этом уроке

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

Цели

Данный урок призван помочь вам со следующим:

  • планирование эффективного перехода на WordPress;
  • проведение через технические моменты, связанные с переносом;
  • решение наиболее частых сложностей, связанных с переносом.
Предположения

Я надеюсь, что вы имеете начальное предоставление о работе с WordPress. Опыт работы с WordPress может быть полезным, но не является необходимым. Я также предполагаю, что у вас есть веб-сайт и дизайн, который вы хотите перенести на wordpress.

Первые шаги
  • Оцените веб-сайт . Внимательно просмотрите страницы на вашем существующем веб-сайте и определите тип контента (стандартные страницы, фотогалереи, страницы ресурсов и т.д.), обратите внимание на любую информацию, которую можно посчитать важной.
  • Подготовьте среду . Настройте WordPress и приготовьтесь к импорту.
  • Импортируйте контент . Перенесите и организуйте ваш контент через утилиту импорта, вручную (для небольшого количества контента, когда утилиты недоступны) или через настраиваемый процесс переноса.
  • Перенесите дизайн . Встройте свой существующий дизайн в предустановленную тему WordPress.
  • Проверьте веб-сайт и начинайте . Внимательно проверьте результат импорта, подправьте, где необходимо, установите редиректы URL и начинайте!
  • С этим планом в голове давайте начнём прорабатывать каждый шаг подробно.

    Начните с плана

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

    Импортируемый контент
    • как много контента необходимо импортировать (количество страниц, изображений)
    • можно ли ваш контент перенести вручную, или вам необходима утилита
    • если вам необходима утилита, то существует ли она
    • может ли контент определен в обычные «посты» или «страницы», или необходима настройка
    • должен ли дополнительный контент располагаться на определенных страницах
    • изменится ли структура URL. Если да, то необходимо ли перенаправление со старых URL-адресов
    Существующая функциональность
    • включает ли веб-сайт сторонние сервисы (данные и т. д.)
    • необходимо ли перенести формы (контактные формы, формы для заявлений и т. д.)
    • есть ли ограничения контента (например, только для зарегистрированных пользователей)
    • продает ли веб-сайт продукцию (виртуальную или реальную)
    • необходимо ли перенести отдельные администраторские настройки
    Рабочий пример

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

    Установка WordPress

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

    После того, как wordpress настроен и запущен, вы можете начинать работу!

    Для нашего примера, мы установили wordpress на тот же хостинг, в директорию /wp для продолжения процесса переноса.

    Настройки и плагины

    С установленным wordpress нам остается сделать минимальные поправки:

    • Обновите постоянные ссылки . Кликните «Настройки->Постоянные ссылки» , чтобы внести изменения. В большинстве случаев я просто изменяю постоянные ссылки на «postname» .
    • Обновите пользователей . Я создал аккаунт андимистраторского уровня для себя и для любого администратора или редактора, что необходимы для клиентов и партнеров. Я также убираю дефолтное имя пользователя «admin» , если оно существует.

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

    • Управление формами . Перенос форм так, как они есть может превратить все в хаос. Простое создание форм с нуля гораздо проще. Моим фаворитом является gravity forms . Другие варианты — это formidable и contact form 7 .
    • Управление SEO . SEO — очень деликатное явление. Смысл моей работы заключается в создании контента для людей, а не для поисковых систем. Поэтому, существует адекватный подход к SEO, поддерживаемый экосистемой wordpress. И если на вашем старом сайте есть пользовательские мета-описания, необходимо их перенести без потерь. Для этого поможет wordpress SEO .
    • Множество языков . Если ваш сайт поддерживает несколько языков, у WordPress есть решение. Мой выбор — плагин WPML . Еще одним решением может стать qTranslate .
    • Безопасность . Безопасность на WordPress — это хорошо знакомая мне тема. Возрастающая популярность WordPress сделало его неплохой целью для различного рода атак. Сам WordPress редко является проблемой, в основном она кроется в плохо охраняемой хостинговой среде и устаревших или плохо разработанных плагинах. Для большинства своих проектов я использую регулируемые хостинги WordPress, которые предлагают неплохие стандарты безопасности. В ряде опций можно назвать WPEngine , ZippyKid , Pagely и Synthesis . В добавок в регулируемому хостингу обратите внимание на плагины безопасности, такие как Better WP Security или WordFence.
    • Бэкапы . Если вы выбрали управляемый хостинг, то бэкапы обычно включены. Если вы сами делаете бэкап или вы хотите дополнительный слой защиты для данных, то есть отличные варианты, как например, VaultPress, CodeGuard, BackupBuddy, BackWPup .
    Импорт контента

    Итак, мы запустили и настроили WordPress, теперь самое время перенести весь ваш контент.

    Если у вашего старого сайта есть CMS, вам может быть доступна утилита. Начните искать скрип для переноса контента в Кодексе. Ели есть совпадение — здорово! Следуйте инструкциям и принимайтесь за работу. Если всё хорошо, то вы перенесёте свой сайт без каких-либо проблем.

    Если вашей CMS нет в списке или у вас нет CMS и у вас менее 100 страниц, тогда пригодится ручной перенос. Копируйте и переносите контент, записывая старые URL.

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

    В нашем случае, мы перенесли контент вручную и заменили существующую навигацию меню WordPress. Вы сможете посмотреть процесс в этом скринкасте.

    Перенести дизайн

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

    Оценка дизайна

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

    Работа с исходным кодом

    Следуя своему опыту, могу сказать, что наиболее простой способ переноса дизайна — это работа с исходным кодом в браузере. Хотя доступ в хостинговой среде может быть полезно (особенно при работе с изображениями и скачиваемыми файлами), однако способы построения веб-сайтов настолько различаются, что вам придется переделывать оригинальную архитектуру, чтобы добиться чего-либо полезного.

    Прямая работа с исходным кодом сэкономит ваше время, покажет скрытые полезные функции и предоставит вам все, что нужно. Я пользуюсь браузером Google Chrome.

    Создание пользовательской темы

    Если вы в этом новичок, просмотрите информацию об использовании тем в Кодексе. Для процесса переноса вы можете создать новую тему WordPress с нуля, или изменить уже существующую тему, чтобы она соответствовала вашим вкусам. Я советую второй способ.

    Большинство моих проектов переноса начались с последних версий предустановленных тем WordPress. Недавно я удалил исходную тему, чтобы создать мою тему, которую я буду использовать в нашем примере и, которую вы можете сами использовать. Давайте начнем работу!

    Скачайте копию (zip) шаблона для переноса или продолжайте со своей темой, на выбор.

    Стиль страницы.

    Нашим первым шагом будет перенос стилей со старого сайта. В большинстве случаев это не сложнее, чем поиск в исходном коде соответствий на.css:

  • Откройте style.css.
  • Замените детали в теме (имя, URL, описание и т. д.) на ваши собственные.
  • Вставьте стили со старого сайта.
  • Заметка по поводу картинок

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

    Заголовок

    Следующим шагом будет создание заголовка для нашей новой темы. Нашей целью будет совместить структуру текущего кода с шаблонами WordPress. Вот что нам стоит сделать:

    • Скопируйте HTML структуру старого сайта.
    • Замените статическое меню на меню, поддерживаемое WordPress.
    • Используйте тэг WordPress title и оставьте wp_head на месте.
    • Вставьте другие важные теги из старого заголовка.

    Давайте взглянем на код!

    Оригинальный HTML Vegan Food Pyramid posters, postcards and wallpapers Vegan Food Pyramid Подогнанный заголовок (header.php) try{Typekit.load();}catch(e){} Объяснение

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

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

    Давайте проработаем изменения, которые мы внесли.

    • Тип документа . Убедитесь, что вы перенесли тот же самый тип. В этом случае оригинальный html уже имеет доктайп HTML5 (относительно редкий случай на старых сайтах). Используя современный доктайп в коде, написанном для старого кода вы можете испортить шаблон.
    • Мета-теги . Я обычно переношу большую часть метатегов так, как они и есть, заменяя их в WordPress. Исключение в нашем случае составляет ссылка на файл стилей, вставляемая автоматически через wp_enqueue_style в файле functions.php .
    • Скрипты . Скрипты могут быть запутанными. Если скрипт находится на каждой странице (например, трекинговый скрипт, или скрипт шрифта), тогда необходимо разместить его в файле заголовка или нижнего колонтитула. Если необходимо, чтобы он появлялся лишь в отдельных местах, то подойдут теги условий. Лучше всего добавьте все скрипты в заголовок через wp_enqueue_script . Если вы готовы принять вызов, то я советую вам этот способ.
    • wp_head . Оставьте внизу тега в файле header.php . WordPress также использует wp_head, чтобы расставить скрипты и файлы стилей, используемые в теме и в плагинах, что вы установили. Без wp_head большинство плагинов просто не будут работать.
    • Body_class . Обратите внимание на использование тега . WordPress использует это, чтобы предоставить ряд полезных классов к тегу пока вы присматриваете страницу. В нашем примере они не используются. Ваши должны иметь уникальные ID или классы на каждой странице, в этом случае вам нужно создать произвольные функции используя теги условий, чтобы добавить соответствующие классы для каждой страницы.
    • Меню WordPress . Переход на меню WordPress является одним им самых сложных задач в переносе. Он будет у нас довольно прямолинейный. У нас есть простое меню, которые использует класс active (сгенерированый через PHP), чтобы показать, какую страницу посещает пользователь. Функция wp_nav_menu очень гибкая и предлагает встроенную функциональность, чтобы обрабатывать текущее состояние элемента в меню. Я обновил условия в файле стилей на active и изменил их, чтобы они использовали эквивалент, сгенерированный wp_nav_menu , который является current-menu-item . Смотрите скринкаст о переносе контента, чтобы понять, как настраивать меню на нашем примере.

    Вот и готова оболочка. Давайте приступил к следующему шагу.

    Подвал

    Перенос подвала обычно обходится без проблем. Как и в случае с шапкой, нам необходимо объединить части оригинального исходного кода. Давайте займемся этим.

    Оригинальный HTML

    © 2013 VeganFoodPyramid.com

    Подогнанный футер (footer.php)

    © VeganFoodPyramid.com

    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src="" + gaJsHost + "google-analytics.com/ga.js" type="text/javascript"%3E%3C/script%3E")); try { var pageTracker = _gat._getTracker("UA-6992755-1"); pageTracker._trackPageview(); } catch(err) {} Объяснение

    Некоторые подвалы сложно перенести (например, со сложными меню и виджетами), но в большинстве случаев это довольно просто. В нашем случае мы объединили HTML с нашим шаблоном подвала, оставляя обращение wp_footer . Мы также изменили ссылку на дату, чтобы использовать PHP и быть уверенными, что он обновляется каждый год.

    Домашняя страница

    Одна из проблем переноса — это то, что существует куча способов выполнить эту работу. Хорошим примером может служить домашняя страница, потому что она обычно наиболее отличается от остальной части сайта. Самый простой способ обычно самый верный. Я решил разместить весь контент с домашней страницы прямо в шаблоне. Изменять ее придется редко и это всегда можно будет сделать, изменяя шаблон.

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

    Оригинальный HTML Poster $30 each Buy Postcards $50 for 50

    Includes free shipping worldwide

    Buy Подогнанная главная страница /images/Vegan-Food-Pyramid-New.jpg">

    Загрузка...