Ako som sľúbil v minulom blogovom článku, tak dnes napíšem ako som migroval na novú doménu. Kto čítal spomínaný článok, tak vie, že tento web bol registrovaný s ccTLD ml (jany.ml) a vie aj to, prečo som túto doménu opustil. Po viac ako štyroch rokoch som zmenil TLD na win. Win je generická doména, ktorá nepatrí, žiadnej krajine. Slovo win, môže znamenať skratka pre OS MS Windows, alebo výhra (preložené z angličtiny). V podstate mi bolo úplne jedno akú TLD budem mať, ale podmienkou bola TLD, čiže aby som mal kontrolu nad doménou druhého radu.
Obsah
- Cloudflare
- Nastavujeme pfSense
- Reverzný proxy nginx
- Konfigurujeme apache2
- Dolaďujeme-wordpress
- Záver
Cloudflare
Rozhodol som sa pre spoločnosť Cloudflare. Aby som si trocha ušetril čas, tak som sa opýtal AI ChatGPT (založená na architektúre 3.5), čo je to cloudflare. Toto je vygenerovaný text bez akejkoľvek úpravy
Cloudflare je internetová spoločnosť, ktorá poskytuje služby na zabezpečenie, zlepšenie výkonu a dostupnosti webových stránok a aplikácií. Cloudflare bola založená v roku 2009 a rýchlo sa stala jedným z najväčších poskytovateľov CDN (Content Delivery Network) na svete.
Hlavné funkcie Cloudflare zahŕňajú:
- CDN (Content Delivery Network): Cloudflare prevádzkuje globálnu sieť serverov rozmiestnených po celom svete. Tieto servery uchovávajú kópie obsahu (napr. obrázky, štýly, skripty) z webových stránok a doručujú ich užívateľom z najbližšieho dostupného servera. To výrazne zlepšuje rýchlosť načítania webových stránok a znižuje zaťaženie základného servera.
- Bezpečnostné služby: Cloudflare ponúka rôzne bezpečnostné funkcie, ktoré chránia webové stránky pred rôznymi hrozbami, vrátane DDoS útokov (distribuovaného odopierania služby), botov, škodlivého prevádzky a ďalších druhov útokov na web.
- SSL/TLS šifrovanie: Cloudflare umožňuje jednoduchú implementáciu šifrovania SSL/TLS pre webové stránky, čím zabezpečuje prenos dát medzi užívateľom a serverom.
- Výkon a optimalizácia: Cloudflare poskytuje nástroje na optimalizáciu a zrýchlenie načítania webových stránok, čo môže viesť k zlepšeniu užívateľského zážitku.
- Firewall: Ponúka možnosť nastavenia pravidiel firewallu na ochranu webového prevádzky pred nežiaducim obsahom alebo neautorizovaným prístupom.
Vďaka svojej rozsiahlej sieti a ponuke služieb Cloudflare pomáha mnohým webom a aplikáciám zvýšiť ich bezpečnosť, spoľahlivosť a výkon. Ich služby sú široko využívané najmä majiteľmi webových stránok, e-commerce platformami, korporáciami a ďalšími subjektmi, ktoré potrebujú zabezpečiť a optimalizovať svoj internetový prevádzku.
Ako je z predošlého textu známe, tak clouflafre sa zaoberá najme službami typu CDN, DDoS, SSL, Firewall, čo je samozrejme pravda, ale nikde nevidím aby ponúkal aj registráciu doménových mien. To nevadí lebo sa môžem pýtať znova. Ďalšia otázka bola, či cloudflare ponúka aj registráciu domén a odpoveď ?
K dátumu mojho posledného aktualizovaného (september 2021) Cloudflare umožňoval registrovať a spravovať domény od septembra 2014. Táto služba sa nazýva „Cloudflare Registrar“.
Cloudflare Registrar umožňuje používateľom registrovať nové domény alebo presunúť existujúce domény do správy Cloudflare, kde potom môžu jednoducho riadiť doménové nastavenia spolu s ostatnými službami, ktoré Cloudflare ponúka.
Je však možné, že od septembra 2021 došlo k ďalším aktualizáciám a zmenám v ponuke služieb Cloudflare, preto odporúčam skontrolovať najnovšie informácie priamo na webovej stránke Cloudflare alebo v ich dokumentácii, aby ste zistili aktuálny stav a dostupnosť služby Cloudflare Registrar.
Čo nie je až tak celkom pravda, pretože registráciu domén ponúka od septembra 2018. OK, prestaňme riešiť Chat GPT a poďme ďalej.
Keď som zistil, že moja pôvodná doména prestala fungovať, začal som hľadať riešenie ako sa dostanem k TLD čo najlacnejšie (kedže som bol zvyknutý, že freenom ponúkal niektoré ccTLD zdarma). Niektorí registrátori zvyknú mať občas akciu, kedy sa dá kúpiť , nejaká TLD veľmi lacno a na dlhšiu dobu. Ja samozrejme nemôžem čakať na akciu a potreboval som kúpiť doménu čo najskôr. Netvrdím, že to čo som si vybral je najlepšie a najlacnejšie, ale na cloudflare som kúpil TLD win na 10 rokov za 28,56€.
Nastavíme A, CNAME záznam a DNSSEC
Čiže doménu máme zaregistrovanú. V nastaveniach DNS na cloudflare nastavíme A záznam na IPv4 adresu kde hostujeme web a taktiež CNAME zánam na subdoménu www, pretože mám rád, keď (tiež z historických dôvodov sa odporúča) za https nasleduje tiež www.
Aby bola naša doména zabezpečená, tak povolíme funkciu DNSSEC (Domain Name System Security Extensions). To sa nastavuje v časti DNS -> Settings. Preveriť to môžeme na tejto stránke verisignlabs.
Nastavujeme pfSense
Vo svojej sieti používam ako hlavný firewall/router pfSense. Ako lokálny DNS resolver používam unbound, kde mám nastavené Host override. Vzhľadom k tomu, že som mal predošlú doménu nastavenú pre .ml, tak stačí ak túto položku upravíme na .win.
Reverzný proxy nginx
Ďlšie zmeny budeme vykonávať na frontendovom reverznom proxy servery nginx a backendovom servery apache2. Z toho dôvodu odporúčam zálohovať servery, alebo aspoň konfiguráciu (pre prípad ak sa niečo stane a budeme sa musieť vrátiť k pôvodnej konfigurácii). Ak používate napr. LXC kontajnery a ZFS ako ja, tak je možné použiť snapshots.
V konfiguračných skriptoch budem namiesto originálu používať
- Doména druhého radu exemple.
- IP adresa reverzného proxy servera 192.168.20.10
- IP adresa webového apache2 192.168.20.11
Prihlásime sa cez SSH na reverzný proxy server nginix a vytvoríme nový konfiguračný súbor. Viac o konfigurácii nginx v roli reverzného proxy servera
sudo nano /etc/nginx/sites-available/www.example.win
Ktorého obsahom bude
server {
listen 80;
server_name example.win;
return 301 http://www.example.win$request_uri;
}
server {
listen 80;
server_name www.example.win;
location / {
proxy_pass http://192.168.20.11;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Súbor uložíme a skontrolujeme konfiguráciu po syntaktickej stránke. Následne vytvoríme symbolický link do sites-enabled, odkiaľ číta nginx konfiguráciu a reloadneme server.
sudo nginx -t
sudo ln -s /etc/nginx/sites-available/www.example.win /etc/nginx/sites-enabled/www.example.win
sudo systemctl reload nginx
Teraz môžeme generovať certifikát. Ak nevieš čo je to certifikat, certbot, let’s encrypt, tak pozri môj článok z minulosti
sudo certbot --nginx -d example.win -d www.example.win
Certifikáty by sa mali pomocou výzvy HTTP-01 vygenerovať do niekoľkých sekúnd. Ak certbot vypísal nejakú chybu, tak musíme preveriť, kde nastal problém. Väčšinou sa jedná o nekorektné doménové meno, neaktuálnu IP adresu, alebo neotvorený port 80 a pod. Ak všetko prebehlo hladko, tak certbot upraví konfiguráciu tak, aby požiadavky smerovali na https a pridá cesty k certifikátom. Konfigurák môžeme obohatiť o bezpečnostné hlavičky.
Pôvodný konfiguračný súbor pre starú doménu môžeme zrušiť. Cesta k k symlinku pre dostupný web je nasledovná.
/etc/nginx/sites-available/www.example.ml
Na tento súbor zrušíme symlink.
sudo unlink /etc/nginx/sites-enabled/www.example.ml
Súbor bude stále existovať v
/etc/nginx/sites-available/
Ale nginx to nebude brať do úvahy. Nič nám nebráni v tom ponechať ho tam, alebo ho odstránime a reloadnem nginx.
sudo rm /etc/nginx/sites-available/www.example.ml
sudo systemctl reload nginx
Týmto sme ukončili prácu na reverznom proxy servery nginx. Pokračovať budeme na webovom servery apache2.
Konfigurujeme apache2
Na webovom servery zvyknem pre webový projekt nastaviť, resp. vytvoriť adresár s obsahom pod takým názvom aký je názov domény. V našom prípade bola doména vedená pod názvom www.example.ml a nová doména je www.example.win. Čiže adresár premenujem na www.example.win (obsah adresára ostane samozrejme zachovaný).
sudo mv /var/www/www.example.ml /var/www/www.example.win
Teraz budeme upravovať konfiguráciu pre apache2. Možností je viacero, ale ja som si zvoli tento spôsob. Zakážeme starý conf a potom si ho upravíme.
sudo a2dissite www.example.ml.conf
sudo nano /etc/apache2/sites-available/www.example.ml.conf
Obsah bude vyzerať následovne.
<VirtualHost *:80>
ServerAdmin admin@example.win
ServerName example.win
ServerAlias www.example.win
DocumentRoot /var/www/www.example.win/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RemoteIPHeader X-Real-IP
RemoteIPInternalProxy 192.168.20.10
<Directory "/var/www/www.example.win">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Po úprave ho uložíme. Potom ho premenujeme a nastavíme (symlink) aby ho apache2 detekoval. Znova načítame konfiguráciu apache2 servera.
sudo mv /etc/apache2/sites-available/www.example.ml.conf /etc/apache2/sites-available/www.example.win.conf
sudo a2ensite www.example.win.conf
sudo systemctl reload apache2
Týmto sme ukončili prácu na webovom servery apache2 a pokračovať budeme v nastavení samotného wordpressu.
Dolaďujeme wordpress
Čo sa týka wordpressu, tak najprv sa musíme dostať do databázy MariaDB. Ja používam na manipuláciu s databázami šikovný nástroj phpmyadmin. Prejdeme do tabuľky wp_options, kde zmeníme hodnoty v
siteurl
sitehome
z
https://www.example.ml
na
https://www.example.win
Webová stránka začne fungovať, ale vidím ešte nejaké drobné problémy, ktoré je potrebné vyriešiť. Tak napr. logo v hlavičke webu je nastavené na starú doménu a po kliknutí na logo nás to smeruje na starú doménu. Čiže to musíme prepísať. Ak by tam bol pôvodne relatívny odkaz „/“, tak to nemusíme riešiť (moja chyba).
Tak isto sa nenačítali obrázky pozadia na hlavnej stránke. Dôvod bol ten, že url odkazy obrázkov po migrácii ostali pôvodné. Riešením bolo, dať upraviť stránku a obrázky načítať na novo, kde sa url následne zmenila. Po tomto úkone sa zdalo, že je všetko OK. Keď som sa však pozrel v blogu na niektorý článok, ktorého obsahom boli aj obrázky, tak ďalší problém bol na svete. Obrázky síce na blogu boli, ale ja to mám nastavené tak, že po kliknutí na obrázok sa pôvodný obrázok načíta do popredia. Obrázok sa nenačítal, pretože ako pri obrázkoch na pozadí tam zostalo staré url. Riešením by bolo tak isto, upraviť stránku a na novo načítať každý obrázok. Ak by som mal v blogu radovo jednotky obrázkov, tak v tom nevidím problém, ale ja mám možno cez 200 obrázkov a v tom už problém vidím. Preto som hľadal riešenie (samozrejme bez dodatočného pluginu) a podarilo sa. Riešenie spočíva v zadaní jedného SQL dotazu. Čiže prihlásime sa napr. do phpmyadmin, vyberieme tabuľku wp_posts a v menu klik na SQL. Teraz nám stačí vykonať jediný SQL dotaz, ktorý prepíše v danej tabuľke všetky url zo starej na novú
UPDATE wp_posts SET post_content=(REPLACE (post_content, ‘https://www.example.ml’,'https://www.example.win’));
Záver
Momentálne na webe nevidím žiadne problémy, alebo chyby, ktoré by bolo potrebné riešiť. Ak zistím, že niečo nefunguje, tak začnem na tom čo najskôr pracovať. Je vidieť, že migrovať web je možné aj bez pluginov ručne, ale treba dávať pozor čo robíme. Ak by som migroval pomocou pluginu na to určeného, tak možno by to bolo jednoduchšie a rýchlejšie. Ale skúsený web admini vždy hovoria, čim menej pluginov, tým je to bezpečnejšie. Ideálne je nepoužívať žiadny plugin, ale to v dnešnej dobe asi nejde.