Bedrock — это нечто вроде обёртки для WordPress с современными инструментами разработки, упрощённой конфигурацией, улучшенной безопасностью и структурой каталогов.
Sage — это стартовая тема WordPress, на основе которой можно легко создавать собственную тему. Она адаптирована под инструменты и особенности современной разработки frontend.
Создать новый сайт на WordPress с использованием Bedrock и Sage — очень просто. Ещё проще перевести на эти инструменты уже существующий сайт, созданный изначально на WordPress в традиционном виде.
Исходные данные
Имеем веб-сервер, например, на Debian. Установлены и настроены nginx, php-fpm, mysql и т.д. Также будем считать, что уже установлен Composer. Рекомендую эту статью, если вы не знакомы с установкой и настройкой этого базового софта.
Для сайта d1mon.site
создаём каталог /var/www/d1mon.site
и соответственно конфигурация nginx для сайта на WordPress будет выглядеть примерно так:
server {
listen 80;
server_name d1mon.site;
root /var/www/d1mon.site;
index index.php index.html;
location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off;
log_not_found off;
expires 3d; # кеширование статики 3 дня
}
location / {
try_files $uri $uri/ /index.php?$args; # красивые ссылки
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
access_log /var/log/www/d1mon.site/access.log;
error_log /var/log/www/d1mon.site/error.log;
}
Переходим в каталог сайта /var/www/d1mon.site
выполняем:
composer create-project roots/bedrock ./
Этой командой мы устанавливаем Bedrock непосредственно в этот каталог. Точнее, в соответствии с терминологией, мы создаём новый проект на Bedrock в этом каталоге. Одновременно с этим мы получаем все нужные для работы сайта зависимости, в числе их WordPress новейшей версии.
В этом же каталоге находится пример файла конфигурации сайта .env.example
. Скопируйте его в .env
и настройте:
DB_NAME=имя_базы_данных
DB_USER=пользователь_базы_данных
DB_PASSWORD=пароль_этого_пользователя
DB_HOST=localhost
WP_ENV=development
WP_HOME=http://d1mon.site
WP_SITEURL=${WP_HOME}/wp
# Generate your keys here: https://roots.io/salts.html
AUTH_KEY='>DfN1%3?)g......xhy>#xvYn}.]'
SECURE_AUTH_KEY=',<J),4w!]......^1-n!0ADzP_Q<|'
LOGGED_IN_KEY='tP0X6;<.....B3YC#1f'
NONCE_KEY='o<}A{(rt....JX+Y$J{qa'
AUTH_SALT='%ymI@.....sfFr2fU)fI'
SECURE_AUTH_SALT='Yymd]p@.....^hN9@&+la@V'
LOGGED_IN_SALT='mATc#.....&gOEh{<5k2'
NONCE_SALT='ir3}.....DHcv?o)'
Указанная база данных должна быть пустой, если создаётся новый сайт. Ключи для второй части файла конфигурации, как и написано, генерируем по ссылке. Если не доверяете чужому генератору и не боитесь трудностей, можете установить дополнительное приложение, чтобы генерировать такие ключи у себя локально.
Собственно на этом установка и настройка Bedrock завершена! В соответствии с новой структурой каталогов, которую предлагает Bedrock для сайта, основной рабочий каталог это web
. Именно он должен показываться в интернете. Это корневой каталог сайта. Часть других системных каталогов и файлов будут находится за его пределами, что полезно из соображений безопасности.
Перечень всех ключевых каталогов и файлов:
├── composer.json
├── config
│ ├── application.php
│ └── environments
│ ├── development.php
│ ├── staging.php
│ └── production.php
├── vendor
└── web
├── app
│ ├── mu-plugins
│ ├── plugins
│ ├── themes
│ └── uploads
├── wp-config.php
├── index.php
└── wp
Чтобы только каталог web
показывался в интернете нужно изменить конфигурацию nginx для сайта. Следуя примеру приведённому выше надо найти строчку:
root /var/www/d1mon.site;
— корневой каталог сайта, где дописать нужное нам:
root /var/www/d1mon.site/web;
Перезапускам nginx:
/etc/init.d/nginx restart
Если вы создаёте новый сайт, то ничего предварительно делать больше не нужно. Открывайте свой сайт и следуйте указаниям мастера настройки WordPress.
Теперь, что касается переноса уже существующего WordPress-сайта:
- Конечно, все операции по переносу необходимо производить не на работающем сайте. Лучше всего разверните локальный веб-сервер.
- Перед началом работ лучше активировать стандартную тему и отключить все плагины.
- Каталог сайта
/var/www/d1mon.site
должен быть пустым. Сначала мы разворачиваем в него Bedrock, а потом уже копируем в новую структуру каталогов своиplugins
иuploads
. - Базу данных разворачивайте существующего сайта, в файле конфигурации
.env
вписывайте её данные. - Поскольку изменилась структура каталогов, то те картинки, которые были загружены на сайт и вставлены в статьях, теперь имеют неверные адреса. Можно воспользоваться каким-нибудь плагином, который все исправит, а можно внести правки непосредственно в базе данных. Для меня проще второй вариант. Создаём бэкап базы данных, открываем бэкап в каком-нибудь приличном редакторе, делаем автоматический поиск ссылок с заменой, загружаем бэкап обратно в базу.
- Не торопитесь включать сразу все плагины. Особенно если это плагины ваши собственные. Возможно, они имеют привязку к вашей бывшей структуре каталогов и файлов. Включайте плагины по одному, проверяйте постоянно работоспособность сайта.
Sage
Чтобы установить стартовую тему перейдите в каталог тем /var/www/d1mon.site/web/app/themes
и выполните команду:
composer create-project roots/sage mytheme 8.5.0
Здесь mytheme
— это название вашей темы, задавайте любое. Теперь тему можно включать в админке и начинать работу по её адаптации под свой сайт. Делать это нужно непосредственно в этом же созданном каталоге темы. Создавать подтему не нужно.