Драма intitle datalife engine панель управления. Рекомендации по настройке сервера и системы управления контентом DataLife Engine

О всех новых функциях DLE 12.1 можно прочитать в данной статье.

DataLife Engine v.12.1 Press Release расскажет о дополнение к модуле рекламы, теперь модуль поддерживает функцию рубрики, в этой версии можно вести учет количества просмотров рекламных материалов и ещё дополнений связанных с управлением рекламой.

Хороша возможно с использованием канонических ссылок добавлена в коде для всех страниц сайта в том числе навигации по разделам, просмотр полной новости и т.д. Это фишка улучшить SEO оптимизацию проектов, исключит дубли страниц в случае если где-либо в сети интернет публикуются некорректные ссылки на ваш сайт, либо если по каким-либо причинам необходимо отключить контроль неверных ЧПУ.

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

Ещё одна интересная функция для SEO оптимизации сайта - это расширенные возможности модуля "Метатеги", теперь можно будет задавать для страниц не только метатеги, но и любые отдельный заголовок для страницы и описание страницы, которые вы в дальнейшем можете вывести в любом месте вашего шаблона.

(Рекомендуем)
Хостинг с бесплатным получением сертификата SSL для сайта, современным оборудованием на SSD - один из лидеров по качеству и низкой цене . В данной статье читаем .

Кстати, если вам нужен качественный с бесплатным SSL сертификатом, выгодным тарифным планом и защищенный провайдер, этот промокод предоставляет 5% скидки на заказ домена и/или хостинга

A460-09C2-059C-5161

К примеру про бесплатный хостинг (Free hosting) без рекламы и условий под управлением DataLife Engine 12-9.x или любой другой CMS - это услуга поможет вам понять в течение месяца, подходит вам хостинг или нет.

Предлагаем скачать DLE разные версии на http://www.сайт в разделе всем желающим не регистрируясь (лицензионные версии UTF 8 и Win 1251).

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

Были подготовлены и реализованы следующие изменения:

1. В модуле управления рекламными добавлена поддержка рубрик . Вы можете в данном модуле создавать рубрики и уже в этих рубриках размещать ваши рекламные материалы. Рубрики выводятся в самом верху, перед списком добавленных рекламных материалов, в виде папок. В самих рубриках также можно создавать дополнительные подрубрики в неограниченном количестве. Тем самым при большом количестве рекламных материалов вы можете разместить их для удобства навигации по ним, в различных рубриках и подрубриках.

2. Добавлена возможность учета количества просмотров для рекламных материалов , добавляемых в панели управления скриптом. Учет просмотров ведется только для реальных пользователей, которые зашли на сайт с использованием браузера. Боты, сканирующие сайт, не учитываются. Учет просмотров включается непосредственно для каждого баннера, поэтому вы можете учитывать просмотр только для нужных рекламных материалов. Также у вас есть возможность указать, нужно ли учитывать все просмотры баннера, или учитывать только просмотры от уникальных пользователей.


3. Для рекламных материалов в админпанели добавлена возможность ограничивать показ баннера на основе количества его просмотров, и вы можете отключить баннер при достижении указанного максимального количества просмотров.

4. Добавлена возможность учета количества кликов для рекламных материалов, добавляемых в панели управления скриптом . DataLife Engine автоматически перехватывает HTML теги, опубликованные с использованием тегов, и автоматически ведет учет кликов по ним. Какого-либо особого оформления этих ссылок не требуется, они могут вести по любым нужным вам адресам. Также у вас есть возможность указать, нужно ли учитывать все клики по ссылке, или учитывать только клики от уникальных пользователей.

5. Для рекламных материалов в админпанели добавлена возможность ограничивать показ баннера на основе количества кликов по вашему баннеру , и вы можете отключить показ баннера при достижении указанного максимального количества кликов по нему.

7. Добавлено использование канонических ссылок , в коде страниц, для всех страниц сайта включая навигацию по разделам, просмотр полной новости и т.д. Данная возможность позволяет повысить SEO оптимизацию сайтов, а также позволяет избегать дублей страниц в случае если где-либо в сети интернет публикуются некорректные ссылки на ваш сайт, либо если по каким-либо причинам необходимо отключить контроль неверных ЧПУ.

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

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

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

11. В настройки скрипта в панели управления , в раздел настроек безопасности, добавлена возможность включения автоматической защиты сайта от встраивания во фреймы на посторонних сайтах. При включении данной настройки, показ вашего сайта будет автоматически блокирован, если он встроен в iframe на чужом сайте. Тем самым вы можете защитить свой сайт от таких атак как как кликджекинг.


12. Расширены возможности модуля "Метатеги", данный модуль был переименован в "Заголовки, описания, метатеги". Теперь в данном модуле вы можете задавать для страниц не только метатеги, но и отдельный заголовок для страницы и описание страницы, которые вы в дальнейшем можете вывести в любом месте вашего шаблона. Для этого добавлены новые глобальные теги для шаблонов: {page-title} - выводит указанный вами заголовок для страницы, {page-description} - выводит указанное вами описание для страницы. В описании страницы также допустимо использование BB и HTML тегов. Тем самым при помощи данного модуля, вы можете, например, создать и вывести заголовки и описания для облака тегов к каждому тегу персонально и т.д.

