Kategori arşivi: Cloud

Cloud sistemler hakkında bilgiler, cloud hizmet veren firma karşılaştırmaları, cloud sunucular ve yapılandırma örnekleri

CloudFlare Kullanan Sayfalarda Web Scraping İşlemi Nasıl Yapılır?

İnternet üzerinde hatırı sayılır bir şekilde CloudFlare ve servisleri kullanılmaktadır, yapılan araştırmaya göre ise durum şu şekilde

Cloudflare is used by 81.5% of all the websites whose reverse proxy service we know. This is 16.8% of all websites.

Yani dünyadaki web sitelerin yüzde 16.8 kadarı CloudFlare servisi kullanıyor ve web sitesini koruyor.

Bu web sitelerinde yer alan verileri otomatik bir şekilde almak istediğinizde haliyle CloudFlare direk olarak bot trafiği algılıyor ve engelliyor. Yazacağımız ufak bir kod bu engellemeyi geçmek kısmen mümkün.

import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
from random_useragent import random_useragent


class RequestsHelper(object):
    """HTTP Request helper"""

    def __init__(self):
        super(RequestsHelper, self).__init__()

        """ Create session for long TTL pages"""

        session = requests.Session()

        retries = 5
        backoff_factor = 0.3
        status_forcelist = (500, 502, 504)

        retry = Retry(
            total=retries,
            read=retries,
            connect=retries,
            backoff_factor=backoff_factor,
            status_forcelist=status_forcelist,
        )

        adapter = HTTPAdapter(max_retries=retry)
        session.mount("http://", adapter)
        session.mount("https://", adapter)

        self.session = session

    def _generate_random_useragent(self):
        """
        Generate random user-agent string

        :return: User-agent string
        """
        randomizer = random_useragent.Randomize()
        return randomizer.random_agent("desktop", "windows")

    def _is_cloudflare_protected(self, r):
        """
        Check if page has protected with Cloudflare

        :param object r:
        :return: Cloudflare anti-ddos challenge status
        :rtype: bool
        """
        server = r.headers.get("Server", "")
        return (
            r.status_code == 503
            and server.startswith("cloudflare")
            and b"jschl_vc" in r.content
            and b"jschl_answer" in r.content
        )

    def resolve_redirection(self, url):
        """
        Resolve redirection and return final url without download page

        :param str url:
        :return: Return final url
        """
        r = self.session.head(url, allow_redirects=True)
        return r.url

    def get(self, url):
        """
        Fetch page content or make HTTP GET request

        :param str url: Endpoint or page URL
        :return: Requests object
        :raises Exception when error happened
        """
        try:
            r = self.session.get(
                url,
                headers={"User-Agent": self._generate_random_useragent()},
                timeout=5,
            )
        except Exception as e:
            raise e

        if self._is_cloudflare_protected(r):
            import cfscrape

            scrapper = cfscrape.create_scraper()
            r = scrapper.get(r.url, timeout=5)

        if b"indows-1254" in r.content:
            r.encoding = "Windows-1254"
        else:
            r.encoding = "utf-8"

        return r

    def post(self, url, data):
        """
        Fetch page content or make HTTP GET request

        :param str url: Endpoint or page URL
        :param dict data: Post data dictionary
        :return: Requests object
        :raises Exception when error happened
        """
        try:
            r = self.session.post(
                url,
                data=data,
                headers={"User-Agent": self._generate_random_useragent()},
                timeout=5,
            )
        except Exception as e:
            raise e

        if self._is_cloudflare_protected(r):
            import cfscrape # pip install cfscrape

            scrapper = cfscrape.create_scraper()
            r = scrapper.post(r.url, data=data, timeout=5)

        if b"indows-1254" in r.content:
            r.encoding = "Windows-1254"
        else:
            r.encoding = "utf-8"

        return r
Python

Peki bütün CloudFlare kullanan sayfalarda bu kod işe yarar mı? Tabii ki de hayır, özellikle hCaptcha aktif edilmiş ve aktif olarak kullanılan sitelerde yukarıda vermiş olduğum kod çalışmayacaktır.

