Takip et

Otomatik WordPress LEMP Sunucu Kurulumu: AWS ve Ansible ile SSL Entegrasyonu

Manuel sunucu kurulumları zaman alıcı, hataya açık ve sıkıcı olabilir. Özellikle bir WordPress sitesini LEMP (Linux, Nginx, MySQL, PHP-FPM) yığınıyla AWS üzerine kurarken bu süreç daha da karmaşıklaşır. Peki, bu karmaşıklığı tamamen otomatikleştirmek, SSL sertifikasını bile tek bir komutla entegre etmek mümkün olsaydı ne düşünürdünüz? İşte bu makale, AWS üzerinde güçlü, güvenli ve performanslı bir WordPress LEMP sunucusunu Ansible kullanarak nasıl tamamen otomatik bir şekilde kuracağınızı adım adım açıklıyor.

Bir web sitesi kurmak günümüzde her zamankinden daha kolay, ancak performanstan, güvenlikten ve sürdürülebilirlikten ödün vermeden bunu başarmak hala önemli bir meydan okuma. Geleneksel olarak, bir WordPress sitesi için sunucu ortamı kurmak, birçok manuel adımı içeren uzun bir süreçtir: işletim sistemi kurulumu, web sunucusu (Apache veya Nginx), veritabanı (MySQL/MariaDB), PHP ve ilgili kütüphanelerin konfigürasyonu, ardından WordPress’in kendisinin kurulumu ve son olarak SSL sertifikasının entegrasyonu. Her bir adımda potansiyel hata noktaları bulunur ve bu süreç, özellikle birden fazla sunucu yönetiyorsanız veya sık sık yeni ortamlar kurmanız gerekiyorsa, hızla bir kabusa dönüşebilir.

İşte bu noktada otomasyon devreye girer ve manuel süreçlerin tüm dezavantajlarını ortadan kaldırır. Ansible gibi araçlarla sunucu kurulumunu otomatik hale getirmek, zamandan tasarruf etmenizi sağlamakla kalmaz, aynı zamanda insan kaynaklı hataları minimize eder. Her kurulumun aynı şekilde, aynı konfigürasyonlarla yapılmasını garanti eder, bu da tutarlılık ve güvenilirlik anlamına gelir. Örneğin, yeni bir test ortamı kurmanız gerektiğinde veya mevcut sunucunuzda bir sorun oluştuğunda hızla yeni bir sunucu ayağa kaldırabilirsiniz. Bu yetenek, iş sürekliliği ve felaket kurtarma senaryolarında hayati önem taşır.

LEMP yığını (Linux, Nginx, MySQL, PHP-FPM), özellikle yüksek trafikli WordPress siteleri için mükemmel bir seçimdir. Nginx, hafifliği ve eş zamanlı bağlantıları yüksek verimlilikle yönetebilme yeteneği sayesinde, Apache’ye kıyasla genellikle daha iyi performans sunar. PHP-FPM (FastCGI Process Manager) ise PHP uygulamalarının daha hızlı çalışmasını sağlayarak WordPress performansını doğrudan artırır. AWS (Amazon Web Services) platformu ise bu yığını barındırmak için sınırsız esneklik, ölçeklenebilirlik ve küresel erişim sunar. İhtiyaçlarınıza göre sunucu kaynaklarını kolayca ayarlayabilir, yük dengeleme veya otomatik ölçeklendirme gibi ileri düzey özellikleri sorunsuz bir şekilde entegre edebilirsiniz. Son olarak, SSL sertifikası (HTTPS), yalnızca site güvenliği için değil, aynı zamanda arama motoru optimizasyonu (SEO) ve kullanıcı güveni için de vazgeçilmezdir. Otomatik SSL entegrasyonu, web sitenizin modern web standartlarına uygun olmasını garantiler. Bu kombinasyonla, manuel kurulumların getirdiği baş ağrılarından kurtularak, sadece web sitenizin içeriğine ve büyümesine odaklanabilirsiniz.

Temel Taşlar: LEMP, AWS ve Ansible Kavramlarına Hızlı Bir Bakış

Tam otomatik bir WordPress LEMP sunucusu kurma yolculuğuna çıkmadan önce, projemizin temel yapı taşlarını oluşturan teknolojileri anlamak önemlidir. Bu bölümde, LEMP yığını, AWS bulut platformu ve Ansible otomasyon aracının ne anlama geldiğini ve neden bu proje için ideal olduklarını keşfedeceğiz.

LEMP Nedir ve Neden WordPress İçin İdealdir?

LEMP, dört ana açık kaynak yazılım bileşeninin baş harflerinden oluşan bir akronimdir: Linux (işletim sistemi), Enginx (web sunucusu, “Engine-X” olarak telaffuz edilir), MySQL/MariaDB (veritabanı yönetim sistemi) ve PHP-FPM (PHP FastCGI Process Manager). Bu yığın, dinamik web uygulamaları sunmak için güçlü, esnek ve yüksek performanslı bir ortam sağlar.

  • Linux: Sağlamlığı, güvenliği ve geniş topluluk desteğiyle bilinen açık kaynaklı bir işletim sistemidir. Ubuntu Server gibi dağıtımlar, LEMP yığını için popüler ve güvenilir bir temel oluşturur.
  • Nginx: Geleneksel web sunucusu Apache’ye alternatif olarak ortaya çıkmıştır. Nginx, olay tabanlı (event-driven) mimarisi sayesinde, yüksek eş zamanlı bağlantı sayılarını düşük bellek tüketimiyle işleyebilir. Bu, özellikle WordPress gibi dinamik ve içerik yoğun sitelerde, ziyaretçi yükü arttığında bile sitenizin hızlı ve duyarlı kalmasını sağlar. Nginx ayrıca bir ters proxy (reverse proxy) olarak da kullanılabilir, bu da önbellekleme ve yük dengeleme gibi ileri düzey konfigürasyonlara olanak tanır.
  • MySQL/MariaDB: Dünya genelinde en popüler açık kaynak ilişkisel veritabanı yönetim sistemidir. WordPress, tüm site içeriğini, kullanıcı bilgilerini ve ayarlarını bu veritabanında depolar. MariaDB, MySQL’in topluluk tarafından geliştirilen bir fork’udur ve genellikle MySQL’e kıyasla daha iyi performans ve ek özellikler sunar.
  • PHP-FPM: PHP’nin web sunucusuyla etkileşime girmesini sağlayan FastCGI uygulamasının bir yöneticisidir. Geleneksel PHP modüllerine göre daha verimli kaynak kullanımı ve daha iyi performans sunar. Nginx doğrudan PHP’yi çalıştıramadığı için, PHP-FPM, Nginx’in PHP betiklerini işlemesi için bir arayüz görevi görür, her PHP isteği için ayrı bir işlem havuzu (pool) oluşturarak izolasyon ve daha iyi performans sağlar.

