:Mason · 2 min read · Oct 19, 2025

Запуск HTML::Mason с nginx и FastCGI

Запуск HTML::Mason с nginx и FastCGI

Эта статья является пошаговым руководством по установке модуля HTML::Mason для использования с веб-сервером ngingx и FastCGI. Она была протестирована на Debian (lenny), но должна быть очень похожа на Ubuntu и другие дистрибутивы на базе Debian.

Установка минимального работающего сервера

Прежде всего, мы установим минимальный сервер с nginx и FastCGI. Я создал базовые скрипты, чтобы запустить его. Позже мы можем настроить эти скрипты.

Установка nginx

Теперь мы установим nginx и заставим его работать. Предполагается, что на хосте нет другого веб-сервера. Все будет установлено по умолчанию.

apt-get install nginx

Давайте проверим, работает ли он, подключившись к порту 80.

/etc/init.d/nginx start  
telnet locahost 80  
Escape character is '^]'  
GET /  
  
  
Добро пожаловать в ngingx!<title>  
...</code></pre></div><h4 class="text-lg font-bold py-2">Установка FastCGI</h4><div class="code-ui group"><pre class=""><code class="">apt-get install libcgi-fast-perl libio-all-perl</code></pre></div><h4 class="text-lg font-bold py-2">Установка HTML::Mason</h4><p class="">HTML::Mason предполагается, что требует apache2 для работы, поэтому он будет загружен и установлен. Мы избавимся от него позже.</p><div class="code-ui group"><pre class=""><code class="">apt-get install libhtml-mason-perl  
apt-get --purge remove apache2-mpm-worker apache2-utils  
apt-get --purge autoremove</code></pre></div><p class="">Надеюсь, теперь у нас установлен HTML::Mason и нет следов apache. Убедитесь, что nginx все еще работает, проверив, отвечает ли он на порту 80.</p><h4 class="text-lg font-bold py-2">Настройка FastCGI</h4><p class="">Нам нужен работающий сервер FastCGI, чтобы он мог выполнять код HTML::Mason. Этот скрипт загрузит все конфигурационные и инициализационные файлы. Мы должны запустить его от имени root. Пожалуйста, ознакомьтесь с ним перед запуском. Он загружает и копирует некоторые файлы с github. Это может быть опасно для вашего сервера.</p><div class="code-ui group"><pre class=""><code class="">wget http://github.com/frankiejol/mason-fcgi/raw/master/download.sh  
bash ./download.sh</code></pre></div><p class="">Очень важно изменить опцию server_name в /etc/nginx/sites-available/mason на реальное имя сервера. Localhost не сработает. Затем измените переменную %SITES в /var/www/mason/mason_fcgi.pl.</p><h4 class="text-lg font-bold py-2">Запуск кода Mason</h4><p class="">Наконец, давайте создадим простую страницу Mason.</p><div class="code-ui group"><pre class=""><code class="">mkdir /var/www/site1  
echo '<% 2 + 2 %>' > /var/www/site1/index.html</code></pre></div><p class="">Затем давайте запустим сервис. Если вы подключили сайт через браузер, должно появиться 4.</p><div class="code-ui group"><pre class=""><code class="">/etc/init.d/nginx restart  
/etc/init.d/fcgi start</code></pre></div><h3 class="text-xl font-bold py-2" id="h2-2">Настройка сервера</h3><p class="">Прямо сейчас у нас есть сервер Mason на базе nginx+FastCGI. Все конфигурационные файлы и скрипты можно найти в моем репозитории на github.</p><h4 class="text-lg font-bold py-2">nginx</h4><p class="">Конфигурация nginx находится в /etc/nginx/sites-available/mason. Местоположение можно изменить в соответствии с вашими потребностями. Обратите внимание, что есть две строки переписывания, потому что Mason не может правильно обрабатывать директории. Поэтому, когда запрос выглядит как директория, добавляется постфикс index.html.</p><h4 class="text-lg font-bold py-2">FastCGI</h4><p class="">Скрипт запуска FastCGI находится в /var/www/mason/mason_fcgi.pl. Можно передать множество аргументов.</p><div class="code-ui group"><pre class=""><code class="">/var/www/mason/mason_fcgi.pl --help  
mason_fcgi.pl [--help] [--pid=/var/run/fcgi/fcgi.pid] [--log=/var/log/nginx/fcgi/fcgi.log] [--debug] [--socket=/var/run/fcgi/mason_fcgi.sock] [--basedir=/var/www] [--workspace=/var/www/mason/workspace] [--error-uri=/errors/503.html] [--listen-queue=100] [--default-host=debian.localdomain]</code></pre></div><p class="">Есть раздел для добавления загрузки модулей Perl и глобальных переменных. Это стандартный код:</p><div class="code-ui group"><pre class=""><code class="">{
    package HTML::Mason::Commands;
    # use My::Own::Module;
    # use Data::Dumper;
    # все, что вы хотите сделать доступным для компонентов                                
    use vars(qw($DBH %stash));
}</code></pre></div><h4 class="text-lg font-bold py-2">Запуск нескольких сайтов FastCGI</h4><p class="">Демон FastCGI запускается из /etc/init.d/fcgi. Этот скрипт загружает конфигурацию из /etc/default/fcgi. Если вам нужно больше серверов FastCGI для разных сайтов, просто скопируйте инициализационный скрипт под другим именем и назовите конфигурационный файл так же. Инициализационный скрипт загрузит файл в /etc/default с таким же базовым именем, как и он сам.</p><h3 class="text-xl font-bold py-2" id="h2-3">Ссылки</h3><ul class="my-6 list-disc space-y-2 pl-6 md:pl-8 [&_li]:marker:text-slate-400"><li class="">nginx</li><li class="">HTML::Mason</li><li class="">файлы mason-fcgi</li></ul>
</div>
      </div>

      <div class="mt-10">
        <div class="flex flex-wrap items-center gap-3">
  <span class="text-sm text-slate-600 dark:text-slate-300">Share:</span>
  <a href="https://twitter.com/intent/tweet?text=%D0%97%D0%B0%D0%BF%D1%83%D1%81%D0%BA%20HTML::Mason%20%D1%81%20nginx%20%D0%B8%20FastCGI&url=https://techrealizes.com/ru/p/running-html-mason-with-nginx-and-fastcgi-93832990" target="_blank" rel="noopener" class="rounded-xl border border-slate-300 px-3 py-1.5 text-sm hover:bg-slate-50 dark:border-slate-700 dark:hover:bg-slate-800">
    X/Twitter
  </a>
  <a href="https://www.linkedin.com/sharing/share-offsite/?url=https://techrealizes.com/ru/p/running-html-mason-with-nginx-and-fastcgi-93832990" target="_blank" rel="noopener" class="rounded-xl border border-slate-300 px-3 py-1.5 text-sm hover:bg-slate-50 dark:border-slate-700 dark:hover:bg-slate-800">
    LinkedIn
  </a>
  <button type="button" onclick="navigator.clipboard.writeText('https://techrealizes.com/ru/p/running-html-mason-with-nginx-and-fastcgi-93832990')" class="rounded-xl border border-slate-300 px-3 py-1.5 text-sm hover:bg-slate-50 dark:border-slate-700 dark:hover:bg-slate-800">
