• Как на выделенном сервере создать несколько dev окружений?

    @XEHKOK
    ssh + Docker + Traefik, по БД можно хоть три контейнера поднять разных с mysql, или настроить доступы в рамках одного кластера.
    Хотя тут можно и без докера даже обойтись тк php и nginx умеют в owner'a. в пыхе достаточно три разных пула на хосте под каждого пользователя настротить, nginx так же под пользователями у которых есть fpm pool настроить пользователя, ну а в БД итак можно разграничить доступы просто рута не давайте и усе.
    Ответ написан
    Комментировать
  • Как исправить частое хаотичное выключение postgresql 14?

    @XEHKOK
    Поздравляю с Майнером, система однозначно была скомпрометирована, вот гайд по устранению этого майнера: https://habr.com/ru/articles/582830/
    А вообще лучше снести систему и накатить все по новой, скорее всего вы не заметили но базу вашу почистили создали там таблицу read me с просьбой пополнить криптокошелек и тогда восстановят данные, если это продовый сервер то мониторьте каналы ТГ по сливам на наличие ваших данных в сливах.
    Удачи вам, и закрытых портов для ваших сервисов)
    Ответ написан
    Комментировать
  • Порядок ваших действий при создании сервисов на Docker?

    @XEHKOK
    Я обычно стягиваю конфиги софта для новых проектов из оф образов.
    1) Можно как просто запулить сбилдить и запустить софт, так и через Dockerfile или даже docker-compose up -d --build, это уже личное дело как религия позволяет)
    Вытягиваю обычно так:
    PHP:
    docker cp имя контейнера или сервиса:/usr/local/etc/php-fpm.conf /var/www/projects/mynewproject/docker/php/php-fpm.conf
    docker cp имя контейнера или сервиса:/usr/local/etc/php-fpm.d/www.conf /var/www/projects/mynewproject/docker/php/www.conf
    docker cp имя контейнера или сервиса:/usr/local/etc/php/php.ini-development /var/www/projects/mynewproject/docker/php/php.ini
    Левые пути это размещение в контейнере конфигов, правые пути это куда копировать на хост системе.
    После получения исходных конфигов прописываю их в Dockerfile сервиса PHP:
    COPY /var/www/projects/mynewproject/docker/php/php.ini /usr/local/etc/php/php.ini
    COPY /var/www/projects/mynewproject/docker/php/php-fpm.conf /usr/local/etc/php-fpm.conf
    COPY /var/www/projects/mynewproject/docker/php/www.conf /usr/local/etc/php-fpm.d/www.conf

    Правда я делаю это не через волюм конечно, но это опять же вопрос религии)

    Собственно аналогично можно вытянуть конфиги и для Nginx:
    docker cp имя контейнера или сервиса:/etc/nginx/nginx.conf /var/www/projects/mynewproject/docker/nginx/nginx.conf
    docker cp имя контейнера или сервиса:/etc/nginx/conf.d/default.conf /var/www/projects/mynewproject/docker/nginx/default.conf
    Для нового Nginx даже вроде есть файл конфига шаблона: /etc/nginx/templates/default.conf.template, который можно взять за основу для виртуалхостов nginx.
    Ну а для БД и прочего софта думаю не составит труда поковырять оф образы или погуглить)

    2) Если правильно понял на счет модулей ext-php:
    Тут несколько вариантов модули которые входят в базовую сборку php можно установить так:
    RUN docker-php-ext-install -j$(nproc) soap
    Те которые нужно установить и принудительно включить:
    RUN docker-php-ext-install -j$(nproc) opcache && docker-php-ext-enable opcache
    Еще есть которые нужно конфигурировать вроде zip:
    RUN apt-get update && apt-get install -y --no-install-recommends libzip-dev zip
    RUN docker-php-ext-configure zip && docker-php-ext-install -j$(nproc) zip
    А еще можно ставить из PECL расширения на примере pthreads:
    RUN pecl install pthreads && docker-php-ext-enable pthreads

    В общем докенезировать можно php проект главное знать основы докера и специфику софта который нужно в этом самом докере поднять.
    Ответ написан
    Комментировать
  • Как использовать WSS вместо WS в Node.js?

    @XEHKOK
    Вообще данный вопрос решается так, в Google: ssl сертификат для ip адреса
    Первые 3-5 результатов поиска в гугле отвечают на ваш вопрос, но если по каким-то причинам гуг не для вас то вот ответы:
    А SSL-сертификат можно и для IP без домена?
    https://coderoad.ru/2043617
    bingo347 Уже написал более норм способ lets encrypt, а еще можно как вариант заюзать traefik для проксирования на нужный сервис.
    Ответ написан
    Комментировать
  • Почему многие крупные сайты тормозят по самые помидоры?

    @XEHKOK
    Эта проблема нашего времени которую бизнес старается не замечать, ну или для бизнеса просто это не всегда рентабельно. Обычно когда я задаю тимлидам вопрос про комплексную оптимизацию, что-то вроде такого: Мы можем перевести веб сервер на HTTP 2.0, а еще мы можем обновить допустим MySQL с 5.х до 8.х, и все в таком духе, то в ответ я слышу что для бизнеса это не критично, бизнесу это не выгодно или не нужно. Я конечно понимаю что это звучит как капля в море, но эта капля больше положительная как плюс чем минус.
    Но это не единственная проблема, еще на сайты навешивают всякую мишуру, вроде таргета, аналитики, трекеров, виджетов, что в принципе можно можно увидеть открыв консоль браузера и посмотреть запросы во вкладке сеть, походить по страницам, нажимать на кнопки/ссылки, можно увидеть +100500 запросов при загрузке каждой страницы.
    Еще есть одна редкая проблема, когда разработчики пытаются делегировать большинство или весь функционал с бека на фронт JS, это про то когда пытаются делегировать логику которую и ненужно с бека переписывать на фронте. Конечно в чем-то это экономит возможно ресурсы, но делегировать логику на фронт и полностью полагаться на производительность пользователя не всегда круто для того самого пользователя, просто я считаю это важным моментом в плане качества сервисов для пользователей.
    Один из таких примеров сайт ВК, когда скрипты JS отваливаются из-за потери соединения с сайтом, или производительности устройства пользователя.
    В общем и целом, большинству бизнеса не важны все или частично эти моменты, все хотят болше дохода чем развития особенно бизнес РФ, эти моменты больше важны для тех кто ориентируется на качество для пользователя(и оптимизацию для него же).
    Ответ написан
    8 комментариев
  • Как вывести первую картинку из галереи?

    @XEHKOK
    Как вариант так если правильно понял вашу логику, это средствами php.
    <?php
    echo $gallery[0][src][array_key_first($gallery[0][src])];
    ?>
    Ответ написан
    Комментировать
  • Насколько достоверны данные о том, что "Nginx быстрее Apache2"? Проводились ли какие-то реальные тесты?

    @XEHKOK
    На счет пруфов я победил стереотипное понимание что Nginx работает быстрее Apache.
    В связке Apache(mpm event)+PHP-FPM и PCRE2 в моем Apache для модуля rewrite(да в моем Apache уже есть PCRE2, хоть его еще и нет в оф версиях), данная связка показала хороший результат лучше чем у Nginx.
    Ответ написан
  • Увеличить одновременные подключения apache?

    @XEHKOK
    Не совсем понятно что делает ваш сервер с нагрузками на prefork.
    Как вариант можно использовать worker или event.

    Например worker это:
    Многопроцессорный модуль (MPM) реализует гибридный многопроцессорный многопоточный сервер. Используя потоки для обслуживания запросов, он может обслуживать большое количество запросов с меньшим количеством системных ресурсов, чем сервер на основе процессов. Тем не менее, он сохраняет большую часть стабильности сервера, основанного на процессах, поддерживая доступность нескольких процессов, каждый из которых имеет множество потоков.

    Наиболее важными директивами, используемыми для управления этим MPM, являются ThreadsPerChild, который контролирует количество потоков, развернутых каждым дочерним процессом, и MaxRequestWorkers, который контролирует максимальное общее количество потоков, которые могут быть запущены.
    Ответ написан
  • Связка для сервера под вордпресс?

    @XEHKOK
    Меня всегда удивляло то что стереотипные способы поднятия lamp или софт для веб сервера все еще актуальны по сей день.

    Представьте что будет в результате установки стека например: Nginx+Apache+PHP-FPM.
    Вы ставите Nginx прокси сервер.
    Затем ставите Apache как веб сервер и поддержку htaccess.
    Потом вы ставите PHP-FPM и прикручиваете его к Nginx или Apache.
    В результате мы получаем непонятную кашу из такого стека, спросите почему? окей пруфы

    Хотите использовать статику на nginx, зачем если предписывает большой объем медиа тогда планируйте cdn, а для обычной статики хватит полноценного веб сервера Apache.
    Естественно Apache так же поддерживает PHP-FPM, и да про пулы воркеры и прочее расскажите моему деду, а использовать их почти как в nginx позволит mpm event в Apache.
    Так как мы имеем полноценный веб сервер можно выкинуть nginx, к Apache прикрутить PHP-FPM, ну и бд под требование проекта pgsql or mysql.
    В таком варианте у вас будет весь необходимый софт для веб сервера, и не будет лишних нагрузок из-за ненужных +100500 серверов.

    Я рекомендую решение вашей задачи как Debian 9, Apache+PHP-FPM.
    Ответ написан
  • Как сделать поддержку PCRE2 для Apache 2.4?

    @XEHKOK Автор вопроса
    Немного разобрался в данном вопросе нашел обновленные исходники под обратную совместимость PCRE-PCRE2.
    Нужно сделать конфигурацию Apache:
    ./configure --with-apr=/ваш/путь/до библиотеки apr --with-apr-util=/ваш/путь/до библиотеки apr-util --with-pcre=/ваш/путь/до библиотеки pcre2/bin/pcre2-config


    Далее необходимо скачать два исходника такие как ap_regex.h и util_pcre.c, ссылки ниже:
    ap_regex.h
    util_pcre.c
    На гите Apache есть уже эти файлы они написаны под PCRE и PCRE2 в зависимости от версии, походу в следующей версии apache нас ждет поддержка PCRE2 Ура товарищи))

    После выполнения конфигурации apr-1.7.0 нужно изменить файл apr-1.7.0/build/apr_rules.mk в этом каталоге, и нужно добавить в конец строки где:
    EXTRA_LIBS=-lrt -lcrypt -lpthread -ldl
    Подключение библиотеки:
    -lpcre2-8 -L/ваш/путь/до библиотеки pcre2/lib
    После этих изменений нужно скомпилировать apr-1.7.0
    make
    make install


    А потом необходимо тоже из исходников скомпилировать и APR-util.
    Так же необходимо найти файл ap_config_auto.h, он находится в каталоге: httpd-2.4.41/include
    В самом ap_config_auto.h вставить следующие строки:
    /* Load PCRE2 */
    #define HAVE_PCRE2 1


    После данных действий можно выполнять компиляцию и радоваться:
    make
    make install
    Ответ написан