Peki bunun yerine ne gibi bir işlem yapabiliriz, son geliştirmelerle birlikte biraz daha doğru çalışan cloudscraper kütüphanesini kullanabilirsiniz. Nihai kodumuz şu şekilde olacak.

    def get(self, url):
        """
        Fetch page content or make HTTP GET request

        :param str url: Endpoint or page URL
        :return: Requests object
        :raises Exception when error happened
        """
        try:
            r = self.session.get(
                url,
                headers={"User-Agent": self._generate_random_useragent()},
                timeout=5,
            )
        except Exception as e:
            raise e

        if self._is_cloudflare_protected(r):
            import cloudscraper

            scrapper = cloudscraper.CloudScraper()
            r = scrapper.get(r.url, timeout=5)

        if b"indows-1254" in r.content:
            r.encoding = "Windows-1254"
        else:
            r.encoding = "utf-8"

        return r
Python

Bundan sonra web sitesindeki değişiklikleri alabilirsiniz ancak burada şöyle bir durum daha karşınıza çıkacak. Koruma sayfası içindeki parametreler sık sık cloudflare tarafından değiştiriliyor.

Gün sonunda yüksek ücretler istenen residential proxy hizmetlerine geçiş yapmanız gerekebilir.

Amazon AWS CLI Notlarım

AWS Cli kullanarak sıkça yapmış olduğum işlemlerin notlarını bu alanda paylaşacağım. Detaylara pek girmeyi düşünmüyorum.

Servis bazında ayrı ayrı ekleyeceğim. Şimdilik sıkça kullanmakta olduğum aşağıdaki 3 servis üzerinde durdum.

  • EC2
  • S3
  • SQS

İlkbyte Sunucularında Statik IP Nasıl Yapılandırılır?

İlkbyte cloud sunucuları üzerinde debian 10 kullanıyorsanız ve DHCP kullanmak istemiyorsanız, uygulamanızda statik ip istiyorsa doğru yere geldiniz. Peki dhcp’den kurtulup sabit ip’yi sistemimize nasıl tanımlayacağız?

Önce neredeyse bütün Cloud sistemlerde kullanılan yapılandırma aracı cloud-init‘i network ayarlarını yapmaması için yapılandıracağız. Sistemde bu adla bir dosya bulunmayacağı için aşağıdaki adımları takip edin.

nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg

İçerisini ise şununla dolduracağız.

network: config: disabled

Peşinden aşağıdaki dosyayı güzelce sileceğiz. Çünkü artık network yapılandırmasını kendimiz yapacağız, otomasyonun tekrar üzerinde hakimiyet kurmasını istemeyiz.

rm /etc/network/interfaces.d/50-cloud-init.cfg

Şimdi network ayarını yapacağız ama ip dışında bazı bilgilere ihtiyacımız var Gateway ve Netmask gibi, bunları sistem üzerinden basitçe edinebiliriz, herhangi bir yerde yazmasına gerek yok. Bu bilgileri edinmek için ise

Sistemdeki IP adresini öğrenmek

ip -c addr show eth0

Ön tanımlı gateway ip adresini öğrenmek için

ip route list

DNS bilgilerini öğrenmek için

cat /etc/resolv.conf

Bu komutlar ile bilgileri öğrendiyseniz geriye bir tek şey kaldı oda /etc/network/interfaces dosyasını düzenlemek içerisinde aşağıdaki gibi satırlar olacak. birden fazla değer olabilir paniklemeyin. sadece networkte kullanılanı bulup düzenleyin yeter. Bizde bu eth0 olduğu için işimiz kolay.

root@debian:~# cat /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The normal eth0 allow-hotplug eth0 iface eth0 inet dhcp # Set this one last, so that cloud-init or user can # override defaults. source /etc/network/interfaces.d/* root@debian:~#

Herhangi bir metin editörü ile açtığımız /etc/network/interfaces dosyasını aşağıdaki gibi düzenliyoruz.

# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The normal eth0 auto eth0 iface eth0 inet static address 89.252.131.109 netmask 255.255.255.255 gateway 89.252.131.1 dns-nameservers 159.253.34.4 159.253.34.5 # Set this one last, so that cloud-init or user can # override defaults. source /etc/network/interfaces.d/*

Kayıt edip çıkıyorsunuz, yapılandırmanızda bir yanlışlık var mı diye sudo ifup --no-act eth0 komutunu kullanmaktan çekinmeyin.

Bu işlemlerin sonunda ip adresiniz sabitlenecek ama DHCP çalışmaya devam edeceği için ondanda kurtulmamız gerekiyor.

apt autoremove isc-dhcp-client isc-dhcp-common

systemctl restart networking komutunu vererek işlemi sonlandırın. İşlemlerin sonucunda artık IP adresiniz sabitlenmiş oldu.

