Tag: marvin

10.09.2024

Ха, uptime robot ми светна, че сайта е бил долу през вечерта със супер информативното съобщение – “There has been a critical error on this website”. Любопитно, но се оказа, че го е счупил един google plugin, който не възнамерявам да връщам обратно.

Набързо за white screen of death и стъпките за дебъгване:

  1. Проверка на това колко свободно място на диска и в RAM паметта имаме:
marvinator@marvin $ free -m
total used free shared buff/cache available
Mem: 1967 1752 66 64 368 214
marvinator@marvin $ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 18G 6.1G 74% /
/dev/vda15 124M 12M 113M 10% /boot/efi

Тук виждаме, че място на диска има, но имаме само 66MB свободна рам. Рестартирах нормалните виновници и по-точно MariaDB и php-fpm:

marvinator@marvin $ systemctl restart mariadb.service
marvinator@marvin $ systemctl restart php8.2-fpm.service

Да видим колко памет имаме освободена:

marvinator@marvin $ free -m
total used free shared buff/cache available
Mem: 1967 738 990 55 450 1229

Така е по-добре, от 66MB към 738MB. Това не е перманентно решение и ще трябва да си оптимизирам малко сървисите, но за сега – толкова.

2. Това не помогна да се реши проблема така, че отиваме в логовете на nginx (които взимаме от /etc/nginx/conf.d/{default}.conf) ей така (ако файла се казва default.com):

marvinator@marvin / $ cat /etc/nginx/conf.d/default.conf | grep "error.log"
error_log /var/log/nginx/nedko.info.error.log;

Правим един tail и с него гледаме какво се случва във файла след като refresh-нем страницата и ето го зайчето:

marvinator@marvin / $ tail -f /var/log/nginx/default.error.log

2024/09/10 07:58:14 [error] 2704424#2704424: *2661604 Failed to open stream: No such file or directory in /xxx/xxx/wp-content/plugins/google-site-kit/includes/loader.php on line 62;

Вероятно е минал някакъв ъпдейт, който е потрошил плъгина и оттам WordPress е изпаднал в паника. Решението ми беше да преместя или изтрия директорията от plugins и така да позволя на WordPress да си се зареди правилно.

Takeaways:

  1. Трябва да повече оптимизирам сървисите, които имам и да спра тези, които не използвам
  2. Трябва да спра (вече е направено) автоматичните ъпдейти на плъгините. Бях пуснал само тях преди време (без ъпдейт на WordPress core), но беше въпрос на време нещо да се наака
  3. Безплатния tier на UptimeRobot за веченезнамкойпът си върши работата чудесно.

12.11.2023

Marvinator-а, брат на marvin, който съвсем скоро вдигнах имаше нужда от мониторинг. И тръгвам аз да инсталирам prometheus/alertsmanager/grafana и в един момент започнах да смятам колко рам ще ми е нужна. И понеже съм скръндза реших да изнеса целия мониторинг към Grafana.com и да им използвам безплатния tier, който като единствен минус към момента ми е, че metrics & log retention-а ми е само 14 дни, но yolo.

Инсталацията на агента, който е единственото нещо, което живее на моя хост е бърза и лесна, а откъм потребление към момента е около 140 MB RAM. Ако бях хостнал локално целия стак щеше със сигурност да бъде много повече.

A project of the day отива при tuning-primer – bash скрипт, който дава добър анализ на mysql/mariadb бази. Нужни са само root user/pass към базата и като резултат ви изплюва всичко, което му е харесало и което не е ок. Има доста данни покрай анализите и можете да си направите един добър fine tuning.

Датчик за фини прахови частици – как, защо и няколко идеи

Снощи най-накрая свързах датчика за твърди частици с този за температура и развойната платка и всичко тръгна от раз.

Хардуерът

Развойна платка: ESP8266
Датчик за твърди частици: SDS011
Температурен датчик (+атмосферно налягане и влажност): BME280

 

