компютърджииски

Debian 8 Nginx HTTP2 + ALPN

0

От както google започнаха да обичат https сайтовете, повече се налага масова инсталация на SSL-и където може. Като цяло освен повече тормоз за сървърите имаме и деградация в скоростта. Хубавото е, че HTTP2 стандарта вече над година и половина се интегрира във всички големи http сървъри и браузъри и поддръжката му достатъчно стабилна. За съжаление debian stable няма пакети които да поддържат HTTP2 в основните http сървъри. Версиите които са ни необходими за да работи HTTP2 са както следва:

  • Apache > 2.4.17
  • Nginx > 1.9.5
  • останалите персонално не ме вълнуват (lighttpd имат евентуално планирано…..)

При мен мешаницата е голяма и според зависи се ползва apache или nginx. Все още не съм си играл да пускам на apache http2 на debian 8 тъй като не ми се е налагало но в backports репото го има така, че няма да е голям проблем. За nginx е вече го играхме няколко пъти. Като цяло стъпките са няколко и относително прости:

  1. Добавяме nginx официалното репов debian весията е 1.6.х 🙄
  2. Инсталираме си openssl от backports към момента е 1.0.2ктова ни трябва за ALPN подръжката за да може всичко да работи и да е бързичко
  3. инсталираме си devscriptsтук е момента да споделя че ще си билднем наш пакет защото официалният е компилиран с openssl 1.0.1t при който не работи ALPN и браузърите не му реагират добре и работи http2-то само ако го форсираш
  4. инкрементираме версията за да не правим hold циганията с пакетите а като има нова версия само да синкенм сорсовете

Нека да започнем стъпка по стъпка

Добавяне на nginx repo

deb http://nginx.org/packages/debian/ codename nginx
deb-src http://nginx.org/packages/debian/ codename nginx

Добавяне на openssl 1.0.2k и dev библиотеката в противен случай ще си го билднем пак с 1.0.1t което не ни е целта


echo 'deb http://ftp.debian.org/debian jessie-backports main' | tee /etc/apt/sources.list.d/backports.list

apt update && apt install libssl-dev -t jessie-backports

 

Сега остана да си добавим библиотеките необходими за компилацията на nginx


apt install devscripts

apt build-dep nginx

mkdir nginx-build

cd nginx-build

apt-get source nginx

Ако сте работили коректно трябва да имате структура от рода на


~/nginx-build # ll
total 1004
drwxr-xr-x 10 root root   4096 Feb 21 18:37 nginx-1.10.3
-rw-r--r--  1 root root 103508 Jan 31 17:59 nginx_1.10.3-1~jessie.debian.tar.xz
-rw-r--r--  1 root root   1495 Jan 31 17:59 nginx_1.10.3-1~jessie.dsc
-rw-r--r--  1 root root 911509 Jan 31 17:59 nginx_1.10.3.orig.tar.gz

Влизате в папта в която е разархивиран сорса на nginx в моят случай е и nginx-1.10.3 изпълнявате команда с която инкрементирате версията, аз лично предпочитам да добавя 1 към настоящият билд

debchange --newversion 1.10.3-1

След като си добавите changelog-а по избор може да се пристъпи към същинската компилация

debuild -us -uc -i -I -b -j6

Малко разяснение по конфигурацията на командата:

-us -uc казват на скрипта да неподписва” .dsc и .changes файловете. -i и -I карат скрипта да игнорира файловете за контрол на версия. -B да се генерира само бинарен пакет. -j както при make с колко паралелни процеса да се компилира 🙂

 

След като приключи горният процес следва да си инсталираме нашите нови пакети. Ако имате вече инсталиран nginx е добре да го деинсталирате

apt remove nginx nginx-*

Също не лоша идея е да си направите бекъп на nginx папката в /etc. По принцип при ъпгрейд от 1.6.5 към 1.10.3 нямах драми но никога не се знае. Новите пактеи се намират в папката от по горно ниво и следва да се инсталират с команда от рода на:

dpkg -i ../*.deb

Ако всичко е минало гладко ви остава само да си пуснете nginx процеса и да си се конфигурира http2 което вече не е цел на тази статия.

Firefox databases VACUUM and REINDEX

0

Един хитър трик за подобряване на скоростта на firefox браузъра ви е като вакумирате sqlite базата му данни. VACUUM процеса преизгражда базата данни като по този начин я дефрагментира, намаля размера и прави търсенето в нея по бързо, използването на диска по ефективно евентуално намаля и натоварването върху диска ви тъй като чете в последователност от секторите ми. Като цяло това важи за всяка база данни която не извършва автоматично vacuum/defrag на себе си.

Самият процес по дефрагментиране на базата данни на Firefox е доста тривиаленизпълняваме sqlite3 db-file VACUUM в профилната директория на firefox. В linux пътя до нея обикновенно е ~/.mozilla/firefox/random-name.default. По принцип трябва да имате само 1 диркетория в .mozilla/firefox ако имате повече може да проверите ~/.mozilla/firefox/profiles.ini за коректната директория в е профила на вашият браузър. Тъй като не ми се занимава да извършвам процеса на ръка разписах елементарен скрипт с който да дефрагментирам базите данни:

for db in $(find ~/.mozilla/firefox/$(grep Path ~/.mozilla/firefox/profiles.ini | cut -d'=' -f2) -maxdepth 1 -name "*.sqlite" -type f)
do
   echo "VACUUM ${db}"
   sqlite3 ${db} VACUUM
   sqlite3 ${db} REINDEX
done

След изпълняване на скрипта търсенето в history-то и самото зареждане на лисика е чувствително по бързо. Скрипта предполагам че с малки модификации може да се ползва и в Mac OS.

p.s Ето варианта и за Mac OS Xтестван на Mac OS X Sierra. Налага се да форсираме делимитъра да е нов ред заради space в пътя до папката в която се съдържа профила на firefox

OIFS="$IFS"
IFS=$'\n'
for db in $(find ~/Library/Application\ Support/Firefox/$(grep Path ~/Library/Application\ Support/Firefox/profiles.ini | cut -d'=' -f2)  -maxdepth 1  -name "*.sqlite" -type f)
do
echo "VACUUM && REINDEX ${db}"
sqlite3 "${db}" VACUUM;
sqlite3 "${db}" REINDEX;
done

Debian broken package lists

0

Преживях малка драма с диска на лаптопа ми. След фиксването на проблема при apt-get update лъсваше следният крайно не приятен край на процеса

E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/apt/lists/debian.ipacct.com_debian_dists_sid_contrib_binary-i386_Packages
E: The package lists or status file could not be parsed or opened.

Както обикновено проблема е крайно очевиден /var/lib/apt/lists/debian.ipacct.com_debian_dists_sid_contrib_binary-i386 не може да бъде прочетен коректно. Фикса е също толкова елементарен колкото и самата диагностика на проблема:

 rf -f /var/lib/apt/lists/*

В крайна сметка резултата е форсирана синхронизация на apt.

Mac OS X faster dd

0

Би OS X руу ачаалагдах USB хийж байсан. Миний их гайхсан би хуулах DD хурд otvratitlno бага ~ 600KB / сек байна гэж олж 😕 . товч хайлт олж дараа, Би оронд нь rdiskX diskX ашиглах хэрэгтэй. санаа rdisk түүхий төхөөрөмжтэй ижил утгатай байдаг юм. Одоогоор маш сайн одоо хуулах блок төхөөрөмж дээр R нэмж ISO-энэ бол үнэ ч гэсэн бага ~ 150-200KB / с 😡 болохыг олж . Аль хэдийн mystique бүрэн, өмнөх мэдээллийн олон эх сурвалжаас баталсан байна!!!! Бүх зүйл миний BS мөртэй тавьж дараа газар руу унажээ.

н байт BS = N Set аль аль нь оролт, гаралт нь блок хэмжээ, IBS болон Кейсийн тоо operands superseding. noerror-ээс ямар ч хувиргах утга өөр бол, notrunc эсвэл синхрон заасан, дараа нь
оролтын блок тус ​​бүр богино блок аливаа нэгтгэх ямар нэг блок болгон гаралттай хуулсан байна.

Би тавьж дараа 1М хэмжээ BS хүрсэн хурд үүнийг хүлээж USB-би байна. Дараа нь мэдээж диск болон rdisk ялгааг шалгаж ялгаа гэж байсан 10-12 пъти в скоростта в полза на rdisk. Много културен начин за да наблюдавате скоростта и прогреса на dd може да се постигне със следният конвеир

sudo dd if=Downloads/path.to.iso bs=1M | pv | sudo dd of=/dev/rdisk2 bs=1M

ipv6.he.net Daily Tests script

0

Сертифицирането в ipv6.he.net имат дневни тестове които дават по 1 допълнителна точка след като си минал всички основни тестове. Трябва да се направят 100 такива теста за максимален резултат 😐 . Тестовете сами по себе си са напълно тривиални

  • Traceroute
  • DIG AAAA
  • DIG PTR
  • Ping
  • Whois

Най неприятното е че самите тестове трябва да са уникални т.е не може да използваш един домейн двапъти 🙂 Освен всичко друго са и малко досадни 🙄никакво предизвикателство просто плющиш 5 команди в cli-то и copy/paste на резултата в техният сайт.

Като мързелив и администратор който обича да си улеснява живота надрасках на бързо едно елементарно bash-че което да върши черната работа вместо мен

#!/bin/bash

hr() {
  local start=$'\e(0' end=$'\e(B' line='qqqqqqqqqqqqqqqq'
  local cols=${COLUMNS:-$(tput cols)}
  while ((${#line} < cols)); do line+="$line"; done
  printf '%s%s%s\n' "$start" "${line:0:cols}" "$end"
}

if [ -z $1 ]
then
  echo "Append domain afert the script name!!!"
  exit
fi

IP=$(dig $1 AAAA +short)

if [ -z ${IP} ]
then
  echo "$1 dont have valid IPv6 record"
else
  reset
  traceroute6 $1
  hr
  dig $1 AAAA
  hr
  dig -x ${IP}
  hr
  ping6 -c3 ${IP}
  hr 
  whois ${IP}
fi

Както се вижда скрипта е безумно елементарен. Подаваш домейн след което го валидира дали има IPv6 запис и ако има извършва дневните тестове за него. Най готината частфункцията hr която принтира линия по цялата ширина на екрана е взета от bash-hackers.

Go to Top