Copy link
</button>
</div>
      </div>

      <div class="mt-6">
        <div class="flex flex-wrap gap-2">
          <a href="/ru/tag/mason" class="rounded-full bg-slate-100 px-3 py-1 text-xs font-medium text-slate-700 ring-1 ring-inset ring-slate-200 dark:bg-slate-800 dark:text-slate-300 dark:ring-slate-700">
            #:Mason
          </a>
        </div>
      </div>

      <div class="mt-12">
        <section class="rounded-2xl border border-slate-200 bg-gradient-to-br from-slate-50 to-white p-6 dark:border-slate-800 dark:from-slate-900 dark:to-slate-950">
  <div class="flex flex-col items-start justify-between gap-4 sm:flex-row sm:items-center">
    <div>
      <h3 class="text-lg font-semibold">Get new posts in your inbox</h3>
      <p class="text-sm text-slate-600 dark:text-slate-300">
        No spam. Unsubscribe anytime.
      </p>
    </div>
    <form class="flex w-full max-w-md items-center gap-2">
      <input type="email" required placeholder="you@example.com" class="w-full flex-1 rounded-xl border border-slate-300 bg-white px-3 py-2 outline-none dark:border-slate-700 dark:bg-slate-900">
      <button class="rounded-xl bg-slate-900 px-4 py-2 text-sm font-medium text-white hover:bg-slate-800 dark:bg-white dark:text-slate-900">
        Subscribe
      </button>
    </form>
  </div>