Сега идеята е да измисля начин да събера всичко в приложим вид, който да изнеса извън терасата. Мисля да опаковам (голяма част от) сензора за температура/влага и захранващия кабел с термошлаух. Сензора за твърди частици е измислен добре, защото  в отвора от който всмуква пробите може да се сложи тръбичка, която да изнеса навън. И да – трябва да си окомплектовам кабелите, да махна бредборда, който използвах само да закача термо датчика, че не ми стигнаха кабелите.

Софтуерът

От софтуерна гледна точка нещата са елементарни. В сайта на Air Bulgaria са публикували готов firmware, който прави впечатляващи неща с контролера. Някои от тях:

  • WEB сървър, който сервира данните от датчиците в малка страничка достъпна от всеки потребител логнат в същата мрежа в която е устройството;
  • Вдига сам Wi-Fi spot към което потребителя може да се закачи за първоначална настройка. След това esp8266-то се закача за вашата мрежа и става клент както всяко друго Wi-Fi усторйство закачено към домашния ви рутер;
  • DHCP сървър за първоначална инициализация;
  • Може да изпраща данни към един или повече API endpoints;
  • Изпраща автоматично данните към http://luftdaten.info, а оттам https://airbg.info ги взимат и парсват до подходящ вид на тяхната карта;
  • Може да изпраща данните към InfluxDB;
  • Поддържа OTA updates (On-The-Air);
  • Поддържа доста сензори и дисплеи, които се настройват елементарно.

 

Моята идея

Към стандартната функционалност бих искам да добавя следните неща:

  • Физическо укрепление на системата (кутия, термошлаух, както писах по-горе и други малки неща);
  • Данните ще хвърлям и към InfluxDB, който (по идея на Стан) ще бъде в контейнер (хем да се науча да работя с тях, крайно време е!);
  • Grafana dashboard, защото всеки обича да му е красиво и функцоинално;
  • Независимо захранване. Понеже SDS011 не пести много ток, ще мисля вариант с измервания на една минута. Същото се отнася и за температурния датчик (и евентуална корекция за да синхронизирам двата). Енергонезависимостта му ще е осигурена с power bank (ако някой ден ми попадне соларно панелче, което да пълни power bank-а през деня ще стане епично).

 

Ето и как изгелжда работещия проект на с firmware-а на airbg.info:

 

Ако някой има интерес или въпроси може да пише под статията. Ако мога ще отговарям.

 

P.S. Най-важните неща за накрая. Нямаше да се хвана с този проект ако не бяха три основни фигури – Орлин, който на Zara Code Week миналата година ни показа, че електрониката изобщо не е толкова сложна колкото си мислим и че всеки в днешно време може да реализира IoT проект за отрицателно време, на Стан, че ми подари без причина ESP8266 и на Златина че ме изтърпя докато в нас беше катаклизъм от кабели, платки и документация.

Решението на един стар проблем

На marvin живеят няколко WordPress-а, но и с него влача няколко мои стари проекти. Един от тях скоро ще стане на 9 години. И понеже живеят на Joomla 1.5, която практически е невъзможно (варианти има, но безплатните не работят, а за платени не смятам, че искам) да се ъпгрейдне към latest. За това nginx-а ми работи с php-fpm, който търкаля две версии на PHP – 5.х и 7.х. И понеже първата е крайно архаична взех решението старите сайтове да ги разкарам напълно. Така или иначе нямам никаква полза от тях.

И вчера вдигнах още един VPS и започнах да конфигурирам наново nginx/php-fpm/etc. Оказа се, че съм позабравил част от configuration flow-а и седнах да помисля какво и как да направя. Най-накрая стигнах до решението, че вместо да си блъскам главата ще инсталирам един стар LTS на Ubuntu в който се поддържа PHP 5.x и всичко тръгна от раз.

Тенденцията ще е да разкарам всичките си клиенти (в големи кавички, таксите им са малко над цените на домейна) и да мина най-накрая на latest and greatest без да се занимавам с излишни глупости.

 

