пятница, 27 января 2023 г.

Как запустить второй сервер mysql в Debian и не умереть, пытаясь

В инете достаточно мануалов, где вручную поднимают второй инстанс mysql: копируют папки с данными БД, скрипты в /etc/init.d/, дергают mysql_install_db и т.д. При этом не всегда опишут, как сделать, чтобы второй инстанс можно было так же, как и первый, удобно запускать и тормозить через systemctl.

Ковыряясь с последней задачей, я закопался в скриптах /lib/lsb/init-functions, /usr/share/mysql/mysql-helpers и в системе systemd.

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

воскресенье, 15 января 2023 г.

Как установить и использовать Chrome WebDriver в PHP

ставим хромиум из реп

далее нужен chromedriver. например отсюда
https://chromedriver.storage.googleapis.com/110.0.5481.30/chromedriver_linux64.zip 

запускаем на порту 4444
./chromedriver --port=4444

далее тянем php-webdriver последней версии

git clone https://github.com/php-webdriver/php-webdriver

для него нужен еще 
aptitude install composer
далее в стянутом гит-проекте 
composer install

далее оказалось, что мне нужен пхп 7.3 вместо 7.0
но это уж слишком, поэтому я просто скачал версию постарее, 1.12.0.
после composer install появилась папка vendor, но autoload в ней не было.
причем install закончился с ошибкой
 [RuntimeException]
  Could not scan for classes inside "tests/functional/" which does not appear to be a file nor a folder
да, папки tests в проекте 1.12.0 не было. взял из latest, который пытался ставить изначально, запустил снова composer install и все появилось!

в latest версии есть также example.php, беру его оттуда, прописываю $host = 'http://localhost:4444'; и запускаю
$ php example.php
ошибка
PHP Fatal error:  Uncaught Facebook\WebDriver\Exception\WebDriverCurlException: Curl error thrown for http POST to /session with params: {"capabilities":{"firstMatch":[{"browserName":"chrome"}]},"desiredCapabilities":{"browserName":"chrome","platform":"ANY"}}
Operation timed out after 30001 milliseconds with 0 bytes received in /storage/www/selenium/phpwebd/php-webdriver-1.12.0/lib/Remote/HttpCommandExecutor.php:333