</section>
      </div>
    </div>

    <aside class="lg:col-span-4">
      <div class="lg:sticky lg:top-20">
        <div class="mb-6 rounded-2xl border border-slate-200 bg-white p-4 dark:border-slate-800 dark:bg-slate-900">
          <div class="mb-2 text-sm font-semibold">On this page</div>
          <ul class="space-y-2 text-sm">

              <li>
                <a href="#h2-0" class="text-slate-600 hover:text-slate-900 dark:text-slate-300 dark:hover:text-white">
                   Запуск HTML::Mason с nginx и FastCGI
                </a>
              </li>

              <li>
                <a href="#h2-1" class="text-slate-600 hover:text-slate-900 dark:text-slate-300 dark:hover:text-white">
                   Установка минимального работающего сервера
                </a>
              </li>

              <li>
                <a href="#h2-2" class="text-slate-600 hover:text-slate-900 dark:text-slate-300 dark:hover:text-white">
                   Настройка сервера
                </a>
              </li>

              <li>
                <a href="#h2-3" class="text-slate-600 hover:text-slate-900 dark:text-slate-300 dark:hover:text-white">
                   Ссылки
                </a>
              </li>

          </ul>
        </div>
        <div>
          <h3 class="mb-3 text-sm font-semibold">Related</h3>
          <div class="grid grid-cols-1 gap-4">

              <a href="/ru/p/linux-c-programming-tutorial-part-7-arrays-94220576" class="group overflow-hidden rounded-2xl border border-slate-200 bg-white hover:bg-slate-50 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-800/40">

                <img src="/files/8756669e-5f11-4dbd-9c13-47ec7432dae3.jpg" alt="" class="h-32 w-full object-cover" loading="lazy">
                <div class="p-3">
                  <div class="mb-1 text-xs text-slate-500">
                    Программирование · Feb 14, 2026
                  </div>
                  <div class="line-clamp-2 text-sm font-medium group-hover:underline">
                    Учебник по программированию на C для Linux Часть 7: Массивы
                  </div>
                </div>
              </a>

              <a href="/ru/p/logitech-mx-mechanical-mini-review-the-type-for-writers-93237314" class="group overflow-hidden rounded-2xl border border-slate-200 bg-white hover:bg-slate-50 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-800/40">

                <img src="/files/9ca1697f-cadf-4e4c-9cb7-c4e153445240.jpg" alt="Обзор logitech mx mechanical mini" class="h-32 w-full object-cover" loading="lazy">
                <div class="p-3">
                  <div class="mb-1 text-xs text-slate-500">
                    Обзор клавиатур · Feb 14, 2026
                  </div>
                  <div class="line-clamp-2 text-sm font-medium group-hover:underline">
                    Обзор Logitech MX Mechanical Mini: клавиатура для писателей
                  </div>
                </div>
              </a>

              <a href="/ru/p/microsoft-security-essentials-gives-false-positives-that-bitcoin-blockchain-infected-by-stoned-virus-94222075" class="group overflow-hidden rounded-2xl border border-slate-200 bg-white hover:bg-slate-50 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-800/40">

                <img src="/files/0bdcdeb0-9887-4110-af71-2d1e425c5d0a.jpg" alt="" class="h-32 w-full object-cover" loading="lazy">
                <div class="p-3">
                  <div class="mb-1 text-xs text-slate-500">
                    Безопасность · Feb 14, 2026
                  </div>
                  <div class="line-clamp-2 text-sm font-medium group-hover:underline">
                    Microsoft Security Essentials дает ложные срабатывания, что блокчейн Bitcoin заражен вирусом 'Stoned'
                  </div>
                </div>
              </a>

              <a href="/ru/p/google-unveils-slurry-of-new-security-features-in-android-5-0-lollipop-94325355" class="group overflow-hidden rounded-2xl border border-slate-200 bg-white hover:bg-slate-50 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-800/40">

                <img src="/files/ab534329-e080-4d33-ade7-8dd2490beefb.jpg" alt="" class="h-32 w-full object-cover" loading="lazy">
                <div class="p-3">
                  <div class="mb-1 text-xs text-slate-500">
                    Безопасность · Feb 14, 2026
                  </div>
                  <div class="line-clamp-2 text-sm font-medium group-hover:underline">
                    Google представляет множество новых функций безопасности в Android 5.0 Lollipop
                  </div>
                </div>
              </a>

              <a href="/ru/p/setting-up-an-android-app-build-environment-with-eclipse-android-sdk-phonegap-debian-squeeze-94271797" class="group overflow-hidden rounded-2xl border border-slate-200 bg-white hover:bg-slate-50 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-800/40">

                <img src="/files/ae3d5143-2876-4cc3-b5aa-19e15ea52407.jpg" alt="" class="h-32 w-full object-cover" loading="lazy">
                <div class="p-3">
                  <div class="mb-1 text-xs text-slate-500">
                    Android, разработка · Feb 14, 2026
                  </div>
                  <div class="line-clamp-2 text-sm font-medium group-hover:underline">
                    Настройка среды сборки Android-приложений с Eclipse, Android SDK, PhoneGap (Debian Squeeze)
                  </div>
                </div>
              </a>

              <a href="/ru/p/sony-announces-xperia-10-ii-xperia-l4-and-xperia-pro-smartphones-93418471" class="group overflow-hidden rounded-2xl border border-slate-200 bg-white hover:bg-slate-50 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-800/40">

                <img src="/files/66b03667-d75e-441e-bce0-86b391409a27.jpg" alt="Sony анонсирует смартфоны Xperia 10 II, Xperia L4 и Xperia Pro - Sony Xperia Pro" class="h-32 w-full object-cover" loading="lazy">
                <div class="p-3">
                  <div class="mb-1 text-xs text-slate-500">
                    Смартфоны · Feb 14, 2026
                  </div>
                  <div class="line-clamp-2 text-sm font-medium group-hover:underline">
                    Sony анонсирует смартфоны Xperia 10 II, Xperia L4 и Xperia Pro
                  </div>
                </div>
              </a>

              <a href="/ru/p/face-off-nokia-7-plus-vs-xiaomi-redmi-note-5-pro-comeback-kid-meets-the-new-king-93328755" class="group overflow-hidden rounded-2xl border border-slate-200 bg-white hover:bg-slate-50 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-800/40">

                <img class="h-32 w-full object-cover" loading="lazy">
                <div class="p-3">
                  <div class="mb-1 text-xs text-slate-500">
                    Сравнение · Feb 14, 2026
                  </div>
                  <div class="line-clamp-2 text-sm font-medium group-hover:underline">
                    [Сравнение] Nokia 7 Plus против Xiaomi Redmi Note 5 Pro: Возвращение чемпиона встречает нового короля
                  </div>
                </div>
              </a>

              <a href="/ru/p/the-perfect-setup-debian-woody-3-0-94643535" class="group overflow-hidden rounded-2xl border border-slate-200 bg-white hover:bg-slate-50 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-800/40">

                <img src="/files/8a3fe69a-7ca2-4536-a19c-7bb5df2a4246.jpg" alt="" class="h-32 w-full object-cover" loading="lazy">
                <div class="p-3">
                  <div class="mb-1 text-xs text-slate-500">
                    Настройка сервера · Feb 14, 2026
                  </div>
                  <div class="line-clamp-2 text-sm font-medium group-hover:underline">
                    Идеальная настройка - Debian Woody (3.0)
                  </div>
                </div>
              </a>

              <a href="/ru/p/phoenix-browser-for-pc-download-windows-11-10-7-94170189" class="group overflow-hidden rounded-2xl border border-slate-200 bg-white hover:bg-slate-50 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-800/40">

                <img src="/files/5d2162fe-a352-4ec0-a017-2ef3c3ff0aed.jpg" alt="" class="h-32 w-full object-cover" loading="lazy">
                <div class="p-3">
                  <div class="mb-1 text-xs text-slate-500">
                    Браузеры · Feb 14, 2026
                  </div>
                  <div class="line-clamp-2 text-sm font-medium group-hover:underline">
                    Скачать браузер Phoenix для ПК (Windows 11/10/7)
                  </div>
                </div>
              </a>

              <a href="/ru/p/the-perfect-setup-ubuntu-feisty-fawn-ubuntu-7-04-page-4-94643734" class="group overflow-hidden rounded-2xl border border-slate-200 bg-white hover:bg-slate-50 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-800/40">

                <img class="h-32 w-full object-cover" loading="lazy">
                <div class="p-3">
                  <div class="mb-1 text-xs text-slate-500">
                    Установка ПО · Feb 14, 2026
                  </div>
                  <div class="line-clamp-2 text-sm font-medium group-hover:underline">
                    Идеальная настройка - Ubuntu Feisty Fawn (Ubuntu 7.04) - Страница 4
                  </div>
                </div>
              </a>

              <a href="/ru/p/asus-marshmallow-keyboard-kw100-and-mouse-md100-review-great-tab-pals-to-point-click-and-type-93237311" class="group overflow-hidden rounded-2xl border border-slate-200 bg-white hover:bg-slate-50 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-800/40">

                <img src="/files/932e911a-8d8d-4ca0-8b5d-1821d416313e.jpg" alt="Обзор клавиатуры и мыши asus marshmallow" class="h-32 w-full object-cover" loading="lazy">
                <div class="p-3">
                  <div class="mb-1 text-xs text-slate-500">
                    Обзоры техники · Feb 14, 2026
                  </div>
                  <div class="line-clamp-2 text-sm font-medium group-hover:underline">
                    Обзор клавиатуры Asus Marshmallow KW100 и мыши MD100: Отличные спутники для планшета, чтобы указывать, щелкать и печатать
                  </div>
                </div>
              </a>

              <a href="/ru/p/switch-emulator-skyline-shuts-down-over-nintendos-latest-dmca-order-94427592" class="group overflow-hidden rounded-2xl border border-slate-200 bg-white hover:bg-slate-50 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-800/40">

                <img src="/files/50e5eaa3-f5d2-40b6-98b8-e30b3d560df2.jpeg" alt="" class="h-32 w-full object-cover" loading="lazy">
                <div class="p-3">
                  <div class="mb-1 text-xs text-slate-500">
                    Игры · Feb 14, 2026
                  </div>
                  <div class="line-clamp-2 text-sm font-medium group-hover:underline">
                    Эмулятор Skyline закрывается из-за последнего приказа DMCA от Nintendo
                  </div>
                </div>
              </a>

              <a href="/ru/p/assp-with-embedded-clamav-integrated-into-postfix-with-virtual-users-and-domains-94168386" class="group overflow-hidden rounded-2xl border border-slate-200 bg-white hover:bg-slate-50 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-800/40">

                <img class="h-32 w-full object-cover" loading="lazy">
                <div class="p-3">
                  <div class="mb-1 text-xs text-slate-500">
                    Почтовые системы · Feb 14, 2026
                  </div>
                  <div class="line-clamp-2 text-sm font-medium group-hover:underline">
                    ASSP с встроенным ClamAV, интегрированным в Postfix с виртуальными пользователями и доменами
                  </div>
                </div>
              </a>

              <a href="/ru/p/hits-and-misses-at-mwc-2017-what-rocked-what-sank-93327858" class="group overflow-hidden rounded-2xl border border-slate-200 bg-white hover:bg-slate-50 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-800/40">

                <img src="/files/878d8198-363c-4daf-a9f8-f2403469dd25.jpg" alt="хиты и провалы на mwc 2017: что взорвалось, что утонуло! - mwc барселона" class="h-32 w-full object-cover" loading="lazy">
                <div class="p-3">
                  <div class="mb-1 text-xs text-slate-500">
                    Технологии · Feb 14, 2026
                  </div>
                  <div class="line-clamp-2 text-sm font-medium group-hover:underline">
                    Хиты и провалы на MWC 2017: что взорвалось, что утонуло!
                  </div>
                </div>
              </a>

              <a href="/ru/p/virtualization-with-xenserver-5-5-0-94323139" class="group overflow-hidden rounded-2xl border border-slate-200 bg-white hover:bg-slate-50 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-800/40">

                <img src="/files/81326419-3e3c-46e7-8904-666592b05bdd.png" alt="" class="h-32 w-full object-cover" loading="lazy">
                <div class="p-3">
                  <div class="mb-1 text-xs text-slate-500">
                    Виртуализация · Feb 14, 2026
                  </div>
                  <div class="line-clamp-2 text-sm font-medium group-hover:underline">
                    Виртуализация с XenServer 5.5.0
                  </div>
                </div>
              </a>

              <a href="/ru/p/russian-hackers-are-trying-to-steal-covid-19-vaccine-research-us-uk-canada-officials-94020201" class="group overflow-hidden rounded-2xl border border-slate-200 bg-white hover:bg-slate-50 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-800/40">

                <img src="/files/d358fd41-8b0c-46ac-abaa-c3564f5f4372.jpg" alt="" class="h-32 w-full object-cover" loading="lazy">
                <div class="p-3">
                  <div class="mb-1 text-xs text-slate-500">
                    Кибербезопасность · Feb 14, 2026
                  </div>
                  <div class="line-clamp-2 text-sm font-medium group-hover:underline">
                    Российские хакеры пытаются украсть исследования вакцины от COVID-19: чиновники США, Великобритании и Канады
                  </div>
                </div>
              </a>

              <a href="/ru/p/the-perfect-server-debian-lenny-debian-5-0-with-bind-dovecot-ispconfig-3-94533937" class="group overflow-hidden rounded-2xl border border-slate-200 bg-white hover:bg-slate-50 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-800/40">

                <img src="/files/bdbc7eec-2d79-45c8-af52-81fe7fd35cc9.png" alt="" class="h-32 w-full object-cover" loading="lazy">
                <div class="p-3">
                  <div class="mb-1 text-xs text-slate-500">
                    Серверы · Feb 14, 2026
                  </div>
                  <div class="line-clamp-2 text-sm font-medium group-hover:underline">
                    Идеальный сервер - Debian Lenny (Debian 5.0) с BIND и Dovecot [ISPConfig 3]
                  </div>
                </div>
              </a>

              <a href="/ru/p/maintaining-remote-web-sites-with-sitecopy-on-ubuntu-16-04-94534889" class="group overflow-hidden rounded-2xl border border-slate-200 bg-white hover:bg-slate-50 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-800/40">

                <img class="h-32 w-full object-cover" loading="lazy">
                <div class="p-3">
                  <div class="mb-1 text-xs text-slate-500">
                    Инструменты · Feb 14, 2026
                  </div>
                  <div class="line-clamp-2 text-sm font-medium group-hover:underline">
                    Поддержка удаленных веб-сайтов с помощью sitecopy на Ubuntu 16.04
                  </div>
                </div>
              </a>

              <a href="/ru/p/random-bluetooth-disconnection-in-windows-10-11-fixed-93236764" class="group overflow-hidden rounded-2xl border border-slate-200 bg-white hover:bg-slate-50 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-800/40">

                <img src="/files/96d46d9d-51eb-4aa5-a170-b9926f8bcbd3.jpg" alt="случайное отключение bluetooth в windows 10 11" class="h-32 w-full object-cover" loading="lazy">
                <div class="p-3">
                  <div class="mb-1 text-xs text-slate-500">
                    Bluetooth проблемы · Feb 14, 2026
                  </div>
                  <div class="line-clamp-2 text-sm font-medium group-hover:underline">
                    Случайное отключение Bluetooth в Windows 10/11 [ИСПРАВЛЕНО]
                  </div>
                </div>
              </a>

              <a href="/ru/p/installing-apache2-with-php5-and-mysql-support-on-ubuntu-11-10-lamp-94068951" class="group overflow-hidden rounded-2xl border border-slate-200 bg-white hover:bg-slate-50 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-800/40">

                <img src="/files/27e20a4f-88d6-4c41-a204-42a016efee9a.jpg" alt="" class="h-32 w-full object-cover" loading="lazy">
                <div class="p-3">
                  <div class="mb-1 text-xs text-slate-500">
                    Установка ПО · Feb 14, 2026
                  </div>
                  <div class="line-clamp-2 text-sm font-medium group-hover:underline">
                    Установка Apache2 с поддержкой PHP5 и MySQL на Ubuntu 11.10 (LAMP)
                  </div>
                </div>
              </a>

          </div>
        </div>
      </div>
    </aside>
  </article>
