Django Projesinin AWS EC2 ile Yayınlanması

Güçlü ve esnek bir yapıya sahip olan Django'da geliştirilen projenin Amazon Web Servisleri (AWS) EC2 instance (örneği) üzerinden dağıtılması için rehber olacak bu blog yazısını dikkatlice uygulayın.

Django Projesinin AWS EC2 ile Yayınlanması
NetAdvi tarafından hazırlanmıştır.
Son Güncelleme: 11 Kasım 2023 17:44

Güçlü ve esnek bir yapıya sahip olan Django'da geliştirilen projenin Amazon Web Servisleri (AWS) EC2 instance (örneği) üzerinden dağıtılması (deployment) için rehber olacak bu blog yazısını dikkatlice uygulayın. Adım adım işlemleri gerçekleştirerek Python ortamında geliştirdiğiniz Django projenizi deploy edin.

Hızlı ve kolay bir yöntemle django web sitenizi yayınlamak istiyorsanız daha önce yazdığımız "Django Projesi Nasıl Yayınlanır?" konusuna da göz atabilirsiniz.

AWS EC2 Instance Oluşturma

Django projemizi yayınlamak için EC2 hizmetini kullanacağız ilk önce yapmamız gereken bir instance oluşturmak olacak. Eğer EC2 instance  oluşturmayı bilmiyorsanız AWS EC2 Instance Oluşturma yazımızdaki yönergeleri takip ederek bir tane EC2 örneği oluşturun. Kullanacağımız işletim sistemi Ubuntu olacak.


AWS EC2 Instance Ubuntu Sisteminin Yapılandırılması

EC2 instance connect sekmesinden bağlandığımız komut isteminde sistemin hazırlanması için kullanmamız gereken komutlar aşağıdaki gibi olmalıdır.

  1. sudo apt-get update
  2. sudo apt-get upgrade
  3. python --version (python versiyonunu kontrol edin. Hata veriyorsa adımları tekrar edin)
  4. sudo apt-get install python3-venv (venv kurulumu)
  5. python3 -m venv myenv (venv oluşturulması)
  6. source myenv/bin/activate (venv aktifleştirilmesi)


Github Üzerinden Projenin EC2 Örneğine Klonlanması

Oluşturduğumuz projeyi Github üzerinden aşağıdaki komutu kullanarak EC2 instance klonluyoruz. Eğer projeniz Github repo'da yok ise Github Repo Oluşturma yazımızdaki yönergeleri takip edip bir tane oluşturun.


git clone <repo-url>