CloudFlare İle Internet Explorer Tarayıcısının Engellenmesi

Artık internet explorer tarihin bir köşesinde yerini aldı, ama inatla kullanmaya devam edenler olduğunu görüyoruz. Modern tarayıcı desteği ile bütün ürünler ve yazılımlar geliştiriliyor. Internet explorer kullanan bireyleri de sistemden bir şekilde uzak tutmalıyız ki kendilerine yeni bir tarayıcı seçsinler. Üstelik artık Internet Explorer kullanımdan kalktı kullanılmasının bir hükmüde yok.

Internet Explorer Nasıl Engellenir?

CloudFlare ile işlem çok basit. tek yapmanız gereken aşağıdaki adımlardan birini uygulamak, sonrasında kişinin karşısına “Access Denied” sayfası yapıştırılacak.

Engellenecek User-Agent bilgileri sırasıyla aşağıda yer almaktadır.

Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
Mozilla/5.0 (Windows NT 6.2; Trident/7.0; rv:11.0) like Gecko
Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Plaintext

Firewall -> Tools -> User Agent Blocking ile bu işlemi yapmak isterseniz. “Create Blocking Rule” demeniz yeterli.

user agent blocking, cloudflare user-agent management

Hemen ardından aşağıdaki gibi ayarlamanızı yapın.

create user-agent rule cloudflare, user-agent yasaklama

Yaptığınız nihai değişiklik dört farklı işletim sistemi için aşağıdaki gibi gözükmeli, bu sayede artık internet explorer kullananlar sisteme giriş yapamayacak.

user-agent blocking rule, cloudflare tarayıcı engelleme, internet explorer nasıl engellenir.

CloudFlare Firewall Kullanarak Internet Explorer Nasıl Engellenir?

Firewall Kuralları ile engelleme yapmak isterseniz, aşağıdaki parametreler işinize oldukça yarayacaktır. Bu noktada işletim sistemine göre yapmış olduğumuz ayrımları da ayrıca ekliyoruz.

(http.user_agent eq "Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko") or
(http.user_agent eq "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko") or
(http.user_agent eq "Mozilla/5.0 (Windows NT 6.2; Trident/7.0; rv:11.0) like Gecko") or
(http.user_agent eq "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko") or
(http.user_agent eq "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko") or
(http.user_agent contains "MSIE") 
Plaintext

CloudFlare Page Rules İle Karmaşık URL Yönlendirmeleri Nasıl Yapılır?

Bir URL’i ezberlemesi insanlar için çok zordur. Bu sebeple gidip ya favorileri yada direk alan adını ezberleriz bu URL’ler başından beri kullanıcıların kullanması için değildi, genellikle sunucunun yararına otomatik olarak oluşturuldu ve kullanıldı. “Ne diyor bu adam yaaa” dediğinizi duyar gibiyim, evet sizin anlamanız için oluşturulmuyor ama gün sonunda biz SEO diyerek okunabilir bir hale sokuyoruz, normalde her yerinde query string geçer.

Tamam tamam bunu bir görsel ile anlatalım.

moz url nedir, url yapisi tanım, url yapısını anlatan kopya kağıdı

Tamda ben bu yazıyı kaleme aldığım sıralarda CloudFlare yeni bir özelliğini duyurdu. Dynamic URL Rewriting at the edge with Cloudflare Dinamik bir şekilde istediğiniz her yere yeniden yönlendirme komutları oluşturabilirsiniz. Bunu yaparken size o kadar esneklik sağlar ki kimi zaman web sunucularda yapması çile olan kuralları burada bir çırpıda oluşturabilirsiniz.

İşlemlere başlamadan hemen önce CloudFlare hesabınıza giriş yapın ve aşağıdaki ayarları açın. “Rules > Settings” rotasında görebilirsiniz.

cloudflare dinamik url yapılandırma, cloudflare url normalization, url normalizasyonu

Şimdi bu özelliğimizi açtık artık dönüştürülmüş olan bütün URL’ler bizim okuyabileceğimiz şekilde olacak nasıl mı?

URLNormalleştirilmiş URL
www.example.com/hello/www.example.com/hello/
www.example.com/%68ellowww.example.com/hello
www.example.com\hellowww.example.com/hello
www.example.com/./lang//en/hello./www.example.com/lang/en/hello./