WordPress, PHP ve MySQL’e dayandığı için LEMP yığınıyla mükemmel bir uyum içindedir. Nginx’in hızlı statik içerik sunumu ve PHP-FPM’in dinamik içeriği etkin bir şekilde işlemesi, WordPress sitenizin ziyaretçiler için hızlı ve akıcı bir deneyim sunmasını sağlar.

AWS (Amazon Web Services) Bize Ne Sunuyor?

AWS, dünyanın en kapsamlı ve yaygın olarak benimsenen bulut platformudur. Sunuculardan (EC2) veritabanlarına, depolamadan ağ hizmetlerine kadar binlerce farklı hizmet sunar. Projemiz için özellikle önemli olan AWS hizmetleri şunlardır:

  • Amazon EC2 (Elastic Compute Cloud): AWS’nin sanal sunucu hizmetidir. İhtiyacınız olan işlem gücünü, belleği ve depolama alanını seçerek saniyeler içinde bir Linux sunucusu başlatabilirsiniz. Esnekliği sayesinde, sunucunuzun boyutunu ve özelliklerini kolayca değiştirebilirsiniz.
  • Amazon VPC (Virtual Private Cloud): Kendi sanal ağınızı AWS üzerinde oluşturmanızı sağlar. Bu sayede sunucularınızın ağ yapılandırmasını, IP adres aralıklarını, alt ağları ve yönlendirme tablolarını kontrol edebilirsiniz. Güvenli ve izole bir ortam sunar.
  • AWS Security Groups: Sanal güvenlik duvarlarıdır. EC2 örneklerinize gelen ve giden trafiği kontrol etmenizi sağlar. Yalnızca belirli portlardan (örn. SSH için 22, HTTP için 80, HTTPS için 443) ve belirli IP adreslerinden gelen bağlantılara izin vererek sunucunuzu güvende tutabilirsiniz.
  • Elastic IP: Dinamik IP adreslerinin aksine, bir Elastic IP adresi AWS hesabınıza atanır ve bir EC2 örneği yeniden başlatılsa bile değişmez. Bu, alan adınızı kalıcı bir IP adresine yönlendirmenizi sağlar.

AWS, “kullandığın kadar öde” modeliyle çalışır, bu da başlangıç maliyetlerini düşürür ve sadece kullandığınız kaynaklar için ödeme yaparsınız. Bu, özellikle küçük ve orta ölçekli işletmeler için maliyet etkin bir çözümdür.

Ansible ile Otomasyonun Gücü

Ansible, BT otomasyonu, konfigürasyon yönetimi ve uygulama dağıtımı için tasarlanmış açık kaynaklı bir araçtır. Python ile yazılmıştır ve en büyük avantajlarından biri, yönetilen sunucularda herhangi bir aracı (agent) kurma gereksinimi olmamasıdır. Bunun yerine, SSH protokolü üzerinden sunuculara bağlanır ve komutları çalıştırır.

Ansible’ın temel özellikleri:

  • Agentless (Aracısız): Hedef sunucularda özel bir yazılım çalıştırmanıza gerek kalmaz. Bu, kurulumu basitleştirir ve güvenlik risklerini azaltır.
  • Basit ve Okunabilir: Konfigürasyonlar, playbook’lar adı verilen YAML dosyaları aracılığıyla tanımlanır. Bu dosyalar oldukça okunabilir ve insan dostudur.
  • İdempotent (Tekrar Tekrar Uygulanabilir): Bir Ansible playbook’unu birden çok kez çalıştırmak, her zaman aynı sonuca yol açar. Yani, bir kaynak zaten istenen durumdaysa, Ansible herhangi bir değişiklik yapmaz. Bu, konfigürasyonlarınızı güvenle uygulamanızı sağlar.
  • Modüler Yapı: Ansible, çok sayıda yerleşik modülle gelir (örn. apt, yum, service, copy, template). Bu modüller, çeşitli görevleri gerçekleştirmek için kullanılabilir.

Ansible ile, bir sunucunun kurulumunu, yazılım paketlerini, konfigürasyon dosyalarını ve hatta bir WordPress sitesini uçtan uca tamamen otomatik hale getirebilirsiniz. Bu, manuel müdahaleye olan ihtiyacı ortadan kaldırır ve sunucu yönetimini daha verimli ve hatasız hale getirir.

AWS Ortamının Hazırlanması ve Ansible Kurulumu: Adım Adım

Otomatik LEMP sunucunuzu kurmaya başlamadan önce, temel AWS altyapısını hazırlamamız ve Ansible’ı yerel makinemize kurmamız gerekiyor. Bu adımlar, playbook’umuzun sorunsuz bir şekilde çalışabilmesi için kritik öneme sahiptir.

AWS EC2 Sanal Sunucu Oluşturma

