PYTHON-DJANGO-BLOG PROJE ÇALIŞMASI 13 (Heroku ile projenizi yayına almak-depolying your application)

Bu Python Django yazımızda, uygulamamızı Heroku'ya nasıl yerleştireceğimizi anlatmaya çalışacağız. Heroku bulut tabanlı platform servisi. 2007'de kurulan Heroku, o dönemde sadece Ruby dilini desteklerken; günümüzde JavaNode.jsScalaClojurePythonPHP ile Go dilleri ve platformlarını desteklemektedir. Heroku, platformlarında işletim sistemi olarak Ubuntu'yu kullanmaktadır.
(kaynak: wikipedi)
Heroku, birçok düşük düzeyli sistem yönetimini soyutlayan ve uygulamamız için değişiklikleri kolayca dağıtmamıza, güncellememize ve geri almamıza olanak tanıyan bir platformdur. Heroku ya sitenizi yerleştirirken web server, firewall gibi ayarlarla uğraşmanıza gerek kalmaz. Heroku'nun dosya sistemi normal sistemlerden biraz farklıdır. Static files dosyası alıştığımız gibi ama resimler(images), resim yüklemeler(uploads) gibi şeyler silinecektir, bunun olmaması için Amazon Web Service(AWS) gibi ücretsiz servislerden faydalanabilirsiniz. Tüm bunlar için bir heroku hesabı oluşturmak gerekir. Birazdan aşağıdaki adımları sırayla yapalım.

Projemizi heroku platformuna kolaylık yerleştirebiliriz. Üstelik ücretsiz barındırma seçeneği de sunmaktadır. Şimdi bu işlemler için aşağıdaki linklerdeki bağlantıları kullanarak size uygun işletim sistemini seçerek indirip kurma işlemini yapınız.

1. Heroku platformunu kullanabilmek versiyon kontrolü için bir  git hesabı oluşturun bunun için bilgisayarınıza git indirip- bilgisayarınıza kurun indirmek için linki tıklayın:
git indir ve kur  ( bu sayfada işletim sisteminize uygun git i kurun- Bu yazıda windows  kullanılıyor.)

2. Her oku hesabı oluşturulması ve herokunun CLI nin yüklenmesi
a.  Şimdi heroku.com a gidin ve ücretsiz bir hesap açın.
b.  Biz bu yazımızda Pycharm editörünün bize sunduğu terminal üzerinden heroku komutlarını kullanabileceğiz. Eğer böyle bir editör yoksa herokuya özel CLI yi indirmek için aşağıdaki açıklamaları dikkatli okuyun.

Bu yazıda windows işletim sistemi için yapılması gerekenleri anlatacağım. 
Heroku Command Line Interface indirelim(CLI)  bu heroku özel komut satırı ile projemizi herokuya yerleştireceğiz. Şimdi de Heroku CLI Install indirmek için aşağıdaki linke tıklayın ve kullandığınız işletim sistemine uygun CLI yi kurun:
https://devcenter.heroku.com/articles/heroku-cli#download-and-install



Bu heroku CLI kurarken ileri-ileri seçeneği ile kurulumu bitirdikten sonra masaüstüne Git Bash adında bir kısayol oluşacak-bu kısayola tıklayıp programın açılmasını bekleyin.( Bu yazımızda Pycharm Editörü kullanılıyor dolayısıyla CLI olarak bu programın editörün terminalinde işlemler yapacağız.)
Şimdi yüklediğiniz git bash i açıp deneme yapalım. Git bash i açın ve aşağıdaki komutları sırayla yazıp deneyin. 
( biz bu deneme işini pycharm editöründe-Terminal seçeneği ile de yapabileceğiz.)
Aşağıdaki adımlar sayesinde terminal ile heroku hesabına giriş yapıp herokuyla ilgili işlemleri komutları yapabileceksiniz.
>>>heroku yazıp ENTER a basın.(karşınıza herkou ile ilgili bilgiler gelmesi beklenir)

Şimdi de heroku platformuna giriş yapalım bunun için aşağıdaki komutları girin.

>>>heroku login yazıp ENTER a basın.
>>> herhangi bir tuşa basmanızı ister ve sonra otomatik olarak tarayıcıyı açar ve  heroku adresine gider. oraya login olmanızı ister. Zaten az önce üye olmuştunuz o hesapla login olun-giriş yapın. Hesabınıza başarılı giriş yapıldığını ekranda görebilirsiniz.

(Git bash uygulmasınada devam ediyoruz. Biz bu yazıda Pycharm editörde terminalden devam ediyoruz.)
3.
Gunicorn HTTP’den gelen istekleri(aslında kullanıcıların isteklerini) Python diline çevirerek Django projemizin HTTP ile konuşmasını sağlayan bir ara protokol yazılımı diyebiliriz. Python dili ile geliştirilmiş django projesi ile kullanıcı arasında iletişimi sağlayan ara yapıya  Gunicorn diyebiliriz. Gunicorn aslında bir  WSGI HTTP server'dır.

Gunicorn niçin gerekli olduğunu anladıktan sonra gunicorn yüklemek için Pycharm terminale aşağıdaki komutu girin.
>>> pip install gunicorn komutu girilip ENTER a basılır. Projemize gunicorn yüklenmiş oldu.
(gunicorn ne yapar kısaca hatırlayalım; istemci ile sizin django-python ile geliştirdiğiniz web siteniz arasında iletişimi sağlayan ara platformdur.)