И така на marvin ще се освободи още малко място така, че ако някой (с предимство са студенти/ученици/преподаватели) има нужда да хостне нещо може да се възползва напълно безплатно.

09.12.2017

Днес е малко време за четене и спокойствие. И разходка!

Не можах да прочета много, но излязохме на свеж въздух в южен парк, пихме по една Коста и се прибрахме. Носих голямата на нещо като раница, скачах и беснях като изтърван. Липсваше ми студения въздух и разходките.

Вечерта започнах да се подготвям за миграцията на marvin към php-fpm (не с manually build PHP (и при това две – едно антично и едно latest and greatest)), Никото ми представи няколко много вълнуващи идеи и конфигурации за nginx-а.
Плана е да deploy-на наново nginx, php-fpm и да пренапиша изцяло vhost-овете. Освен това сега използвам letsencrypt за … да – да генерирам сертификати за Let’s Encrypt. Ще мигрирам на certbot.

Тези промени ще подобрят:

  • Работата на marvin като цяло;
  • Много по-леката конфигурация на nginx, очаквам скоростта на блога и останалите сайтове да се качи значително;
  • Всичко, което носи PHP 7.2 и най-вече сигурност и скорост;
  • Сигурността трябва да се повиши (имам някои проблеми си правата и потребителите, които ще бъдат разрешени с деплоя на новия nginix);
  • Ще науча много за nginx, конфигурацията му и работата с vhosts;
  • Ще разкарам всичките php-fpm глупости – в момента търкалям PHP 5.3 (което е свръх-антично) и PHP 7.0.3. Накрая ще стане само един (колко крайно прозвуча това :D) – 7.2.

 

In other news:

How to enable friendly URL’s for Joomla using nginx

Когато преместих вече античния nasam.be на marvin имах един основен проблем свързан с прехода между apache2 и nginx и това беше, че nginx не поддържа .htaccess (повече можете да прочетете тук и тук). Там (почти) всичко е организирано в sites-avialable/ профила на сайта, който хоствам и грозните линкове, които Joomla генерира (от типа на https://nasam.be/index.php?option=com_content&view=article&id=183:qa-test-types&catid=53:software-testing&Itemid=167) с един ред и един рестарт станаха по-прилични (https://nasam.be/kompyutarni/software-testing/qa-test-types.html)

Промяната е в /etc/nginx/sites-avialable/project_name:

location / {
 try_files $uri $uri/ /index.php?$args;
 }

Или добавяме в основната location / {} директива точно преди затварящата къдрава скоба следния ред:

 try_files $uri $uri/ /index.php?$args;

Следва рестарт на nginx, сменяне на настройките в Joomla да се използва mod_rewrite и това е :)

 

Искам да отбележа, че това не е специфично Joomla! или WordPress решение, а универсално. Ако имате каквато и да е система, която използва rewrite на линковете това решение би трябвало да ви свърши работа.

Free backup script

Баси тъпото заглавие.

Anyway – днес fork-нах един проект, който използвам от извесно време с разни адаптации за marvin и реших да го публикувам.
github проекта за сега носи работното име Full Web Server Backup, а основния проект можете да намерите тук.

Основните разлики между проектите са:

  • Основния проект има Amazon S3 sync, аз го махнах, защото използвам услугите на pCloud;
  • В моя има архивиране на /etc, почистени са малко неразбории.

За в бъдеще смятам да добавя:

  • Избор на compression level;
  • Изнасяне на mySQL user/pass в ~/.my.cnf
  • Избор на специфични директории в /etc, които да архивираме или exclude-нем;
  • cronjob;
  • Архивиране на /home директорията на определен потребител (ако имаме права за това).

Ако имате друга идея с радост ще я прегледам. marvin си пази бекъпите с този скрипт и за момента работи безпроблемно.

01.11.2017

