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

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:
- S3 bucket'ta web uygulaması barındırma
- ECS, EKS veya Fargate konteynerlerinde web uygulaması barındırma
- Elastic Beanstalk ile web uygulaması barındırma
- 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
- Amazon Security Group (Güvenlik Grubu)
- Amazon EC2
- Amazon Load Balancer (Yük Dengeleyici)
- Amazon Route53
Ne Yapacağız?
Temel mimari aşağıda gösterildiği gibi olabilir:

İ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.

İ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.

İ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.

İ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)

İmaj-005: SG-for-ALB-for-WELR'ın gelen (inbound) kuralları
Adım 4: Target Group Oluşturma

İ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

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.
İ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.comiçin
İmaj-009 - 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