Конфигурирование базы данных и структура папок и файлов в WordPress

Отрывки из книги “WordPress для профессионалов” авторов Уильямс Б., Дэмстра Д., Стэрн X.

Это единственная книга, которую я в свое время нашел, для тех, кто хочет стать разработчиком WordPress (PHP). Книга 2014 года, но ряд вещей остаются актуальными и сегодня.

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

Почему WordPress?

Самый главный фактор использования WordPress – бесплатная CMS, которую используют почти 40% всех сайтов в Интернете.

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

Самая популярная CMS в Мире, которое используют около 40% сайтов по всему Миру.

WordPress является бесплатной системой управления контентом (CMS, Content Management System) с удобным интерфейсом.

WordPress используют такие компании как Forbes, CNN, BBC, NASA, Sony, General Motors и многие другие компании.

  1. В WordPress удобный внешний вид десктопной и мобильной версий.
  2. Удобная панель управления WordPress.
  3. Удобный редактор для добавления статей Гутенберг (Gutenberg).
  4. Удобное обновление тем.
  5. Огромное количество плагинов для разных целей – от SEO до создания каталога компаний и много другого.

Конфигурирование базы данных

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

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

Теоретически установка MySQL для WordPress не представляет собой ничего интересного. Убедитесь, что MySQL установлена и запущена, создайте в MySQL пользователя WordPress, а затем создайте от имени этого пользователя базу данных, которая будет содержать таблицы WordPress.

Для решения этих задач вы можете использовать командную строку MySQL или инструменты типа phpMyAdmin или Chive, но держите в голове, что у MySQL есть собственный набор пользователей и данных им прав, что определяется вашей (или хостинг-провайдера) операционной системой.

После установки MySQL создает таблицу пользователей и их прав по умолчанию, добавляя привилегированного пользователя root в систему Unix, не имеющего отношения к root-пользователю самой системы Unix. Однако если вы пытаетесь подключиться к вашей копии MySQL как привилегированный пользователь MySQL, это можно сделать только с локального хоста — той же самой машины, на которой запущен MySQL.

Если вы хотите узнать больше о правах MySQL, и таблице, управляющей выдачей пользователям эти права, и о том, как управлять пользователями MySQL, обратитесь к «Руководству по пользованию MySQL» (ссылка) и найдите в нем разделы, касающиеся безопасности базовых учетных записей MySQL.

Для пользователей или баз данных WordPress не существует сводов правил наименования. Хостинг-провайдеры обычно добавляют имя пакета или информации из учетной записи, чтобы определять пользователей, соарендующих базу данных MySQL.

Рис. 1.3. Диалоговое окно конфигурирования базы данных
Рис. 1.3. Диалоговое окно конфигурирования базы данных

Повторяем: можно иметь несколько баз данных, которыми владеет один и тот же (или разные) пользователь MySQL, на одной копии сервера базы данных MySQL. В примере, показанном на рис. 1.3, wp_ используется как префикс и для имен пользователей, и для имен баз данных, что как минимум указывает администратору базы данных, что они относятся к WordPress.

Что может пойти не так с WordPress и MySQL? Ниже приведены три основные причины ошибок при установке. Обратите внимание, что все эти три условия должны быть соблюдены одновременно.

1. Веб-сервер не может найти MySQL. Либо имя хоста MySQL в файле wpconfig.php указано некорректно, либо веб-сервер ищет локальный экземпляр MySQL и не может открыть сокет-соединение с ней. Вот простой пример.

При локальном запуске MySQL на MacOS MySQL создает сокет /tmp/mysql.sock для локальных соединений, но РНР-код WordPress ищет /var/mysql/mysql.sock через PHP-модуль движка MySQL. Создайте символьную ссылку с одного сокета на другой:

# In -s /tmp/mysql.sock /var/mysql/mysql.sock

Актуальный путь в файловой системе к локальному сокету MySQL — функция конфигурации базы данных; при ее запуске создается локальный сокет. Где именно движок РНР и где, соответственно, любое приложение на основе РНР ищет сокет, зависит от конфигурации РНР.

Если вы хотите выяснить, в чем именно заключается несоответствие, придется потратить некоторое время на непростую отладку в стиле printf(). Отредактируйте файл wp-includes/wp-db.php, он содержит набор функций, который определяет соединение с базой данных WordPress.

Если вы видите сообщение «Ошибка установки соединения с базой данных» («Error establishing а database connection») во время установки, вставьте echo(mysql_error()) — оператор, позволяющий увидеть выявленную ошибку вместе с базовым сообщением, как это показано на рис. 1.6:

