Üzerinde çalıştığınız Django uygulamalarını web üzerinde yayınlamak için çeşitli hizmetler bulunmakta. Bunlardan birisi de Heroku Bulut Uygulama Platformu. Local makinede çalıştırdığınız uygulamalarınızı kanlı canlı internette görmek istiyorsanız başvuracağınız platform olan Heroku için Türkçe kaynak olup olmadığını bilmiyorum. Yayına alma esnasında atılacak temel adımları buraya not etmek istedim.
Heroku ile ilgilenmeden önce projemizi Github'a atmak yerinde bir hareket olacaktır. Ancak ben bunu yapmak yerine projemi yine yerel makinede bulunan Git deposundan çektim.
Bu işlemler için "herokulive" adında bir klasör oluşturalım. Bu opsiyonel bir adım elbette. Daha sonra klonlama işlemine başlayalım.
git clone https://github.com/someusername/projectname.git
ya da
git clone /home/orhan/venv/weird/
Burada son kısımda yazdığımız adresi projemizin bulunduğu herhangi bir klasör olarak girebiliriz. Bu arada tüm bunları virtualenv'de yapmamız gerekiyor. Bazı bağlılıkları kurmalıyız. Bunları kurarak hem web sunucusu için hem de yerel heroku sunucusu için gerekli bağlılıkları gidermiş olacağız.
pip install dj-database-url gunicorn whitenoise
Tüm bu bağlılıkları Heroku için tanımlamamız lazım. "requirements.txt" adıyla bir dosya yaratıp şunları ekleyelim:
dj-database-url==0.4.2 Django==1.10.4 gunicorn==19.7.0 whitenoise==3.3.0
Bunları otomatik olarak gerçekleştirmek için şu komutu kullanabiliriz:
pip freeze > requirements.txt
Son olarak aynı dosyanın son satırına şunu ekleyelim:
psycopg2==2.7.1
Hangi ortamda çalıştığımızı da Heroku sunucusuna anlatmak için "runtime.txt" adıyla dosya oluşturup çalıştığımız Python sürümünü ekleyelim:
python-3.4.2
Ayrıca "Procfile" adıyla başka bir dosya yaratıp şunu eklememiz gerekiyor:
web: gunicorn weird.wsgi --log-file -
"weird" burada projemizin ismine göre değiştirilmelidir.
Ayrıca 'wsgi.py' dosyamıza şunları ekleyelim:
from whitenoise.django import DjangoWhiteNoise application = DjangoWhiteNoise(application)
"settings.py" dosyasına şu değişiklikleri yapalım:
"DATABASES" kısmının hemen altına;
#Update database configuration with $DATABASE_URL. import dj_database_url db_from_env = dj_database_url.config(conn_max_age=500) DATABASES['default'].update(db_from_env)
"USE_TZ" kısmının hemen altını da şu şekilde değiştirelim:
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.9/howto/static-files/ STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles') STATIC_URL = '/static/' # Extra places for collectstatic to find static files. STATICFILES_DIRS = ( os.path.join(PROJECT_ROOT, 'static'), ) # Simplified static file serving. # https://warehouse.python.org/project/whitenoise/ STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
Tüm bu değişiklikleri yaptıktan sonra static dosyalarını toplamalıyız. İlk olarak "settings.py" dosyasının bulunduğu dizine "static" adıyla bir dizin oluşturduktan sonra aşağıdaki komutu yazalım:
python manage.py collectstatic
Şimdi Heroku ile iletişime geçebiliriz. Proje klasöründe Heroku'ya bağlanalım. Şu linkteki adımları tamamlayarak bağlanalım ve projemizi Heroku'ya yükleyelim.
Projenize Postgresql veritabanı eklemeyi unutmayın:
heroku addons:create heroku-postgresql:hobby-dev
Push sırasında 'static' hatası verirse -ki verecektir- aşağıdaki komut bize yardımcı olacaktır.
heroku config:set DEBUG_COLLECTSTATIC=1
Kaynaklar:
heroku config:set DEBUG_COLLECTSTATIC=1
Kaynaklar:
Hiç yorum yok:
Yorum Gönder