13. Добавлены новые глобальные шаблонные теги текст , которые выводят текст, заключенный в них если в модуле "Заголовки, описания, метатеги" был задан заголовок для просматриваемой страницы. А также добавлены противоположные теги текст которые выводят текст, заключенный в них если заголовок для просматриваемой страницы не был задан. Также были добавлены аналогичные теги и для описания: текст , которые выводят текст, заключенный в них если в модуле "Заголовки, описания, метатеги" было задано описание для просматриваемой страницы, текст которые выводят текст, заключенный в них если описание для просматриваемой страницы не было задано.

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

15. Расширены возможности по выводу публикаций на основе значений дополнительных полей в публикациях . При обращении по адресу http://вашсайт/xfsearch/имя поля/значение поля/ будут выводится публикации, как и ранее, содержащие указанное значение в данном конкретном поле, если для поля задана опция "использовать как перекрестные ссылки". При обращении по адресу http://вашсайт/xfsearch/значение поля/ будут выводится публикации содержащие данное значение по всем дополнительным полям. При обращении по адресу http://вашсайт/xfsearch/имя поля/ будут выводится все публикации, в которых заполнено данное указанное поле.

16. В настройки скрипта добавлена возможность назначения отдельной страницы с именем 404.html в корне вашего сайта , для вывода страниц, контент для которых отсутствует. В случае включения данной настройки, вместо стандартного системного сообщения "К сожалению, данная страница для Вас недоступна, возможно был изменён её адрес или она была удалена.", вы можете вывести отдельную специально подготовленную заранее страницу, с полностью отдельным оформлением. Данное нововведение будет полезно для вебмастеров, которые хотят сделать отдельное оформление 404 страниц своего сайта.

17. В настройки скрипта добавлена возможность назначения HTTP заголовка, откуда необходимо получать IP адреса пользователей . Данное нововведение будет полезно для сайтов, которые используют различные внешние прокси серверы, и не имеют возможности правильно перенастроить сервер под них, для получения корректных реальных IP адресов посетителей. Например, при использовании сервиса cloudflare и других для защиты от DDOS атак и использовании обычного хостинг тарифа без доступа к серверным настройкам. Теперь вы можете в настройках скрипта в админпанели указать скрипту откуда ему брать IP адрес посетителей сайта.

18. При удалении категории в панели управления скриптом , добавлена возможность выбора, как поступить с публикациями, которые находятся в данной категории. Вы можете: "Убрать данную категорию из публикаций", "Заменить категорию на другую или другие категории", а также "Удалить все публикации находящиеся в данной категории". При этом если происходит удаление или замена категории из публикации, то будет убрана или заменена только удаляемая категория. Например, ваша публикация находится в категориях "В мире", "Новости", "Популярное", и вы к примеру, удаляете категорию "В мире", то у публикаций, находящихся в данной категории, только категория "В мире" будет удалена или заменена, все остальные категории в списке у данных публикаций останутся на месте.

19. Для публикаций добавлен новый тип дополнительного поля : "Чистый HTML и JS". При использовании данного поля, DataLife Engine не будет вмешиваться в текст, написанный в нём, и не будет проводить фильтрацию HTML кода этого текста, а также разрешает написание в нём чистого jаvascript кода. Данное поле будет полезно, когда вам в новость нужно вставить какой-то код, над которым не нужно проводить проверку безопасности, например, какой-либо свой плеер и т.д. Внимание, с учетом того скрипт не будет фильтровать текст из этого поля, при его создании обязательно установите ограничения, каким группам его разрешено использовать. Не разрешайте его использование обычным пользователям, которым вы не доверяете, в противном случае это может нести угрозу безопасности вашего сайта.

20. Для дополнительных полей публикаций , имеющих опцию "Использовать как перекрестные ссылки", добавлена возможность указания разделителя данных ссылок. Вы можете указать как отдельные символы, так и HTML код в качестве разделителя. Ранее в качестве разделителя списка использовалась запятая, теперь вы можете задать свой персональный разделитель для каждого поля, что позволяет создать для каждого поля свое уникальное оформление вывода в шаблоне.

21. Добавлена поддержка технологии "Яндекс Турбо" для обычных RSS каналов , без использования включения в настройках типа RSS потока как "Яндекс новости", для этого добавлена поддержка вывода полной новости тегом {full-story} для любого типа RSS потока. А также обновлен стандартный шаблон /templates/rss.xml в котором демонстрируется как должен выглядеть шаблон с полной поддержкой "Яндекс Турбо". Аналогично поддерживается полностью и возможность настройки шаблона RSS для технологии "Яндекс Дзен".



22. Добавлена возможность отвечать на комментарии при просмотре всех последних комментариев на сайте,
в случае если в настройках скрипта включена поддержка древовидных комментариев. Тем самым вы можете, например, быстро отвечать на поступившие комментарии на сайт, не заходя в каждую новость при этом., в связи с тем, что часть тяжелых скриптов была переведена на отложенную и независимую от рендеринга страницы загрузку. Данные скрипты загружаются в браузер параллельно с рендерингом страницы и запускаются только после завершения формирования страницы в браузере. Что визуально обеспечивает более быстрый показ страницы.

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