Yani günün sonunda düzgün bir biçimde okunabilir ve anlaşılır bir URL elimize geçecek. Oha lan süper bir olay dimi URL yeniden yazma, istek web sunucusu tarafından alındığında gerçekleşir. Bağlantıda oluşacak bir yavaşlık veya web sunucusunun bu isteği düzgün algılamaması sonucunda pek çok hatalar meydana gelir. Web sunucusu doğru verileri oluşturulan parametrelere göre alır ve ardından tarayıcının adres çubuğundaki URL’de değişiklik yaparak tarayıcıya gönderir.

Aslında her şey tarayıcıya gönderilen bir Location başlığından ibarettir.

yönlendirme yapısı, location parametresi, http location headers

CloudFlare Statik URL Yönlendirme

Kullanıcıların HTTP isteklerinin doğru bir şekilde eşleşmesine statik veya dinamik rewrite kuralları kullanarak URI Path ve/veya Query Stringlerde değişiklik yapmasına olanak tanır. İstek web sitenize uğramadan cloudflare tarafından gerçekleştirilir ve kişi gerekli rotalara yönlendirilebilir. Statik bir rewrite, belirtilen bir URI Path/Query String diğerine değiştirir.

cloudflare statik yönlendirme örneği, statik yönlendirme nedir

İsterseniz bu yönlendirme işlemlerini belirli bir IP adresinden tutunda belirli bir ülkeye de yapabilirsiniz.

CloudFlare Dinamik URL Yönlendirme

Ne demiştik aklınızın kestiği ve mantıklı olan bütün yönlendirmeleri yapabilirdik. Bunu yapmak için biraz regex biraz CloudFlare functions kullanıcaz.

Öncelikli olarak diyeceğiz ki sonu .html olan içerikler ile eşleşirse yeni rotaya gitsin. Söylemesi kadar yazması da aslında kolay.

ends_with(http.request.uri.path, ".html")

Bu işlemin sonucu “True” olarak geldiğinde ise dinamik yönlendirmeye sokarak yeni rotasını belirleyebiliriz.

regex_replace(http.request.uri.path,"^/*.html","/${0}")

Kuralın son hali panel üzerinde şu şekilde gözükecek

cloudflare dinamik yönlendirme, dinamik rewrite,dynamic rewrite rules

Aynı kuralı ayrıca “Page Rule” sekmesinden aşağıdaki gibi hazırlayabiliriz.

cloudflare page rules, cloudflare sayfa yönlendirme, cloudflare üzerinden sayfaların yönlendirilmesi

Yukarda az buçuk bahsettiğimiz normalizasyon işlemi olası bir saldırı vektörünü kapatan yeni bir özelliktir. Bu özellik, kötü niyetli kişilerin, HTTP isteklerinde URL kodlaması kullanarak Cloudflare ürünlerindeki güvenlik kurallarını(WAF vb) atlatılmasını önler.

Bu gelişmiş koruma yöntemi, URL kodlamasının güvenlik özelliklerini atlamak için kullanılamamasını sağlar. Ek olarak, tüm gelen trafiği standart bir formatta normalleştirerek kullanıcı deneyimini iyileştirir.

UFW Kullanarak CloudFlare Trafiğinin Kabul Edilmesi

Vakti zamanın’da CloudFlare kullanan bir web sitesinin yanlış yönlendirmeden doğan sızıntıyı, CloudFlare arkasında Sunucu IP’lerini açığa çıkarmak adlı makalemde açıklamış.

Genel olarak sızıntıyı nasıl çözebileceğinizden kısaca bahsetmiştim. Şimdi sıra geldi iptables ile sadece cloudflare üzerinden gelen trafiğin kabul edilmesini göstermeye.

#!/bin/sh
curl -s https://www.cloudflare.com/ips-v4 -o /tmp/cf_ips
curl -s https://www.cloudflare.com/ips-v6 >> /tmp/cf_ips
ufw allow from 94.55.146.204/32 comment 'Mertcan Home'
for cfip in `cat /tmp/cf_ips`; do ufw allow proto tcp from $cfip to any port 80,443 comment 'Cloudflare IP'; done
# Reload
ufw reload > /dev/null

Bu işlemleri yaptığınız andan itibaren makina sadece SSH bağlantısıyla size yanıt verecek onun dışında dışarıya sadece CloudFlare ile çıkış sağlanacak böylelikle IP aralıklarını tarayan botlara vb uygulamalara yanıt verilmeyeceği içinde leak imkanı kalmayacak. OSINT teknikleri ile bulunması zorlaşmış olacak.