Има дни в които искаш да си купиш книга за Java и ant и да ги запалиш в пентаграма гледайки как синия пламък оформя странни форми на къдрави скоби и NULL-ове. Има и дни в които нещата не изглеждат така безнадеждни.

Иначе си играя с бекъпите на marvin и намирам решения за елементарни проблеми в bash. ако на някой му е интересно да каже и ще разпиша какви проблеми срещнах и какви решения намерих.

In other news:

Как да изтрием WordPress (spam) коментари директно от базата

Никой не е защитен от спама под всякаквата му форма – email, в коментарите или по друг начин.

И понеже на marvin живее сравнително посещаван сайт секцията му с коментари беше катастрофална. Не бях го поглеждал от няколко месеца и като влязах в админ панела му ме побиха тръпки – над 12 000 коментара.

Проблема – Как ще разгранича кои коментари са спам и кои не са?

Решението – изпозлвах (с малко скептицизъм) плъгина, който идва при нова инсталация на WordPress – Akismet. За да заработи трябва да се регистрираме в сайта akismet.com (с WordPress.com или Google.com акаунтите си) и да вземем API кода от сайта. След това активираме плъгина и в настройките му бухаме API key-а). След като всичко беше конфигурирано и казах на плъгина да маркира съмнителните коментари като SPAM отидох да проверя и нищо не се случи. Оказа се, че плъгина е по-умен отколкото очаквах – беше си сложил всички коментари в опашка и асинхронно анализираше всеки. След час имах около 14 500 коментара маркирани като спам. Проверих на random стотина и всичко изглеждаше да е ок.

 

Другия проблем – По някаква причина се оказа, че не мога да трия коментарите през admin панела. Трябваше да намеря решение в което да взема всички коментари маркирани като SPAM и да ги изрия през базата данни.

Другото решение – За работа с базата данни използвах mysql console, но можете да използвате и phpMyAdmin (след като проключите работа с него го изтрийте или забранете достъпа до него, че става страшно ако до забравите).
Следните заявки ще ви свършат работа (имайте предвид, че префикса, който съм използвал е wp_, но на вашата инсталация може да е нещо различно):

Изтриване на всички неодобрени от администратора коментари:

DELETE from wp_comments WHERE comment_approved =  '0';

Изтриване на всички ОДОБРЕНИ коментари:

DELETE from wp_comments WHERE comment_approved =  '1';

Всички изтрити коментари, които стоят в статус Trash:

DELETE from wp_comments WHERE comment_approved = 'trash';

И накрая и най-важното – всички коментари маркирани като SPAM:

DELETE from wp_comments WHERE comment_approved = 'spam'; 

 

Tip – Ако искате да видите съдържанието на таблиците можете да направите това със select. Например ако искам да видя всички SPAM коментари ще пусна тази заявка:

SELECT * from wp_comments WHERE comment_approved = ‘spam’;

Със здраве и гледайте да не затриете нещо важно. Ако имате въпроси можете да ме питате тук преди да действате. Ако мога ще помогна.

За блогването

Тази прекрасен български глагол – блогвам.

Да блогваш е елементарно – изисква някакъв CMS, най-доброто от години е WordPress. Можете да използвате и някои провайдъри като wordpress.com, blogger, medium.com та дори и facebook/google+, twitter и т.н. Някои дори предлагат възможност да си купите домейн и да го пренасочите към услугата.

Другия вариант е да използвате т.нар. self-hosted. Това значи да си купим годишен абонамент от някой hosting provider (например superhosting.bg/host.bg, godaddy и много други) и домейн. Инсталацията е абсолютно елементарна и става за две минути.

Та идеята ми е, че всеки, който пожелае може да си има блог.

Последните години социалните мрежи свиха блог сегмента, но верни блогъри има още. А и собствения блог понякога предразполага към по-голяма свобода, без цензура и можем да правим каквото си пожелаем. За добро или за лошо.