4. Şimdi de requirements.txt dosyasını oluşturalım bunun amacı projemizde hangi paketlerin kullanıldığı bilgisini herokuya bildirmemizi sağlayacak. Projemizde hangi paketler kullanılmış onların listesini almak için aşağıdaki komutu girelim.
Pycharm terminale aşağıdaki komutu girin.
>>> pip freeze yazıp ENTER a basın. (Terminalde karşınıza o ana kadar projenizde kullandığınız paketler listelenecek, listeyi kopyalayın-projenizin bulunduğu klasöre sağ tuşla requirements.txt dosyasına listeyi yapıştırın .)

5. Sırada versiyon kontrol sistemi ayarları var. Git versiyon kontrol projede birden çok kişinin çalışmasına ve her birinin kendi versiyonunu oluşturmasına, daha sonra değişiklik yapılmak istendiğinde istenilen versiyona dönülüp(geri alma işlemi yapılabilir) oradan değişiklik yapılmasına olanak veren bir kontrol sistemidir. Proje üzerinde yapılan bir değişikliğin sadece ilgili kısmını değil, projenin tamamını saklar, böylelikle projenin son halinin her geliştirici tarafından bir bütün halinde görülmesine olanak sağlar. Yerel ve uzak bilgisayarlar olmak üzere farklı ortamlarda saklanması projenin yedeği olmasını sağlar. 

Şimdi bizde projemizi git komutlarından birkaç tanesini kullanarak git e aktarmış(yedeklemiş) olacağız. Projemizi git hesabına göndermeden önce sadece bizim yerel(local) makinamızda işimize yarayan kısımları git e yüklemeye gerek yok o yüzden bir gitignore dosyası oluşturup bunların gereksiz yere git e yüklenmesini engellemiş oluruz.

gitignore dosyasını oluşturalım arama motoruna "django gitignore file" şeklinde arama yapıp veya buradaki linkten ignore dosyasında bulunan öğeleri kopyalayın. gitignore dosyasını oluşturmak için sırayla projenizin ana klasöründe sağ tuş -yeni dosya- .ignore(dosya adında nokta olmasına dikkat edin ignore yazın yazıp ENTER a basın ve öğeleri buraya yapıştırın.

Pycharm terminale geçin

>>> git add -A komutunu girin ve ENTER a basın.( bu komut ile projede .gitignore gibi bir dosya değişikliğini değişiklik bildirmemizi sağlar.)
>>>git status yazıp ENTER a basılır. (Bu komut git e hangi dosyaların gönderileceğini gösterir.)

Projemizde ilk defa git e dosyaları gönderiyoruz. Bunun için aşağıdaki git komutu kullanılır.
>>> git commit -m " dosyalar ilk kez git e gidecek"  ENTER a bas. m açıklama yapmayı sağladı.( burada komutlarımız local olarak  makinamızda git e eklendi şimdi sırada bu dosyaların heroku ya gönderilmesinde)

6. Pycharm terminalden heroku app oluşturmak için  devam ediyoruz.

Aşağıdaki komutu terminale girin
>>> heroku create denemehesabiapp(app inize istediğiniz ismi verin) ENTER a basın.
( heroku size istediğiniz isimde bir app oluşturacaktır. Burada aslında bir domain yani web adresi yaratmış oldu)

>>>heroku open ENTER a basılır oluşturduğunuz web sayfasına gider ancak karşınıza default bir sayfa gelir yani henüz kendi çalışmamız herokuya gönderilmedi)

>>>git push heroku master yazıp ENTER a basılır.( Bu işlem projenizi heroku ya gönderir. Bu işlemi yaptığınızda projenizin-sitenizin gelişmişliğine göre bazı uyarı-ayarlamalar daha yapmanızı isteyebilir. Bu ayarları bu komutu uyguladığınızda neleri düzeltmeniz gerektiğini size söyler.)

Şimdi bu komut uygulandığında projemizle ilgili düzeltilmesi gereken-ayarları inceleyelim. 
- Hata1:git push heroku master komutu uygulandığında karşılaştığımız hatalardan biri Python manage.py collectstatus --noinput  ile ilgili bir hata aldık. 
Hata1 çözüm staticfiles projemiz artık bitmiş bir ürün olduğunda farklı bir işlem yapılması gerekir. STATICROOT setting ayarlarını yapmak gerekir. 
Şimdi bunu düzeltmek için projemizde setting.py dosyasını açın. STATIC_ROOT satırını ekleyin. Bu hatayı düzettik.
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.1/howto/static-files/

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
Şimdi yaptığımız değişikliklerin herokuya bildirilmesi var . Bu konutu daha önce 5.maddede kullanmıştık, yine kullanalım. Pycharm terminali açıp 
>>> git add -A ENTERa basılır.
>>>git commit -m " staticroot ayarı yapıldı"  ENTER a basılır.(local değişiklikler yapıldı şimdi sırada push işlemi yapılacak)
>>> git push heroku master (herokuya değişikliklerimiz bildirildi. siteyi ziyaret edip hata var mı bakabilirsiniz. )

Hata2: Projenize-sitenize girdiğinizde anasayfada heroku logs --tail açıklaması ile karşılaşıyoruz. Şimdi bu açıklamaya göre Pycharm Terminal i geçelim ardından aşağıdaki komutu terminale girin
 >>> heroku logs --tail komutunu girin .(Bu komutla bir sürü şey karşımıza geldi satıları incelerseniz error olarak "No web process running" hatasını görürüz. 

Hata2 Çözüm:
20







 















Yorum Gönder

0 Yorumlar