25. Добавлено использование микроразметки schema org для вывода рейтинга с типом "Оценка". Использование данной микроразметки позволяет для полных новостей при выводе их в результатах поиска в Google выводить также и рейтинг публикации.

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

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

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

29. Внесены изменения в работу модуля хлебных крошек (Breadcrumbs) на сайте. В случае если просматриваются новости из определенной категории, то для категории, в которой непосредственно находится пользователь, данная категория будет выводится в виде обычного текста, а не ссылки. В виде ссылки будут отображаться только категории, находящиеся выше по иерархии, или ссылка на эту категорию будет, если, например, пользователь ушел дальше по навигации по страницам в этой категории. Тем самым это нововведение позволяет избежать циклических ссылок страниц на самих себя.

30. Для модуля "Перекрестные ссылки" в панели управления , добавлены две новые области замены для ссылок. Вы можете дополнительно указать замену только в статических страницах, а также выбрать замену в статических страницах, новостях и комментариях.

31. Для модуля "Поиск и Замена" в панели управления , добавлена возможность массовой замены текста в опросах к публикациям и в голосованиях на сайте.


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

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


34. В админпанели скрипта добавлен форматированный вывод количества различных счетчиков (просмотры, публикации, комментарии) . Вывод этих счетчиков осуществляется в форматированном виде в виде разделения пробелом сотен, тысяч, миллионов и т.д. Что дает более наглядное представление и восприятие данных чисел.

35. Для шаблонов вывода комментариев и добавления комментариев (addcomments.tpl и comments.tpl) добавлена поддержка новых тегов текст - выводит текст в теге, если новость принадлежит указанным категориям, а также тегов: текст - выводит текст в теге, если новость не принадлежит указанным категориям. Тем самым вы можете задать разное оформление вывода комментариев и добавления комментариев для публикаций из разных категорий.

36. Добавлена поддержка склонений слов для тега вывода количества голосов , которые были выставлены для рейтинга публикаций. Например, вы можете использовать {vote-num} отзыв||а|ов. Ранее для этого тега это было недоступно, т.к. он содержит в себе HTML код, а не просто число.

37. В случае если в настройках скрипта включено использование сайта только по HTTPS протоколу , то cookies браузером также будут отправляться на сервер только по HTTPS протоколу и автоматически блокироваться если используется обычный HTTP протокол.

38. Добавлен контроль неверных ЧПУ для статических страниц , текст публикации которых разбит на несколько страниц. В случае если указан некорректный номер страницы, будет производится автоматический 301 редирект на начальный адрес данной страницы.

39. Для RSS импорта публикаций добавлена поддержка импорта картинок из тега enclosure содержащего изображение к публикации . В случае если краткое описание в потоке RSS является просто текстом, а картинка дана в нем отдельным тегом, то к краткой новости при импорте в самое начало будет добавлена также и картинка к этой публикации.

40. Добавлена поддержка редиректов для получения полных новостей при использовании RSS импорта публикаций . В случае если ссылка из RSS потока является редиректом для дальнейшего перехода к полному тексту новости на сайте источнике, то DataLife Engine автоматически последует по этому редиректу и будет брать контент из конечного источника. Тем самым получение полных новостей будет более качественным чем ранее.

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

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

43. Для авторизации с использованием социальной сети "Одноклассники" , добавлена возможность автоматического получения E-mail пользователя, при условии, что само приложение получило соответствующие права от Одноклассников. Внимание, по умолчанию Одноклассники не дают прав на получение E-mail, и для получения соответствующего доступа вам необходимо дополнительно обращаться в соц. сеть для разрешения получения e-mail. Если разрешение получено, то DLE также автоматически будет импортировать e-mail адрес.

44. Улучшена система вычисления пропорций изображения при создании уменьшенных копий . Тем самым создается более корректная и качественная уменьшенная копия.

45. Улучшена система поиска публикаций при включенном в настройках скрипта , простом типе поиска. Новый алгоритм позволяет более точно и правильно находить публикации.

46. Улучшена система контроля появления дублей страниц , при просмотре всех последних комментариев на сайте.

47. Оптимизирована обработка дополнительных полей публикаций при показе кратких публикаций , а также при работе модуля вывода популярных публикаций.

48. Обновлены визуальные редакторы TinyMCE и Froala до актуальных версий . Исправлен ряд выявленных ошибок в данных редакторах.

49. Для редактора TinyMCE добавлена поддержка вставки тегов скрытого текста , с использованием соответствующей кнопки в редакторе.

50. При использовании редактора Floara для комментариев , добавлена возможность быстрой загрузки и вставки изображений в комментарий. Вы можете либо нажать на иконку вставки картинки и выбрать файл для загрузки, либо просто перенести файл картинки с компьютера в поле редактора мышью, после чего картинка автоматически будет загружена и вставлена в позицию курсора в редакторе.

51. Внесены небольшие изменения в верстке панели управления скриптом , направленные на устранение некоторых ошибок в верстке и улучшение взаимодействия с панелью управления.

52. Обновлены до актуальных версий библиотека отправки почты с сайта , а также библиотека определения мобильных устройств.

53. Исправлена проблема, при которой в предварительном просмотре публикаций не обрабатывались теги и .

54. Исправлена проблема, при которой некорректно формировались метатеги для соц . сетей видео и аудио, если видео было опубликовано в доп. полях и состояло из плейлистов и описаний видео и аудио файлов.