if (!$this->dbh) {
echo(mysql_error());
    $this->bail(sprintf(/*WP_I18N_DB_C0NN_ERR0R*/"
    <hl>Error establishing a database connection</hl>
Рис. 1.6. mysql_error( ) сообщает о проблеме с сокетом

Функция mysql_error() является функцией библиотеки РНР, выдающей ошибку, сгенерированную последней вызванной функцией MySQL.

2. WordPress находит MySQL, но не может войти. Чаще всего неверно введено имя пользователя или пароль для MySQL, особенно если это произвольное имя, сгенерированное хостинг-провайдером.

Дважды проверьте эти данные и убедитесь, что они верно отображаются в файле wp-config.php. Вы также можете столкнуться с проблемой аутентификации пароля при использовании комбинации MySQL 4.1 или MySQL 5.0 с серверами РНР, имеющими определенные особенности.

Они могут поддерживать только старую схему хэширования паролей MySQL 4.0. В таком случае используйте функцию OLD_PASSWORD() для хэширования пароля пользователя WordPress в формате, совместимом с предыдущими версиями. Вот эта магическая формула SQL (в командной строке MySQL или в окне SQL в случае МАМР):

SET PASSWORD FOR user@host = 0LD_PASSW0RD(’password');

В этом варианте user@host — имя пользователя базы данных WordPress и имя хоста базы данных, a password — (буквально) пароль, который вы внесли в конфигурационный файл.

3. WordPress подключается к MySQL, но не может выбрать базу данных. То, что веб-сервер может подключиться к серверу базы данных с информацией о пользователе базы данных WordPress, не означает, что там обязательно есть база данных, доступная для этого пользователя. Это еще один сценарий, который лучше всего диагностируется с помощью mysql_error() посредством помещения этого оператора в wp-dp.php, где определяется ошибка выбора:

function select($db) {
    if (!@mysql_select_db({db, $this->dbh)) {
        $this->ready = false;
echo(mysql_error());
    {this- >bail(sprintf(/*WP_I18N_DB_SELECT_DB*/'
        ... <hl>Can't select database</hl>

        ..

Если после вставки оператора mysql_error(), как это описано выше, попытки закончить установку приводят к появлению окна с ошибкой типа показанного на рис. 1.7, то либо база данных MySQL под соответствующим пользователем создана не была, либо пользователь базы данных не имеет прав на ее использование.

Рис. 1.7. Ошибка выбора базы данных MySQL

Дважды проверьте, что думает на эту тему MySQL, используя следующую команду:

% /usr/local/mysql/bin/mysql -u wp_userl -р

Enter password:
Welcome to the MySQL monitor. Commands end with; or \g.
Your MySQL connection id is 174
Server version: 5.1.37 MySQL Community Server (GPL)
mysql> show databases;

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

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

mysql> create database wp_halstern;
Query OK, 1 row affected (0.00 sec)

Повторяем: важно различать пользователей операционной системы, пользователей MySQL и пользователей WordPress. Пользователи MySQL определены в базе данных и наделены правами создавать базы данных, копаться в таблицах и иными способами генерировать полезные данные.

Пользователи WordPress существуют в таблицах базы данных WordPress, созданных во время установки. Они имеют привилегии и значение, только если вы авторизуетесь в WordPress.

Получив чистую копию WordPress, вы увидите набор таблиц, названных в соответствии с префиксами таблиц, установленных в wp-config.php. Повторяем: это легко проверить, используя команду MySQL:

mysql> use wp_halstern; show tables;
Database changed

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

Вы глубже изучите схему и погрузитесь в вопросы использования десяти основных таблиц базы данных WordPress в главе 6. Сейчас же, если вы успешно соединились с MySQL, то можно перейти к финальной чистке и начать администрировать.

Структура папок и файлов

Исходный код WordPress включает в себя множество различных файлов на РНР, JavaScript и CSS. Каждый файл служит для своей особой цели.

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

После распаковки загруженного WordPress вы увидите набор файловых структур WordPress, как это показано на рис. 2.1.

Рис. 2.1. Структура файлов и папок WordPress по умолчанию

WordPress по умолчанию содержит три директории: wp-admin, wp -content и wp-includes. К файлам ядра относятся все файлы из директорий wp-admin и wp-includes, а также большинство файлов из корневой директории WordPress.

Директория wp-content содержит ваши произвольные файлы, включая темы, плагины и медиа. В ней расположен код, который контролирует управление контентом и его представлением в WordPress.

HTML-содержимое WordPress, например страницы и записи, хранится в базе данных MySQL наряду с метаданными, такими как структуры тегов и категорий, обе из которых подробно рассматриваются в главе 6.

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

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

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

Поддерживать целостность и стабильность вашей копии WordPress на протяжении длительного времени гораздо проще, если вы не вносите изменения в файлы ядра.

Обычно файлы из корневой директории WordPress, а также из директорий wp-admin, wp-includes никогда не следует редактировать, однако в следующем разделе рассказывается о некоторых файлах корневой директории, которые могут быть изменены в рамках тонкой настройки.

В целом же следуйте правилу, которому посвящена глава 4: не взламывайте ядро!

Наверх ↑

Сергей Ермилов

15 сентября в 14:14 Посты,

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

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

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

Вы можете использовать HTML теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Технологии

Статьи по теме Wordpress Статьи по теме PHP Статьи по теме Python Статьи по теме Javascript Статьи по теме Bootstrap Статьи по теме Git Статьи по теме Node JS