Блог очередного разработчика

Sanasol

WordPress open_basedir restriction in effect

Если хостить много wordpress сайтов на одном сервере и закрывать их open_basedir, как например делает по дефолту ISPmanager, то иногда возникают ошибки  open_basedir restriction in effect.

При этом сайт пытается залезть в соседний по серверу.

Это случается при использовании xcache в php.

Кешер глобально кеширует пути к скриптам из-за этого сайт обращается не к своей корневой директории, а к случайному сайту на этом же сервере.

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

Решение на данный момент: отключать xcache и жить счастливо.

Выполняем

И перезапускаем сервер

Для ISPmanager с apache:

Для nginx + php-fpm

 

Debian Jessie bitcoind BerkeleyDB

Installing dependencies like here build unix

BerkeleyDB is required for the wallet.

Debian repository doesn’t contains libdb4.8. So need to get sources and compile it manually.

Get db4.8 source, compile and install:

Tell your system where to find db4.8

Then move to bitcoin sources folder and compile it:

Sources:
https://github.com/bitcoin/bitcoin/issues/3686#issuecomment-35211263
https://github.com/bitcoin/bitcoin/issues/3686#issuecomment-35236768

CloudFlare отдача и кеширование видео

CloudFlare Caching
CloudFlare Caching

Стриминг видео с сервера очень сильно кушает канал. Поэтому появляется мысль кешировать видео через CloudFlare.
При этом надо сохранить возможность перемотки и разбить файлы на небольшие куски, чтобы CF ничего не заподозрил, а так же не попасть под лимит который не кешируется.
Будем использовать Uppod плеер.

1. Разбить видео
2. Создать страницу сайта

UP 19.07 Трафик продолжает снижаться

(далее…)

Ubuntu Gnome huge CPU usage of gnome-keyring-daemon when starting Google Chrome

gnome keyring cpu
gnome keyring cpu

I have a lot saved passwords in Google Chrome about 2000.
So when I try to sync it on any linux distr. I got high cpu usage from keyring daemon.

To prevent it we need disable password encryption ;(
1. Open Terminal
2.

or

3. Find these lines at end of file

4. Replace with

5. Save it.
6. Kill all keyring processes.
7. Restart Chrome, wait password sync.
8. Profit!

Поменять IP на всех сайтах в Cloudflare

Заменяем старый IP на всех доменах добавленных в CloudFlare.

Ставим из композера: jamesryanbell/cloudflare

Создаем php файл

 

Заполняем переменные: старый/текущий IP, новый IP, email аккаунта на CF, API ключ CF
Запускаем

Профит!

Отказоустойчивость use case

Схема серверов

VPS #1 — Франция

  • nginx+php
  • mysql-1
  • haproxy

VPS #2 — Канада

  • nginx+php
  • haproxy

VPS #3 — Нидерланды

  • nginx+php
  • mysql-2
  • haproxy

mysql — master-master репликация.

haproxy — балансирует запросы на два mysql мастера.

haproxy.cfg

На каждый сервер идёт свой поддомен.
Чтобы завалить сервис необходимо положить как минимум 2 хоста из 3.
Для этого надо знать какие хосты держат mysql сервера.
В противном случае класть придётся все хосты, дабы вывести из строя сервис.

Работает 🙂

История о том как одним запросом весь сервер занять

И так почему же важно указывать правильный тип столбца в структуре таблицы
Наглядный пример почему не надо делать столбцы (varchar), особенно если этот столбец задуман как (int)eger

describe с колонкой varchar
describe с колонкой varchar

describe с колонкой integer
describe с колонкой integer

мунин до и после исправления
Изменение типа столбца в одной таблице

История про регулярное выражение

Жил был один новостной сайт на вордпрессе.

Стал плохо жить и переехал к нам на хостинг на собственный выделенный сервер.

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

А на сайт тот заходили по 10-20 тысяч человек в день и это было очень печально, ведь там стояли еще несколько почти таких же сайтов. Стали мы искать кто же так кушает наш сервер и почему все так плохо.

И нашли мы волшебную строчку в functions.php темы.

Какой-то добрый программист оставил там всего лишь одну строчку которая перед каждой новостью с помощью preg_replace добавляла блок адсенса в нужное место.

Всего лишь один preg_replace для всего контента перед выводом ставил дедик на колени и заставлял его молиться чтобы пронать gateway.

Надеюсь эта маленькая история научит вас любить и уважать функции и не использовать регулярки везде где только можно.

Конец.

Получение timestamp из timestamp O_O

При использовании php-activerecord наткнулся на «косяк».

Если поле в базе имеет тип время/дата, в моем случае timestamp, то php-ar отдает отформатированную по дефолту строку, вместо собственно самого timestampа.

При курении доков выяснилось что используется там обычный DateTime из php

В общем чтобы получить unix время из поля приходится делать как-то так

Памятка для себя, потому что второй раз затупил c этим косяком 🙂

Сказ о том как я провел свой хакатон [1/2]

Сказ о том как я провел свой хакатон или два «сломанных» хостинга за одну ночь: часть первая Locum.

Прошло уже более полугода, а я только сейчас решил об этом написать.

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

(далее…)