BlogEngine.NET - Установка и настройка блога

Для того, чтобы создать блог можно воспользоваться соответствующим сервисом в сети, такими как bloger.com, livejournal.com, habrahabr.ru. Или создать свой собственный блог с использованием распространяемых программных модулей. Первый способ более простой и не требует специальных знаний. Но на ряду с этим имеет ряд недостатков: ограничения в уровне доменного имени блога, возможность расширения функциональности и т.п. Мы рассмотрим второй способ.
Для моего блога я использовал программный модуль (движок) BlogEngine.NET версия 1.5.0 по ряду причин:
- это веб-приложение с открытым исходным кодом, предоставляющее возможность вносить свои изменения и дополнения к его функциональности;
- создан с использованием проверенных временем технологий ASP.NET, MSSQL;
- бесплатный;
- широко используется в среде Интренет, что позволяет надеяться на существование решений возможных проблем с его установкой, настройкой и эксплуатацией.
Чтобы установить блог и добиться необходимой функциональности мне пришлось столкнуться с рядом проблем, решение которых я нашел в разных частях сети. Попытаюсь изложить их в этой статье.
Не будем углубляться в вопросы регистрации доменного имени и хостинга. Рассмотрим только проблемы, связанные с установкой и настройкой.
Отмечу сразу, что при установке более старой версии движка - 1.4.5 пришлось повозиться с настройками приложения в файле Web.config. С версией 1.5.0 этих проблем у меня не возникло. Поэтому рекомендую использовать версию 1.5.0 или выше.
Данные моего блога хранятся на сервере базы данных Microsoft SQL Server. По умолчанию, приложение настроено на хранение данных в формате XML-файлов. Все настройки на использование нужного хранилища данных делаются в файле конфигурации Web.config, логичны и понятны.
Сценарий создания базы данных MSSQLSetup1.5.0.sql находится в каталоге приложения ~/blog/setup/SQLServer/. Там же находится файл SQLServerWeb.config, который можно использовать как Web.config (переименовать и заменить старый файл в каталоге приложения) с минимальными изменениями (указать надо только строку соединения к базе данных). Про сценарий создания базы данных отмечу то, что он у меня выполнился только после того как я удалил из него все инструкции GO. Причину выяснять не стал. Задача была другая.
С использованием SQL Server была выявлена следующая проблема. В базе данных не реализовано сохранение синонима имени страницы - Slug. В результате этого после очистки кэша обращение к вновь созданной странице невозможно.
Решение следующее:
В таблице Pages базы данных создаем поле Slug. Можно воспользоваться следующим sql-запросом
ALTER TABLE [dbo].[Pages]
ADD Slug nvarchar(255) NOT NULL
В исходниках BlogEngine.Core в классе DbBlogProvider вносим изменения в методы InsertPage и UpdatePage для обработки поля Slug таблицы Pages (по аналогии с методами InsertPost и UpdatePost). Компилируем библиотеку с изменениями и перемещаем в bin-каталог приложения.
Еще одна проблема заключается в транслитерации русскоязычных заголовков постов. Для того чтобы ссылка на пост с названием "Мой новый пост" выглядела как "Moy-noviy-post", а не как "абра-кадабра..." необходимо установить следующее расширение TranslitPostTitle.cs (7,79 kb) в каталог ~/blog/App_Code/Extensions/ и включить его.
Чтобы определить на сколько удобным является движок BlogEngine.NET для блога нужно время.