Odkąd google zaczęło kochać witryny https, tam, gdzie to możliwe, wymagana jest większa masowa instalacja SSL. Ogólnie rzecz biorąc, oprócz większego nękania serwerów, mamy również do czynienia z obniżeniem prędkości. To jest dobre, że HTTP2 standard jest zintegrowany ze wszystkimi głównymi serwerami http i przeglądarkami od ponad półtora roku, a jego obsługa jest wystarczająco stabilna. Niestety stabilna wersja Debiana nie ma pakietów obsługujących HTTP2 na głównych serwerach HTTP. Wersje, których potrzebujemy do działania HTTP2, są następujące:

Dla mnie mix jest duży i zależy od apache lub nginx. Nie grałem jeszcze w grę Apache http2 Debiana 8 jak nie musiałem, ale w backportach takie repozytorium jest takie, to nie będzie wielka sprawa. Bo nginx grał już w to kilka razy. Ogólnie rzecz biorąc, kroki są kilka i stosunkowo proste:

  1. Dodajemy oficjalne repozytorium nginx – w debianie wersja to 1.6.x 🙄
  2. Instalacja openssl z backportów jest obecnie 1.0.2k – do tego potrzebujemy Alpna konserwacja, aby wszystko mogło działać i być szybkie
  3. instalujemy nasze skrypty – тук е момента да споделя че ще си билднем наш пакет защото официалният е компилиран с 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

 

Teraz pozostaje dodać biblioteki potrzebne do skompilowania nginx

apt install devscripts

apt build-dep nginx

mkdir nginx-build

cd nginx-build

apt-get source nginx

Jeśli działałeś poprawnie, musisz mieć taką strukturę

~/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 изпълнявате команда с която инкрементирате версията, Ja osobiście wolę dodać 1 do bieżącej wersji

debchange --newversion 1.10.3-1

Po dodaniu wybranego dziennika zmian możesz przejść do faktycznej kompilacji

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

Małe wyjaśnienie konfiguracji polecenia:

-us -uc powiedz skryptowi, żeby nie “oznaki” .pliki dsc i .changes. -ja i -ja powoduje, że skrypt ignoruje pliki kontroli wersji. -b aby wygenerować tylko pakiet binarny. -jot jak w przypadku wielu równoległych procesów do skompilowania 🙂

 

Po zakończeniu powyższego procesu powinniśmy zainstalować nasze nowe pakiety. Jeśli masz już zainstalowany Nginx, dobrze go odinstalować

apt remove nginx nginx-*

Dobrym pomysłem jest również utworzenie kopii zapasowej folderu nginx w / etc. Zasadniczo podczas aktualizacji z 1.6.5 do 1.10.3 Nie miałem dramatów, ale nigdy nie wiadomo. Nowe pakiety znajdują się w folderze najwyższego poziomu i należy je zainstalować za pomocą polecenia, takiego jak:

