Сделать сайт CMS WordPress использование Bedrock и Sage
Bedrock — это нечто вроде обёртки для WordPress с современными инструментами разработки, упрощённой конфигурацией, улучшенной безопасностью и структурой каталогов. Sage — это стартовая тема WordPress, на основе которой можно легко создавать собственную тему. Она адаптирована под инструменты и особенности современной разработки frontend.
Сделать новый сайт на CMS WordPress с использованием Bedrock и Sage — очень просто. Ещё проще перевести на эти инструменты уже существующий сайт, созданный изначально на WordPress в традиционном виде.
Исходные данные
Имеем веб-сервер, например, на Debian 8. Установлены и настроены nginx, php-fpm, mysql и т.д. Также будем считать, что уже установлен Composer. Рекомендую эту статью, если вы не знакомы с установкой и настройкой этого базового софта.
Для сайта wdmrus.ru создаём каталог /var/www/wdmrus.ru и соответственно конфигурация nginx для сайта на WordPress будет выглядеть примерно так:
server { listen 80; server_name wdmrus.ru; root /var/www/wdmrus.ru;
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; }
Bedrock
Переходим в каталог сайта /var/www/wdmrus.ru, выполняем:
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://wdmrus.ru
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='%Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.)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/wdmrus.ru;
— корневой каталог сайта, где дописать нужное нам:
root /var/www/wdmrus.ru/web;
Перезапускам nginx:
/etc/init.d/nginx restart
Если вы создаёте новый сайт, то ничего предварительно делать больше не нужно. Открывайте свой сайт и следуйте указаниям мастера настройки WordPress.
Теперь, что касается переноса уже существующего WordPress-сайта:
- Конечно, все операции по переносу необходимо производить не на работающем сайте. Лучше всего разверните локальный веб-сервер.
- Перед началом работ лучше активировать стандартную тему и отключить все плагины.
- Каталог сайта /var/www/wdmrus.ru должен быть пустым. Сначала мы разворачиваем в него Bedrock, а потом уже копируем в новую структуру каталогов свои plugins и uploads.
- Базу данных разворачивайте существующего сайта, в файле конфигурации .env вписывайте её данные.
- Поскольку изменилась структура каталогов, то те картинки, которые были загружены на сайт и вставлены в статьях, теперь имеют неверные адреса. Можно воспользоваться каким-нибудь плагином, который все исправит, а можно внести правки непосредственно в базе данных. Для меня проще встрой вариант. Создаём бэкап базы данных, открываем бэкап в каком-нибудь приличном редакторе, делаем автоматический поиск ссылок с заменой, загружаем бэкап обратно в базу.
- Не торопитесь включать сразу все плагины. Особенно если это плагины ваши собственные. Возможно, они имеют привязку к вашей бывшей структуре каталогов и файлов. Включайте плагины по одному, проверяйте постоянно работоспособность сайта.
Sage
Чтобы установить стартовую тему перейдите в каталог тем /var/www/wdmrus.ru/web/app/themes и выполните команду:
composer create-project roots/sage mytheme 8.5.0
Здесь mytheme — это название вашей темы, задавайте любое.
Теперь тему можно включать в админке и начинать работу по её адаптации под свой сайт. Делать это нужно непосредственно в этом же созданном каталоге темы. Создавать подтему не нужно.