İlk olarak, WordPress sitemizi barındıracak sanal sunucuyu (EC2 instance) AWS üzerinde yapılandıracağız.

  1. AWS Hesabı Oluşturma/Giriş Yapma: AWS yönetim konsoluna giriş yapın. Henüz bir hesabınız yoksa, AWS Free Tier ile ücretsiz bir hesap oluşturabilirsiniz.
  2. EC2 Hizmetine Gitme: Konsol arama çubuğuna “EC2” yazın ve hizmeti seçin. Ardından sol menüden “Instances” (Örnekler) seçeneğine tıklayın ve “Launch instances” (Örnekleri başlat) düğmesine basın.
  3. AMI (Amazon Machine Image) Seçimi: “Ubuntu Server 22.04 LTS (HVM), SSD Volume Type” gibi güncel bir Ubuntu AMI seçin. Bu, LEMP yığını için popüler ve iyi desteklenen bir temeldir.
  4. Instance Tipi Seçimi: Free Tier kapsamında “t2.micro” veya “t3.micro” gibi bir tipi seçebilirsiniz. Gerçek bir site için, trafiğe bağlı olarak daha güçlü bir tip (örn. “t3.medium”) tercih edilebilir.
  5. Ağ Yapılandırması (Network Settings):
    • VPC: Varsayılan VPC’yi kullanabilir veya kendi VPC’nizi oluşturabilirsiniz.
    • Subnet: Public Subnet’i seçin, böylece sunucunuz internetten erişilebilir olur.
    • Auto-assign Public IP: “Enable” (Etkinleştir) olduğundan emin olun, böylece sunucunuza bir genel IP adresi atanır.
    • Security Group (Güvenlik Grubu): Yeni bir güvenlik grubu oluşturun veya mevcut bir tanesini kullanın. Bu güvenlik grubu için aşağıdaki kuralları ekleyin:
      • SSH (Port 22): Kendi IP adresinizden (veya 0.0.0.0/0 test amaçlı, ancak üretim için önerilmez) erişime izin verin.
      • HTTP (Port 80): 0.0.0.0/0 (Her yerden) erişime izin verin.
      • HTTPS (Port 443): 0.0.0.0/0 (Her yerden) erişime izin verin.
  6. Depolama (Storage): Varsayılan depolama (8GB GP2 SSD) çoğu WordPress sitesi için yeterlidir. İhtiyacınıza göre artırabilirsiniz.
  7. Key Pair (Anahtar Çifti) Oluşturma: Sunucunuza SSH ile bağlanmak için bir anahtar çifti oluşturmanız gerekecek. “Create new key pair” (Yeni anahtar çifti oluştur) seçeneğini seçin, bir isim verin ve .pem dosyasını bilgisayarınıza indirin. Bu dosyayı güvende tutun, çünkü sunucuya erişim için tek yolunuz bu olacaktır.
  8. Başlatma: “Launch instance” düğmesine tıklayarak sunucunuzu başlatın. Birkaç dakika içinde sunucunuz hazır olacaktır. Sunucunuzun genel IP adresini veya DNS adını not edin.
  9. Elastic IP Ataması (Opsiyonel ama Önerilir): EC2 kontrol panelinde “Elastic IPs” bölümüne gidin ve yeni bir Elastic IP adresi tahsis edin. Bu IP adresini yeni başlattığınız EC2 örneğine atayın. Böylece, sunucunuz yeniden başlatılsa bile IP adresi değişmeyecektir.
Uzman İpucu: Güvenlik grubunuzdaki SSH portunu (22) sadece kendi IP adresinize açmak, sunucunuza yönelik kaba kuvvet saldırılarını önemli ölçüde azaltacaktır. Eğer dinamik bir IP adresiniz varsa, bir VPN veya AWS Systems Manager Session Manager gibi alternatif bağlantı yöntemlerini düşünebilirsiniz.

Yerel Makinenizde Ansible Kurulumu

Şimdi sıra yerel geliştirme makinemizde Ansible’ı kurmaya geldi. Ansible, Python ile çalıştığı için, sisteminizde Python ve pip (Python paket yöneticisi) kurulu olmalıdır.

  1. Python ve pip Kurulumu (Gerekliyse):

    Çoğu Linux ve macOS sisteminde Python ve pip önceden yüklüdür. Kontrol etmek için:

    
    python3 --version
    pip3 --version
            

    Eğer kurulu değillerse, işletim sisteminize göre kurun. Ubuntu için:

    
    sudo apt update
    sudo apt install python3 python3-pip
            

  2. Ansible Kurulumu:

    pip kullanarak Ansible'ı kolayca kurabilirsiniz:

    
    pip3 install ansible
            

    Kurulumun başarılı olup olmadığını kontrol etmek için:

    
    ansible --version
            

  3. SSH Anahtarının Hazır Olması:

    AWS'den indirdiğiniz .pem dosyasını SSH anahtar dizininize (~/.ssh/) taşıyın ve izinlerini ayarlayın:

    
    mv /path/to/your/key.pem ~/.ssh/your-key-name.pem
    chmod 400 ~/.ssh/your-key-name.pem
            

  4. SSH Yapılandırması (Opsiyonel ama Tavsiye Edilir):

    ~/.ssh/config dosyanızı düzenleyerek veya oluşturarak sunucunuza daha kolay bağlanabilirsiniz. Bu, Ansible'ın da anahtarınızı otomatik olarak bulmasına yardımcı olur.

    
    Host your_aws_server
        HostName YOUR_EC2_PUBLIC_IP_OR_DNS
        User ubuntu
        IdentityFile ~/.ssh/your-key-name.pem
        StrictHostKeyChecking no # Sadece ilk bağlantıda kolaylık için, sonra kaldırılmalı veya yes yapılmalı
            

    YOUR_EC2_PUBLIC_IP_OR_DNS yerine EC2 sunucunuzun Genel IP adresini veya DNS adını, your-key-name.pem yerine anahtar dosyanızın adını yazın. Artık sunucunuza ssh your_aws_server komutuyla bağlanabilirsiniz.

Bu adımlarla, AWS üzerinde bir sanal sunucu oluşturduk ve Ansible'ı yerel makinemize kurarak sunucuya bağlanmaya hazır hale getirdik. Şimdi sıra, LEMP yığınını ve WordPress'i otomatik olarak kuracak Ansible playbook'umuzu yazmaya geldi.

Ansible Playbook ile Otomatik LEMP Yığını ve WordPress Kurulumu

Şimdi işin kalbine, yani Ansible playbook'larına odaklanma zamanı. Bu bölüm, LEMP bileşenlerini ve WordPress'i otomatik olarak kurmak için adım adım bir Ansible playbook'u nasıl oluşturacağımızı detaylandıracaktır. Amacımız, tek bir Ansible komutuyla bir sunucuyu sıfırdan çalışan bir WordPress sitesine dönüştürmektir.

Ansible Envanter Dosyasının Oluşturulması

Ansible'ın hangi sunucuları yöneteceğini bilmesi için bir envanter dosyasına ihtiyacı vardır. Genellikle bu dosya hosts veya inventory.ini olarak adlandırılır. Projenizin ana dizininde bu dosyayı oluşturalım:


# hosts dosyası
[webservers]
your_aws_server ansible_host=YOUR_EC2_PUBLIC_IP_OR_DNS ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/your-key-name.pem

[all:vars]
ansible_python_interpreter=/usr/bin/python3

