Както може би повечето от вас знаят, аз съм голям фен на nginx! В работата ми обаче неизбежно присъства и apache – главно заради WHM/Cpanel сървърите които поддържам!
Накратко – до сега използвах преправен от мен скрипт (engintron) който кръстих fosnginx!
Той работи на принципа на прокси, като слага nginx на порт 80 и сменя порт-а на apache-то на 8081, но праща всички php заявки към apache! Така всичко що го има в .htaccess файловете на клиентите продължава да работи! До тук добре, обаче се появи letsencrypt!
Благодарение на него, вече имаме безплатни валидни SSL сертификати което е супер! Обачеее в моят случай всички HTTPS заявки продължават да се обработват от apache!
Тук идва и въпросът с оптимизацията на apache, за да могат тези сайтове да зареждат еднакно бързо както на http, така и на https!
Аз много харесвам онлайн туул-а varvy.com и с него правя тестове когато ми се налага да оптимизирам сайт!
В този пост ще споделя как глобално се активира gzip компресията във WHM/Cpanel за да може да се спести излишен трафик при зареждане на сайт (Apache global gzip compression in WHM/Cpanel)!
Логваме се във WHM/Cpanel сървъра и отиваме до : Home »Service Configuration »Apache Configuration »Include Editor и отваряме Pre VirtualHost Include и слагаме следните редове в „All Versions“ на апачето :
Днес ще споделя как лесно се слага MySQL delayed replication (закъсняла репликация).
Идеята е проста – имаме слейв сървър който е винаги изостанал от мастъра си. Това се прави с цел, той да седи като онлайн бекъп, и ако без да искаме изтрием нещо от главния сървър като таблица или база (или пък някой кадърен девелопър е truncate-нал таблица но вместо на дев го е направил на лайв – случвало ми се е!! 🙂 ), да можем бързо да вземем информацията от този изостанал слейв.
Да подчерая, че тази функция я има във версия на MySQL 5.6 и нагоре.
От около седмица-две започнах тестове с pfSense 2.4.2, а от няколко дни го използвам в production среда!
В този пост (pfSense HAproxy LetsEncrypt http2 ) ще споделя как да инсталираме, конфигурираме и използваме HaProxy с Let’s Encrypt и най-новия http протокол – http2!
Инсталация
Трябва да инсталираме следните пакети за pfsense : acme (let’s encrypt) и haproxy-devel (dev версията е 1.8 която поддържа http2).
Конфигуриране
HaProxy
След като сме инсталирали HaProxy, е необходимо да създадем backend чрез който да може да инсталираме и подновяваме Let’s Encrypt сертификати.
Избираме си име – примерно localacmeserver който да работи на localhost на порт 8126 (порта е много важен за frontend частта!)
Следва да направим и два frontend-а които да работят на порт 80 и порт 443.
Първия HTTP-to-HTTPS ще служи за препращане на всичкия трафик от порт 80 към HTTPS (порт 443) с едно изключение – заявките от Let’s Encrypt ще бъдат обработвани локално от localacmeserver (порт 8126). Това се прави ето така :
Намираме Default backend, access control lists and actions и създаваме acme. За expression избираме Path starts with: , на Not избираме yes, и за Value слагаме : /.well-known/acme-challenge
Така всички заявки от типа /.well-known/acme-challenge ще бъдат обработвани от backend-а ни който кръстихме acme.
По-долу на Actions се описва и 302 redirect-а от HTTP към HTTPS:
Накрая избираме за default backend „acme“
Следва конфигурирането на HTTPS frontend-a ни.
Тук важното е при Access Control lists да изберем за Not – no , и да сложим същото Value – /.well-known/acme-challenge/ и при Actions да посочим, че ще използваме backend : acme.
Let’s encrypt
Нужно да си на настройм ACME акаунта от Services -> Acme certificates -> Account keys. Избераме за сървър Acme server – Let’s Encrypt production, след това кликваме на Create new account key, и след това на Register acme account key и накрая save.
Отиваме на Certificates и си създаваме нов, като тук важното е да спазим следното :
За method да изберем : standalone HTTP server а за порт да изберем 8126 , а на Action lists да спожим следните две команди :
Restart the GUI on this firewall: Select „Shell Command“ and enter /etc/rc.restart_webgui
Restart HAProxy on this firewall: Select „Shell Command“ and enter /usr/local/etc/rc.d/haproxy.sh restart
Така когато ни се поднови автоматични сертификата след 60 дни, HaProxy сървъра ще се рестартира автоматично и ще вземе новият сертификат за съответният домейн.
HaProxy Http2
Включването на http2 в haproxy 1.8 е много лесно.
Избираме HTTPS backend-a ни и срещу IP адреса му в полето Advanced добавяме следното : alpn h2,http/1.1
Препорачително е да изключим старите SSL протоколи – SSLv2 , SSLv3 , TLSv10 и TLSv11
Добавянето на нов хард диск във vmware по принцип не е сложно. Обаче ако следваме стъпките описани в тяхната документация ще трябва да рестартираме нашата linux машина, за да може тя да види новия диск. В този пост ще споделя как става добавянето на нов хард диск на линукс машина, без тя да бъде рестартирана след това – (VMware add new hard disk to linux server without reboot).
root@monitor:~# fdisk -l
Disk /dev/sda: 160 GiB, 171798691840 bytes, 335544320 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe52d3a30
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 999423 997376 487M 83 Linux
/dev/sda2 1001470 335542271 334540802 159.5G 5 Extended
/dev/sda5 1001472 335542271 334540800 159.5G 8e Linux LVM
Disk /dev/mapper/monitor--vg-root: 149.5 GiB, 160545374208 bytes, 313565184 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/monitor--vg-swap_1: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Така изглежда линукс машината ни с един 160гб хард диск.
Предполага се, че вече сме добавили диска от vSphere клиента и следва да изпълним следните команди в линукса :
for i in `ls /sys/class/scsi_host` ; do echo "- - -" > /sys/class/scsi_host/$i/scan; done
И воала! Новият ни 320гб хард диск е вече видим и може да го форматираме.
След 16.04 в ubuntu, мрежовите интерфейси вече идват с ново наименование – ens. Обаче това понякога е проблем за старите linux потребители като мен, които са свикнали с eth, и за това се налага всеки път да търся как се променяше това.
Този пост служи именно за това – да покажа как бързо и лесно се оправя този проблем.
За целта е нужно да се отвори /etc/default/grub и да се промени следния ред от :
GRUB_CMDLINE_LINUX=""
на:
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
След това се изпълнява и командата : update-grub
root@XRM-web-node3:~# update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.4.0-109-generic
Found initrd image: /boot/initrd.img-4.4.0-109-generic
Found linux image: /boot/vmlinuz-4.4.0-87-generic
Found initrd image: /boot/initrd.img-4.4.0-87-generic
done
Последно и много важно нещо преди да се рестартира сървъра/лаптопа е да се промени конфигурационния файл за мрежите където до сега фигурираше ens :
В /etc/network/interfaces се променя от :
auto ens18
iface ens18 inet static
на :
auto eth0
iface eth0 inet static
Следва рестартиране и всичко трябва да тръгне без проблеми!