55. Исправлена проблема, при которой при определенных ситуациях и настроек сервера мог не работать предосмотр публикаций, при добавлении публикаций с сайта.

56. Исправлена проблема, при которой не работала динамическая загрузка комментариев , если это включено в настройках скрипта, и при этом тег {jsfiles} размещен в самом низу сайта.

57. Исправлена проблема, при которой не работал показ последних комментариев , в случае если для определенной группы был запрещен просмотр некоторых категорий.

58. Исправлены обнаруженные и заявленные ранее небольшие ошибки в скрипте.

DataLife Engine (DLE) это многопользовательский новостной движок предназначенный для организации собственных блогов и СМИ в сети интернет. Благодаря мощной системе публикации, настройки и редактирования новостей, движок на шаг вперед опережает своих ближайших конкурентов. А благодаря точной и продуманной структуре ядра, сводящей к минимуму требования к ресурсам сервера, движок способен с легкостью работать с высокопосещаемыми проектами, не создавая при этом каких-либо особых нагрузок на сервер. Гибкость и легкость в настройке и интеграции собственного дизайна позволит вам развернуть собственные сайты в наиболее кратчайшие сроки, без каких-либо дополнительных материальных затрат. Использование продвинутой технологии AJAX сократит как трафик вашего сервера, так и трафик ваших посетителей, не говоря уже об удобстве использования данной технологии на сайте. Благодаря повышенному вниманию к безопасности скрипта, к удобству работы с ним, а также динамическому развитию, в пользу использования DataLife Engine уже высказались более 70 000 порталов, успешно использующие его в работе. Движок оптимизирован под поисковые системы, что приведет на ваш сайт дополнительных клиентов.

Официальный сайт: http://dle-news.ru/

FAQ: http://dle-news.ru/faq.html

Обращаем ваше внимание на то, что данное ПО является платным , и установка будет рассмотрена на примере demo-версии .

Установка CMS DLE

    Для начала установки DLE требуется зайти в панель управления хостингом, используя ссылку и данные, отправленные Вам на контактный e-mail при заказе услуги.

    Скачиваем дистрибутив CMS DLE (DataLife Engine) , например здесь http://dle-news.ru/demo.html .

    Переходим в панель управления хостингом пункт "Менеджер файлов" далее в директорию www/имя_домена. Удаляем п-умолчанию созданный при добавлении домена файл index.html, нажимем кнопку "Закачать" выбираем архив CMS DLE и нажимаем ОК.

    После закачки архива CMS DLE (DataLife Engine) кликаем по нему один раз, чтоб он выделился и нажимаем кнопку "Извлечь". После распаковки архива Вы должны прийти к такому виду:

    Далее нам необходимо создать базу данных CMS DLE (DataLife Engine) , для этого в панели управления хостингом переходим в пункт "Базы данных" и нажимаем кнопку "Создать". Вводим имя базы, имя пользователя и пароль и нажимаем ОК:

В дальнейшем имя базы и пользователя используется с приставкой в виде вашего логина в панели управления хостингом:

В колонке "Тип базы данных" отображается хост базы db01.сайт.

    После выполнения выше описанных действий обращаемся в браузере по имени вашего домена, приступаем у установке CMS DLE (DataLife Engine) нажимаем кнопку “Начать установку”:

Обратите Внимание! Для начала установки CMS DLE (DataLife Engine) при обращении к домену, домен должен уже отвечать по записям с сервера хостинга. Если домен только добавлен на сервер и информация о его записях еще не разошлась по сети, Вы можете прописатьи сохранить на компьютере в файле hosts следующую запись: IP-адрес сервера имя домена

83.69.23*.*** имя домена

IP-арес сервера можно посмотреть в панели управления хостингом пункт Доменные имена - Записи запись:

имя_домена.ru.

A (адрес Internet v4)

    На следующем шаге, для продолжения установки, Вам необходимо ознакомиться и принять лицензионное соглашенние.

Ставим галку “Я принимаю условия соглашения” и продолжаем установку.

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

Данные, которые от вас требуются (на примере нашего пользователя):

Имя базы: vh12345_dle

Имя пользователя БД: vh 12345_ admin

Пароль: пароль, который вы указывали при создании БД

Сервер MySQL: графа Тип базы в разделе Базы Данных db01.сайт (см. п.4) или

указываем в этом поле mysql.ваш_домен

Префикс устанавливается произвольно.

Данные для доступа к панели управления - это создание учетной записи администратора вашего сайта, здесь указываем желаемые логин/пароль и e-mail администратора.

    Установка CMS DLE (DataLife Engine) завершена.

Удаляем файл install.php , он находится в директории www/ваш_домен

    Запрашиваем домен через браузер, входим в админку CMS DLE (DataLife Engine) и начинаем работу с сайтом.

Приветствую всех, кто посвящает этим строкам свое драгоценное время.

В этой статье я хочу рассказать о способах оптимально настроить сервер и систему управления контентом DataLife Engine. За 4 года работы с интернет сайтами и серверами я усвоил, что безопасность превыше удобства и что ей нужно уделять внимание. Оговорка : я не претендую на авторство чьей-либо интеллектуальной собственности! Весь материал собран на просторах интернета.