Yukarıdaki dosyada:

  • [webservers]: Bu, bir grup sunucuyu tanımlar. Playbook'unuzda bu grubu hedefleyebilirsiniz.
  • your_aws_server: Sunucunuz için verdiğiniz takma addır.
  • ansible_host: EC2 sunucunuzun genel IP adresi veya DNS adı.
  • ansible_user: SSH bağlantısı için kullanılacak kullanıcı adı (Ubuntu AMI'leri için genellikle ubuntu).
  • ansible_ssh_private_key_file: AWS'den indirdiğiniz .pem dosyasının yolu.
  • [all:vars]: Tüm sunucular için global değişkenleri tanımlar. Burada Python yorumlayıcısının yolunu belirtiyoruz.

Bu dosya ile Ansible, sunucunuza nasıl bağlanacağını bilecek.

Temel LEMP Yığını Kurulum Playbook'u

Şimdi lemp-wordpress.yml adında bir Ansible playbook dosyası oluşturalım. Bu playbook, tüm LEMP bileşenlerini kuracak ve WordPress için veritabanını ve dosyaları ayarlayacaktır.


---
- name: WordPress LEMP Sunucusu Kurulumu
  hosts: webservers
  become: yes # Tüm görevleri root yetkileriyle çalıştır
  vars:
    mysql_root_password: "YOUR_MARIADB_ROOT_PASSWORD" # Güçlü bir şifre belirleyin
    wordpress_db_name: "wordpress_db"
    wordpress_db_user: "wordpress_user"
    wordpress_db_password: "YOUR_WORDPRESS_DB_PASSWORD" # Güçlü bir şifre belirleyin
    wordpress_site_name: "example.com" # Alan adınızı girin
    wordpress_install_path: "/var/www/{{ wordpress_site_name }}"

  tasks:
    - name: Sistem paketlerini güncelle
      apt:
        update_cache: yes
        upgrade: dist

    - name: Gerekli LEMP paketlerini ve PHP eklentilerini kur
      apt:
        name:
          - nginx
          - mariadb-server
          - php-fpm
          - php-mysql
          - php-cli
          - php-curl
          - php-gd
          - php-mbstring
          - php-xml
          - php-zip
        state: present

    - name: MariaDB hizmetinin başladığından ve etkin olduğundan emin ol
      service:
        name: mariadb
        state: started
        enabled: yes

    - name: MariaDB root şifresini ayarla ve gereksiz test veritabanlarını kaldır
      community.mysql.mysql_user:
        name: root
        password: "{{ mysql_root_password }}"
        host: "{{ item }}"
        state: present
        login_unix_socket: /var/run/mysqld/mysqld.sock
      loop:
        - "{{ ansible_hostname }}"
        - 127.0.0.1
        - ::1
    - community.mysql.mysql_db:
        name: test
        state: absent
        login_user: root
        login_password: "{{ mysql_root_password }}"

    - name: WordPress veritabanını oluştur
      community.mysql.mysql_db:
        name: "{{ wordpress_db_name }}"
        state: present
        login_user: root
        login_password: "{{ mysql_root_password }}"

    - name: WordPress veritabanı kullanıcısını oluştur ve yetkileri ver
      community.mysql.mysql_user:
        name: "{{ wordpress_db_user }}"
        password: "{{ wordpress_db_password }}"
        priv: "{{ wordpress_db_name }}.*:ALL"
        state: present
        login_user: root
        login_password: "{{ mysql_root_password }}"

    - name: Nginx hizmetinin başladığından ve etkin olduğundan emin ol
      service:
        name: nginx
        state: started
        enabled: yes

    - name: PHP-FPM hizmetinin başladığından ve etkin olduğundan emin ol
      service:
        name: php{{ ansible_facts['php_fpm']['version']['major'] }}-fpm
        state: started
        enabled: yes
      vars:
        ansible_php_fpm_version: "{{ lookup('pipe', 'php-fpm -v | head -n 1 | cut -d \' \' -f 2 | cut -d \'.\' -f 1-2') }}" # PHP-FPM versiyonunu otomatik bul

    - name: Nginx varsayılan siteyi kaldır
      file:
        path: /etc/nginx/sites-enabled/default
        state: absent
      notify: Reload Nginx

    - name: WordPress dizinini oluştur
      ansible.builtin.file:
        path: "{{ wordpress_install_path }}"
        state: directory
        mode: '0755'
        owner: www-data
        group: www-data

    - name: WordPress'i indir ve çıkar
      ansible.builtin.unarchive:
        src: https://wordpress.org/latest.tar.gz
        dest: "{{ wordpress_install_path }}"
        remote_src: yes
        extra_opts: [--strip-components=1] # Alt klasörden çıkar
        owner: www-data
        group: www-data

    - name: WordPress wp-config.php dosyasını oluştur
      template:
        src: templates/wp-config.php.j2 # Daha sonra oluşturacağımız template dosyası
        dest: "{{ wordpress_install_path }}/wp-config.php"
        owner: www-data
        group: www-data
        mode: '0644'
      notify: Restart Nginx

    - name: Nginx için WordPress site yapılandırma dosyasını kopyala
      template:
        src: templates/nginx_wordpress.conf.j2 # Daha sonra oluşturacağımız template dosyası
        dest: "/etc/nginx/sites-available/{{ wordpress_site_name }}"
        owner: root
        group: root
        mode: '0644'
      notify: Reload Nginx

    - name: Nginx site yapılandırmasını etkinleştir
      file:
        src: "/etc/nginx/sites-available/{{ wordpress_site_name }}"
        dest: "/etc/nginx/sites-enabled/{{ wordpress_site_name }}"
        state: link
      notify: Reload Nginx

  handlers:
    - name: Reload Nginx
      service:
        name: nginx
        state: reloaded

    - name: Restart Nginx
      service:
        name: nginx
        state: restarted

    - name: Restart PHP-FPM
      service:
        name: php{{ ansible_facts['php_fpm']['version']['major'] }}-fpm
        state: restarted

Not: YOUR_MARIADB_ROOT_PASSWORD, YOUR_WORDPRESS_DB_PASSWORD ve example.com gibi değişkenleri kendi değerlerinizle değiştirin. Güvenlik için güçlü, karmaşık şifreler kullanmanız önemlidir.

Template Dosyalarının Oluşturulması

Playbook'umuzda iki template dosyasına (.j2 uzantılı) atıfta bulunduk: wp-config.php.j2 ve nginx_wordpress.conf.j2. Bunları playbook dosyanızla aynı dizinde "templates" adında bir klasör oluşturup içine yerleştirin.

1. templates/wp-config.php.j2:


 Database settings - You can get this info from your web host  //
/** The name of the database for WordPress */
define( 'DB_NAME', '{{ wordpress_db_name }}' );

/** MySQL database username */
define( 'DB_USER', '{{ wordpress_db_user }}' );

/** MySQL database password */
define( 'DB_PASSWORD', '{{ wordpress_db_password }}' );

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

/** Database Charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8mb4' );

/** The Database Collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );

/**#@+
 * Authentication Unique Keys and Salts.
 *
 * Change these to different unique phrases!
 * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
 * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
 *
 * @since 2.6.0
 */
define('AUTH_KEY',         '{{ lookup('community.general.random_string', length=64, special=True) }}');
define('SECURE_AUTH_KEY',  '{{ lookup('community.general.random_string', length=64, special=True) }}');
define('LOGGED_IN_KEY',    '{{ lookup('community.general.random_string', length=64, special=True) }}');
define('NONCE_KEY',        '{{ lookup('community.general.random_string', length=64, special=True) }}');
define('AUTH_SALT',        '{{ lookup('community.general.random_string', length=64, special=True) }}');
define('SECURE_AUTH_SALT', '{{ lookup('community.general.random_string', length=64, special=True) }}');
define('LOGGED_IN_SALT',   '{{ lookup('community.general.random_string', length=64, special=True) }}');
define('NONCE_SALT',       '{{ lookup('community.general.random_string', length=64, special=True) }}');

/**#@-*/

/**
 * WordPress Database Table prefix.
 *
 * You can have multiple installations in one database if you give each
 * a unique prefix. Only numbers, letters, and underscores please!
 */
$table_prefix = 'wp_'; // You might want to change this for security

/**
 * For developers: WordPress debugging mode.
 *
 * Change this to true to enable the display of notices during development.
 * It is strongly recommended that plugin and theme developers use WP_DEBUG
 * in their development environments.
 *
 * For information on other constants that can be used for debugging,
 * visit the documentation.
 *
 * @link https://wordpress.org/support/article/debugging-in-wordpress/
 */
define( 'WP_DEBUG', false );

/* Add any custom values between this line and the "Happy blogging!" line. */



/* That's all, stop editing! Happy blogging. */

/** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) ) {
	define( 'ABSPATH', __DIR__ . '/' );
}

/** Sets up WordPress vars and included files. */
require_once ABSPATH . 'wp-settings.php';

Bu template, Ansible değişkenlerini kullanarak veritabanı bilgilerini otomatik olarak dolduracak ve community.general.random_string lookup plugin'i ile WordPress güvenlik anahtarlarını rastgele oluşturacaktır. Bu, kurulumunuzu daha güvenli hale getirir.

2. templates/nginx_wordpress.conf.j2:


server {
    listen 80;
    listen [::]:80;
    server_name {{ wordpress_site_name }} www.{{ wordpress_site_name }};
    root {{ wordpress_install_path }};
    index index.php index.html index.htm;

    error_log /var/log/nginx/{{ wordpress_site_name }}_error.log error;
    access_log /var/log/nginx/{{ wordpress_site_name }}_access.log;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php{{ ansible_facts['php_fpm']['version']['major'] }}-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # Statik dosyalar için önbellekleme
    location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg|eot)$ {
        expires 365d;
        log_not_found off;
    }

    # favicon.ico için log kaydı tutma
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    # robots.txt için log kaydı tutma
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    # PHP FPM ile güvenlik
    location ~ /\.ht {
        deny all;
    }

    # .git gibi gizli dosyaları engelle
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }

    # WordPress güvenlik kuralları
    location ~* /(?:wp-content|wp-includes|wp-json)/.*\.php$ {
        deny all;
    }
}

