Bulut Bilişim
6 dk okuma

AWS EC2'de Web Uygulaması Barındırma

AWS EC2 üzerinde web uygulaması barındırma, Apache kurulumu, FTP yapılandırması, Load Balancer ve Route53 entegrasyonu için kapsamlı rehber.

N
Necmettin Demir
21 Temmuz 2023
Yükleniyor...

AWS EC2'de Web Uygulaması Barındırma

AWS EC2 Web Hosting
AWS EC2 Web Hosting
AWS ortamında bir web uygulamasını barındırmanın birçok yolu vardır. Web uygulamanız geleneksel bir web sitesi veya bir API projesi olabilir. Her iki tür de bundan sonra "web uygulaması" (web app) olarak adlandırılacaktır.

Giriş

AWS ortamında bir web uygulamasını barındırmanın birçok yolu vardır. Web uygulamanız geleneksel bir web sitesi veya bir API projesi olabilir. Her iki tür de bundan sonra "web uygulaması" (web app) olarak adlandırılacaktır. AWS'de bir web uygulamasını barındırmak için uygulayabileceğimiz bazı yollar aşağıda listelenmiştir:
  1. S3 bucket'ta web uygulaması barındırma
  2. ECS, EKS veya Fargate konteynerlerinde web uygulaması barındırma
  3. Elastic Beanstalk ile web uygulaması barındırma
  4. Doğrudan EC2 üzerinde web uygulaması barındırma
[!NOTE] AWS'de içerik barındırmak için 1, 2 ve 3 numaralı seçenekler modern yaklaşımlar olsa da, bu makalede eski sistemlerde çok çalışmış ancak eski alışkanlıklarıyla AWS ortamına geçmek isteyen kişilere hitap ediyoruz!
Amacımız; Route53, Application Load Balancer, Security Groups vb. akışını EC2 ile birlikte hızlıca tanıtmaktır.
Bu makalede son seçeneği inceleyeceğiz. EC2'de kullanılabilecek birçok işletim sistemi vardır. Biz, "Free Tier" (Ücretsiz Katman) dahilinde ulaşılabilen en düşük konfigürasyonlu Linux'u kullanacağız. AWS Free Tier hakkında daha fazla bilgi için buraya tıklayın.
Amazon EC2, bir web uygulamasını barındırmak için doğrudan kullanılabilir. Bu makalede, böyle bir görevi yerine getirmek için gereken tüm adımlar adım adım açıklanmaktadır.

Arkaplan

Ne Yapacağız?

Temel mimari aşağıda gösterildiği gibi olabilir:
Sistem Mimarisi
Sistem Mimarisi
İmaj-001: Ana sistem görünümü
Diyelim ki amacınız web sitenizi bir AWS EC2 makinesinde barındırmak. Uygulamanın basitliği açısından, AWS EC2'deki Apache Web sunucusunda statik bir HTML sayfası yayınlanacaktır. Apache'nin varsayılan www klasörüne FTP üzerinden erişmeyi mümkün kılacağız. Bu gereksinimlerin yanı sıra, bir alan adı (domain) AWS Route53 aracılığıyla bu web uygulamasına yönlendirilecektir.
İmaj-001'de gösterilen mimariyi tasarlamak için, gri daireler içindeki numaraların sırasına göre AWS öğelerini oluşturacağız.
Diyelim ki alan adımız WELR.com ve bunun çalışan öğelerini EC2'de barındırmak istiyoruz.
WELR.com içeriğini bir AWS EC2'de barındırmak için tüm adımlar aşağıdaki gibi olabilir.

Adım 1: AWS'de bir Güvenlik Grubu Oluşturma

Bu güvenlik grubu EC2 için kullanılacaktır. Bir güvenlik grubu, bağlı olduğu nesnenin güvenlik duvarı olarak düşünülebilir.
Tüm gelen (inbound) portları aşağıda gösterildiği gibi ayarlayın:
  • 20-21 (FTP)
  • 1024-1048 (FTP), isteğe bağlı
  • 22 (SSH)
  • 80 (HTTP)
  • 8080 (HTTP özel), isteğe bağlı
  • 443 (HTTPS)
Aşağıdaki resimdeki kırmızı dikdörtgen, ilgili güvenlik grupları aracılığıyla ALB'den EC2'ye olan akışı göstermek açısından önemlidir.
İnbound Kuralları
İnbound Kuralları
İmaj-002: SG-for-EC2-for-WELR'ın gelen (inbound) kuralları

Adım 2: Bir EC2 Instance Oluşturma

AWS'de bir EC2 instance'ı oluşturmak basit bir işlemdir. Aşağıdaki resmin sağ üst köşesindeki Connect (Bağlan) düğmesi, EC2'ye bağlanmak için kullanılacaktır.
EC2 Oluşturma
EC2 Oluşturma
İmaj-003: EC2-for-WELR
EC2-for-WELR'a tüm gereksinimleri yükleyin.
Öncelikle, EC2 komut satırına bağlanmalısınız. Bu adımı yapabilmek için birçok yol vardır ancak en basiti doğrudan AWS web konsolu üzerinden bağlanmaktır.
EC2 Bağlantısı
EC2 Bağlantısı
İmaj-004: EC2-for-WELR'a Bağlanma
Connect düğmesine bastıktan sonra, EC2 komut satırına ec2-user olarak bağlanacaksınız.

2.1- Apache Kurulumu

TEXT
> sudo s
> yum update -
> yum install -y httpd.x86_6
> systemctl start httpd.servic
> systemctl enable httpd.service
Tüm web uygulaması dosyaları Apache'nin varsayılan web klasöründe olacaktır.
Apache için varsayılan web klasörü /var/www/html dizinidir.