Ниже будут описаны действия, которые помогут распределить нагрузку сервера, обезопасить его от DOS атак, ограничить доступ к FTP протоколу и правильно сконфигурировать систему DataLife Engine.

Защита и конфигурация вашего сервера.

1. Настройка конфигурации сервера с использованием связки front-end Nginx к Apache.

Преимущества подобной схемы можно понять на небольшом примере. Представьте себе, что вашему веб серверу Apache необходимо обслужить порядка 1000 запросов одновременно, причем многие из них подключены к медленным каналам связи. В случае использования Apache мы получим 1000 процессов httpd, на каждый из которых будет выделена оперативная память, и эта память не освободится до тех пор, пока клиент не получит запрошенный контент.

В случае схемы с применением front-end сервера получим значительную экономию ресурсов за счет того, что после поступления запроса, nginx передает запрос Apache и быстро получает ответ. В итоге, Apache, после того как отдал ответ nginx, освобождает память. Далее с клиентом взаимодействует веб-сервер nginx, который как раз и написан для раздачи статического контента большому количеству клиентов при незначительном потреблении системных ресурсов.

Для корректной работы нашей связки понадобиться модуль для Apache. Возникает такая необходимость по следующей причине: запросы к Apache приходят с IP-адреса, на котором работает nginx, соответственно, в журнальных файлах Apache будет фигурировать только IP-адрес nginx сервера. Также без использования данного модуля начнутся проблемы со скриптами, в которых используется IP-адрес посетителя и перестанет правильно работать механизм ограничения доступа по IP-адресам с помощью.htaccess.

Установка NGINX на популярные ОС.

Red Hat Enterprise Linux 4 / CentOS 4
Для установки nginx в этих операционных системах вам необходимо подключить дополнительный репозиторий пакетов.

Red Hat Enterprise Linux 5 / CentOS 5
Для установки nginx в этих операционных системах вам необходимо подключить дополнительный репозиторий пакетов EPEL.

ASPLinux Server 5 / Fedora
nginx присутствует в стандартной поставке дистрибутива.

Если репозитории подключены или просто не требуются, выполняем: yum install nginx

Установка Apache.

Чтобы установить Apache веб-сервер достаточно выполнить: yum install httpd

Установка mod_rpaf.

1. Устанавливаем пакет httpd-devel:

yum -y install httpd-devel


2. Скачиваем и устанавливаем mod_rpaf:
Входим в директорию /usr/local/src

cd /usr/local/src


Загружаем в /usr/local/src файл mod_rpaf-0.6.tar.gz

wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz


Распаковываем mod_rpaf-0.6.tar.gz

tar xzf mod_rpaf-0.6.tar.gz


Переходим в каталог в который распаковали

Ставим модуль в систему

apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c


3. Далее нужно создать файл конфигурации mod_rpaf - /etc/httpd/conf.d/rpaf.conf и добавить в него следующие строки:


RPAFenable On
RPAFproxy_ips 127.0.0.1 xx.xx.xx.xx yy.yy.yy.yy


где xx.xx.xx.xx и yy.yy.yy.yy - IP адреса вашего сервера. Если на сервере более двух IP, добавьте их по той же аналогии.

service httpd restart


4. В nginx внутри блока http {} должны быть указаны строки:

proxy_set_header Host $host;


Если данные строки указаны, дописывать не нужно.

Если модифицируется nginx.conf, следует перезапустить nginx:

/etc/init.d/nginx stop
/etc/init.d/nginx start


5. Как проверить, работает ли установленный модуль?
На любом из доменов, которые расположены на Вашем сервере, разместите файл test.php с содержимым:

" echo $_SERVER["REMOTE_ADDR"]; ?>"


Далее зайдите по ссылке , где domain.tcom - имя вашего домена. Если отображается IP, отличающийся от IP вашего сервера, модуль работает корректно.

Настройка NGINX.

Ниже приведен конфигурационный файл nginx для работы в качестве front-end сервера. Подразумевается, что nginx будет работать на всех интерфейсах на 80 порту, а Apache будет работать на интерфейсе 127.0.0.1 и порту 8080. Сохраните данный конфигурационный файл в каталоге /etc/nginx/ с именем nginx.conf.

user nginx;
worker_processes 10;
error_log /var/log/nginx/error.log debug;
pid /var/run/nginx.pid;

events {
worker_connections 20000;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main "$remote_addr - $remote_user [$time_local] $status "
""$request" $body_bytes_sent "$http_referer" "
""$http_user_agent" "http_x_forwarded_for"";
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 30;
send_timeout 900;
server_tokens off;
server {
listen 80;
server_name _;
server_name_in_redirect off;
access_log /var/log/nginx/host.access.log main;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 10m;
}
}


Настройка Apache.

В файле конфигурации Apache /etc/httpd/conf/httpd.conf найдите строку:

и замените ее строкой:

Listen 127.0.0.1:8080


Настройка mod_rpaf.

Добавьте модуль mod_rpaf в файл конфигурации Apache. Для этого в файл /etc/httpd/conf/httpd.conf добавьте следующую строку:

LoadModule rpaf_module modules/mod_rpaf-2.0.so


Затем в этот же файл добавьте строки:

RPAFenable On
RPAFsethostname Off
RPAFproxy_ips 127.0.0.1 192.168.0.1
RPAFheader X-Real-IP