Bu Nginx yapılandırması, WordPress'i doğru şekilde çalıştırmak için gerekli tüm ayarları içerir: PHP-FPM ile entegrasyon, rewrite kuralları, statik dosya önbelleklemesi ve temel güvenlik optimizasyonları. ansible_facts['php_fpm']['version']['major'] değişkeni, sunucudaki kurulu PHP-FPM sürümünü dinamik olarak bulup kullanacaktır.

Playbook'u ve template dosyalarını hazırladıktan sonra, tek yapmanız gereken Ansible'ı çalıştırmak:


ansible-playbook -i hosts lemp-wordpress.yml

Bu komut, tüm görevleri sırayla gerçekleştirecek ve sunucunuzu otomatik olarak yapılandıracaktır. Kurulum tamamlandığında, web tarayıcınızdan alan adınızı (veya EC2 genel IP adresinizi) ziyaret ederek WordPress kurulum sihirbazını görmelisiniz.

Certbot ile Otomatik SSL (HTTPS) Entegrasyonu

Web güvenliği günümüzde bir tercih değil, bir zorunluluktur. SSL (Secure Sockets Layer) sertifikaları, web siteniz ile ziyaretçileriniz arasındaki iletişimi şifreleyerek hassas bilgilerin korunmasını sağlar. Ayrıca, HTTPS (SSL kullanan HTTP), arama motoru sıralamalarında (SEO) bir avantaj sunar ve modern tarayıcılar, SSL olmayan siteleri "Güvenli Değil" olarak işaretleyerek kullanıcı güvenini zedeler. Bu bölümde, ücretsiz ve otomatik SSL sertifikaları sağlayan Certbot ve Let's Encrypt'i Ansible ile nasıl entegre edeceğimizi göreceğiz.

SSL Neden Vazgeçilmezdir?

Bir web sitesi için SSL sertifikası kullanmanın birçok önemli nedeni vardır:

  • Veri Şifreleme: SSL, sunucu ile istemci (tarayıcı) arasındaki tüm veri akışını şifreler. Bu, özellikle kullanıcı adı, şifre, kredi kartı bilgileri gibi hassas verilerin iletimi sırasında önemlidir ve üçüncü tarafların bu verilere erişmesini engeller.
  • Veri Bütünlüğü: SSL, iletilen verilerin değiştirilmediğini garanti eder. Bu, kötü niyetli saldırganların veriyi manipüle etmesini önler.
  • Kimlik Doğrulama: SSL sertifikaları, bir web sitesinin iddia ettiği gibi olduğunu doğrular. Bu, kullanıcıların sahte siteler yerine gerçek siteye bağlandığından emin olmalarını sağlar.
  • SEO İyileştirmesi: Google gibi arama motorları, HTTPS kullanan sitelere sıralamalarda hafif bir avantaj tanır. Bu, sitenizin daha fazla organik trafik çekmesine yardımcı olabilir.
  • Kullanıcı Güveni: Tarayıcılarda görünen kilit simgesi ve "Güvenli" etiketi, kullanıcılara sitenizin güvenli olduğunu gösterir ve bu da onların sitenizle etkileşim kurma olasılığını artırır. SSL olmayan sitelerde görülen "Güvenli Değil" uyarısı ise kullanıcıları uzaklaştırabilir.