ошибка в консоли chromedriver (запущенного от рута)
[28187:28187:0114/163530.390663:ERROR:zygote_host_impl_linux.cc(89)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.

запускаю chromedriver под своим юзером, пробую снова
не работает.

действие, кстати, происходит в виртуалке LXC proxmox под debian 8.10
походу X11 нужен, но в виртуалках это нетривиальная задача
вот тут хак какой-то предлагается
https://unix.stackexchange.com/questions/30847/fast-x-for-lxc-guest-on-localhost
но я так понял, все равно нужен доступ к хост-системе

есть другой путь
установка vnc4server, запуск # vncserver
уже дало кое что. DISPLAY=:1 xclock  запустилось
в суматохе было установлено также xserver-xorg-video-dummy, насколько оно нужно, неясно (upd: не нужно).
после чего и хром уже ожил, но только под рутом пока.
DISPLAY=:1  chromium   --verbose --no-sandbox

под обычным юзером DISPLAY=:1 xclock не может открыть дисплей
поэтому запускать vncserver надо под юзером, под которым и хром будет запускаться, т.е. ваши php-скрипты
после запуска в выводе есть индекс дисплея, скорее всего :1
делаем export DISPLAY=:1

пробуем запуск chromium, получаем уже какой-то живой вывод
[11117:11167:0114/172737.647984:ERROR:bus.cc(396)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
ATTENTION: default value of option force_s3tc_enable overridden by environment.
[11160:11160:0114/172737.826114:ERROR:sandbox_linux.cc(364)] InitializeSandbox() called with multiple threads in process gpu-process.
(chromium:11117): LIBDBUSMENU-GLIB-WARNING **: Unable to get session bus: Unknown or unsupported transport 'disabled' for address 'disabled:'

ну и кажется php example.php теперь тоже отработал!

суббота, 15 мая 2021 г.

Чтение данных с ваттметра DT3010 по Bluetooth

Сегодня мучаем ваттметр с блютузом, у меня таких работает два: один мониторит выработку солнечными панелями на аккумуляторы, второй потребление домом энергии от аккумуляторной сборки.

Требуется программно из консоли Debian прочитать все данные.
На телефоне есть E-test, графики строит, в эксель пишет, но этого мало. Надо приконнектить к RPi Zero W и собирать данные постоянно, а не только когда телефон рядом.

вторник, 16 марта 2021 г.

ssl_preread_server_name пустой при обращениях от утилиты siege

Имеется фронтенд nginx с default секцией stream, имеющей включенный ssl_preread и раскидывающей по апстримам запросы на основании $ssl_preread_server_name (т.е. доменных имен).

Так вот при использовании siege версии 3.0.6 этот самый $ssl_preread_server_name не определялся, был пуст. Wget, cURL при обращении из той же консоли к тем же урлам отрабатывали как положено.

Решилось обновлением siege до 4.0.2. Но сохраните старый конфиг `/.siegerc, новая версия siege при установке его удалит и создаст дефолтный в папке ~/.siege

воскресенье, 22 октября 2017 г.

Настройка root-сервера Hetzner

Дано:
новый блестящий быстрый только что арендованный немецкий root-сервер с активной Rescue-системой.

Требуется:
настроить аппаратный RAID, завести виртуалку, настроить сеть.

пятница, 25 ноября 2016 г.

ESP8266 продолжение. Модуль ESP-12

В прошлой части я мучал модуль ESP-01 с AT-прошивкой. С тех пор прошло много времени, я успел заказать и получить более развитые модули ESP-12-E, о которых и пойдет речь в этот раз.
Будем прошивать NodeMCU, подключать SD-карту, дисплей на SSD1306, энкодер (rotary encoder) и FM-модуль RDA5807. После соединения всех этих модулей между собой в правильном порядке проводочками и правильного расположения бесчисленного количества байтиков во флеше ESP-12 должно получиться радио.

NodeMCU, стоит отметить, занятная штука! После прошивки в терминале доступно что-то типа командной строки языка Lua, где можно выполнять отдельные команды или целые скрипты, не компилируя каждый раз код и не перепрошивая модуль!

От гавеного usb-ttl адаптера такой модуль уже не смог прошиться, один вечер я его уговаривал разными программами - безрезультатно. Общение идет, MAC выдается, но потом все помирает, прошивка даже не начинает заливаться.
На следующий день я догадался измерить напругу на модуле, меньше 2В! Конечно нихрена не прошьется, нужно 3.3В.
Адаптер в качестве питальника тут совсем не годится. Запитал модуль от 2 батареек AAA и наконец прошил NodeMCU.
Использовал хорошую статью http://www.benlo.com/esp8266/esp8266QuickStart.html

вторник, 8 ноября 2016 г.

Полезные мелочи

как быстро организовать новую виртуалку в Xen (с установленной осью, IP, hostname и т.д.)
http://habrahabr.ru/post/37824/
конкретно:
xen-create-image -hostname=имя-машины -size=2Gb -swap=128Mb -ide -ip=192.168.0.100 -netmask=255.255.255.0 -gateway=192.168.0.1 -force -dir=/xen -memory=128Mb -arch=amd64 -dist=wheezy  -passwd
только вот проблемы есть и тут, сначала ругалось
/tmp/18y9wp9SGA/etc/ssh/ssh_host_rsa_key.pub: No such file or directory
Running command 'umount /tmp/18y9wp9SGA/proc 2>&1' failed with exit code 256.
Aborting
потом после смены -dist с etch на wheezy создалось и запустилось, но затыкалось на
Waiting for root file system ..
и сваливалось в (initramfs) с сообщением ALERT!  /dev/hda2 does not exist
как ни странно, блеать, замена hda на xvda в имя-машины.cfg разрешило проблему!