Bunun dışında geçmişte kullanılan IP adreslerini tutan oldukça fazla yer olduğu için bu işlemlerden sonra IP değişikliği yapmanızı şiddetle öneriyorum.

CloudFlare Web Analytics Nedir? Nasıl Kullanılır?

Eylül ayında, tüm web için yeni ve ücretsiz bir Web Analytics ürününü Cloudflare yetkilileri duyurmuştu ve sadece pro hesaplar kullanabiliyordu. Bugün ise, DNS ayarlarınızı değiştirmeden herkesin kullanabileceği Web Analytics uygulamasını duyurdular.

cloudflare web analitik görseli, cloudflare web analitik nasıl kullanılır.
https://blog.cloudflare.com/privacy-first-web-analytics/

Popüler analitik araçları reklama dayalı bir iş modeli ile çalıştığını biliyoruz, bu araçları kullandığımızda kullanıcıların verilerinin reklam modellerine göre kullanılmasına göz yummuş oluyoruz, yani aslında ürün biziz. İşte bu çekincelerin olduğu günümüz şartlarında alternatif birilerinin ortaya çıkıyor olması çok güzel.

Bu noktada CloudFlare‘in geliştirdiği ücretsiz web analitik aracını kullanmaya başlayacağız. Hem ücretsiz hemde kullanıcı verilerini satmayan bir araç, yani en azından geliştiren ekip ve CEO bu şekilde söylüyor.

Nasıl Kurulur ve Kullanılır?

DNS sunucu adreslerinizi CloudFlare üzerine taşımanıza ve direk olarak DNS alt yapınızı değiştirmenize gerek yok sadece size verilen basit bir js dosyasını sitenize ekleyin yeter.

CloudFlare hesabınıza giriş yaptığınızda ana ekranda bulunan sağ menüde değişiklik olduğunu göreceksiniz, bu listenin en altında bulunan Web Analytics tıklıyorsunuz. Veya direk olarak bu linke tıklayarak kayıt oluyorsunuz.

cloudflare Web Analytics, cloudflare web analiz aracı, cloudflare analiz

Bu aşamada sizden web verilerinin izleneceği site adını soracak alan adınızı veya alt alan adınızı doğru bir şekilde girin. Burada önemli olan nokta URL şeklinde alan adınızın girilmeyecek olması.

cloudflare Web Analytics, cloudflare web analiz aracı, cloudflare analiz

Devam ettiğinizde web sitenize eklemek için bir kod verecek, verdiği bu kodu direk olarak </body> etiketinden önce ekliyoruz

cloudflare web analitik görsel, cloudflare analiz

Ardından istatistikler panelimizde 2-3 dakika geçtikten sonra gözükmeye başlayacak, detaylı bir şekilde analitik verilerinizi görebilirsiniz. Verileriniz anlık olarak güncellenecek ve istediğiniz gibi arama yapabileceksiniz.

cloudflare web analiz örnek data, web data

  1. https://blog.cloudflare.com/privacy-first-web-analytics/
  2. https://blog.cloudflare.com/free-privacy-first-analytics-for-a-better-web/

Plesk Panel’i Hetzner DNS ile Birlikte Kullanma

Hetzner DNS hizmetini geçtiğimiz aylarda yayınlamıştı. Bölge aktarım amacıyla Bind ve AXFR kullanarak DNS yönetimini Plesk üzerinden Hetzner’a bağlayıp aktarım sağlayabilirsiniz. Bunu yapabilmek için öncelikli olarak Hetzner’ın networkü üzerinde bir sunucudan DNS isteklerini yönlendirmelisiniz.

Plesk DNS Yönetimi

Öncelikle, Hetzner DNS sunucularına bölge aktarımına izin vermelisiniz ve Plesk sunucusunda DNS şablonunuzu ayarlamalısınız.

Bunu yapmak için, Plesk sunucunuz da oturum açın ve “Tools & Settings” seçin

plesk dns zone transfer ayarlaması

“General Settings” sekmesinde yer alan “DNS Template” sekmesine gidin.

plesk general settings, genel ayarlarda dns yapılandırma, plesk dns yapılandırma

Bu sayfada yer alan “Transfer Restrictions Template” seçeneğine tıklayın.

Common Allow Zone Transfer ACL, plesk zone transfer nasıl yapılır, zone transfer yapmak

Aşağıda yer alan 3 IP adresini ekleyin;

  • 193.47.99.3
  • 213.133.105.6
  • 213.239.242.238