Bu nedenlerden dolayı, herhangi bir modern web sitesi için SSL bir zorunluluk haline gelmiştir. Let's Encrypt, bu ihtiyacı ücretsiz ve otomatik sertifikalarla karşılayarak erişimi herkes için kolaylaştırmıştır.

Certbot ve Let's Encrypt ile SSL Kurulumu

Certbot, Let's Encrypt sertifikalarını sunucularınıza kurmak ve yönetmek için geliştirilmiş kullanımı kolay bir araçtır. Ansible playbook'umuza Certbot kurulumunu ve sertifika edinme adımlarını ekleyelim.

Mevcut lemp-wordpress.yml playbook dosyanızı düzenleyerek SSL ile ilgili görevleri ekleyebilirsiniz. İşte bu görevlerin nasıl görüneceği:


---
- name: WordPress LEMP Sunucusu ve SSL Kurulumu
  hosts: webservers
  become: yes
  vars:
    # ... (önceki değişkenler buraya)
    wordpress_site_email: "admin@example.com" # Certbot için kullanılacak geçerli bir e-posta adresi

  tasks:
    # ... (önceki LEMP ve WordPress kurulum görevleri buraya)

    - name: Certbot'u kur
      apt:
        name:
          - certbot
          - python3-certbot-nginx
        state: present

    - name: Certbot ile SSL sertifikasını al ve Nginx'i yapılandır
      ansible.builtin.command: "certbot --nginx --non-interactive --agree-tos -m {{ wordpress_site_email }} -d {{ wordpress_site_name }} -d www.{{ wordpress_site_name }}"
      args:
        creates: "/etc/letsencrypt/live/{{ wordpress_site_name }}/fullchain.pem" # Sadece sertifika henüz alınmadıysa çalıştır
      notify: Restart Nginx

    - name: Certbot otomatik yenileme cron işini test et
      ansible.builtin.cron:
        name: "Certbot renew"
        minute: "0"
        hour: "3"
        day: "*"
        weekday: "*"
        job: "certbot renew --quiet"
        state: present

Bu yeni görevler dizisi aşağıdaki adımları gerçekleştirecektir:

  1. Certbot ve Nginx Eklentisini Kurma: certbot ve python3-certbot-nginx paketleri, Ubuntu'nun varsayılan depolarından kurulur. python3-certbot-nginx, Certbot'un Nginx konfigürasyonunu otomatik olarak değiştirmesine olanak tanıyan eklentidir.
  2. SSL Sertifikasını Alma: ansible.builtin.command modülü kullanılarak certbot komutu çalıştırılır.
    • --nginx: Certbot'a Nginx ile entegrasyon yapmasını söyler.
    • --non-interactive: Kullanıcıdan herhangi bir etkileşim beklemeden komutun çalışmasını sağlar.
    • --agree-tos: Let's Encrypt hizmet şartlarını otomatik olarak kabul eder.
    • -m {{ wordpress_site_email }}: Sertifika bildirimleri için kullanılacak e-posta adresini belirtir.
    • -d {{ wordpress_site_name }} -d www.{{ wordpress_site_name }}: Sertifikanın geçerli olacağı alan adlarını belirtir. Hem ana alan adı hem de www alt alan adı için sertifika almanız önerilir.
    • args: creates: ...: Bu, Ansible'ın bir görevi yalnızca belirtilen dosya henüz yoksa çalıştırmasını sağlayan bir özelliktir. Böylece, playbook'u tekrar çalıştırdığınızda zaten mevcut olan bir sertifikayı yeniden almaya çalışmaz.
    • notify: Restart Nginx: Sertifika başarıyla alındıktan ve Nginx konfigürasyonu güncellendikten sonra Nginx hizmetinin yeniden başlatılmasını tetikler.
  3. Otomatik Yenileme Cron İşi Oluşturma: Let's Encrypt sertifikaları 90 gün geçerlidir ve düzenli olarak yenilenmeleri gerekir. Certbot, bu yenileme işlemini otomatikleştiren bir mekanizma sağlar. ansible.builtin.cron modülü ile her gün sabah 3'te çalışan bir cron işi ayarlarız. certbot renew --quiet komutu, yalnızca sertifikaların yenilenmesi gerekiyorsa sessizce yenileme yapar. Bu sayede sitenizin SSL sertifikasının süresi hiçbir zaman dolmaz.

Bu görevleri playbook'unuza ekledikten sonra, alan adınızın AWS EC2 sunucunuzun genel IP adresine doğru şekilde yönlendirildiğinden emin olun (DNS kayıtlarınızı güncelleyin). A kaydı oluşturarak ana alan adınızı ve CNAME kaydı oluşturarak www alt alan adınızı yönlendirebilirsiniz. Ardından, playbook'u tekrar çalıştırın:


ansible-playbook -i hosts lemp-wordpress.yml

Playbook başarıyla tamamlandığında, web sitenizi tarayıcınızdan ziyaret ettiğinizde URL'nin başında bir kilit simgesi görmelisiniz, bu da SSL sertifikanızın doğru şekilde entegre edildiğini gösterir. Bu otomasyon sayesinde, manuel SSL kurulumu ve yenileme zahmetinden tamamen kurtulmuş olursunuz.

Performans, Güvenlik ve Mobil Uyum İçin İpuçları

WordPress sitenizi kurmak sadece başlangıçtır. Gerçek dünya senaryolarında başarılı olmak için sitenizin performansını, güvenliğini ve mobil uyumluluğunu optimize etmeniz gerekir. Bu bölümde, sitenizi daha iyi hale getirecek ileri düzey ipuçlarını ve Ansible ile nasıl otomatikleştirebileceğinizi keşfedeceğiz.

WordPress Optimizasyonu ve Güvenlik Best Practice'leri

