Kimlik bilgilerini ayrı olarak Nesne Depolama Birimi ile Django'da Depolama

Giriş

Python Decouple, geliştiricilerin yapılandırma ayarlarını koddan ayırmalarını kolaylaştırmayı amaçlayan bir Python kitaplığıdır. Başlangıçta Django için tasarlandı, şimdi parametrelerin saklanması ve kodunuzdan ayrı sabit değerler tanımlanması için genel bir Python aracı.

Bu yazıda, Python Decouple'ın nasıl kurulacağı ve DigitalOcean'ın nesne depolama çözümü olan Spaces'i kullanarak basit bir Django uygulamasında nasıl kullanılacağı üzerinde duracağız.

Ön şartlar

Bu ders için yeterince hazırlanmak için aşağıdakilere ihtiyacınız olacak:

  • Bir Ubuntu veya Debian Linux sunucusunda sudo ayrıcalıklarına sahip bir kök olmayan kullanıcı hesabı kuruldu. Bunu önceden ayarlamadıysanız, Ubuntu 16.04 veya Debian öğreticisinin ilk sunucu ayarlarını takip edin.
  • Bir DigitalOcean Uzayı ve oluşturulan bir API anahtarı. Bununla ilgili rehberlik için bir Uzay oluşturmak ve API anahtarını kurmak için bu öğreticiyi takip edebilirsiniz.

İlk sunucu kurulumu ve bir DigitalOcean Uzay ve API anahtarı ile başlamak için hazırsınız demektir.

1. Adım – Sanal Ortam Kurma

Başlamadan önce, zaten yapmadıysanız, şimdi sunucunuzu güncellemek ve güncellemek için iyi bir zamandır.

  • sudo apt-get güncelleme && sudo apt-get -y yükseltme

Sunucunuz Python 3'le birlikte gönderilmiş olmalıdır. Yüklü olduğunu doğrulamak için aşağıdaki komutu çalıştırın:

  • sudo apt-get install python3

Sonra, pip'e Python için paket yöneticisini kuralım.

  • sudo apt-install install -y python3-pip

Son olarak, programlama ortamımızı ayarlayabilmemiz için virtualenv modülünü kurmamız gerekecek:

  • sudo pip3 install virtualenv

Programlama ortamlarının kurulumu ve kullanımı hakkında daha fazla bilgi ve rehber bilgi için sanal ortamı ayarlamayla ilgili bu öğreticiye bakın.

Artık Python programlama ortamımıza geçmeye hazırız.

Adım 2 – Django Uygulaması Oluşturun ve Bağımlılıkları Yükleyin

Daha sonra Django uygulamasını oluşturmalı ve DigitalOcean Spaces ve Python Decouple'ı kullanmak için gerekli bağımlılıkları yüklemeliyiz.

Sunucunun ev dizininde iken, Django uygulamanızı içerecek dizini oluşturmamız gerekir. django-apps veya seçtiğiniz başka bir ad olarak adlandırılan bir dizin oluşturmak için aşağıdaki komutu çalıştırın. Sonra dizine gidin.

  • mkdir django-apps
  • cd django-apps

django-apps dizini içerisindeyken, sanal ortamınızı oluşturun. Buna env diyelim.

  • sanalenv env

Şimdi, sanal ortamı aşağıdaki komutu kullanarak etkinleştirin:

  • . env / bin / etkinleştirmek

Önek, hangi dizinde olduğunuza bağlı olarak aşağıdakine benzeyecek şekilde (env) olarak değiştirildiğinde etkinleştiğini bileceksiniz:

Ortamda pip kullanarak Django paketini yükleyin. Django kurulumu, Django uygulamalarını yaratmamıza ve çalıştırmamıza izin verir. Django hakkında daha fazla bilgi edinmek için Django Geliştirme konulu eğitsel serimizi okuyun.

  • pip kurulum django

Şimdi, aşağıdaki komutu kullanarak mysite adlı bir Django projesi oluşturalım:

  • django-admin başlangıç ​​projesi mysite

Ardından, DigitalOcean Spaces gibi nesne depolama çözümlerini Django uygulamanıza entegre etmemize izin verecek olan, Python için bir AWS SDK olan Boto 3'ü yüklememiz gerekiyor.

Yazı yazarken Boto 3'ün S3 ile açıkça uyumluluğu var. Space'in S3 ile birlikte çalışabilirliği nedeniyle, Spaces Boto 3 ile de uyumludur. Amazon S3 ve DigitalOcean Spaces nesne saklama alanı arasındaki karşılaştırmalar hakkında daha fazla bilgi için Spaces dokümanlarını okuyun.