hetzner zone transfer, hetzner dns plesk ayarı, hetznerde plesk panel dns ayarları

Ardından DNS olarak Hetzner DNS sunucularını girmemiz gerekiyor, Kayıt Türü olarak “NS” ve ad sunucusu olarak Hetzner’ın 3 ad sunucusunu gireceğiz, şu şekilde gözükecek

zone transferin son aşaması, hetzner dns tanımlama, hetzner dns sunucusu nasıl tanımlanır
  • helium.ns.hetzner.de
  • hydrogen.ns.hetzner.com
  • oxygen.ns.hetzner.com

Son olarak “DNS Template” alanında şu şekilde gözükecek.

dns template plesk hetzner dns on gosterim son ayar SnTXeKp

Plesk tarafında yapacağımız ayarlar bitti, şimdi Hetzner DNS paneline uğruyoruz ve alan adımızı tanımlıyoruz. Bunun için “Add new zone” tıklayın alan adınızı yazın ve “Secondary” seçeneğini seçin. “Continue” deyip ikinci aşamaya geçin.

hetzner dns paneli alan adi ekleme zone transfer 6BuHEUM

Sonraki sayfada verilen açılır menüden Plesk sunucunuzu seçin ve “Add Server” ile onaylayın daha sonra ve “Continue” deyip devam edin.

plesk panel hetzner dns, hetznerda dns yapılandırma, hetzner dns nasıl yapılandırılır.

Bundan sonra, alanın başarıyla eklendiğini ve yeşil bir şekilde “Verified” yazdığını göreceksiniz.

hetzner dns plesk ayarı, hetzner dns secondary settings, hetzner dns ayarları

Artık DNS ayarlarınızı Plesk panel üzerinden yapabilirsiniz, Hetzner DNS panelini kullanmanıza gerek yok. Eklemiş olduğunuz 3 DNS adresi de otomatik olarak Plesk üzerinde yapılan değişiklikleri çekecek ve uygulayacaktır. Alan adınızda aşağıdaki üç DNS sunucusunu kullanmanız yeterli olacaktır. Tüm verilerin doğru olduğundan emin olduktan sonra, alan adınızı kayıt şirketinizde güncelleye bilirsiniz.

hydrogen.ns.hetzner.com.213.133.100.982a01:4f8:0:1::add:1098
oxygen.ns.hetzner.com.88.198.229.1922a01:4f8:0:1::add:2992
helium.ns.hetzner.de.193.47.99.52001:67c:192c::add:5

Hetzner Cloud Sunucu Üzerine Plesk Panel Nasıl Kurulur?

Öncelikle, Hetzner Bulut Konsolu\’na giriş yapın veya kaydolun, kaydolmak isterseniz referansım dan faydalanın ve 20 Euro tutarındaki kupon hesabınıza otomatik olarak tanımlansın.

Bir proje seçin, ardından Server ve ardından Add Server ye tıklayın. Sonraki sayfada, size uygun olan konumu seçebilirsiniz ben tercihen Nuremberg seçiyorum ama diğer konumlarda hiç fena değil.

Şimdi sıra işletim sistemi tercihine geldi bunun için Plesk tarafından desteklenen resmi bir ISO\’ya ihtiyacınız olacak. En son yazılım gereksinimlerinin tümü Plesk sürüm notlarında yer alıyor, kurulum için bunlardan bir tanesini seçebilirsiniz. Ben her zaman Debian 10 seçiyorum.

hetzner

Ardından Type alanından sunucunun türünü seçin. Bu, Standart(CX serisi veya CPX serisi AMD) veya Özel(CCX) olabilir. Plesk donanım gereksinimlerine bağlı olarak her ikisinden birini seçebilirsiniz.

hetzner

Özelleştirme ihtiyacı duymuyorsanız Volume, Network, Additional features ve SSH Key alanlarını dokunmadan olduğu gibi bırakabilirsiniz.

Name için doğrudan ana bilgisayar adını girmenizi tavsiye ederim FQDN destekli olmasına özen gösterin, örneğin: mars.mertcangokgoz.com.

Ardından Create & Buy Now tıklayın. Yaklaşık 20 saniye sonra, Hetzner\’den sunucunuzun çalışır durumda olduğunu belirten bir e-posta alacaksınız SSH bağlantı bilgileriniz yer alacak. SSH Key tanımlaması yaptıysanız bu e-postayı almayacağınızı hatırlatırım.

Plesk Kurulumu

