Архив рубрики: Публикации

WordPress. Опыты с wp-cron

Как-то раз на одном из моем хостинге, при разворачивании нового сайта, вызов wp-cron.php из wordpress не работал. Все бы было хорошо, если бы мне не понадобился плагин WP Super Cache для корректной отдачи HTTP заголовков, который при активации проверяет доступность wp-cron.php вот этим кодом:

$cron_url = get_option( 'siteurl' ) . '/ wp-cron.php?check=' . wp_hash('187425');
$cron = wp_remote_get($cron_url, array('timeout' => 0.01, 'blocking' => true)); 
if( is_array( $cron ) ) { 
   if( $cron[ 'response' ][ 'code' ] == '404' )

Мдя. У меня аккурат 404 и возвращало. Ну как сие обойти, догадаться не сложно, но вот как мусор подчищать в кэше было не очевидно. Обкурившись интернета до полной нирваны, решил устроить дерганье wp-cron.php средствами сервера хостинга, благо у меня такая возможность есть.

В процессе по наступал на россыпь маленьких граблей, о них тут и расскажу. Первое что надо сделать, это сказать wordpress, что мы сами знаем как часто нам крон дергать. Для этого в файле wp-config.php рисуем строку:

define('ALTERNATE_WP_CRON', true);

повыше директивы

require_once(ABSPATH . 'wp-settings.php');

После того, как это прописалось, я взял голыми руками wp-cron.php и скопировал его в файл vasya_forever.php и положил рядом с файлом wp-cron.php в тот же каталог.

Этого глумления мне показалось мало, поэтому я вместо прав 644 выдал файлу vasya_forever.php права 755. Мне его надо будет посторонними вещами дергать, для этого и сыр-бор. Если выставить 755 на wp-cron.php то любой шланг из интернета сможет дергать ваш wordpress cron когда угодно, и в общем-то нагрузить сервер от души, если запросов будет много. Соответственно, настоящее имя файла вася-форевер я не скажу, и вы ни кому не говорите.

После этих манипуляций я в DirectAdmin для крона прописал следующую команду запуска:

*/15****/usr/bin/wget -O tempo http://myenotes.ru/vasya_forever.php > /dev/null

Это извращение заставляет wget, с сервера хостинга, каждые 15 минут обращаться к файлу vasya_forever.php, который будет выполнять крон-задания вордпресс. Все, что wget получит, он будет аккуратно складывать в файл tempo, затирая его при каждом вызове. Директива >/dev/null  заставляет cron писать не мне на почту, как это принято в Unix системах, а сразу все письма умножать на ноль, чтоб не отвлекали. Продолжаться этот бардак, как вы понимаете, будет до тех пор, пока мне не надоест.



2017-05-09T16:29:58
WordPress

WordPress. Шаблон Your Journey – Travel Blog WordPress и описание рубрик

Прикупил на Themeforest шаблон Your Journey – Travel Blog WordPress для одного из сайтов. Начал заполнять контентом, добавлять описание рубрик. И тут я вижу, что описание рубрики вставляется в шапку, а не контентный блок, да еще и без html разметки. Т.е получается сплошной текст в шапке, а при размере в 3000 знаков, это выглядит убого и не читабельно.

Делаем нормальное описание рубрики

Ну ок, попробуем это исправить (Пример того, что получится можно посмотреть тут).

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

Формат отображения новостей listing


Не будем трогать оригинальный шаблон отображения новостей, а сделаем новый. Для этого создадим файл /www/wp-content/themes/Yourjourney/layout/listingc.php и скопируем в него содержимое из файла /www/wp-content/themes/Yourjourney/layout/listing.php

Находим и меняем строки:

<div class="content">
<?php while( have_posts() ) : the_post(); ?>

на

<div class="content">
<?php 
$aTerm = get_queried_object();
$catdescr = category_description($aTerm->term_id);
                
if(!empty($catdescr)) { ?>
   <div class="type-post status-publish format-standard has-post-thumbnail hentry catdescr"><?php echo $catdescr ?></div>
<?php } ?>
<?php while( have_posts() ) : the_post(); ?>

Теперь у нас описание рубрики будет выводится в блоке content с HTML разметкой.

Далее правим отображение описания рубрики в шапке, для себя я сделал отображение короткого описания в 55 слов. Используется функция wp_trim_words.

Находим и меняем строку:

$sub   = $aTerm->description;

на

$sub   = wp_trim_words($aTerm->description);

Если вы хотите сделать короче описание, скажем в 10 слов, то код изменим на такой:

$sub   = wp_trim_words($aTerm->description, 10);

Если хотите вообще отключить вывод анонса в шапке, то делаем например так:

$sub = '';


Остался последний шаг, подключим наш новый шаблон рубрик. Для этого отредактируем файл /www/wp-content/themes/Yourjourney/category.php и поправим следующую строчку:

get_template_part('layout/listing');

на

get_template_part('layout/listingc');

Готово, теперь можно проверять.



2017-05-09T09:39:29
WordPress

Как избежать случайного закрытия или перезагрузки в Linux

Иногда мы забываем, что выполняется важное задание на VPS или на удаленной системе. Без проверки, мы просто выключаем или перезагружаем VPS. Результат? Работа прекращаются из — за нашей невнимательности. И мы должны начать работу с самого начала. Несмотря на то, есть способы, чтобы переместить работу от одного терминала к другому, мы просто забыть подобные вещи. Существует утилита под названием molly-guard, которая используется для предотвращения системы Linux от случайного выключения или перезагрузки. Читать

Библиотеки Linux

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

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

Что такое библиотеки?

Как я уже говорил выше — библиотеки реализуют общие возможности, которые потом используются программами. Если говорить просто, то библиотека — это набор функций, каждую из которых можно использовать в любой программе. Например, если программе нужно вывести строку на экран, она не будет лезть прямо в буфер видеокарты, а использует функцию из стандартной библиотеки.

Библиотеки делятся на два типа — динамические и статические. Статические библиотеки linux подключаются на этапе сборки программы, а динамические — во время выполнения и они общие для нескольких программ. Нас будут интересовать именно динамические библиотеки linux. Они находятся в папках /lib, /lib64, /usr/lib, /usr/lib/x86_64-linux-gnu. Каждая библиотека имеет расширение .so, за которым следует номер версии. Этот номер увеличивается каждый раз, когда разработчики вносят серьезные изменения. Такой подход необходим для того, чтобы сохранить совместимость для программ, использующих старые версии. Например, в системе может быть две библиотеки libfuse.so.0 и libfuse.so.1. Далее мы рассмотрим основные библиотеки и их предназначение.

Как получить информацию о библиотеках?

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

cat /etc/ld.so.conf.d/*

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

ls -l /lib/x86_64-linux-gnu/

Информацию о зависимостях каждой библиотеки вы можете посмотреть командой ldd:

ldd /lib/x86_64-linux-gnu/ld-2.24.so

А еще можно узнать какому пакету принадлежит библиотека в Ubuntu:

dpkg -S /lib/x86_64-linux-gnu/ld-2.24.so

Как видите, библиотека ld.so принадлежит пакету libc6, точнее она входит в набор инструментов Си. Более подробно, о том, как устанавливать новые библиотеки и решать проблемы с ними, описано в статье библиотеки Ubuntu.

Основные библиотеки

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

  • libanl.so — библиотека работы с DNS;
  • libc.a — основная статическая библиотека языка Си;
  • libdl.a — библиотека, отвечающая за загрузку других библиотек во время запуска программы;
  • libnsl.so — работа со службой NIS;
  • libstdc++.so — стандартная библиотека C++;
  • libutil.so — реализует основные часто используемые функции;
  • libelf.so — библиотека для работы с бинарными файлами ELF;
  • libevent.so — библиотека с реализацией механизма вызова функций после события;
  • libgnutls.so — библиотека с основными методами и возможностями, используемыми в стандартных утилитах Linux;
  • ld-linux.so — главная библиотека, она собрана в виде статической и не имеет зависимостей. Загружает другие библиотеки и исполняемые файлы. Вы можете вызвать эту библиотеку как программу и передать ей адрес исполняемого файла для запуска.

Библиотеки кодеков

Эти библиотеки содержат наборы кодеков для воспроизведения различных медиа данных. Некоторые из них имеют несвободную лицензию или закрытый исходный код:

  • liba52.so — свободный декодер ATSC A/52;
  • libavfilter6.so — библиотека фильтров ffmpeg;
  • libavcodec57.so — библиотека кодеков ffmpeg;
  • libavformat57.so — библиотека форматов ffmpeg;
  • libavutil55.so — библиотека дополнительных функций ffmpeg;
  • libdv.so — программный кодек для DV;
  • libmad.so — MPEG аудио декодер;
  • libmpeg2.so — потоковый декодер видео данных;
  • libmpg123.so — библиотека консольного плеера mpg123;
  • libwebp.so — декодирование формата Webp;
  • libxvidcore.so — медиа кодек MPEG-4.

Звуковые библиотеки

  • libao.so — библиотека проигрывания звука с простым интерфейсом;
  • libasound.so — библиотека взаимодействия со звуковой подсистемой ALSA;
  • libaudio2.so — библиотека работы со звуком, входит в состав ALSA;
  • libespeak.so — библиотека синтеза речи;
  • libpulse.so — библиотека с основными методами PulseAudio;

Работа с архивами

  • libarchive.so — библиотека для работы с архивами различных форматов;
  • liblzma.so — работа с архивами LZMA.

Графические библиотеки

  • libart.so — библиотека с реализацией функций для работы с 3d графикой;
  • libaa.so — библиотека ASCII графики;
  • libgtk-3.so — набор методов графического фреймворка GTK 3;
  • libgd.so — базовые функции работы с графикой и рисования;
  • libgif.so — работа с форматом изображений Gif;
  • libjpeg.so — работа с изображениями Jpeg;
  • libglapi.so — свободная реализация методов для работы с OpenGL;
  • libgtk-x11-2.0.so — набор методов библиотеки GTK 2;
  • libwx_baseu.so, libwx_baseu_net-3.0.so и другие — набор библиотек фремворка создания графических приложений WX;
  • libX11.so — основные методы и функции X сервера;
  • libncurses.so — одна из самых популярных библиотек псевдографики;
  • libQtGui.so, libQt5Svg.so, libQt5Widgets.so и другие — библиотеки фреймворка разработки графических приложений Qt.

Работа с текстом

  • libaspell.so — библиотека проверки орфографии;
  • libfreetype.so — библиотека отрисовки шрифтов;
  • libharfbuzz.so — библиотека обработки символов Unicode;
  • libxml2.so — библиотека разбора XML;
  • libyaml-0.so — библиотека разбора Yaml.

Безопасность

  • libcrack.so — библиотека с реализацией методов перебора паролей для проверки их надежности;
  • libcrypt.so — библиотека, отвечающая за шифрование;
  • libssl3.so — библиотека шифрования SSLv3;
  • libapparmor.so — библиотека управления системой безопасности AppArrmor;
  • libaudit.so — библиотека слежения за состоянием системы и регистрации событий.

Библиотеки драйверов

  • libcups.so — библиотека работы с принтером;
  • libfuse.so — библиотека организации виртуальных файловых систем;
  • libgphoto2.so — библиотека взаимодействия с камерами по USB;
  • libsensors.so — используется для получения информации от датчиков на материнской плате;
  • libudisks2.so — библиотека usisks, которая отвечает за автоматическое монтирование и обнаружение подключенных устройств;
  • libv4l1.so — библиотека работы с веб-камерами;
  • libpci.so — библиотека работы с PCI устройствами;
  • libusb-1.0.so — библиотека управления USB;
  • libdrm.so — библиотека с общими возможностями Direct Rendering Manager, отрисовки графики с помощью видеокарты;
  • libdrm_amdgpu.so — DRM для драйвера AMDGPU;
  • libdrm_intel.so — DRM для карт Intel;
  • libdrm_nouveau.so — свободный DRM для видеокарт Nvidia;

Сеть

  • libresolv.so — библиотека получения IP адреса по имени хоста;
  • libpcap.so — библиотека анализа и захвата сетевых пакетов;
  • libproxy.so — настройка и управление прокси;

Эмуляция

  • libSDL.so — библиотека эмуляции загрузки компьютера и базовых возможностей BIOS;
  • libwine.so — библиотека прослойки для запуска приложений Windows в Linux.
  • libvirt.so — библиотека управления KVM;

Выводы

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

На завершение урок про библиотеки Linux:

https://youtu.be/qZEQ1gIvDVo



2017-04-29T12:48:03
Информация

Astra Linux. Ошибка почты

osTicket :: Staff Control Panel

Настроив exim4 + dovecot, в комплексе защещенного сервера печати, переходим на клиентский АРМ.

Осуществеляем вход под пользователем в нулевой мандатной метке.

В терминале fly набираем команду:

# thunderbird

Почтовый клиент Mozilla thunderbird предлагает сразу создать учетную запись пользователя.

Нажимаем на создание учентной записи. Настройка для первичной регистрации!

Пользователь - user

Учетная запись - user@astra.domain

Пароль - пароль пользователя

Сервер входящей почты imap , порт 143 , защита соединения - нет

Сервер исходящей почты smtp , порт 25 , защита соединения - нет

Адреса необходимо прописывать полностью, например : mail.astra.domain.

Однако, я сталкнулся с проблемой при отправке сообщения.

При нажатии на кноку отправить пояляется скролл-бар “копирование письма в папку sent”, которое идет бесконечно.

Решается это обновлением тикетов керберос.

На почтовом сервере выполняем команды:

# ald-client update-svc-add imap/mail.astra.domain --ktfile="/var/lib/dovecot/dovecot.keytab"



# ald-client update-svc-add smtp/mail.astra.domain --ktfile="/var/lib/dovecot/dovecot.keytab"

На клиенте делаем апдейт:

# ald-renew-tickets now

Перезапускаем громовую птичку:

# thunderbird

Удаляем учетную запись, и регистриуем заново. Отправляем письмо => Ошибка решена.

P.S. прошлые попытки отправить письма будут тоже реализованы.



2017-04-28T11:37:52
Медиа

Загрузочная флэшка Linux на Windows

Картинки по запросу linux usb flash

Рассмотрим варианты создания загручной флэшки Linux на операционных системах Windows.

1.Использование программы Rufus.

На момент написания, самая свежая версия 2.14. Свободная в скачивании и легко находимая.

Скачать актуальную версию можно по ссылке rufus.akeo.ie

• запускаем Rufus

• в выплывающем списке “устройство” находим наш usb-носитель

• в параметрах форматирования находим “создать загрузочный диск” и рядом с ним выбираем наш готовый образ

• нажимаем старт

• нажимаем “ок” на все всплывающие окна

• ждем несколько минут, пока над скролл-баром не появится слово “готов”.

2.Использование программы Unetbootin.

Так же свободно распространяемая прогрмма записи ISO-образов.

Скачать актуальную версию можно по ссылке unetbootin.github.io

Существует версии для Windows , Linux , MacOS.

Для начала проврим тип файловой системы usb-носителя

• Win+e , находим нашу флэшку, кликаем правой кнопкой мыши и нажимаем свойства

• В основной вкладке находим “Файловая система” NTFS или FAT32

• Если указана NTFS, еще раз кликаем правой кнопкой мыши и нажимаем “Форматировать…”

• В всплывающем списке Файловая система выбираем FAT32 (по умолчанию)

• Нажим начать и Ок на всплывающее окно

• Далее запускаем Unetbootin

• Выбираем из выплывающих списков нужный дистрибутив и его версию

• Отмечаем Образ и выбираем заранее скачанный ISO образ по пути

• Отмечаем тип устройства => usb и самое устройство ( например F:)

• Нажимаем Ок и ждем несколько минут пока не заполнится скролл бар.

 

 



2017-04-26T14:13:26
Медиа