DigitalOcean’da Ruby on Rails 1-Click Kurulumu Nasıl Kullanılır?
Günümüzde web uygulaması geliştirme, hız ve verimlilik gerektiren bir süreçtir. Ruby on Rails (RoR), hızlı uygulama geliştirme (RAD) felsefesiyle öne çıkan, güçlü ve esnek bir web çatısıdır. Dijital altyapı sağlayıcıları arasında popülerliğini artıran DigitalOcean ise, kullanıcı dostu arayüzü ve uygun fiyatlı “Droplet” (sanal sunucu) seçenekleriyle dikkat çekmektedir. Bu makalede, DigitalOcean’ın sunduğu “1-Click Install” (Tek Tıkla Kurulum) özelliğini kullanarak Ruby on Rails uygulamanızı nasıl kolayca devreye alabileceğinizi adım adım inceleyeceğiz. Bu yöntem, özellikle sunucu yapılandırması konusunda derinlemesine bilgi sahibi olmayan geliştiriciler için zaman kazandıran ve hata oranını düşüren ideal bir çözümdür.
Ruby on Rails ve DigitalOcean Neden Birlikte İyi Çalışır?
Ruby on Rails, geliştiricilere web uygulamalarını hızla oluşturmaları için güçlü araçlar ve bir yapı sunar. Model-View-Controller (MVC) mimarisi, DRY (Don’t Repeat Yourself) prensibi ve Convention Over Configuration (Yapılandırma Üzerine Anlaşma) yaklaşımı sayesinde, kod yazma süresi kısalır ve bakım kolaylaşır. Ancak, bir Rails uygulamasını canlıya almak, genellikle sunucu yapılandırması, veritabanı kurulumu, web sunucusu (Nginx/Apache), uygulama sunucusu (Puma/Unicorn) ve SSL sertifikası gibi karmaşık adımları içerir.
DigitalOcean, bu karmaşıklığı azaltmak için “Marketplace” adı altında önceden yapılandırılmış uygulama görüntüleri sunar. Ruby on Rails 1-Click Install, bu görüntülerden biridir. Bu sayede, temel bir Linux işletim sistemi üzerine Ruby, Rails, PostgreSQL (veritabanı), Nginx (web sunucusu), Puma (uygulama sunucusu) ve Certbot (SSL için Let’s Encrypt entegrasyonu) gibi tüm gerekli bileşenler otomatik olarak kurulur ve yapılandırılır. Bu entegrasyon, geliştiricilerin altyapı yerine doğrudan uygulama geliştirmeye odaklanmasını sağlar.
Ön Gereksinimler
DigitalOcean’da Ruby on Rails 1-Click kurulumunu kullanmaya başlamadan önce aşağıdaki ön gereksinimlere sahip olmanız gerekmektedir:
* DigitalOcean Hesabı: Aktif bir DigitalOcean hesabınız olmalı ve ödeme bilgileriniz tanımlanmış olmalıdır.
* Temel Linux ve Komut Satırı Bilgisi: Sunucuya SSH ile bağlanacak, temel komutları (cd, ls, sudo, systemctl vb.) kullanacak ve dosya düzenlemeleri yapacaksınız.
* SSH İstemcisi: Sunucunuza güvenli bir şekilde bağlanmak için bir SSH istemcisine ihtiyacınız olacak. Linux ve macOS’ta terminal üzerinden SSH yerleşik olarak gelir. Windows kullanıcıları için PuTTY veya Windows Subsystem for Linux (WSL) önerilir.
* Alan Adı (Opsiyonel ama Önerilir): Uygulamanızı bir alan adı üzerinden yayınlamak ve SSL sertifikası kullanmak isterseniz, bir alan adınızın olması ve DNS ayarlarını yönetebilmeniz gereklidir.
DigitalOcean Droplet Oluşturma Adımları
DigitalOcean hesabınıza giriş yaptıktan sonra, Ruby on Rails 1-Click kurulumunu başlatmak oldukça basittir.
DigitalOcean Hesabına Giriş Yapma ve Droplet Oluşturma
1. DigitalOcean Kontrol Paneline Giriş Yapın: Tarayıcınızdan DigitalOcean’a gidin ve hesabınıza giriş yapın.
2. Droplet Oluşturma Sayfasına Gidin: Kontrol panelinin sağ üst köşesindeki “Create” (Oluştur) düğmesine tıklayın ve açılan menüden “Droplets” (Damlacıklar) seçeneğini seçin. Alternatif olarak, doğrudan Droplet oluşturma sayfasına yönlendirilebilirsiniz.
3. Marketplace’ten Ruby on Rails Seçeneğini Bulun: “Choose an image” (Bir görüntü seçin) bölümünde, sol taraftaki menüden “Marketplace” sekmesini seçin. Arama kutusuna “Ruby on Rails” yazarak veya listeden bularak “Ruby on Rails on Ubuntu” görüntüsünü seçin. Bu görüntü, Ubuntu işletim sistemi üzerine Rails için gerekli tüm bileşenleri otomatik olarak kuracaktır.
4. Plan Seçimi: Uygulamanızın ihtiyaçlarına göre bir plan seçmelisiniz. Başlangıç seviyesi veya küçük projeler için genellikle 1 GB RAM / 1 vCPU içeren en uygun fiyatlı plan yeterli olacaktır. Ancak, uygulamanızın trafiği veya kaynak ihtiyacı arttıkça daha güçlü bir plana yükseltme yapabilirsiniz. DigitalOcean’ın esnekliği sayesinde bu yükseltmeler kolayca gerçekleştirilebilir.
5. Veri Merkezi Bölgesi Seçimi: Kullanıcılarınızın coğrafi konumuna en yakın veri merkezi bölgesini seçmek, uygulamanızın performansını artırır ve gecikmeyi azaltır. Örneğin, Türkiye’deki kullanıcıları hedefliyorsanız, Frankfurt veya Amsterdam gibi Avrupa bölgeleri iyi birer seçenek olabilir.
6. Kimlik Doğrulama Yöntemi: Bu adımda, sunucunuza nasıl erişeceğinizi belirlersiniz.
* SSH Keys (SSH Anahtarları) (Önerilir): Güvenlik ve kolaylık açısından SSH anahtarları kullanmanız şiddetle tavsiye edilir. Daha önce bir SSH anahtarı oluşturduysanız, onu seçebilirsiniz. Yoksa, “New SSH Key” (Yeni SSH Anahtarı) düğmesine tıklayarak genel anahtarınızı buraya yapıştırabilirsiniz. Genel anahtarınız genellikle ~/.ssh/id_rsa.pub dosyasında bulunur.
* Password (Şifre): Eğer SSH anahtarı kullanmak istemiyorsanız, sunucuya erişim için bir root şifresi belirleyebilirsiniz. Ancak bu yöntem, SSH anahtarlarına göre daha az güvenlidir. DigitalOcean, şifreyi e-postanıza gönderecektir; bu şifreyi güvenli bir yerde saklayın.
7. Ek Seçenekler (Opsiyonel):
* Monitoring (İzleme): Droplet’inizin performansını (CPU, RAM, disk kullanımı vb.) izlemek için DigitalOcean’ın yerleşik izleme özelliğini etkinleştirebilirsiniz. Ücretsizdir ve önerilir.
* IPv6: Genellikle varsayılan olarak etkin bırakılabilir.
* User Data: İlk önyüklemede çalışacak özel betikler ekleyebilirsiniz. Bu, daha ileri düzey yapılandırmalar için kullanışlıdır.
* Backup (Yedekleme): Droplet’inizin düzenli otomatik yedeklerini almak için bu özelliği etkinleştirebilirsiniz. Ek ücrete tabidir ancak veri kaybını önlemek için önemlidir.
8. Hostname (Ana Bilgisayar Adı): Droplet’inize kolayca tanıyabileceğiniz bir isim verin (örneğin, my-rails-app veya production-rails).
9. Droplet Oluştur: Tüm ayarları gözden geçirdikten sonra, “Create Droplet” (Droplet Oluştur) düğmesine tıklayın. DigitalOcean, birkaç dakika içinde Droplet’inizi oluşturacak ve size IP adresini sağlayacaktır.
İlk Sunucu Kurulumu ve Güvenlik Adımları
Droplet’iniz oluştuktan sonra, sunucunuza bağlanarak ilk güvenlik ve yapılandırma adımlarını gerçekleştirmeniz önemlidir.
SSH ile Sunucuya Bağlanma
1. Droplet IP Adresini Edinin: DigitalOcean kontrol panelinizde yeni oluşturduğunuz Droplet’in IP adresini görebilirsiniz.
2. SSH Bağlantısı Kurun: Terminalinizi veya SSH istemcinizi açın ve aşağıdaki komutu kullanarak sunucunuza bağlanın:
ssh root@your_droplet_ip_address
Eğer SSH anahtarı kullandıysanız, parola sormadan doğrudan bağlanırsınız. Şifre kullandıysanız, DigitalOcean’ın size e-posta ile gönderdiği root şifresini girmeniz istenecektir.
Güvenlik İçin Yeni Bir Kullanıcı Oluşturma
Root kullanıcısı olarak sürekli çalışmak güvenlik riski taşır. Yeni bir sudo kullanıcısı oluşturmak ve root erişimini kısıtlamak en iyi uygulamadır.
1. Yeni Kullanıcı Oluşturma:
adduser your_username
Komutu çalıştırdıktan sonra yeni kullanıcınız için bir şifre belirlemeniz ve bazı isteğe bağlı bilgiler girmeniz istenecektir.
2. Sudo Yetkileri Verme: Yeni kullanıcıya yönetici (sudo) yetkileri verin:
usermod -aG sudo your_username
3. Root Girişini Devre Dışı Bırakma (Önerilir): SSH ile root kullanıcısının doğrudan girişini devre dışı bırakmak güvenliği artırır.
sudo nano /etc/ssh/sshd_config
Açılan dosyada PermitRootLogin yes satırını bulun ve PermitRootLogin no olarak değiştirin. PasswordAuthentication yes satırını PasswordAuthentication no olarak değiştirmek de (eğer SSH anahtarı kullanıyorsanız) önerilir. Dosyayı kaydedip kapatın (Ctrl+X, Y, Enter).
SSH hizmetini yeniden başlatın:
sudo systemctl restart sshd
ÖNEMLİ: Bu değişikliği yapmadan önce yeni kullanıcınızla sorunsuz bir şekilde SSH bağlantısı kurabildiğinizden emin olun. Aksi takdirde sunucunuza erişiminiz kesilebilir. Yeni bir terminal penceresinde ssh your_username@your_droplet_ip_address komutuyla test edin.
Güvenlik Duvarı (UFW) Yapılandırması
Ubuntu’da UFW (Uncomplicated Firewall) varsayılan olarak gelir. Yalnızca gerekli portlara erişime izin vererek sunucunuzu korumak önemlidir.
1. UFW Durumunu Kontrol Etme:
sudo ufw status
2. Gerekli Portlara İzin Verme:
* SSH (Port 22):
sudo ufw allow OpenSSH
* HTTP (Port 80):
sudo ufw allow http
* HTTPS (Port 443):
sudo ufw allow https
3. UFW’yi Etkinleştirme:
sudo ufw enable
Bir onay mesajı alacaksınız. y tuşuna basarak devam edin.
4. UFW Durumunu Tekrar Kontrol Etme:
sudo ufw status verbose
Bu komut, etkin kuralları ayrıntılı olarak gösterir.
1-Click Kurulumun İçeriğini Anlama
DigitalOcean’ın Ruby on Rails 1-Click Droplet’i, uygulamanızı dağıtmak için gereken birçok bileşeni önceden yapılandırılmış olarak sunar. Bu bileşenleri ve yapılandırmalarını anlamak, sorun giderme ve özelleştirme açısından faydalıdır.
* Ruby ve Rails: En son stabil Ruby ve Rails sürümleri kurulu gelir.
* PostgreSQL: Varsayılan veritabanı olarak PostgreSQL kuruludur. rails adında bir veritabanı kullanıcısı ve bu kullanıcı için otomatik olarak oluşturulmuş bir veritabanı bulunur. Veritabanı kimlik bilgileri genellikle /var/www/rails-app/shared/config/database.yml içinde bulunur veya ortam değişkenleriyle yönetilir.
* Nginx: Web sunucusu olarak Nginx, gelen HTTP/HTTPS isteklerini yönetmek ve bunları Puma uygulama sunucusuna yönlendirmek üzere yapılandırılmıştır. Nginx yapılandırma dosyası genellikle /etc/nginx/sites-enabled/rails-app konumundadır. Bu dosya, uygulamanızın alan adını ve SSL ayarlarını içerecektir.
* Puma: Ruby on Rails uygulamasını çalıştıran uygulama sunucusudur. Sistem başlangıcında otomatik olarak başlatılacak bir systemd hizmeti olarak yapılandırılmıştır. Puma hizmet dosyası genellikle /etc/systemd/system/puma.service konumundadır.
* Certbot: Let’s Encrypt aracılığıyla ücretsiz SSL/TLS sertifikaları almak ve otomatik olarak yenilemek için kullanılan bir araçtır.
* Uygulama Dizini: Varsayılan Rails uygulaması /var/www/rails-app dizininde bulunur. Bu dizin genellikle Capistrano gibi dağıtım araçları tarafından kullanılan current, shared, releases gibi alt dizinleri içerir. current symlink’i (sembolik bağlantı) aktif uygulamayı işaret eder.
Rails Uygulamanızı Dağıtma
Artık Droplet’iniz hazır ve güvenli olduğuna göre, kendi Ruby on Rails uygulamanızı dağıtmaya başlayabilirsiniz. İki ana yaklaşım vardır: varsayılan uygulamayı değiştirmek veya Capistrano gibi bir dağıtım aracı kullanmak.
Seçenek 1: Varsayılan Uygulamayı Değiştirmek (Basit Projeler/Test İçin)
Bu yöntem, küçük veya kişisel projeler için hızlı bir başlangıç sağlar.
1. Mevcut Uygulama Dosyalarını Silme:
SSH ile sunucunuza your_username olarak bağlandıktan sonra, mevcut Rails uygulamasının dosyalarını silin:
cd /var/www/rails-app/current
sudo rm -rf *
Bu komut, current dizinindeki tüm dosyaları siler.
2. Uygulamanızı Klonlama:
Git deposundan uygulamanızı current dizinine klonlayın:
sudo git clone your_repository_url .
Not: . (nokta) komutun mevcut dizine klonlama yapmasını sağlar. Eğer uygulamanızın current dizininde root yetkisiyle işlem yapmak istemiyorsanız, öncelikle your_username kullanıcısına /var/www/rails-app dizini üzerinde yazma izni vermeniz gerekebilir:
sudo chown -R your_username:your_username /var/www/rails-app
Bu komutu uyguladıktan sonra sudo kullanmadan git clone ve diğer işlemleri yapabilirsiniz.
3. Bağımlılıkları Yükleme:
Uygulamanızın Gemfile’ında belirtilen Ruby gem’lerini yükleyin:
bundle install --deployment --without development test
--deployment seçeneği, gem’leri vendor/bundle dizinine yükler ve Gemfile.lock dosyasını kullanır.
4. Veritabanı Yapılandırması:
config/database.yml dosyanızın sunucu ortamına uygun olduğundan emin olun. DigitalOcean 1-Click kurulumu genellikle PostgreSQL için rails kullanıcısını ve veritabanını otomatik olarak yapılandırır.
# config/database.yml (Örnek)
production:
adapter: postgresql
encoding: unicode
pool: 5
database: rails
username: rails
password: YOUR_POSTGRES_PASSWORD # Eğer belirlediyseniz
host: localhost
Veritabanı şemasını uygulayın ve gerekirse başlangıç verilerini yükleyin:
rails db:create
rails db:migrate
rails db:seed # Eğer seed verileriniz varsa
5. Assets (Statik Dosyalar) Derleme:
Rails uygulamaları genellikle JavaScript, CSS ve resimler gibi statik dosyaları (assets) derler:
rails assets:precompile
Bu işlem, statik dosyaların sıkıştırılmış ve birleştirilmiş sürümlerini public/assets dizinine yerleştirir.
6. Puma Uygulama Sunucusunu Yeniden Başlatma:
Uygulamanızdaki değişikliklerin etkili olması için Puma hizmetini yeniden başlatın:
sudo systemctl restart puma
Seçenek 2: Capistrano Kullanarak Dağıtım (Üretim Ortamı İçin Önerilir)
Capistrano, Rails uygulamalarını sunuculara dağıtmak için güçlü ve popüler bir otomasyon aracıdır. Dağıtım sürecini standartlaştırır, geçmiş sürümleri yönetmeyi kolaylaştırır ve hata durumunda geri alma (rollback) imkanı sunar.
1. Yerel Makinenizde Capistrano Kurulumu:
Uygulamanızın yerel dizininde Capistrano’yu kurun:
gem install capistrano
cap install
Bu komutlar, Capistrano için gerekli dosya ve dizinleri (Capfile, config/deploy.rb, config/deploy/production.rb vb.) oluşturacaktır.
2. Capistrano Yapılandırması:
* Capfile: Gerekli Capistrano gem’lerini (Rails, Rbenv, Bundler vb.) içerdiğinden emin olun.
* config/deploy.rb: Bu dosya, uygulamanızın genel dağıtım ayarlarını içerir.
# config/deploy.rb
set :application, "your_app_name"
set :repo_url, "your_repository_url" # Git deponuzun URL'si
# Dağıtım dizini
set :deploy_to, "/var/www/#{fetch(:application)}"
# Varsayılan şube (branch)
set :branch, "main" # veya master
# Ruby versiyonu (DigitalOcean 1-Click ile gelen versiyonu kullanın)
set :rbenv_ruby, File.read('.ruby-version').strip # veya '3.1.2' gibi belirli bir versiyon
# Hangi dosyaların symlink olarak shared dizinine bağlanacağını belirtin
append :linked_files, "config/database.yml", "config/master.key" # master.key Rails 5.2+ için
append :linked_dirs, "log", "tmp/pids", "tmp/cache", "tmp/sockets", "vendor/bundle", "public/system", "public/uploads"
# Puma yapılandırması
set :puma_init_active_record, true # ActiveRecord bağlantısını Puma başlatılırken kontrol eder
# SSH agent forwarding
set :ssh_options, { forward_agent: true, auth_methods: %w(publickey) }
* config/deploy/production.rb: Bu dosya, üretim ortamına özel ayarları içerir.
# config/deploy/production.rb
server "your_droplet_ip_address", user: "your_username", roles: %w{app web db}
# SSH anahtarlarınızın yolu (eğer farklı bir konumdaysa)
# set :ssh_options, {
# keys: %w(~/.ssh/id_rsa),
# forward_agent: false,
# auth_methods: %w(publickey)
# }
3. SSH Agent Forwarding:
Capistrano’nun Git deposuna erişebilmesi için SSH anahtarlarınızın sunucuya iletilmesi gerekir. Yerel makinenizde:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa # veya anahtarınızın yolu
4. Veritabanı ve Master Key Dosyalarını Sunucuya Kopyalama:
config/database.yml ve config/master.key (Rails 5.2+ için) gibi hassas dosyaları Git deposunda tutmamak en iyi uygulamadır. Bunları manuel olarak sunucunuzdaki shared/config dizinine kopyalamalısınız.
Önce sunucuda ilgili dizini oluşturun:
ssh your_username@your_droplet_ip_address "mkdir -p /var/www/your_app_name/shared/config"
Sonra yerel makinenizden dosyaları kopyalayın:
scp config/database.yml your_username@your_droplet_ip_address:/var/www/your_app_name/shared/config/database.yml
scp config/master.key your_username@your_droplet_ip_address:/var/www/your_app_name/shared/config/master.key
database.yml dosyasındaki veritabanı kullanıcı adı ve şifresinin DigitalOcean 1-Click kurulumundaki PostgreSQL ayarlarıyla eşleştiğinden emin olun.
5. İlk Dağıtım:
Yerel makinenizden ilk dağıtımı yapın:
cap production deploy:initial
Bu komut, tüm Capistrano dizin yapısını oluşturacak ve uygulamanızı ilk kez dağıtacaktır.
6. Sonraki Dağıtımlar:
Uygulamanızda değişiklik yaptığınızda ve yeniden dağıtmak istediğinizde:
cap production deploy
Capistrano, yeni bir sürüm dizini oluşturacak, kodu çekecek, bağımlılıkları yükleyecek, veritabanı geçişlerini çalıştıracak, assetleri derleyecek ve Puma’yı yeniden başlatacaktır.
Alan Adı Yapılandırması ve SSL/TLS Sertifikası
Uygulamanızı bir IP adresi yerine kendi alan adınız üzerinden yayınlamak ve güvenli bir HTTPS bağlantısı sağlamak profesyonellik açısından önemlidir.
Alan Adını Droplet’e Yönlendirme
1. DigitalOcean DNS Ayarları: DigitalOcean kontrol panelinizde “Networking” (Ağ) bölümüne gidin. Alan adınızı buraya ekleyin veya mevcut bir alan adınız varsa onu seçin.
2. A Kaydı Oluşturma: Alan adınız için Droplet’inizin IP adresini gösteren bir “A kaydı” oluşturun. Örneğin:
* Hostname: @ (ana alan adınız için)
* Will Direct To: Droplet’inizin IP adresi
* Hostname: www (www alt alanı için)
* Will Direct To: Droplet’inizin IP adresi
Bu kayıtların DNS sunucularında yayılması biraz zaman alabilir (genellikle birkaç dakika ile birkaç saat arası).
Nginx Yapılandırmasını Güncelleme
Alan adınız Droplet’e yönlendirildikten sonra, Nginx’in bu alan adını tanıması için yapılandırma dosyasını güncellemeniz gerekir.
1. Nginx Yapılandırma Dosyasını Düzenleme:
SSH ile sunucunuza bağlanın ve Nginx yapılandırma dosyasını açın:
sudo nano /etc/nginx/sites-enabled/rails-app
2. server_name Güncelleme:
server_name _ veya server_name localhost gibi bir satır göreceksiniz. Bu satırı kendi alan adınızla güncelleyin:
server_name yourdomain.com www.yourdomain.com;
Dosyayı kaydedip kapatın.
3. Nginx’i Yeniden Başlatma:
Değişikliklerin etkili olması için Nginx hizmetini yeniden başlatın:
sudo systemctl restart nginx
Certbot ile SSL/TLS Sertifikası Kurulumu (Let’s Encrypt)
DigitalOcean 1-Click kurulumu, Certbot’u önceden yükler. Bu sayede Let’s Encrypt ile ücretsiz SSL sertifikası almak çok kolaydır.
1. Certbot Komutunu Çalıştırma:
Alan adınızın Droplet’e doğru şekilde yönlendirildiğinden emin olduktan sonra aşağıdaki komutu çalıştırın:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
* Certbot, Nginx yapılandırmanızı otomatik olarak algılayacak ve sertifikayı kurmak için gerekli değişiklikleri yapacaktır.
* Sizden bir e-posta adresi girmeniz (acil durum bildirimleri ve yenileme hatırlatıcıları için) ve hizmet şartlarını kabul etmeniz istenecektir.
* HTTPS’ye yönlendirme (redirect) isteyip istemediğinizi soracaktır. Genellikle “2: Redirect” seçeneğini seçmek önerilir, bu sayede tüm HTTP istekleri otomatik olarak HTTPS’ye yönlendirilir.
2. Otomatik Yenileme:
Certbot, sertifikaların süresi dolmadan otomatik olarak yenilenmesini sağlayan bir cron işi veya systemd zamanlayıcısı da kurar. Yenileme işlemini test edebilirsiniz:
sudo certbot renew --dry-run
Eğer bu komut hatasız çalışırsa, sertifikalarınızın otomatik olarak yenileneceğinden emin olabilirsiniz.
Veritabanı Yönetimi
PostgreSQL veritabanınız, Rails uygulamanızın kalbidir. Temel yönetim işlemlerini bilmek önemlidir.
1. PostgreSQL Konsoluna Bağlanma:
rails kullanıcısı olarak PostgreSQL konsoluna bağlanabilirsiniz:
sudo -u postgres psql
Ardından, rails veritabanına bağlanmak için:
\c rails;
\q yazarak konsoldan çıkabilirsiniz.
2. Veritabanı Yedekleme ve Geri Yükleme:
* Yedekleme:
sudo -u postgres pg_dump rails > rails_backup_$(date +%Y%m%d%H%M%S).sql
* Geri Yükleme (Dikkatli Kullanın! Mevcut verileri silecektir):
sudo -u postgres psql -d rails -f rails_backup.sql
Düzenli yedeklemeler almak ve bunları sunucunuz dışında güvenli bir yerde saklamak kritik öneme sahiptir.
İzleme ve Bakım
Uygulamanız canlıya alındıktan sonra, performansını izlemek ve düzenli bakım yapmak önemlidir.
* DigitalOcean İzleme: Kontrol panelindeki “Monitoring” (İzleme) sekmesi, CPU kullanımı, bellek tüketimi, disk G/Ç ve ağ trafiği gibi temel metrikleri gösterir. Anormal davranışları erken tespit etmek için uyarılar ayarlayabilirsiniz.
* Günlük Dosyaları: Uygulamanızın ve sunucu bileşenlerinin günlük dosyalarını düzenli olarak kontrol edin:
* Nginx erişim ve hata günlükleri: /var/log/nginx/access.log, /var/log/nginx/error.log
* Rails uygulama günlükleri: /var/www/your_app_name/shared/log/production.log
* Puma hizmet günlükleri: sudo journalctl -u puma
* Sistem Güncellemeleri: Sunucunuzun güvenliğini ve performansını sağlamak için işletim sistemi ve kurulu paketleri düzenli olarak güncelleyin:
sudo apt update
sudo apt upgrade
* Ruby ve Rails Güncellemeleri: Yeni Ruby veya Rails sürümleri çıktığında, bunları dikkatli bir şekilde test ortamında deneyip daha sonra üretim sunucunuza uygulayın. rbenv veya rvm gibi araçlar, Ruby sürümlerini yönetmek için kullanışlıdır.
* Disk Alanı: Disk kullanımını düzenli olarak kontrol edin (df -h). Log dosyaları veya geçici dosyalar disk alanını hızla doldurabilir.
Sık Karşılaşılan Sorunlar ve Çözümleri
Dağıtım sürecinde veya sonrasında bazı yaygın sorunlarla karşılaşabilirsiniz.
* 502 Bad Gateway (Nginx Hatası): Bu genellikle Nginx’in Puma uygulama sunucusuna bağlanamadığı anlamına gelir.
* Puma hizmetinin çalışır durumda olduğundan emin olun: sudo systemctl status puma
* Puma günlüklerini kontrol edin: sudo journalctl -u puma
* Puma soket dosyasının (genellikle /tmp/puma.sock) doğru şekilde yapılandırıldığından ve Nginx yapılandırmasında doğru yola işaret ettiğinden emin olun.
* Veritabanı Bağlantı Hatası:
* config/database.yml dosyasındaki kimlik bilgilerinin doğru olduğundan emin olun.
* PostgreSQL hizmetinin çalışır durumda olduğundan emin olun: sudo systemctl status postgresql
* PostgreSQL günlüklerini kontrol edin.
* Asset Precompilation Hatası: rails assets:precompile sırasında hata alıyorsanız:
* Node.js ve Yarn’ın kurulu ve güncel olduğundan emin olun (çoğu Rails 6+ projesi için gereklidir).
* Gemfile’ınızdaki uglifier veya terser gibi gem’lerin doğru yapılandırıldığından emin olun.
* Erişim İzni Hataları (Permission Denied):
* Dosya ve dizinlerin doğru kullanıcıya (genellikle your_username) ait olduğundan ve doğru izinlere sahip olduğundan emin olun. sudo chown -R your_username:your_username /var/www/your_app_name ve sudo chmod -R 755 /var/www/your_app_name gibi komutlar yardımcı olabilir.
* tmp ve log dizinlerinin yazılabilir olduğundan emin olun.
* Uygulama Hatası Sayfası (Rails Error Page):
* production.log dosyasını kontrol ederek hatanın kaynağını bulun.
* Ortam değişkenlerinin (örneğin RAILS_MASTER_KEY veya diğer gizli anahtarlar) doğru ayarlandığından emin olun.
En İyi Uygulamalar
* Otomatik Yedeklemeler: DigitalOcean’ın otomatik yedekleme özelliğini kullanın veya kendi yedekleme stratejinizi (örneğin, veritabanını düzenli olarak S3’e yedeklemek) uygulayın.
* Ortam Değişkenleri: Hassas bilgiler (API anahtarları, veritabanı şifreleri) doğrudan kodda veya yapılandırma dosyalarında tutmak yerine ortam değişkenleri (örneğin, RAILS_MASTER_KEY veya sunucunun ~/.bashrc dosyasındaki export komutları) aracılığıyla yönetilmelidir.
* Güçlü Şifreler ve SSH Anahtarları: Tüm hesaplarınız ve sunucu erişiminiz için güçlü, benzersiz şifreler kullanın ve SSH anahtarlarını tercih edin.
* Güncel Kalın: İşletim sistemi, Ruby, Rails ve diğer tüm bağımlılıkları düzenli olarak güncelleyerek güvenlik açıklarını kapatın ve performansı artırın.
* Test Ortamı: Önemli güncellemeleri veya yeni özellikleri doğrudan üretim ortamına dağıtmadan önce bir hazırlık (staging) veya test ortamında deneyin.
* Versiyon Kontrolü: Uygulama kodunuzu her zaman Git gibi bir versiyon kontrol sistemiyle yönetin.
Sonuç
DigitalOcean’da Ruby on Rails 1-Click kurulumu, modern web uygulamalarını hızlı ve sorunsuz bir şekilde dağıtmak için mükemmel bir başlangıç noktası sunar. Bu makalede ele aldığımız adımları takip ederek, Droplet’inizi oluşturabilir, güvenliğini sağlayabilir, kendi Rails uygulamanızı dağıtabilir, alan adınızı yapılandırabilir ve SSL sertifikası kurabilirsiniz. Bu entegre çözüm, geliştiricilerin altyapı karmaşıklığıyla boğuşmak yerine, kendi uygulamalarının geliştirilmesine ve iyileştirilmesine odaklanmalarını sağlar. Unutmayın, herhangi bir üretim ortamında olduğu gibi, sürekli izleme, düzenli bakım ve güvenlik en iyi uygulamalarına bağlı kalmak, uygulamanızın uzun vadeli başarısı için kritik öneme sahiptir.