Вместо 192.168.0.1 необходимо поставить IP-адрес сервера.

2. Конфигурация сервера для защиты от dos-атак.

Включаем в nginx кеширование главной страницы для тех у кого нет cookie.

Добавляем ограничения в nginx.conf:

limit_req_zone $binary_remote_addr zone=two:20m rate=2r/s;
server{
location / {
limit_req zone=two burst=5;
}
}
}


Пользуемся tail и awk:

tail -f /var/log/nginx/access.log | grep GET / HTTP/1.1" 503


Подключаем лог:

tail -f /var/log/nginx/access.log | grep GET / HTTP/1.1" 503 | awk "{ print $1 }"


Получаем IP машин:

iptables -A INPUT -p tcp -j DROP -s $IP


Заносим IP в Firewall:

tail -f /var/log/nginx/access.log | grep GET / HTTP/1.1" 503 | awk "{ print $1 }" | xargs -t -l iptables -A INPUT -p tcp -j DROP –s


Теперь установим connlimit для iptables чтобы ограничить подключения ботов. В правилах ставим разрешение на 5 подключений с одного IP, и 25 из подсети класса С.

DDOS атака с 16000 ботов - Load average: 1.4 1.9 2.0

Ограничение доступа по FTP

Для этого нам понадобитсья файл.ftpaccess. Он поможет запретить или разрешить доступ по FTP с указанных IP адресов. Кто-то может задать вопрос: «У меня динамический IP, как мне правильно использовать.ftpaccess?» Ответ я подразумеваю только такой: «Если вам нужна данная надстройка безопасности - приобретите у вашего провайдера статический IP. Много денег у вас за него не попросят.»

Чтобы создать.ftpacces файл нам понадобиться SSH доступ. Можно воспользоваться программой winscp. Настроек в.ftpaccess может быть большое множество, однако нас интересует только один параметр. Прописав эти строки в файле вы закроете полностью доступ от всех:

Deny from all


После написанного выше, никто не сможет зайти на ФТП. Для добавления разрешения доступа определенному IP нужно указать следующие параметры:

Allow from 127.0.0.1
Deny from all


Естественно адрес 127.0.0.1 указан для примера и его нужно заменить на собственный.

Важно! Лучше всего запретить доступ по FTP абсолютно всем и подклчаться только по SSH.

Защита системы управления контентом DataLife Engine.

1. Установите и настройте .

2. Переименуйте файл админпанели и сделайте фейк по старому адресу (www.sait.com/admin.php) при переходе на который пользователь будет заблокирован посредством запрета его ip в.htaccess.

Переименовали? Теперь создаем в корневом каталоге файл ip.txt для хранения ip-адресов. Даем ему и.htaccess права CHMOD – 777.

Создаем файл admin.php следующего содержания:


$ip = getenv ("REMOTE_ADDR");

$log = fopen("ip.txt", "a+");
fwrite($log, "// ".$ip."\n");
fclose($log);

$f = fopen($_SERVER["DOCUMENT_ROOT"] . "/.htaccess", "a");
fwrite($f, "\ndeny from " . $ip);
fclose($f);

Админ панель DataLife Engine

Текст, например: Твой ip в логах, я найду тебя!

Бойся, ничтожество, ха-ха!

"
3. Добавим дополнительную аутентификацию в админцентре.

Необходимо придумать еще один логин и пароль (не используйте данные вашего административного аккаунта). Второй логин и пароль должен в корне отличаться от первого. Определились? Отлично! Теперь зашифруем наш пароль в md5 (сделать это можно на сайте md5encryption.com).
Далее открываем admin.php (вспомните, ранее мы его переименовали и, по этому, если вы назвали его superadmin.php - вам необходимо открывать именно этот его) и после строки:

добавляем:

$login="вписываем придуманный логин";
$password="и сгенерированный пароль в md5";
if (!isset($_SERVER["PHP_AUTH_USER"]) || $_SERVER["PHP_AUTH_USER"]!==$login ||
md5($_SERVER["PHP_AUTH_PW"])!==$password) {
header("WWW-Authenticate: Basic realm="Admin Panel"");
header("HTTP/1.0 401 Unauthorized");
exit("Access Denied");}


4. Отключим неиспользуемые системой функции php.

Для поиска файла php.ini создаем файл phpinfo.php с текстом:

После поиска обязательно удалить phpinfo.php!

disable_functions = allow_url_fopen, eval, exec, system, passthru, scandir, popen, shell_exec, proc_open, proc_close, proc_nice, get_current_user, getmyuid, posix_getpwuid, apache_get_modules, virtual, posix_getgrgid, getmyinode, fileowner, filegroup, getmypid, apache_get_version, apache_getenv, apache_note, apache_setenv, disk_free_space, diskfreespace, dl, ini_restore, openlog, syslog, highlight_file, show_source, symlink, disk_total_space, ini_get_all, get_current_user, posix_uname, allow_url_fopen


5. Создаем фильтрацию GET и POST запросов, предотвращаем инъекции в БД и получение из нее данных.

Создаем файл.php с произвольным названием и следующим содержимым:

//поставить еденицу если хотите включить отладку запросов
$debug = 0;