Bir WordPress sitesinin performansını ve güvenliğini artırmak, kullanıcı deneyimi ve SEO için kritik öneme sahiptir. İşte uygulayabileceğiniz bazı stratejiler:

  • Önbellekleme (Caching): En büyük performans artırıcıdır. W3 Total Cache veya WP Super Cache gibi eklentiler, dinamik WordPress sayfalarını statik HTML dosyalarına dönüştürerek sunucu yükünü azaltır ve sayfa yükleme sürelerini hızlandırır. Nginx'in kendi fastcgi_cache mekanizmasını da kullanabilirsiniz. Ansible ile Nginx yapılandırmanıza önbellekleme direktifleri ekleyebilirsiniz.
  • Resim Optimizasyonu: Yüksek çözünürlüklü, sıkıştırılmamış resimler sitenizi yavaşlatır. Smush veya EWWW Image Optimizer gibi eklentilerle resimleri otomatik olarak sıkıştırın ve WebP formatına dönüştürün.
  • Veritabanı Optimizasyonu: WordPress veritabanı zamanla şişebilir. WP-Optimize gibi eklentiler, gereksiz revizyonları, spam yorumları ve geçici verileri temizleyerek veritabanı boyutunu küçültür ve sorgu performansını artırır.
  • Güvenlik Eklentileri: Wordfence Security, Sucuri Security gibi eklentiler kötü amaçlı yazılımları tarar, güvenlik duvarı sağlar, kaba kuvvet saldırılarını engeller ve sitenizi güvende tutar. Ansible ile bu eklentileri (CLI kullanarak) otomatik olarak kurabilir ve varsayılan ayarlarını yapılandırabilirsiniz.
  • Güncel Tutma: WordPress çekirdeği, temalar ve eklentileri düzenli olarak güncellemek, güvenlik açıklarını kapatmak ve performans iyileştirmelerinden yararlanmak için hayati öneme sahiptir. Ansible ile düzenli olarak WordPress CLI (wp-cli) kullanarak güncelleme görevleri çalıştırabilirsiniz.
  • DDoS Koruması ve CDN: Cloudflare gibi CDN (İçerik Dağıtım Ağı) hizmetleri, sitenizin statik içeriğini coğrafi olarak yakın sunuculardan sunarak yükleme sürelerini hızlandırır ve DDoS (Dağıtık Hizmet Reddi) saldırılarına karşı bir kalkan görevi görür. Bu entegrasyonlar genellikle DNS seviyesinde yapılır ve Ansible ile DNS kayıtlarınızı yöneten bir playbook yazılabilir.
Uzman İpucu: Nginx'in performansını artırmak için Gzip sıkıştırmasını ve önbellekleme başlıklarını etkinleştirin. Bu, özellikle statik varlıklarınız için bant genişliğini ve yükleme sürelerini önemli ölçüde azaltacaktır. Ansible playbook'unuzda Nginx yapılandırma dosyanıza ilgili direktifleri ekleyebilirsiniz.

Mobil Uyumlu Tasarım ve Sunucu İlişkisi

Mobil cihazlardan gelen trafik, günümüzde web trafiğinin büyük bir kısmını oluşturmaktadır. Bu nedenle, web sitenizin mobil uyumlu olması sadece iyi bir pratik değil, aynı zamanda SEO için de kritik bir faktördür.

  • Responsive Temalar: WordPress için mobil uyumlu (responsive) temalar seçmek esastır. Bu temalar, farklı ekran boyutlarına ve çözünürlüklerine otomatik olarak uyum sağlar. Temanızın mobil uyumlu olduğundan emin olun.
  • Hızlı Yükleme Süreleri: Mobil cihazlarda internet bağlantısı hızı değişebilir. Bu nedenle, sunucunuzun sitenizi hızlı bir şekilde sunması hayati önem taşır. LEMP yığınının performans optimizasyonları (Nginx, PHP-FPM, önbellekleme) burada devreye girer. Hızlı bir sunucu, mobil kullanıcı deneyimini doğrudan etkiler.
  • Media Query Örnekleri: Bir web sitesinin mobil uyumlu olmasını sağlayan temel CSS tekniği @media kurallarıdır. Bu kurallar, ekran boyutuna göre farklı stil tanımlamaları yapmanızı sağlar. İşte basit bir örnek:
    
    /* Genel stil tanımlamaları */
    .container {
        width: 960px;
        margin: 0 auto;
        padding: 20px;
    }
    .main-navigation ul {
        display: flex;
        justify-content: space-around;
    }
    
    /* Mobil cihazlar için (ekran genişliği 768 pikselden az) */
    @media screen and (max-width: 768px) {
        .container {
            width: 100%; /* Mobil cihazlarda tam genişlik */
            padding: 10px;
        }
        .main-navigation ul {
            flex-direction: column; /* Menü öğelerini alt alta sırala */
            text-align: center;
        }
        .main-navigation li {
            margin-bottom: 10px;
        }
    }
            


    Bu örnekte, tarayıcı genişliği 768 pikselin altına düştüğünde, .container elementinin genişliği değişir ve menü (.main-navigation ul) dikey olarak sıralanır. WordPress temaları genellikle bu tür kuralları içerir, ancak kendi özel CSS'inizi ekliyorsanız bu prensibi akılda tutmalısınız.

Otomatik Yedekleme Stratejileri

Felaketler her zaman beklenmedik anlarda gelir. Bu nedenle, düzenli ve otomatik yedeklemeler, sitenizin verilerinin güvende olduğundan emin olmanın tek yoludur.

  • Veritabanı Yedeklemesi: MariaDB'nin mysqldump komutu ile veritabanınızı bir dosyaya yedekleyebilirsiniz. Ansible ile bu komutu düzenli olarak çalıştıran bir görev oluşturup yedekleme dosyasını uzak bir depolama alanına (örn. AWS S3) gönderebilirsiniz.
    
    - name: MariaDB veritabanını yedekle
      community.mysql.mysql_db:
        name: "{{ wordpress_db_name }}"
        state: dump
        target: "/tmp/{{ wordpress_db_name }}_$(date +%%Y%%m%%d%%H%%M).sql"
        login_user: root
        login_password: "{{ mysql_root_password }}"
    
    - name: Yedekleme dosyasını S3'e yükle (örnek, AWS CLI kurulu olmalı)
      ansible.builtin.command: "aws s3 cp /tmp/{{ wordpress_db_name }}_$(date +%%Y%%m%%d%%H%%M).sql s3://your-s3-bucket-name/backups/"
      args:
        removes: "/tmp/{{ wordpress_db_name }}_$(date +%%Y%%m%%d%%H%%M).sql" # Yükledikten sonra yerelden sil
            

  • Dosya Yedeklemesi: WordPress dosyalarını (wp-content klasörü dahil) düzenli olarak yedeklemek de önemlidir. tar komutu ile tüm site dizinini sıkıştırabilir ve yine AWS S3 gibi güvenli bir konuma yükleyebilirsiniz.
  • AWS S3 Entegrasyonu: AWS S3, web sitenizin yedeklerini depolamak için ideal, uygun maliyetli ve yüksek düzeyde dayanıklı bir depolama çözümüdür. Ansible ile AWS CLI'yı kullanarak yedekleme dosyalarını S3'e otomatik olarak yükleyebilirsiniz. Bir cron görevi ile bu Ansible playbook'u düzenli olarak çalıştırarak tam otomatik bir yedekleme sistemi kurabilirsiniz.