2.2 - FTP Kurulumu

TEXT
> sudo su
> yum update -y
> yum install vsftpd
			
> sudo vi /etc/vsftpd/vsftpd.conf
FTP yapılandırma dosyasında aşağıda gösterilen bazı değişiklikleri yapmalısınız.
Yapılandırma dosyasında tüm bu satırlar gösterildiği gibi mevcut olmalıdır. vi editörünü kullanmak için nasıl kullanıldığını bilmelisiniz. Eğer vi editörünü ilk kez kullanacaksanız buraya göz atın.
TEXT
# aşağıdaki satırların tümündeki # işaretlerini kaldırın
anonymous_enable=NO
#
local_enable=YES
#
write_enable=YES
#
local_umask=022
#
dirmessage_enable=YES
#
xferlog_enable=YES
#
connect_from_port_20=YES
#
chroot_local_user=YES
write_enable=YES
allow_writeable_chroot=YES
#
listen=NO
#
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=18.170.116.xxx
vsftpd servisini yeniden başlatmak için aşağıdakilerden biri kullanılabilir:
TEXT
> /etc/init.d/vsftpd restart
VEYA:
TEXT
> systemctl restart vsftpd
FTP için bir kullanıcı eklemek üzere EC2 komut satırında aşağıdakileri yapın:
TEXT
> adduser awsftpuse
> passwd awsftpuse
> usermod -a -G root awsftpuser
> usermod -d /var/www/html/ awsftpuse
> chown -R awsftpuser /var/www/htm
> systemctl restart vsftpd

2.3 - FTP İstemcisi Kurulumu

Örneğin, Windows üzerinde Filezilla istemcisi.
AWS'de tüm öğeleri oluşturduktan sonra, bir FTP istemcisi ile bağlanmayı ve bir dosya yüklemeyi deneyin. index.html dosyasını EC2'deki FTP web klasörüne yükleyebilmelisiniz.

Adım 3: ALB için Güvenlik Grubu Oluşturma

Tüm gelen (inbound) portları aşağıda gösterildiği gibi ayarlayın:
  • 20-21 (FTP)
  • 1024-1048 (FTP), isteğe bağlı
  • 22 (SSH)
  • 80 (HTTP)
  • 8080 (HTTP özel), isteğe bağlı
  • 443 (HTTPS)
ALB İnbound Kuralları
ALB İnbound Kuralları
İmaj-005: SG-for-ALB-for-WELR'ın gelen (inbound) kuralları

Adım 4: Target Group Oluşturma

Target Group
Target Group
İmaj-006: Target Group TG-for-WELR

Adım 5: Application Load Balancer Oluşturma

Bu ALB, TG-for-WELR hedef grubuna sahip olmalıdır.
Target group (Hedef grup), bir EC2 grubudur. Ancak şimdilik sadece EC2-for-WELR instance'ını içeriyor.
Ek olarak, bu ALB SG-for-ALB-for-WELR güvenlik grubuna sahip olmalıdır.
İmaj-007: Application Load Balancer ALB-for-WELR
ALB Oluşturma
ALB Oluşturma

Adım 6: Güvenlik Grupları Arası İzinler

SG-for-EC2-for-WELR'a, SG-for-ALB-for-WELR'dan gelen tüm TCP isteklerini kabul edecek şekilde gelen (inbound) kuralları ekleyin.
Güvenlik Grupları Arası Akış
Güvenlik Grupları Arası Akış
İmaj-008: Güvenlik grupları aracılığıyla ALB'den EC2'ye akışa izin verme

Adım 7: Route53 Hosted Zone Oluşturma

Aşağıdaki gibi dört kayda (record) sahip olmalıdır:
  • NS ve SOA otomatik olarak oluşturulur
  • Record A oluşturun. Aşağıdaki resimde görüldüğü gibi
  • Record CNAME oluşturun - welr.com için
İmaj-009 - Route53 Kayıtları
Route53 Kayıtları
Route53 Kayıtları
NS adresleri, alan adı yönetim arayüzünde alan adını EC2 Apache'de barındırdığınız web uygulamasına yönlendirmek için kullanılabilir.

Sonuç

Bu makalenin başında belirtildiği gibi, herhangi bir bulut ortamında bir web uygulamasını barındırmanın birçok yolu vardır. AWS EC2 üzerinde bazı incelemeler yaptık. Görüldüğü gibi, web uygulamasının çalışan öğelerini Apache'ye FTP üzerinden manuel olarak dağıttığımızı varsayıyoruz. Ancak, herhangi bir CI/CD aracıyla bu işlem FTP komutları kullanılarak otomatikleştirilebilir.
Bu makalenin temel amacı, Route53 ve Yük Dengeleyicilerin (Load Balancers) arkasındaki EC2'de bir web uygulamasının AWS ortamında nasıl barındırılacağını göstermektir.

Öğrendiklerimiz:

  • EC2 instance oluşturma ve yapılandırma
  • Apache web sunucusu kurulumu
  • FTP yapılandırması ve kullanıcı ekleme
  • Security Group ayarları
  • Application Load Balancer kurulumu
  • Route53 ile domain yönlendirme

☁️ Bulut Bilişim Hizmetleri

AWS, Azure ve Google Cloud platformlarında altyapı tasarımı, migrasyon, yönetim ve optimizasyon hizmetleri sunuyoruz.

Hizmetimizi İncele

📞 Bizimle İletişime Geçin

AWS ve bulut bilişim çözümlerimiz hakkında detaylı bilgi almak için ekibimizle görüşün.

İletişim