Zaten kayıtlı bir alan alanınız varsa ve bir DNS sunucusuna bağlıysa, IP\’yi verilen alana yönlendirmelisiniz. Hetzner\’dan aldığınız e-postayı açın ve mesajda bulunan kimlik bilgileriyle verilen IP\’ye bağlanın. İlk girişte şifrenizi güvenlik sebebiyle değiştirmeniz gerekecek.

Bunları yaptıktan hemen sonra aşağıdaki işlemi gerçekleştirin.

sh <(curl https://autoinstall.plesk.com/one-click-installer || wget -O - https://autoinstall.plesk.com/one-click-installer)

Bu komut, sunucunuza Plesk\'i indirecek ve çalıştıracak. Artık setup dosyasındaki seçenekleri değiştirebilir veya sadece varsayılan ayarları kullanabilirsiniz. Kurulum sunucu özelliklerinize bağlı olarak yaklaşık 15 dakika sürecek. Kurulum tamamlandıktan sonra aşağıdaki gibi bir mesaj göreceksiniz.


Congratulations!
The installation has been finished. Plesk is now running on your server.
To complete the configuration process, browse either of URLs:
* 
* 
Use the username 'admin' to log in. To log in as 'admin', use the 'plesk login' command.
You can also log in as 'root' using your 'root' password.
Use the 'plesk' command to manage the server. Run 'plesk help' for more info.
Use the following commands to start and stop the Plesk web interface:
'service psa start' and 'service psa stop' respectively.
If you would like to migrate your subscriptions from other hosting panel
or older Plesk version to this server, please check out our assistance
options: https://www.plesk.com/professional-services/
The changes were applied successfully.

Şimdi, size verdiği URL ile kurulumu tamamlayın. Zaten bir lisansınız varsa, bunu tahsis edilen alana yapıştırabilirsiniz. Sadece Plesk\'i test etmek istiyorsanız, o sayfadaki Tam özellikli bir deneme lisansıyla devam et seçeneğini seçin.

hetzner

Unutmayın ki Hetzner bulut sunucuları için Plesk lisansı sunmamaktadır. Robot üzerinden satın alabilir veya dışarıdan tedarik edebilirsiniz. Enter Plesk ile devam ediyorsunuz ve kurulum işleminin sonuçlanmasını bekliyoruz.

plesk

Kurulum başarılı bir şekilde tamamlandı, artık Plesk kontrol panelini istediğiniz gibi kullanmakta özgürsünüz.

hetzner

Hetzner Sunucularda Statik IP Nasıl Yapılandırılır?

Benden destek istenen bir noktada çok fazla gelen sorulardan bir tanesini yanıtlamak istiyorum. Özellikle Hetzner Cloud makinelerinde DHCP üzerinden IP aldığını ancak kuracakları uygulamaların Statik IP üzerinde çalıştığını bahsediyorlar. Normal şartlar altında MAC adresine tanımlı olduğu için IP adresleri Hetzner üzerinde değişmez.

Dedicated’de kullansanız MAC değiştirmediğiniz sürece(ki değiştirdiğiniz an makine kapatılır) aynı IP adresi alınır. ESXi gibi sanallaştırma uygulamaları kurduğunuz zaman sub mac tanımlaması yapsanız bile ana makina IP’si değişmez.

Sabitleme aşamasında /etc/network/interfaces dosyası içerisini aşağıdaki gibi değiştirmeniz gerekiyor. Bu noktada size verilen ip adresini tanımlamalısınız.

root@main:/etc/network# cat interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5)

# Include files from /etc/network/interfaces.d:
#source /etc/network/interfaces.d/*
auto eth0
iface eth0 inet static
        address <ip_address>
        netmask 255.255.255.255
        gateway 172.31.1.1
        pointopoint 172.31.1.1
        dns-nameservers 185.12.64.1 185.12.64.2


iface eth0 inet6 static
        address <subnet>
        netmask 64
        gateway fe80::1

# The loopback network interface
auto lo
iface lo inet loopback
ShellScript

Ardından kayıt edip çıkış yapın, sunucuyu yeniden başlattığınızda tekrar DHCP olarak yapılandırdığını göreceksiniz bunu iptal etmek için touch /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg diyorsunuz ve içerisine aşağıdakini ekliyorsunuz.

root@main:/etc/network# cat /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
network:
  config: disabled
ShellScript

Otomatik yapılandırma dosyasını interfaces.d içerisinde yer aldığını ve kalıcı olarak silmeyi unutmayın.

Amazon S3 Üzerinde CORS Ayarları Nasıl Yapılır?

Amazon S3 Üzerinden push CDN kullanan ve CloudFront tarafında içerik dağıtımı sağlandığında fontların dağıtımında CORS hatası alabilirsiniz. Bu olağan ve herkesin karşılaştığı bir durum olmakla birlikte sitenizin içerisinde yer alan ikonların gözükmemesine ve yazı tipi sorunlarına sebep olur.

Bu durumun çözümü CloudFront tarafında yapılmayacak olup, dosyaların sunulduğu S3 üzerinde aşağıdaki gerekli yapılandırmayı eklemeniz gerekmektedir.

Origin’e göre gerekli kural setlerini tanımlamanız bu sorununuzun ortadan kaldırılması için yeterlidir. Dosyaların alındığı ve işlem yapıldığı ana origini aşağıdaki gibi tanımlamayı unutmayın.

<CORSConfiguration>
<CORSRule>
<AllowedOrigin>https://mertcangokgoz.com</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
</CORSRule>
</CORSConfiguration>

Ardından ziyaretçiler için bütün kaynaklardan gelen istekleri kabul etmeniz sorununuzun kalıcı olarak çözümü olacaktır.

CloudFlare Workers Kullanarak Harici Cronjob İşlerinin Yapılması

CloudFlare geçtiğimiz günlerde workers üzerinden zamanlanmış işleri yapmaya imkan tanıyan özelliğini Introducing Cron Triggers for Cloudflare Workers adıyla duyurdu. Bu özellik sayesinde yapılması gereken zamanlanmış işleri CloudFlare üzerinden gerçekleştirebiliyoruz.

Wordpress’te özellikle insanların başını ağrıtan dahili cronjob ile anlatacağım nasıl kullanılacağını bu özelliğin, normal şartlar altında wordpress’de sayfaya birisi girdiği anda varsa cronjob işlemleri tetiklenir, yönetici sayfası veya yazılar fark etmeksizin bu özellik çalışır.

Peki bu servis ücretli mi? Tabii ki de hayır

Ana sayfada sağda “Workers” alanına giriş yaparak bu süreci çok basit bir şekilde başlatabilirsiniz.

cloudflare workers giris, cloudflare cronjob trigger

Hemen “Create Worker” diyoruz.

cloudflare create worker, cloudflare worker oluşturma

Size kocaman bir alanda solda javascript kod yazabileceğiniz bir alan sağda ise bunun ön izlemesi olacak, soldaki alana aşağıdaki kodumuzu giriyoruz, zamanlanmış görevi oluşturuyoruz. Kendinize göre bunu düzenlemeyi unutmayın.

addEventListener("scheduled", event =>; { event.waitUntil(handleScheduled(event)) }) async function handleScheduled(event) { await fetch("https://mertcangokgoz.com/wp-cron.php?doing_wp_cron") }

Şu şekilde gözükecek

cloudflare worker deploy, worker deployment

Ardından “Save and Deploy” tuşuna basıyorsunuz ve güzelce workerınız kullanıma hazır oluyor. Ardından workerımızın alanına geri geliyoruz. Sıra zamanlanmış triggerimizi ayarlamaya geldi. Workerın altında yer alan “Triggers” alanına geçiş yapıyoruz.

cloudflare cron trigger, zamanlanmış workerlar, cloudflare trigger

“Add Cron Trigger” diyoruz ve artık normal cronjob ayarlar gibi ne kadar zaman aralıkla çalışacağını seçiyoruz, ben wordpress’te bu örneği anlattığım için 5 dakikalık aralar ile çalışmasını istiyorum.

trigger ayarlama, cronjob zamanlama, cloudflare cronjob settings

Kaydettiğimiz andan itibaren worker belirlenen sürelerde ayağa kalkacak ve işini yapıp kapanacak. Başınıza iş olacak bütün cronjob işlerini bu şekilde yapabilirsiniz.

Wordpress WP Cron Nasıl Kapatılır?

Tüm bu işlemlerden sonra mümkünse Wordpress’in kendi özelliklerinden bir tanesi olan WP Cron kapatmanızdır. Bu sayede artık Cronjob işleri kullanıcıların sayfa gezintilerinde değil yukarıda belirlediğimiz aralıklarla çalışacak. Cron ile ilgili sorunlarınızın pek çoğunuda bu şekilde çözüme kavuşturabilirsiniz.

define('DISABLE_WP_CRON', true);