dpkg -i ../*.deb

Jeśli wszystko poszło gładko, wystarczy uruchomić proces nginx i skonfigurować protokół http2, który nie jest już celem tego artykułu..

Doświadczyłem małego dramatu z dyskiem na moim laptopie. Po naprawieniu problemu z aktualizacją apt-get świecił następujący wyjątkowo nieprzyjemny koniec procesu

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.

Jak zwykle problem jest bardzo oczywisty / nie można poprawnie odczytać /var/lib/apt/lists/debian.ipacct.com_debian_dists_sid_contrib_binary-i386. Poprawka jest tak prosta, jak sama diagnoza problemu:

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

Ostatecznie wynikiem jest wymuszona synchronizacja apt.

Mój ulubiony edytor tekstu to Geany. To jest bardzo minimalistyczne TUTAJ który obsługuje ogromny zestaw języków – muszla, php, pyton, do … itp. Ma automatyczne wykończenie, a jednocześnie jest bardzo zwinny. Brakuje innej przyjemnej okazji, ale w tej chwili to dla mnie więcej niż wystarczające. Rozpocząłem kurs online Programowanie w języku Python w SoftUni – aby odświeżyć moją wiedzę i ją zaktualizować, ponieważ nie monitorowałem odpowiednio tego, co dzieje się z pythonem 3. Wykładowcy kursu polecają PyCharm jako IDE do programowania w pytonach, ale wcale mi się to nie podoba, oczywiście używam Geany do ćwiczeń.

Podczas wykładów czułem się boleśnie 2 brakuje

  1. autouzupełnianie python wydycha dokumentację funkcji i metod
  2. brak potwierdzenia dla standard pep8

Dobrą rzeczą jest to, że Geany jest wystarczająco elastyczny, aby go skonfigurować i można go łatwo uzupełnić brakującymi.. Czasami dodaj dokumentację python do naszego IDE:

  • ciągniemy następujący skrypt gdzieś w naszej ŚCIEŻCE, na przykład / usr / bin i nie zapomnimy, aby była wykonywalna
  • edytuj plik ~ / .config / geany / filedefs / filetypes.python, dodając następujący wiersz w sekcji ustawień kontekst działań_cmd = pydocw% s. Jeśli istnieje tylko nazwa pliku binarnego z poprzedniego kroku. Ponownie uruchamiamy Geany, jeśli zostanie zwolniony.
  • Mamy już akcję kontekstową, która dostarczy Ci informacji o funkcji. Аз си добавих shortcut за да ми е по удобно като не ми е ясно някоя функционалност. Bardzo podoba mi się to podejście, ponieważ jestem bardzo zirytowany podejściem Netbeans.

Na razie w porządku. Potem naprawdę chcę mieć sprawdzanie poprawności kodu, który piszę – czy piszę to zgodnie z ogólnie przyjętymi standardami, czy piszę brzydotę. Zasadniczo znalazłem to ponownie tutoriale jak rzeczy się dzieją, ale jest to trochę przestarzałe – Geany ma wszystko wbudowane, wystarczy zainstalować pakiet pep8. W Debianie apt-get install pep8 działa w innych dystrybucjach, musisz sam dowiedzieć się, jak działa magia. W menu kompilacji drugi przycisk (przynajmniej dla mnie) jest Lint po kliknięciu go zobaczysz, jak brzydki kod stworzyłeś 😀

Zrzut ekranu z 2016-01-11 20-42-21

To jest ogólny zarys tego, jak sprawić, by Geany lepiej współpracował z Pythonem, a jednocześnie był szybki, nie zmuszając procesora do ciągnięcia kuli..

Z powodu niektórych (niezbyt jasne powody dla mnie) Zapomniałem zaktualizować demona postgresql w aktualizacji dystrybucji na jednym z moich serwerów Debian. Demon Postgresql ma tę zaletę, że nie zaczyna korzystać z nowej wersji (w przeciwieństwie do MySQL) dopóki nie będziemy przekonani, że nowy jest w pełni kompatybilny z premierą – niezwykle przydatne w dużych bazach danych. Sam proces aktualizacji jest ograniczony do następujących 2 kroki:

  • pg_dropcluster
  • pg_upgradecluster

Demon pg musi zostać zatrzymany przed opróżnieniem klastra!

pg_dropcluster 9.4 main

To polecenie mija szybko, następnie przechodzimy do zasadniczej części – sama aktualizacja

pg_upgradecluster 9.1 main
Disabling connections to the old cluster during upgrade...
Restarting old cluster with restricted connections...
Creating new cluster 9.4/main ...
config /etc/postgresql/9.4/main
data   /var/lib/postgresql/9.4/main
locale en_US.UTF-8
Flags of /var/lib/postgresql/9.4/main set as -------------e-C
port   5433
Disabling connections to the new cluster during upgrade...
Roles, databases, schemas, ACLs...
Fixing hardcoded library paths for stored procedures...
Upgrading database postgres...
Analyzing database postgres...
Fixing hardcoded library paths for stored procedures...
Upgrading database template1...
Analyzing database template1...
Fixing hardcoded library paths for stored procedures...
Upgrading database xpqt...
Analyzing database xpqt...
Re-enabling connections to the old cluster...
Re-enabling connections to the new cluster...
Copying old configuration files...
Copying old start.conf...
Copying old pg_ctl.conf...
Copying old server.crt...
Copying old server.key...
Stopping target cluster...
Stopping old cluster...
Disabling automatic startup of old cluster...
Configuring old cluster to use a different port (5433)...
Starting target cluster on the original port...
Success. Please check that the upgraded cluster works. If it does,
you can remove the old cluster with

pg_dropcluster 9.1 main

Jeśli wszystko poszło gładko, powinieneś otrzymać komunikat podobny do powyższego, który zachęca do pozbycia się starych danych z pg.

pg_dropcluster 9.1 main

Na końcu tego tarpana możesz teraz ponownie rozpocząć proces. Dla mnie bazy są małe i niestety nie jestem w stanie oszacować, ile czasu zajmuje znacząca aktualizacja..

Nowy Debian Stable był faktem od około tygodnia, a moje ręce chciały zaktualizować moją maszynę wirtualną, ale nie miałem czasu do dzisiaj. Ponieważ mój dzień zaczął się wcześnie, postanowiłem poświęcić czas na aktualizację. Промених сорс листа ми като промених wheezy на jessie

sed -i "s/wheezy/jessie/g" /etc/apt/sources.list && apt-get update

Gromili tutaj 2 lustra:

  • MariaDB – z tego lustra nie potrzebuje już Jessie zawiera wersję 10.0.6 w sobie, co mi się nie bardzo podobało. Po 5.5 micodedb i mysql nie są w pełni kompatybilne, dlatego właśnie wróciłem do mysql 5.5.42 – jest to domyślne w jessie
  • DotDeb – Użyłem go wcześniej dla php55 tutaj jest również zbędne, ponieważ pochodzi z Jessie 5.6.7-1

Po tym, jak straciłem niepotrzebne kopie lustrzane i przełączyłem się z MariaDB do Mysql apt-get dist-upgrade poszedł na czysto, zrestartowałem komputer i byłem już z Debianem 8.0. Otworzyłem mój serwer internetowy i ku mojemu zdziwieniu to zadziałało, historia jest długa – w kilku słowach, mój Nginx został dodatkowo skompilowany ze źródła z dodatkowymi dyrektywami. dpkg -l nginx-full 1.2 mdaaa ktoś zapomniał cofnąć pakiety. Unieruchom i uaktualnij wszystko zgodnie z planem nginx złamał oke . Nginx pracuje z przetwarzaniem żądań, a proces php-fpm jest uruchomiony i działa, ale kod php nie działa i nie wypluwa błędów 🙄 MY ULUBIONE.

Po kilku poszukiwaniach informacji o zmianach znalazłem następujący fragment

Problemy z konfiguracją Fastcgi ============================

nginx dostarczył zmodyfikowane fastcgi_params, który zadeklarował SCRIPT_FILENAME fastcgi_param. Ta linia została teraz usunięta. Od teraz wysyłamy również fastcgi.conf z repozytorium nadrzędnego, który zawiera rozsądną wartość parametru SCRIPT_FILENAME.

Więc, jeśli używasz fastcgi_params, możesz spróbować przejść na fastcgi.conf lub ręcznie ustawić odpowiednie parametry.

Bingo. Zmieniłem wirtualnych hostów, aby korzystali z fastcgi.conf zamiast robić surowe interwencje i wszystko działało. Następnie nacisnąłem szybki diff, aby zobaczyć różnicę między 2 konfiguracjami

diff /etc/nginx/fastcgi_params /etc/nginx/fastcgi.conf
1a2
> fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

Co przypomniało mi, że wlewanie dużych konfiguracji do wirtualnych hostów nie jest fajnym pomysłem. Pozostaje ponownie skompilować mój Nginx z dodatkami, których chcę mod_sec + prędkość strony, ale to może poczekać. To jest o wiele ważniejsze, moja reguła jest powtarzana, jeśli nie masz recenzji z 3 źródeł, a niestandardowe wyniki Debian nie psują się przy aktualizacji dist!

https://www.youtube.com/watch?v = gEQCny6zNF0