komutunu kullanıp clone işlemini başlatıyoruz. (<repo-url> repo'nuzun URL adresi olmalı.).


Bizden kullanıcı adı ve parola isteyebilir. Github kullanıcı adımızı ve şifresini girin. Kabul etmezse şifreniz yerine Github ayarlarından bir tane access token oluşturun ve password kısmına sağ tık yapıp işleminize devam edin.

Klonlama işlemi bittikten sonra "ls" komutunu kullanarak proje başarılı bir şekilde klonlanmış mı kontrol edin.


EC2 Instance Ubuntu Sistem Nginx Kurulumu

Django projemizi aktifleştirmek için Nginx'e ihtiyacımız olacak.

Nginx bir web sunucusu ve ters proxy sunucusu yazılımıdır. Nginx yüksek performanslı, düşük bellek kullanımı ve çoklu iş parçacığı desteği sunan bir web sunucusu olarak öne çıkar


Terminal ekranına aşağıdaki komutu yazıp Nginx'i kuralım

sudo apt-get install -y nginx

karşımıza çıkan seçenekleri "Enter" ile onaylayıp işlemi başarılı bir şekilde sonuçlandıralım.


EC2 Instance Ubuntu Sistem Gunicorn Kurulumu

Gunicorn Nedir?

Gunicorn (Green Unicorn), Python web uygulamalarını çalıştırmak ve yönetmek için kullanılan WSGI (Web Server Gateway Interface) HTTP sunucusudur.


WSGI Nedir?

WSGI, Python web uygulamalarının web sunucularıyla iletişim kurmasını ve istemcilere yanıt vermesini sağlayan bir standart arayüzdür. Gunicorn, bu WSGI arayüzünü uygulamalarınla entegre ederek HTTP isteklerini işler.


Aşağıdaki komutu kullanıp Gunicorn kurulumunu yapalım. Sanal ortamın aktif olamasına dikkat edin.(venv)

pip3 install gunicorn

pip list veya pip freeze komutu ile gunicorn varlıığını doğrulayın. Ayrıca requirements.txt dosyası varsa kurulumunu yapmayı unutmayın.


EC2 Ubuntu Sistem Gunicorn.conf Dosyası Oluşturma

Konfigürasyon dosyasını oluşturmadan önce sistemimize supervisor yüklememiz gerekecek bunun için aşağıdaki komutu kullanarak yüklemeyi gerçekleştiriyoruz.

sudo apt-get install supervisor


Kurulumunu yaptığımız gunicorn'un konfigürasyon dosyasını oluşturmamız gerekiyor.

"cd" komutunu kullanarak "/etc/supervisor/conf.d/" dizinine gidelim.

cd /etc/supervisor/conf.d


gunicorn.conf dosyasını oluşturalım

sudo touch gunicorn.conf


gunicorn.conf dosyasının içeriğini düzenleyelim

sudo nano gunicorn.conf


gunicorn.conf dosya içeriğine şu satırları yapıştırıp projenize göre düzenleyin:

[program:gunicorn]
directory=/home/ubuntu/proje_adi
command=/home/ubuntu/myenv/bin/gunicorn --workers 3 --bind unix:/home/ubuntu/proje_adi/app.sock proje_adi.wsgi:application
autostart=true
autorestart=true
stderr_logfile=/var/log/gunicorn/gunicorn.err.log
stdout_logfile=/var/log/gunicorn/gunicorn.out.log

[group:guni]
programs:gunicorn

*** KENDİ PROJENİZE GÖRE DEĞİŞİRMENİZ GEREKEN YERLER KIRMIZI İŞARETLENMİŞTİR!!!


log dosyasını oluşturun

sudo mkdir /var/log/gunicorn


oluşturduğunuz yapılandırma dosyasının aktif olup işleme girmesi için sırasıyla aşağıdaki komutları çalıştırın.

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl status

son komut satırından sonra RUNNING bilgisini ekranda görmüyorsanız işlemleri tekrarlayın.


Nginx.conf Dosyasının Yapılandırılması

"cd" komutunu kullanarak /etc/nginx dizinine gidiyoruz.

cd /etc/nginx


Ardından "nginx.conf" dosyasını düzenlemek için "nano" komutunu kullanalım

sudo nano nginx.conf


"nginx.conf" dosya içeriğinde değiştirmemiz gereken satır "user www-data;" satırı. Aşağıdaki şekilde değiştiriyoruz.

user root;

CTRL+O kombinasyonu ile kayıt edip, CRTL+X tuş kombinasyonu ile çıkıyoruz.


"sites-available" dizinine geçip django.conf dosyamızı oluşturalım.

cd /etc/nginx/sites-available
sudo touch django.conf
sudo nano django.conf


"django.conf" dosya içeriği yapılandırma ayarları aşağıdaki gibi olmalı.

server {
        listen 80;
        server_name alanadi.com www.alanadi.com;
location /static/ { alias /home/ubuntu/proje_adi/staticfiles/;
} location /media/ { alias /home/ubuntu/proje_adi/media/;
} location / { include proxy_params; proxy_pass http://unix:/home/ubuntu/proje_adi/app.sock;
proxy_set_header X-Forwarded-Proto $scheme; } }

*** KENDİ PROJENİZE GÖRE DEĞİŞİRMENİZ GEREKEN YERLER KIRMIZI İŞARETLENMİŞTİR!!!

*** static ve media klasörleri kullanıyorsanız belirtin kullanmıyorsanız belirtmeniz gerekmez!!!


django.conf dosyamızı Nginx'e bağlantı verelim yani tanıtmamız için gereken komutu çalıştıralım

sudo ln django.conf /etc/nginx/sites-enabled


nginx servisini yeniden başlatalım.

sudo service nginx restart


Artık kurulum işlemi tamamlandı sistemimiz aktif şekilde çalışıyor. Eğer projeniz aktif olamadıysa lütfen kurulum adımlarını gözden geçirin.



remzi
13 Haziran 2024 17:59

5 yıldiz aldınız :) teşekurler

NetAdvi
14 Haziran 2024 11:33

Geri bildirimiz için teşekkürler. İyi çalışmalar :)