$bag_req = array("select", "eval", "echo", "UPDATE", "LIMIT", "INSERT", "INTO", "union", "CONCAT", "INFORMATION_SCHEMA", "OUTFILE", "DUMPFILE", "LOAD_FILE", "BENCHMARK", "SUBSTRING", "ASCII", "CHAR", "database", "HEX", "\\.\\/", "%00", "\\.htaccess", "config\\.php", "document\\.cookie");
$request = serialize($_GET);


if($_GET)
{
foreach ($bag_req as $key => $value) {
{
В массиве найден запрос $value
$request";
}
}
}
if($_POST)
{
$request = str_replace("selected_language", "sl", serialize($_POST));
$urequest = urldecode($request);
$brequest = base64_decode($request);
foreach ($bag_req as $key => $value) {
if(preg_match("/$value/i", $request) || preg_match("/$value/i", $urequest) || preg_match("/$value/i", $brequest))
{
if($debug == "1") $do_debug = "
В массиве найден запрос $value , который блокирует правильную работу
$request";
die("BAD REQUEST $do_debug");
}
}
}
?>


Сохраняем его на сервере в любом каталоге системы DLE. Открываем файл engine/classes/mysql.php и после:

if(!defined("DATALIFEENGINE"))
{
die("Hacking attempt!");
}


подключаем созданный файл:

include_once(ENGINE_DIR."/путь_к_файлу/название.php");


6. Используя бесплатные компоненты к DLE обязательно узнайте мнение специалиста о их надежности.

При возникновении вопросов обращайтесь к поисковым системам - весь материал в свободном доступе!
Есть что добавить? Милости прошу к обсуждению!

Удачи вам и вашим проектам!

Поговорим о меню на сайте dle. Точнее о том, как добавить свои пункты в меню, или же заменить существующие на новые. Довольно часто, у новичков только установивших данную CMS возникает вопрос: «Как заменить стандартные пункты меню, в стандартном шаблоне, на свои?» Если, в wordpress, это можно осуществлять без редактирования кода, то в dle ситуация иная, в код все же придется залезть и немного там разобраться. Однако сложного в добавлении новых пунктов ничего нет, и я надеюсь, сегодня вы сможете в этом убедиться.

Итак, перейдем к делу. Для начала нам понадобится создать пункты, которые в последствии необходимо внедрить в меню dle, будь-то страницы или категории. Для этого заходим в админ панель и жмем на пункт «список всех разделов.»

А далее все зависит от ситуации. Если нам необходимо добавить в меню, ссылку на категорию сайта, то переходим в пункт «Категории», а если же нам нужно создать страницу, на которую будет направлять пользователя пункт меню, то переходим в пункт «Статические страницы». Принципиальной разницы между ними нет, поэтому мы выберем один из двух вариантов, например, «Категории».

Появится форма создания новой категории на сайте. Там все просто. Для чего служит каждое поле формы, см. изображение.

Не все поля, которые описаны на рисунке являются обязательными, а только первое и второе поле. А пункты, которые я не стал затрагивать на изображении вообще не относятся к категориям, а относятся к глобальным настройкам движка, таким как настройки вывода новостей dle , а также предоставляют возможность назначить уникальный шаблон, для каждой категории в отдельности.

После заполнения необходимых полей, как минимум первых двух, нажимаем на кнопку добавить. Это действие создаст новую категорию на сайте, ссылку на которую мы добавим в меню dle. И особое внимание обратите на второе поле, где необходимо было прописать альтернативное имя категории, которое будет составлять адрес, по которому будет находиться категория. В моем примере, он будет выглядеть так: http://сайт.ru/primer_category/

Теперь, перейдем к непосредственному добавлению нового пункта в меню dle.

Для этого, в админ панели нужно перейти в раздел «Шаблоны сайта».

А дальше необходимо выбрать один из двух файлов, если используется стандартный шаблон, в которых прописаны меню на сайте. В стандартном шаблоне имеется два вида меню: это, и горизонтальное и вертикальное. За горизонтальное меню отвечает файл topmenu.tpl, а за вертикальное меню в левой колонке сайта, отвечает файл sidebar.tpl. Оба этих файла можно найти в левой колонке раздела «Шаблоны сайта». А при клике на один из них, в правой колонке появится сам код данного файла.

После открытия файла, нам необходимо исправить любой существующий пункт на наш. То есть, изменить название, в данном случае на название категории. И подставить ссылку на саму категорию (альтернативное имя), вместо #. То есть если я заменю пункт «О сайте», то код меню станет выглядеть так:

По аналогии изменить можно и остальные пункты в меню. Что касается второго, горизонтального меню, то там ситуация абсолютно такая же. И естественно все лишнее, что вам не нужно, можно удалить. И конечно же, сохранить отредактированный файл.

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

А у меня на этом все.

Здравствуйте. Данный топик хочу посветить созданию простейшего модуля для популярной CMS Datalife Engine . В России, как впрочем и в странах СНГ она пользуется достаточно большой популярностью, однако на хабре статей об этой cms почему-то до сих пор нету. Я попытаюсь исправить это недоразумение. В этой статье вы узнаете о том, как сделать простейший модуль для этой CMS, а также познакомитесь со структурой движка.

Введение