По-долу ще изброя няколко неща за които се сещам, които ме карат да блогвам:

  1. Подобрява писането. Уж правя забележки в Интернеда на някакви сополи, че пишат неграмотно, но като си видя своите блог постове понякога ми иде да си блъсна главата някъде. Забелязахте грешката в по-горното изречение, нали?
  2. Ще започнете да филтрирате по-критично и само интересните за вас и вашите читатели неща. Например блога на Грандоман-а пази своя стил на типизирани постове от години.
  3. Има някаква евентуална (при мен нулева) вероятност да вдъхновите някой с нещо писано от вас. Например част от моето вдъхновение се гради на блога на Васил, както писах по-горе.
  4. Ще научите много за техническата част на нещата. Покрай блога ми създадох marvin, който ми отне месеци в инсталация и fine tuning. Не съжелявам за нито една милисекунда в която нещо се е счупило и се е наложило да си блъскам главата в намиране на решение.
  5. Начина на изразяване и критичност се увеличава много. За да постна например в поста за “Ние като QA НЕ осигуряваме качество!” трябваше да седна и сериозно да осмисля твърдението си, защото се изправям срещу част от масата, а тя не мисли така. Хубавото и лошото в поддържането на блог е това, че всичко ни е публично. А съдържанието, което пишем трябва да не ни кара да направим drop database nedko; след като си прочетем писанията след 2 години, например. Ето един хубав пример за повторения и неясна реч (от трети клас са започнали да ми правят забележки учителките и така и не се научих…);
  6. Блогването може да ви промотира хобито. Моето хоби, особено преди време, беше да пиша. Писах няколко разказа и стиха, които могат да бъдат намерени в този блог и това ми помогна да покажа на света какви глупости съм способен да пиша :)

 

И понеже отгоре нахвърлих няколко идеи за това защо да пишем блог е честно да споделя и минусите, които носи това (забележете, че някои от точките се препокриват с горните):

  1. Блогването няма да ви донесе пари. Ако разчитате на google ads ще се наложи да ви разочаровам. От друга страна ако се научите да пишете добро съдържание може да бъдете нает да пишете за някой друг.
  2. Хората ще знаят какво правите, за какво мечтаете, но хей – ще знаят само това, което вие решите да споделите.
  3. Най-вероятно аудиторията ви ще се ограничи до 20-30 човека, както е с този блог. Това никога не ме е спирало да пиша в него, но изграждането на постоятна аудитория е трудно. Много трудно.
  4. При започване на нова работа премислете три пъти дали да споделите за това, че имате блог. Той е олицетворение на вас самите и работодателя ви едва ли ще е очарован да прочете, че предишния ви работодател е “оня нещастник дето имаше бахти многото работа при него”. Сигурно няма да е ок. Аз при започването си в nemetschek споделих, че пиша от време на време и това сякаш скъси дистанцията между мен и колегите, но ако сте наци или чалга фен е възможно това да е във ваш минус;
  5. Трудно е. Трудно е ежедневно човек да пише в блога си. И е трудно да не пише глупости, както аз си позволявам от време на време да правя (като например един от последните ми постове, който носи точно нула полезна информация за четящите го).

 

Последни думи (наистина се надявам това да не са ми последните думи):

Ако сте пътешественик по душа (Драго, Теди, Ели, за вас говоря), спортист (бегач, колоездач) или просто обичате наистина силно да правите нещо то блогването е за вас. Няма нищо тъпо в това да снимате десертчетата, които гънете в сладкарничките, няма нищо тъпо в това да слагате “снимките си от телефона” в блога. Ако обичате това, което правите (и не сте порно актьор) ви моля – направете си блог и пишете в него. Пишете как сте се почувствали като сте стъпили за пръв път в Барселона или като сте финиширали първия си маратон, слагайте снимки. С времето нещата ще стават все по-добри и по-интересни.

Ще се радвам в коментарите по-долу да сложите вашите блогове. Ще ми е интересно да ги прочета.