Boto 3'ü yüklemek için aşağıdaki komutu çalıştırın:

  • pip yükle boto3

Ayrıca, Django ve boto3 için özel depolama arka uçlarının bir koleksiyonu olan django depoları yüklememiz gerekiyor.

  • pip install django-storageages

Son olarak, Python Decouple ** 'ı yükleyelim.

  • pip kurulumu python-decouple

Bağımlılıklarınızı Django uygulamanızın ortamında kurdunuz ve artık statik ve şablon dizinleri kurmaya hazırsınız.

3. Adım – Dizinler ve Varlıklar Ekle

mysite/mysite tüm bağımlılıklarla kurulduğunda artık mysite/mysite dizinine geçebilir,

  • cd ~ / django-apps / mysite / mysite

mysite/mysite dizininde, statik ve şablon dizinleri oluşturmak için aşağıdaki komutları çalıştırın.

  • mkdir static && mkdir şablonları

Daha sonra, static dizinde yaşamak üzere resimlerin ve CSS'nin alt dizinlerini oluşturacağız.

  • mkdir statik / img && mkdir statik / css

Dizinleri oluşturduktan sonra, sonuçta nesne depolama alanımıza ekleyeceğimiz bir test dosyası indiririz. Bir resim indirirken img dizinine geçin.

  • cd ~ / django-apps / mysite / mysite / statik / img

Bu dizinde, Wget'ın wget komutunu kullanarak DigitalOcean logosu görüntüsünü indireceğiz. Bu, web sunucularından içerik almak için Ubuntu dağıtımlarında önceden kurulmuş yaygın olarak kullanılan bir GNU programıdır.

  • wget http://assets.digitalocean.com/logos/DO_Logo_icon_blue.png

ENTER bastığınızda, aşağıdakine benzer bir çıktı göreceksiniz:

OutputResolving www.digitalocean.com (www.digitalocean.com)... 104.16.24.4, 104.16.25.4
Connecting to www.digitalocean.com (www.digitalocean.com)|104.16.24.4|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1283 (1.3K) [image/png]
Saving to: ‘DO_Logo_icon_blue.png’

DO_Logo_icon_blue-6edd7377 100%[=====================================>] 1.25K --.-KB/s in 0s

2017-11-05 12:26:24 (9.60 MB/s) - ‘DO_Logo_icon_blue.png’ saved [1283/1283]

Bu noktada, ls komutunu çalıştırırsanız, static/img/ dizinde DO_Logo_icon_blue.png adlı bir görüntünün artık var olduğunu fark edeceksiniz.

Bu dizinleri kurduğumuzda ve sunucuya indirilen saklanacağımız görüntü ile Django uygulamanızla ilişkili dosyaların düzenlenmesine geçebiliriz.

Adım 4 – CSS ve HTML Dosyalarını Düzenleme

Stil sayfasını düzenleyerek başlayacağız. Web uygulaması için temel bir stil sayfası ekleyebilmemiz için css dizinine css gerekir.

  • cd ~ / django-apps / mysite / mysite / statik / css

Dokümanı düzenlemek için nano'yu veya seçtiğiniz başka bir metin editörünü kullanın.

  • nano app.css

Dosya açıldıktan sonra aşağıdaki CSS'yi ekleyin:

app.cssbody {
margin: 0;
background-color: #f1f1f1;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}

.container {
width: 80%;
border: 1px solid #ddd;
background-color: #fff;
padding: 20px;
margin: 40px auto;
}

form {
margin-bottom: 20px;
padding: 10px;
border: 1px solid #ff9900;
width: 350px;
}

table {
border-collapse: collapse;
width: 100%;
}

table td,
table th {
border: 1px solid #eceeef;
padding: 5px 8px;
text-align: left;
}

table thead {
border-bottom: 2px solid #eceeef;
}

İşiniz bittiğinde dosyayı kaydedebilir ve kapatabilirsiniz.

Buradan, templates dizinine gidin.

  • cd ~ / django-apps / mysite / mysite / şablonlar

home.html adlı bir dosyayı home.html ve temel web uygulamamızın nasıl görüntüleneceği konusunda HTML eklememiz gerekiyor. Nano'yu kullanarak dosyayı açın, böylece düzenleme için hazırdır:

  • nano home.html

Belgede aşağıdakileri ekleyin:

home.html{% load static %}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Spaces + Django Tutorial</title>
<link rel="stylesheet" type="text/css" href="{% static 'css/app.css' %}">
</head>
<body>
<center>
<header>
<h1>Spaces + Django Tutorial</h1>
</header>
<main>
<img src="{% static 'img/DO_Logo_icon_blue.png' %}">
<h2>Congratulations, you’re using Spaces!</h2>
</main>
</center>
</body>
</html>

Dosyayı kaydedin ve kapatın. Güncelleneceğimiz son dosya urls.py dosyası olup, yeni oluşturulan home.html dosyanızı işaret eder. Aşağıdaki dizine geçmemiz gerekiyor:

  • cd ~ / django-apps / mysite / mysite

Urls.py dosyasını düzenlemek için nano kullanın.

  • nano urls.py

Dosyadaki her şeyi silebilir ve aşağıdakileri ekleyebilirsiniz:

urls.pyfrom django.conf.urls import url
from django.views.generic import TemplateView

urlpatterns = [
url(r'^$', TemplateView.as_view(template_name='home.html'), name='home'),
]

Bu dosyalar oluşturulduktan sonra, nesne depolama alanıyla bütünleşmek için ayarlarımızı yapılandırmaya çalışabiliriz.

Adım 5 – Boşlukların Özgeçmişlerini Özetlemek İçin Python Ayrıştırma Kullan

Sanal ortamınızda settings.py dosyasının bulunduğu yere gidin. Burada, kimlik bilgilerinizi ayrı ayrı saklamak için settings.ini dosyası oluşturacağız.

  • cd ~ / django-apps / mysite / mysite

settings.ini dosyasını, adı verilen dizinde yeni, boş dosyalar yaratan bir Linux komutu olan touch kullanarak oluşturun.

  • settings.ini'ye dokunun

Oluşturulan ayarlar dosyası bir .ini dosya uzantısına sahip olacak. Bu dosya, ayar verisi için Python Decouple tarafından incelenecek ve ayrıca ayarlar dosyanızın API anahtarı için başvuracağı yer olacak. .env .ini alternatif bir uzantı olarak da kullanabilirsiniz.

Şimdi settings.ini dosyasını nano gibi en sevdiğiniz metin düzenleyicisini kullanarak açın.

  • nano settings.ini

Bu belgede, Python Decouple'ın gerektirdiği bir bölüm başlığı [settings] bulacağız ve Spaces kimlik bilgilerimizi değişkenlere atayarak ekleyeceğiz. Tam dosyanız aşağıdaki gibi görünmelidir:

settings.ini[settings]
SPACES_ACCESS_KEY=your-spaces-access-key
SPACES_SECRET_ACCESS_KEY=your-spaces-secret-access-key

Bu kimlik bilgilerini erişmek için, biz başvurmak gerekir settings.ini dosyanın settings.py dosyası.

Bir sonraki adımda settings.py dosyasını tamamen yapılandırmayı tamamlayacağız.

Adım 6 – Güncelleme Ayarları

Şimdi, ayar dosyanızı Spaces kimlik bilgilerinizle güncellemenin zamanı geldi, böylece görüntüyü göstermek için kurduğumuz sayfadan yararlanabileceğiz.

Ayar dosyanıza erişmek için doğru yerde olduğunuzdan emin olun.

  • cd ~ / django-apps / mysite / mysite

Dosyayı düzenlemek için nano veya başka bir metin düzenleyicisiyle açın:

  • nano settings.py

Dosyanın üst kısmında, Ayırma modundaki yapılandırma modülünü kullanabilmek için bir import bildirimi eklememiz gerekecek.

settings.py...
import os
from decouple import config
...

Dosyada izin verilen ana makinelere gidin ve sunucunuzun IP'sini ekleyin.

settings.py...
ALLOWED_HOSTS = ['your-server-ip']
...

Sonra ayarları dosyasının yüklü uygulamalar bölümüne storages ekleyin ve django.contrib.admin dosyasını kaldırın çünkü bunu bu öğreticide kullanmayacağız. Aşağıda göründüğü gibi olmalıdır.

settings.py...
# Application definition

INSTALLED_APPS = [
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'storages'
]
...

Değiştirin ve vurgulanan metni, ayar dosyasının TEMPLATES bölümüne ekleyin, böylece proje, home.html dosyanızı nereden bulacağınızı bilir.

settings.py...
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'mysite/templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
...

Son olarak, ayarlarınızı dosyanın alt kısmında güncelleyelim. # Static files bölümünün altına aşağıdakileri ekleyeceğiz. İlk iki satır, settings.ini dosyasına başvuru ekler, böylece yapılandırma parametrelerini alabilir.

Aşağıda, kendi kova adınızı eklediğinizden emin olun. Yazı yazarken, NYC3, Boşlukların şu an olduğu tek bölge, dolayısıyla son nokta URL'si olarak geçiriliyor.

Terminal konumu için, dosyalarınızı içe aktarmak istediğiniz dizini ekleyin. Spaces arayüzünüz üzerinden tarayıcıda bir dizin ekleyebilirsiniz.

settings.py...
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/

AWS_ACCESS_KEY_ID = config('SPACES_ACCESS_KEY')
AWS_SECRET_ACCESS_KEY = config('SPACES_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = 'your-storage-bucket-name'
AWS_S3_ENDPOINT_URL = 'https://nyc3.digitaloceanspaces.com'
AWS_S3_OBJECT_PARAMETERS = {
'CacheControl': 'max-age=86400',
}
AWS_LOCATION = 'your-spaces-files-folder'

STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'mysite/static'),
]
STATIC_URL = 'https://%s/%s/' % (AWS_S3_ENDPOINT_URL, AWS_LOCATION)
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

