Title: Вышла версия 2 Bludit CMS Content: Несколько дней назад вышла вторая крупная версия системы управления сайтом Bludit. Это один из представителей класса flat file CMS, которые отличаются отсутствием требований к хранению своих данных в системах по управлению базами данных, например, SQL-серверов, и, соответствственно, отличаются высокой скоростью работы и надёжностью при минимальных системных требованиях.
Нетрудно заметить, что именно на Bludit СMS работает и сайт kostikov.co. В портфолио автора есть несколько разработанных для данной системы управления сайтом модулей расширения, а также статьи посвещённые теме настройки и эксплуатации Bludit.
В данной публикации рассматриваются новшества, появившиеся в v2.0, а также вопросы миграции и настройки обновлённой системы.
Автором Bludit CMS при помощи сообщества был переработан движок системы для более удобно работы со структурой сайта. Среди главных новшеств.
Кроме того, помимо стандартной версии появилась специальная редакция Bludit PRO, которая доступна для спонсоров и участвующих в разработке проекта. От стандартной она отличается наличием двух специальных модулей расширения — Remote Content и Timemachine, которые для большинства пользователей будут вряд ли актуальны.
Ввду вышеупомянутых изменений обновление на v2.0 требует конвертации пользовательского содержимого в новый формат. Для этого разработан специальный скрипт migrate.php.
Рассмотрим данный процесс на примере этого сайта. Имеем установленный веб-сервер H2O с PHP 7.1 на базе FreeBSD 11.
root@beta:~ # uname -v
FreeBSD 11.1-RELEASE-p1 #0: Wed Aug 9 11:55:48 UTC 2017 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC
root@beta:~ # h2o -v
h2o version 2.2.2
OpenSSL: OpenSSL 1.0.2k-freebsd 26 Jan 2017
mruby: YES
root@beta:~ # php -v
PHP 7.1.10 (cli) (built: Sep 29 2017 09:17:09) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
Перед началом обновления рекомендую сделать резервную копию данных.
root@beta:~ # cd /usr/local/www
root@beta:/usr/local/www # ll kostikov.co.tar.gz
-rw-r--r-- 1 root wheel 10032096 19 окт. 18:20 kostikov.co.tar.gz
Далее скачаем скрипт конвертации данных и выполним его.
root@beta:/usr/local/www/kostikov.co # php migrate.php | sed -e 's/<br>/|/g' | tr "|" "\n"
Successfuly created Migration Directory...
Removed non Bludit core plugin config: addtoany
Removed non Bludit core plugin config: ads4u
Removed non Bludit core plugin config: disqus
Removed non Bludit core plugin config: googletools
Removed non Bludit core plugin config: opengraph
Removed non Bludit core plugin config: rss
Removed non Bludit core plugin config: sitemap
Removed non Bludit core plugin config: textarea
Removed non Bludit core plugin config: yandextools
------------------------------
Failed Migrations (Posts): 0
Fixing Permissions...
Successfuly migrated.
Successfuly migrated.root@beta:/usr/local/www/kostikov.co # ll
total 46
-rw-r--r-- 1 root wheel 0 19 окт. 01:21 .megasync
drwxr-xr-x 2 root wheel 2 15 окт. 03:00 .well-known/
-rw-r--r-- 1 root wheel 85 10 сент. 16:18 BingSiteAuth.xml
drwxr-xr-x 6 www wheel 6 18 окт. 01:50 bl-content/
drwxr-xr-x 8 root wheel 24 18 окт. 01:50 bl-kernel/
drwxr-xr-x 2 root wheel 29 18 окт. 01:50 bl-languages/
drwxr-xr-x 18 root wheel 18 18 окт. 10:51 bl-plugins/
drwxr-xr-x 3 root wheel 3 18 окт. 01:50 bl-themes/
-rw-r--r-- 1 root wheel 757 28 июня 01:07 index.php
-rw-r--r-- 1 root wheel 13877 19 окт. 18:22 migrate.php
drwxr-xr-x 4 root wheel 4 19 окт. 18:40 migrations/
-rw-r--r-- 1 root wheel 166 18 сент. 21:24 robots.txt
Как видно по итоговому отчёту и содержимому, скипт поместил сконвертированные данные в подкаталог migrations. При этом были удалена информация к нестандартным модулям расширения с целью избежать потенциальных проблем с совместимостью данных.
Теперь удалим старую инсталляцию, добавим новую и развернём сконвертированны данные.
root@beta:/usr/local/www/kostikov.co # rm -rf bl-*/ index.php migrate.php
root@beta:/usr/local/www/kostikov.co # mv migrations/bl-content/ bl-content/
root@beta:/usr/local/www/kostikov.co # rm -rf migrations/
root@beta:/usr/local/www/kostikov.co # chown -R www bl-content/
root@beta:/usr/local/www/kostikov.co # fetch https://df6m0u2ovo2fu.cloudfront.net/builds/bludit-v2.0.zip
bludit-v2.0.zip 100% of 1895 kB 553 kBps 00m03s
root@beta:/usr/local/www/kostikov.co # unzip bludit-v2.0.zip
Archive: bludit-v2.0.zip
creating: bludit-v2.0/
...
root@beta:/usr/local/www/kostikov.co # mv bludit-v2.0/* .
mv: rename bludit-v2.0/bl-content to ./bl-content: Directory not empty
root@beta:/usr/local/www/kostikov.co # rm -rf bludit-v2.0/ bludit-v2.0.zip install.php
root@beta:/usr/local/www/kostikov.co # ll
total 54
-rw-r--r-- 1 root wheel 0 19 окт. 01:21 .megasync
drwxr-xr-x 2 root wheel 2 15 окт. 03:00 .well-known/
-rw-r--r-- 1 root wheel 85 10 сент. 16:18 BingSiteAuth.xml
drwxr-xr-x 5 www wheel 5 19 окт. 18:40 bl-content/
drwxr-xr-x 9 root wheel 24 19 окт. 18:49 bl-kernel/
drwxr-xr-x 2 root wheel 28 19 окт. 18:49 bl-languages/
drwxr-xr-x 20 root wheel 20 19 окт. 18:49 bl-plugins/
drwxr-xr-x 8 root wheel 8 19 окт. 18:49 bl-themes/
-rw-r--r-- 1 root wheel 757 16 окт. 20:08 index.php
-rw-r--r-- 1 root wheel 1083 16 окт. 20:08 LICENSE
-rw-r--r-- 1 root wheel 1963 16 окт. 20:08 README.md
-rw-r--r-- 1 root wheel 166 18 сент. 21:24 robots.txt
На выходе получим полностью работающий сайт на новой версии с прежним содержимым.
Как следует из полученной при выполнении конвертации данных информации, плагины Bludit CMS не были трансформированы в новый формат. Действительно, вследствие существенных изменений во второй версии часть модулей оказались несовместимы с новой версией.
Для компонентов из стандартного дистрибутива следует произвести их повторную настройку в административном разделе. Дополнительные модули, в числе которых у автора оказались AddToAny, Textarea и разработанные им самостоятельно Ads4U и Yandextools, в ходе проведённой ревизии оказались в случае с Textarea и Yandextools полностью совместимы с новейшей версией Bludit, а AddToAny и Ads4U потребовали серьёзной модификации. Cовместимые с v2.0 модули расширения написанные автором можно найти на Github. На момент написания статьи это уже упомянутые Ads4U и Yandextools, а также альтернативная реализация для системы AddToAny — a2a.
Все три плагина могут быть скачены в едином архиве и развёрнуты в системе управления содержимым.
root@beta:/usr/local/www/kostikov.co # fetch https://github.com/xm74/bludit2-plugins/archive/master.zip
master.zip 100% of 12 kB 46 MBps 00m00s
root@beta:/usr/local/www/kostikov.co # unzip master.zip && rm master.zip
Archive: master.zip
creating: bludit2-plugins-master/
...
root@beta:/usr/local/www/kostikov.co # mv bludit2-plugins-master/* bl-plugins
root@beta:/usr/local/www/kostikov.co # rm -rf bludit2-plugins-master/
Если вы переезжаете с уже работающего сайта на новую версию Bludit CMS, то вы наверняка столкнётесь с проблемой, связанной с упомянутым выше изменением стандартных путей для контента типа "опубликованный" или, в прошлой терминологии, для постов. Проблема эта может стать небольшой (или наоборот — огромной) SEO катастрофой, поскольку при обращении к содержимому про прежним ссылкам, к примеру, из поисковых систем будет выдаваться ошибка "Страница не найдена".
Поэтому для обеспечения плавной миграции к обновлённой структуре разумно будет сделать переадресацию к новому местоположению страниц. В случае используемого автором HTTP/2 сервера H2O это потребует простой модификации конфигурационного файла (подробнее о первоначальной настройке читайте в статье "Переезд блога на HTTP/2 сервер H2O").
root@beta:/usr/local/www/kostikov.co # cat /usr/local/etc/h2o/h2o.conf
# see https://h2o.examp1e.net/ for detailed documentation
# see h2o --help for command-line options and settings
# v.20171019 (c)2017 by Max Kostikov http://kostikov.co e-mail: max@kostikov.co
...
# --- kostikov.co
"kostikov.co:80":
paths: &kostikov_301
"/":
redirect:
status: 301
url: https://kostikov.co/
"www.kostikov.co:80":
paths: *kostikov_301
"kostikov.co:443":
<<: !file /usr/local/etc/h2o/hdr/kostikov.co.full.h2o
listen:
port: 443
ssl:
<<: *default_ssl
certificate-file: /usr/local/etc/letsencrypt/live/kostikov.co/fullchain.cur.pem
key-file: /usr/local/etc/letsencrypt/live/kostikov.co/privkey.cur.pem
paths:
"/":
mruby.handler: |
acl {
deny { path.match("^bl-content/(.*)\.txt$") }
}
file.dir: /usr/local/www/kostikov.co
redirect:
url: /index.php
internal: yes
status: 307
"/post":
mruby.handler: |
lambda do |env|
str = env["PATH_INFO"].sub(/^\post/,"")
[301, {"location" => "https://kostikov.co#{str}"}, []]
end
...
Теперь при обращении к страницам с префиксом /post будет происходить его удаления из URL и переадресация на уже новый актуальный адрес с кодом HTTP 301 Moved Permanently, что позволит обеспечить нормальную навигацию и плавный транзит размещённой в поисковых системах информации о сайте.
Статья была полезной? Тогда прошу не стесняться и деньгами, биткоинами или через замечательную систему Patreon.