</section>
    </main>

    <footer class="border-t border-slate-200 bg-slate-50 py-10 text-sm dark:border-slate-800 dark:bg-slate-900">
      <div class="mx-auto grid max-w-7xl grid-cols-1 gap-6 px-4 sm:px-6 md:grid-cols-3 lg:px-8">
        <div>
          <img src="/logo.svg" alt="Технологии без лишних слов" width="280" height="40">
          <p class="my-2 text-slate-600 dark:text-slate-400">
            Запуск HTML::Mason с nginx и FastCGI
          </p>
        </div>
        <div class="grid grid-cols-1 gap-6">
          <div>
            <div class="mb-2 font-semibold">Company</div>
            <ul class="space-y-2 text-slate-600 dark:text-slate-400">
              <li>
                <a href="#" class="hover:text-slate-900 dark:hover:text-white">
                  About
                </a>
              </li>
              <li>
                <a href="#" class="hover:text-slate-900 dark:hover:text-white">
                  Contact
                </a>
              </li>
              <li>
                <a href="#" class="hover:text-slate-900 dark:hover:text-white">
                  Privacy
                </a>
              </li>
            </ul>
          </div>
        </div>
        <div class="md:text-right">
          <div class="font-semibold">Get updates</div>
          <form class="mt-2 flex w-full items-center gap-2 md:justify-end">
            <input type="email" placeholder="you@example.com" class="w-full max-w-xs rounded-xl border border-slate-300 bg-white px-3 py-2 outline-none dark:border-slate-700 dark:bg-slate-900">
            <button class="rounded-xl bg-slate-900 px-3 py-2 text-white shadow-sm hover:bg-slate-800 dark:bg-white dark:text-slate-900">
              Subscribe
            </button>
          </form>
          <p class="mt-3 text-slate-500">© 2026. All rights reserved.</p>
        </div>
      </div>
    </footer>
  </body>
</html>