Şimdi Uzaylar kimlik bilgilerimizi Python kodundan çıkarıp ayarlar dosyamız Django uygulamamızı nesne depolama alanıyla bütünleştirmeye hazır.

Herşeyin doğru kurulduğunu doğrulamak için Django web uygulamasını çalıştıralım.

Adım 7 – Statik Dosyaları Topla

Şimdi kaçıyorum collectstatic ve hangi dosyaların bizim statik dizinde kaydettiğiniz görüntüye dahil aktarılıyor fark edeceksiniz. Ayarlar dosyasında belirlediğimiz Uzaydaki konuma aktarılacaktır.

Bunu yapmak için ~/django-apps/mysite/ adresine gidelim:

  • cd ~ / django-apps / mysite

Dizinde aşağıdaki komutu çalıştırın:

  • python manage.py collectstatic

Aşağıdaki çıktıyı görürsünüz ve yanıt vermelidir yes istendiğinde.

OutputYou have requested to collect static files at the destination
location as specified in your settings.

This will overwrite existing files!
Are you sure you want to do this?

Type 'yes' to continue, or 'no' to cancel:

Ardından, dosyanın Spaces'e kopyalanacağını söyleyen daha fazla çıktı görürsünüz.

OutputCopying '/root/django-apps/mysite/mysite/static/css/app.css'

1 static file copied, 1 unmodified.

Bu noktada DigitalOcean Cloud hesabınızdan app.css , css dizininde ve css dizininde DO-Logo_icon_blue-.png işaret ettiğiniz klasöre eklenen css ve img dizinlerini DO-Logo_icon_blue-.png img dizininde DO-Logo_icon_blue-.png görüntüsü.

Adım 8 – Uygulamayı Çalıştırın

Bir UFW güvenlik duvarı kurduysanız, önce aşağıdaki komutu vererek gelen trafiği 8000 portundan geçmesine izin verelim:

  • sudo ufw izin 8000

Sanal ortamınız hâlâ etkinleştirildiğinde, aşağıdaki komutları kullanarak manage.py dosyasının bulunduğu yere gidip uygulamayı çalıştıralım:

  • cd ~ / django-apps / mysite
  • python manage.py runserver <your-server-ip>: 8000

Bir web tarayıcısında, oluşturduğunuz Django uygulamasının sonucunu görmek için http: // your-server-ip : 8000 adresine gidin. Tarayıcınızda şu çıktıyı göreceksiniz:

Uygulamayı test runserver işiniz bittiğinde, runserver komutunu durdurmak için CTRL + C tuşlarına basabilirsiniz. Bu, sizi programlama ortamınıza götürür.

Python ortamınızı terk etmeye hazır olduğunuzda, deactivate komutunu çalıştırabilirsiniz:

  • devre dışı bırakmak

Programlama ortamınızı devre dışı bırakmanız terminal komut istemine geri döndürür.

Sonuç

Bu yazıda, Spaces kimlik bilgilerini Python kodundan çıkartırken DigitalOcean Spaces'den dosyaları sunan bir Django uygulamasını başarılı bir şekilde oluşturdunuz. Statik dosyalar, statik dosyaların yönetimi, bunları bir bulut hizmetinden nasıl sunacağınız ve yapılandırma parametrelerinin python ayar dosyanızdan nasıl ayrıldığı hakkında öğrendikleriniz.

Python ve Django ile web geliştirme hakkında Django Geliştirme konulu eğitsel serimizi okuyarak öğrenmeye devam edebilirsiniz.

Bir önceki yazımız olan Ubuntu 16.04'te Alerta ile Nagios Uyarılarını Nasıl İzlerim? başlıklı makalemizi de okumanızı öneririz.

About This Author

Comments are closed

%d blogcu bunu beğendi: