Django ve Flask ile AWS Deploy Nasıl Yapılır? Bu makalede, adım adım AWS üzerinde Django ve Flask uygulamalarını nasıl dağıtabileceğinizi öğreneceksiniz AWS kullanmak ve bulut tabanlı web uygulaması oluşturmak isteyenler için ideal bir kaynaktır Hemen okuyun!

Bu makalede, popüler web frameworkleri olan Django ve Flask'ın Amazon Web Services (AWS) üzerinde nasıl deploy edileceği detaylı şekilde anlatılacaktır. AWS, dünyanın en yaygın kullanılan cloud computing platformudur ve birçok web uygulaması bu platformda barındırılmaktadır. Bu nedenle, Django ve Flask gibi popüler frameworklerin AWS üzerinde deploy edilebilmesi oldukça önemlidir. İşletmeler, AWS'in sağladığı ölçeklenebilirlik ve performans avantajlarından yararlanarak uygulamalarını daha hızlı ve verimli hale getirebilirler.
AWS Hakkında Genel Bilgi
AWS, Amazon Web Services'ın kısaltmasıdır. AWS, dünyada en yaygın kullanılan hizmet bulutu platformlarından biridir ve bir çok web uygulaması bu platformda barındırılmaktadır. AWS, kullanıcıların sunucu, işlem gücü, veritabanı, depolama ve diğer birçok hizmetleri güvenli, hızlı ve ölçeklenebilir bir şekilde sağlamasına olanak verir. AWS'in sunduğu özellikler ve desteğin yanı sıra sunulan hizmetlerin kapasitesi, AWS'in rakiplerinden ayrılmasını sağlamaktadır. AWS, kullanıcıların kendi uygulamalarını çalıştırmak ve barındırmak için yüksek güvenlikli, üst düzey yeteneklere sahip bir bulut bilişim ortamı sunar.
Django Web Uygulamasının AWS'de Deploy Edilmesi
Django, oldukça popüler bir web uygulaması çatısıdır ve birçok kullanıcı tarafından tercih edilmektedir. Eğer bir Django web uygulamanız varsa ve bu uygulamayı AWS üzerinde deploy etmek istiyorsanız, aşağıdaki adımları takip edebilirsiniz.
İlk olarak, bir EC2 instance oluşturmanız gerekmektedir. Bunun için AWS yönetim paneline giriş yapın ve EC2 konsoluna erişin. Burada, instance oluşturma arayüzüne erişerek uygulamanız için bir instance oluşturabilirsiniz. Instance oluştururken, özellikle instance tipi ve instance boyutu konularına dikkat etmenizde fayda vardır.
Bir sonraki adım ise, instance üzerinde uygulamanızın çalıştırılmasıdır. Bunun için instance'a SSH üzerinden bağlanın ve uygulamanız için gerekli olan tüm paketleri yükleyin. Daha sonra uygulamanızın kodunu instance üzerine yükleyin ve çalıştırın.
EC2 instance için security groups ayarlarına da önem vermeniz gerekmektedir. Bu ayarlar sayesinde instance'a erişimi kısıtlayabilir ve güvenliği arttırabilirsiniz. Aynı zamanda, yük dengeleyici kurulumu ve yönetimi ile ilgili de adımlar atmanız gerekmektedir. Bu sayede, uygulamanızın daha sağlıklı bir şekilde çalışmasını sağlayabilirsiniz.
Bunların yanı sıra, AWS RDS üzerinde bir veritabanı oluşturarak uygulamanızı bağlantılı hale getirebilirsiniz. Bu da uygulamanızın verileri tutması için önemlidir.
AWS Üzerinde EC2 İnstance Oluşturma
AWS üzerindeki EC2 (Elastic Compute Cloud) hizmeti, başka bir deyişle sanal sunucuların oluşturulması ve yönetilmesi için Amazon tarafından sunulan bir hizmettir. EC2 instance, bir Amazon Machine Image (AMI) tabanlı oluşturulan bir sanal sunucudur.
EC2 instance oluşturma işlemi, AWS Management Console veya AWS CLI (Command Line Interface) üzerinden gerçekleştirilebilir. İlk olarak, AWS Management Console üzerinde, EC2 Dashboard bölümüne girmeniz gerekiyor. Burada, "Launch Instance" butonuna tıklayarak instance oluşturma sürecini başlatabilirsiniz.
Instance türü, AMI (Amazon Machine Image) seçimi, instance boyutu, VPC (Virtual Private Cloud) ve subnet ayarları, instance kimlik doğrulama ve güvenlik grupları seçimi, instance başlatma konfigürasyonları, instance depolama ve tag'lerin tanımlanması gibi birçok ayrıntılı ayarlar yapılandırılabilir.
EC2 instance oluşturulduktan sonra, uygulamanızın instance üzerinde çalıştırılması gerekmektedir. Bunun için, instance'ın özel anahtar dosyası kullanılarak SSH (Secure Shell) üzerinden başlatılabilir. SSH bağlantısı başarılı olarak gerçekleştirildikten sonra, Python ve Django gibi gerekli yazılımların instance'a yüklenmesi ve uygulamanın instance üzerinde çalıştırılması sağlanabilir.
EC2 instance'ın başarıyla kurulması, web uygulamanızın AWS üzerinde çalıştırılabilmesi için çok önemlidir. Bununla birlikte, güvenlik açısından da çok önemlidir. Güvenlik ayarlarına özen gösterilmeli ve gerekiyorsa güvenlik grupları yapılandırılmalıdır. Bu sayede, uygulamanızın güvenli bir şekilde çalıştırılması sağlanabilir.
AWS EC2 Security Groups Ayarları
AWS EC2 instance oluştururken, security groups ayarlarının doğru bir şekilde yapılandırılması önemlidir. Security groups, inbound ve outbound trafiklerin yönetiminde kullanılır ve instance'a erişimi kontrollü bir şekilde yönetebilirsiniz.
instance'a atanacak security groups ayarları, instance oluşturulmadan önce belirlenir. Bu süreç AWS Console üzerinden gerçekleştirilir. Öncelikle, EC2 dashboard'ın sol menüsünden "Security Groups" seçeneğine tıklanır. Ardından, instance'a atanacak security group'un "Create Security Group" butonuna tıklanarak oluşturulması gerekmektedir.
Security Group'a isim verildikten sonra, inbound ve outbound trafik kısıtlamaları belirlenir. Bu sayede instance'a hangi portlardan giriş çıkış yapılacağı belirlenebilir. Örneğin, bir Django uygulaması üzerinde 80 numaralı port dinleniyorsa, "Inbound Rules" kısmında HTTP protokolü için 80 numaralı portun açık olduğundan emin olunmalıdır.
Protokol | Port Aralığı | Kaynak | Açıklama |
---|---|---|---|
HTTP | 80 | 0.0.0.0/0 | Dünya genelinden uygulamaya erişim izni verir. |
SSH | 22 | 12.34.56.78/32 | Belirtilen IP'den SSH erişimine izin verir. |
Ayrıca, instance'ın diğer kaynaklarla iletişim kurabilmesi için outbound trafik izinleri de tanımlanmalıdır. Örneğin, instance'ın dışarıya internete bağlanabilmesi için outbound trafik izinlerinin açık olması gerekmektedir.
- "Outbound Rules" kısmından "ALL Traffic" tanımlaması oluşturulabilir.
Security group'ların instance'lara atanması da oldukça kolaydır. EC2 dashboard'ından "Instances" kısmına tıklanarak, instance'ın "Actions" menüsünden "Networking" seçeneği açılır. Daha sonra "Change Security Groups" butonuna tıklanarak, instance için oluşturulan security groups seçilir.
AWS Load Balancer Kurulumu ve Yapılandırılması
AWS Load Balancer, web uygulamaları için yük dengeleme, tespit ve alım yapmak için kullanılan bir yöntemdir. Bu, kullanıcı taleplerinin birden çok EC2 instance'a dağıtılıp, uygulama performansının artırılmasına yardımcı olur. Yük dengeleyici kurulumu ve yönetimi, aşağıdaki adımlarla gerçekleştirilebilir:
1. AWS Management Console'a giriş yapın ve EC2 Dashboard'a gidin.
2. Load Balancer sekmesine gidin ve Load Balancer Oluştur'u tıklayın.
Load Balancer Tipi | Açıklama |
---|---|
Classic Load Balancer | HTTP, HTTPS ve TCP protokolleri için kullanılabilir. |
Application Load Balancer | HTTP ve HTTPS trafiği için kullanılır. |
Network Load Balancer | Yüksek performans gerektiren TCP trafiği için kullanılır. |
3. Load Balancer tipini seçin.
4. Load Balancer özelliklerini yapılandırın, açıklamaları okuyun ve gereksinimlere uygun olarak yapılandırın.
5. İlgili EC2 instance'ları seçin ve Load Balancer'a ekleyin.
6. Security Group ayarlarını yapılandırın.
7. Load Balancer için DNS adını alın.
8. Route53'te yer alan DNS kaydı için yönlendirmeyi yapılandırın.
9. Son olarak, Load Balancer ile ilgili istatistikleri ve durum bilgilerini denetleyebilirsiniz.
Uygulama Kodunun AWS’a Yüklenmesi
Django web uygulamasının AWS'a yüklenmesi için öncelikle uygulama kodu git veya herhangi bir versiyon kontrol sistemi kullanılarak bir depoya yüklenir. Daha sonra, EC2 instance üzerinde uygulama kodunun çalışabileceği bir sanal ortam oluşturulur. Sanal ortam oluşturmak için öncelikle Python ve pip yüklenmelidir. Sanal ortam oluşturmak için aşağıdaki komut kullanılabilir:
python3 -m venv myvenv
Bu komut, myvenv adında bir sanal ortam oluşturacaktır. Oluşturulan sanal ortamın aktifleştirilmesi için aşağıdaki komut kullanılabilir:
source myvenv/bin/activate
Aktifleştirilen sanal ortam, uygulama kodunun yükleneceği alandır. Bu alanı seçmek için öncelikle terminal ile aktif edilmiş olan sanal ortam kullanılmalıdır. Uygulama kodu, sanal ortam aktif edildikten sonra depodan kopyalanabilir veya indirilebilir.
Uygulama kodu kaynak kod dizinine kopyalandıktan sonra, gereksinimleri yüklemek için aşağıdaki komut çalıştırılabilir:
pip install -r requirements.txt
Bu komut, uygulamanın çalışması için gerekli olan tüm paketleri yükler. Daha sonra, uygulama kodu çalıştırılabilir. Bunun için, öncelikle uygulama kodunun bulunduğu dizine gitmek gerekir. Dizine gitmek için aşağıdaki komut kullanılabilir:
cd /path/to/project
Ardından, aşağıdaki komut çalıştırılarak uygulama çalıştırılabilir:
python manage.py runserver
Bu komut, uygulamanın yerel makinede çalışmasını sağlar. AWS üzerinde çalıştırmak için, EC2 instance üzerinde çalışacağından emin olunmalıdır. Instance üzerinde çalıştırılacak olan uygulama, yine terminal ile aktif hale getirilerek çalıştırılabilir. Böylece, Django web uygulaması AWS üzerinde başarılı bir şekilde deploy edilmiş olur.
AWS Veritabanı Oluşturma ve Bağlantısı
AWS üzerinde Django uygulamasını deploy etmek, veritabanı oluşturma ve bağlantı kurma işlemlerini de içermektedir. AWS RDS, Django uygulamasına veritabanı bağlantısı için kullanılan bir servistir. Veritabanı oluşturma işlemi basittir, yapmanız gereken tek şey AWS yönetim panelinden RDS hizmetini seçmek ve yeni bir veritabanı oluşturma işlemi başlatmaktır. Veritabanı oluşturulduktan sonra, güvenlik grupları ayarlanabilir ve veritabanı bağlantısı için gerekli bilgiler alınabilir.
Django uygulaması veritabanına bağlanmak için, settings.py dosyasındaki DATABASES ayarları güncellenmelidir. Bu ayarlar, RDS veritabanına bağlanmak için gerekli olan bilgileri içerir. Güncellenen ayarları kaydettikten sonra, uygulamayı çalıştırmak için EC2 instance'ı yeniden başlatmanız gerekir.
Veritabanı güvenliği oldukça önemlidir. Bu nedenle, RDS veritabanı ile ilgili güvenlik ayarlarının doğru yapılandırılması büyük önem taşımaktadır. AWS, güvenlik grupları ile bu konuda yardımcı olur. Güvenlik grupları, bir instance'a gelen trafiği kontrol etmenin ve belirli bir port üzerinden yalnızca yetkili kullanıcılara erişim vermenin bir yoludur.
Bir başka güvenlik önlemi de veritabanı şifrelemesidir. AWS RDS, veritabanı şifrelemesini destekler ve veritabanı şifrelemesi talep eden tüm istemcilerle çalışabilir. RDS veritabanı kullanırken, şifreleme özelliğini açmanız önerilir. Şifrelemesi olmayan bir veritabanı, hassas bilgilerin kötüye kullanılmasına veya çalınmasına neden olabilir ve şirketiniz için ciddi bir güvenlik riski oluşturabilir.
Flask Web Uygulamasının AWS'de Deploy Edilmesi
Flask web uygulamasının AWS üzerinde deploy edilmesi oldukça kolaydır. Ancak uygulamayı AWS üzerinde çalıştırmak için öncelikle Lambda fonksiyonu oluşturmak gerekmektedir. AWS Lambda, kullanıcılara kodlarını yazmadan ve sunucuları yönetmeden uygulamalarını çalıştırma imkanı sunan bir hizmettir.
Lambda fonksiyonu oluşturulduktan sonra, API Gateway oluşturulmalıdır. API Gateway, kullanıcıların uygulamanıza erişebilmesi için bir giriş noktası sağlar. Bu aşamada, Flask uygulamanızın konfigürasyonunu tamamlayarak AWS üzerinde çalıştırılmaya hazır hale getirmelisiniz.
Bunun yanı sıra, uygulamalarınızın güvenliği de oldukça önemlidir. AWS tarafından önerilen en iyi uygulamaları uygulayarak, API Gateway ve Lambda fonksiyonunuzu koruyabilirsiniz. Güvenlik, AWS Deploy işleminde öncelikli bir konudur ve mutlaka göz önünde bulundurulmalıdır.
Son olarak, Flask uygulamanızı AWS üzerinde test etmeyi unutmayın. Uygulamanızı test ederek, hataları tespit edebilir ve iyileştirmeler yapabilirsiniz. AWS tarafından sağlanan test araçları, uygulamanızı kolayca test etmenizi sağlar ve hızlı bir şekilde deploy edebilirsiniz.
Tüm bu adımları takip ederek, Flask web uygulamanızı AWS üzerinde deploy etmek oldukça kolaydır. Unutmayın ki, Amazon Web Services, dünyanın en yaygın kullanılan cloud computing platformudur ve birçok web uygulaması bu platformda barındırılmaktadır.
AWS Lambda Fonksiyonu Oluşturma
AWS Lambda, sunucu yönetmeyi gerektirmeyen bir yazılım hizmetidir. Bu nedenle, Flask web uygulaması ile kullanmak oldukça avantajlıdır. AWS Lambda fonksiyonu oluşturmak için öncelikle AWS Management Console'a giriş yapmak gereklidir.
Console'a giriş yapıldıktan sonra, sol menü üzerinden "AWS Lambda" hizmeti seçilmelidir. Ardından, "Functions" sayfasına gidilir ve "Create Function" butonuna tıklanır. "Author from scratch" seçilerek fonksiyon adı ve runtime belirtilir.
Sonrasında, "Create Function" butonuna tıklanarak oluşturma işlemi tamamlanır. Flask uygulaması Lambda fonksiyonun çalıştığı adresi kullanarak çalıştırılabilecektir.
Bu adımların yanı sıra, özellikle ölçeklenebilirlik açısından, AWS Lambda ile ilgili dikkat edilmesi gereken noktalar da bulunmaktadır. Örneğin, fonksiyonun süreleri ve RAM boyutları gibi özellikler kontrol edilmelidir. Bu şekilde, uygulamanın performansı ve hızı arttırılabilir.
AWS Lambda fonksiyonu Flask uygulamasını destekleyen bir seçenek olduğu için, birçok kullanıcının bu yöntemi tercih ettiği görülmektedir. Yüksek ölçeklenebilirlik için, Lambda'nın iyi bir tercih olduğunu söyleyebiliriz.
AWS API Gateway Kurulumu ve Tanımlama
AWS API Gateway, AWS üzerinde birden fazla kaynağa aynı anda erişebileceğimiz bir hizmettir. Bu hizmetin en önemli özelliği, API'lerin oluşturulabilmesi ve yönetilebilmesidir. AWS API Gateway, HTTP, RESTful API, lambda fonksiyonları ve diğer entegre servislere erişim sağlar. AWS API Gateway kullanarak, aynı zamanda olay işleyicileri ve fonksiyonlarla birlikte çalışabiliriz.
AWS API Gateway kurulumu ve yönetimi oldukça basittir. İlk olarak, AWS Management Console'da API Gateway'i seçmeniz gerekiyor. Daha sonra, API'lerimizi oluşturmaya başlayabiliriz. Bu noktada, takip edilmesi gereken adımlar oldukça basittir. Herhangi bir API oluşturma sürecinde, genel ayarları ve yönlendirmeleri yapmanız gerekebilir. Ayrıca, güvenlik, günlükler vb. ayarları da yapmanız gerekiyor.
AWS API Gateway, ilgili giriş ve çıkış noktaları arasında bir arayüz görevi görür. Bu sayede, sadece bir tane API'in kontrol edilebilmesi ve yönetilebilmesi mümkündür. Aynı zamanda, API Gateway Publisher API'si sayesinde, API'lerin API Gateway üzerinden nasıl yönetileceği hakkında detaylı bilgi edinebilirsiniz.
API Gateway, AWS üzerinde çalışanların listeleyebileceği hizmetler de sunar. Bunlar arasında S3, RDS, Lambda gibi birçok hizmet yer alır. API Gateway ayrıca API sürümleme, yüzleştirme, COTY (Cross Origin Resource Sharing), DNS isimleri, veri validasyonu ve filtreleme gibi özellikler sunar.
API Gateway, ölçeklenebilir bir hizmettir ve istenilen sayıda isteği karşılayabilir. Ayrıca, API Gateway, sadece istenen kaynaklara erişimi sağlar, bu da erişim güvenliği sağlar. Dahası, AWS Lambda'ya entegre edilerek fonksiyonların çalıştırılması sağlanabilir.
Sonuç olarak, AWS API Gateway, uygulamaların anahtar noktaları olan giriş ve çıkış yaklaşımlarının yönetilmesine olanak sağlayan bir hizmettir. AWS'de birçok hizmetle bütünleştirilebilir ve birden fazla kaynağa aynı anda erişim sağlayabilir. Bu hizmetin kullanımı oldukça kolaydır ve gerekenler için ayrıntılı bir dokümantasyon mevcuttur.
Uygulamanın AWS'a Yüklenmesi ve Test Edilmesi
AWS üzerinde Flask uygulamasının deploy edilmesi oldukça basittir. Amazon S3, EC2 ve AWS Elastic Beanstalk kullanarak kısa sürede uygulamanızı yayına alabilirsiniz. Hedef platform olarak Elastic Beanstalk kullanmanız önerilir. AWS Elastic Beanstalk, sürümlendirme, kaynak yönetimi, ölçeklendirme ve uygulama izleme gibi zorlu süreçleri otomatikleştirir.
Elastic Beanstalk üzerinde Flask web uygulaması yüklemek için öncelikle zip formatında bir dosya oluşturmanız gerekmektedir. Bu dosyayı AWS Console kullanarak yükleyebilirsiniz. Aşağıdaki adımları takip ederek uygulamanızı Elastic Beanstalk üzerinde yayına alabilirsiniz:
- Flask uygulamasını zip formatında paketleyin
- AWS Elastic Beanstalk Console'a erişin ve yeni bir uygulama oluşturun
- Uygulama için yeni bir environment oluşturun
- Environment için “Create new web server” seçeneğini belirleyin
- Uygulama için ihtiyacınız olan tüm AWS kaynaklarını tanımlayın
- Package seçerek zip formatında oluşturduğunuz Flask uygulamasını yükleyin
- Yüklemeyi tamamlayın ve environment adresine erişin
Uygulamanızı test etmek için Postman ya da cURL gibi bir uygulama kullanarak GET ya da POST isteği göndererek sonucu inceleyebilirsiniz. Test etmek için bir API Test Tool kullanarak da sonuçları incelemeniz mümkündür.