Хотелось бы отметить, что система пользуется спросом у сайтов развлекательной тематики. Оно и понятно, система проста в использовании, имеет достаточное количество модулей и шаблонов. Да и почти все нужное есть «из коробки». Однако бывает, что чего-нибудь не хватает. Эту проблему мы постараемся решить.

Почему DLE?

Вы наверняка заинтересуетесь, почему я выбрал именно эту CMS. Ответ простой: достаточно логичная структура самого движка, отделение шаблонов от кода, довольно простой шаблонизатор, опять же довольно логичное размещение всего внутри - легко разобраться что к чему. Плюс к этому система остается относительно легкой и удобной. Она не так функциональна как, например, Друпал, но все же мне она нравится.

Структура

Для начала нам нужно знать кое-что о структуре движка. Нельзя творить на сервере бардак, поэтому мы будем хранить все в своих папках.

Модули для работы движка принято помещать в папку /engine/modules/ .

В папке /engine/inc/ находятся файлы панели администратора.

Начиная с версии 8.х появилось подключать модули прямо в шаблоне. Шаблон находится в папке /templates/имя_шаблона/. В этой папке есть файл main.tpl Это корневой файл шаблона, обычно в нем расположена основная структура шаблона. Обычно модуль можно подключить так:

{include file=«engine/modules/mod_category.php»}

Где mod_category.php – файл, находящийся в категории /engine/modules/. Думаю с этим все понятно, поехали дальше.

Давайте сделаем модуль для вывода последних комментариев с кэшированием. Для этого создадим файл в папке /engine/modules/ и назовем его mod_lastcomm.php Далее я привожу листинг кода этого файла с подробными комментариями.

Код

DATALIFEENGINE". Эта константа определяется в index.php и ее значение TRUE символизирует о том, что файл подключен с помощью include/require, а не просто запущен. */ if(!defined("DATALIFEENGINE")) { die("Hacking attempt!"); } /* Подключаем класс api, для того чтобы нам можно было использовать функции для работы с кэшем. */ include ("engine/api/api.class.php"); /* Пытаемся прочетать информацию, сохраненную в кэше с именем lastcomm. Рекомендую давать осмысленные имена всему тому, что мы сохраняем в кэше. По сути lastcomm – это файл в папке /engine/cache/, а 60 – это время жизни кэша в секундах. В данном случае, если с создания файла прошло больше времени, чем 60 секунд, то нам снова придется лезть в бд. */ $lastcomm=$dle_api->load_from_cache("lastcomm", 60); /* Проверяем – есть у нас кэш или нету. Если нету, то лезем в бд. */ if (!$lastcomm) { /* Собственно запрос в бд. Он выполняется с помощью функции класса $db. Константа PREFIX содержит префикс, указанный при установки cms. Названия столбцов названы вполне нормально, я думаю не нужно объяснять что они делают. Индефикатор запроса заносим в переменную $sql. */ $sql = $db->query("SELECT comments.post_id, comments.text, comments.autor, post.id, post.flag, post.category, post.date as newsdate, post.title, post.alt_name FROM " . PREFIX . "_comments as comments, " . PREFIX . "_post as post WHERE post.id=comments.post_id ORDER BY comments.date DESC LIMIT 0,20"); /* С помощью функции get_row() класса $db считываем последовательно каждую строку из результатов выборки. Информация заносится в массив $row с индексами равными именам полей таблиц */ while ($row = $db->get_row($sql)) { /* Если нужно обрезаем заголовок новости */ if (strlen($row["title"]) > 50) { $title = substr($row["title"], 0, 50)."..."; } else { $title = $row["title"]; } /* Формируем ссылку на профиль пользователя. Аналогично */ $aname=urlencode($row["autor"]); $name= "". $row["autor"] .""; /* Формируем текст комментария и если надо обрезаем его */ $text = htmlspecialchars($row["text"]); if (strlen($text) > 1024) $text= substr($text, 0, 1024)."..."; /* Формируем ссылку на новость. Массив $config содержит все настройки системы. В частности $config["http_home_url"] - это урл домена. */ $newslink = $config["http_home_url"].$row["post_id"]."-".$row["alt_name"].".html"; $hint = "onMouseover=\"showhint("$text", this, event, "");\""; $title = "".stripslashes($title).""; /* Итоговая запись для одного комментария */ $lastcomm.="От $name в новости:
$title

"; } $db->free(); /* Кэшируем полученные данные. Чтобы получше разобраться с функциями кэширования, откройте файл "engine/api/api.class.php" там отлично все закомментировано */ $dle_api->save_to_cache ("lastcomm", $lastcomm); } /* Выводим полученный результат */ echo $lastcomm; ?>

Заключение

Данный код полностью рабочий. И в нем конечно же есть недостатки. Например не проверяется для ссылок - включено ли ЧПУ. Или при переходе по ссылке на профиль пользователя мы попадаем сразу в его профиль, а не на окошечко jQuery с краткой информацией. Вообщем есть что доработать. Но все эти вещи не были включены сюда только по одной причине - не дать запутаться новичку. Также советую проанализировать другие файлы, например topnews.php. Если у вас возникнут вопросы по написанию модулей или вообще по системе - я с радостью отвечу на них.

На этом у меня все, если эта тема кому-нибудь покажется интересной, то я сделаю цикл статей про cms Datalide Engine (DLE).

Ах да, это моя первая статья на хабре, поэтому извините если что не так.