Bu ileri düzey ipuçları ve otomasyon stratejileri, WordPress sitenizin sadece çalışır durumda olmasını değil, aynı zamanda yüksek performanslı, güvenli ve sürdürülebilir olmasını sağlayacaktır.

Sonuç ve Sıkça Sorulan Sorular

Bu makale boyunca, AWS üzerinde bir WordPress LEMP sunucusunu Ansible ile tamamen otomatik bir şekilde nasıl kuracağımızı, SSL sertifikasını nasıl entegre edeceğimizi ve ardından performans, güvenlik ve mobil uyumluluk için ileri düzey ipuçlarını nasıl uygulayacağımızı öğrendik. Manuel kurulumların getirdiği karmaşıklığı ve hata payını ortadan kaldırarak, dağıtım süreçlerimizi hızlandırmak ve tutarlılığı artırmak için otomasyonun gücünden faydalandık.

Ansible'ın deklaratif yapısı ve idempotence özelliği sayesinde, sunucu yapılandırmanızı bir kod olarak tanımlayabilir ve bu kodu tekrar tekrar, güvenle çalıştırabilirsiniz. Bu, DevOps yaklaşımlarının temelini oluşturur ve günümüzün modern BT altyapı yönetiminde vazgeçilmez bir araç haline gelmiştir. Artık sunucularınızı birkaç dakika içinde sıfırdan kurabilir, SSL'inizi entegre edebilir ve hatta yedekleme işlemlerinizi otomatikleştirerek iş yükünüzü önemli ölçüde azaltabilirsiniz. Bu yaklaşım, sadece zamandan ve emekten tasarruf sağlamakla kalmaz, aynı zamanda altyapınızın daha güvenli, daha kararlı ve daha ölçeklenebilir olmasını da garanti eder.

Umarız bu rehber, kendi otomatik WordPress LEMP sunucunuzu AWS üzerinde başarıyla kurmanıza yardımcı olmuştur. Unutmayın, otomasyon sürekli bir süreçtir; playbook'larınızı geliştirmeye ve yeni özellikler eklemeye devam edin!

Sıkça Sorulan Sorular

  1. LEMP yerine LAMP kullanmak mümkün mü?

    Evet, elbette mümkün. LAMP (Linux, Apache, MySQL, PHP) yığını da WordPress için oldukça popüler ve yaygın olarak kullanılan bir kombinasyondur. Apache'nin .htaccess dosyaları gibi bazı özellikleri, WordPress eklentileriyle daha iyi entegrasyon sağlayabilir. Ancak Nginx (LEMP'teki "E"), özellikle yüksek trafikli sitelerde ve statik içerik sunumunda genellikle daha iyi performans ve kaynak verimliliği sunar. Tercihiniz Apache yönündeyse, Ansible playbook'unuzdaki Nginx ile ilgili görevleri Apache kurulumu ve yapılandırmasıyla değiştirmeniz gerekir.

  2. Ansible playbook'larımı nasıl sürüm kontrolünde tutarım?

    Ansible playbook'larınızı, envanter dosyalarınızı ve template'lerinizi Git gibi bir sürüm kontrol sisteminde (örn. GitHub, GitLab, Bitbucket) saklamanız şiddetle tavsiye edilir. Bu, değişiklikleri takip etmenizi, farklı versiyonlar arasında geçiş yapmanızı, ekip içinde işbirliği yapmanızı ve bir sorun durumunda kolayca önceki bir sürüme geri dönmenizi sağlar. Her bir değişiklik için anlamlı commit mesajları kullanmak da iyi bir pratik olacaktır.

  3. Birden fazla WordPress sitesi kurabilir miyim?

    Evet, kesinlikle. Ansible playbook'unuzu, Nginx'te birden fazla server bloğu ve her site için ayrı veritabanı/kullanıcı oluşturacak şekilde genişletebilirsiniz. Bu, Ansible'daki döngüler (loops) ve değişkenler kullanılarak kolayca yapılabilir. Her site için farklı değişken dosyaları (group_vars veya host_vars) kullanarak konfigürasyonları ayırabilirsiniz. Ayrıca, WordPress'in multisite özelliğini de düşünebilirsiniz.

  4. SSL sertifikası neden otomatik yenilenmeli?

    Let's Encrypt tarafından sağlanan SSL sertifikaları, ücretsiz olmaları karşılığında 90 günlük kısa bir geçerlilik süresine sahiptir. Bu süre zarfında sertifika yenilenmezse, siteniz tekrar "Güvenli Değil" uyarısı gösterecek ve ziyaretçileriniz siteye erişimde sorun yaşayacaktır. Certbot'un otomatik yenileme özelliği sayesinde bu manuel yenileme derdinden kurtulur ve sitenizin kesintisiz HTTPS erişimi sağlamaya devam ettiğinden emin olursunuz. Yenileme işlemi genellikle son 30 gün içinde yapılır.

  5. AWS dışında başka bulut sağlayıcılarda bu yöntem geçerli mi?

    Evet, genel olarak bu yöntem AWS dışında DigitalOcean, Google Cloud Platform (GCP), Microsoft Azure gibi diğer bulut sağlayıcılarda da geçerlidir. Ansible, SSH üzerinden çalıştığı için altta yatan bulut platformundan bağımsızdır. Tek fark, sunucu (instance) oluşturma adımları ve Ansible envanter dosyasında sunucuya bağlanmak için kullanacağınız kimlik doğrulama bilgileri (genel IP, kullanıcı adı ve SSH anahtarı) olacaktır. Playbook'un çoğu kısmı (paket kurulumu, Nginx/MariaDB/PHP konfigürasyonu) aynı kalacaktır.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version