ServBay'de LoopBack Projesi Yapılandırmak ve Çalıştırmak
LoopBack Nedir?
LoopBack, IBM tarafından geliştirilen ve hızlı API ile mikro servisler inşa etmek amacıyla tasarlanmış, son derece genişletilebilir açık kaynaklı bir Node.js çerçevesidir. Model tabanlı geliştirme (MDD) yaklaşımı ile geliştiricilerin veri modellerini verimli şekilde tanımlamasına ve güçlü RESTful API'lerin otomatik olarak oluşturulmasına olanak tanır. LoopBack; veri kaynağı bağlantısı, kullanıcı kimlik doğrulama ve yetkilendirme, API gezgini gibi kapsamlı özellikleri içeren dahili desteğe sahiptir ve çok çeşitli veri tabanlarını ve protokolleri destekler.
LoopBack'in Temel Özellikleri ve Avantajları
- Model Tabanlı Geliştirme (MDD): Veri modellerini sezgisel olarak tanımlayın; çerçeve ilgili API uç noktası ile veri doğrulama mantığını otomatik olarak oluşturur.
- Çoklu Veri Kaynağı Desteği: MongoDB, MySQL, PostgreSQL, MariaDB gibi başlıca veri tabanlarına ve RESTful/SOAP servislerine kolayca bağlanır.
- Güçlü CLI Aracı: LoopBack Komut Satırı Arayüzü (CLI), proje başlatma, model tanımı, veri kaynağı yapılandırması gibi geliştirme görevlerini kolaylaştıran zengin komutlar sunar.
- Modülerlik ve Genişletilebilirlik: Esnek yapı, harici kütüphane ve servislerin entegrasyonuna olanak tanıyan modüller ve eklentilerle desteklenir.
- Dahili Güvenlik Özellikleri: Kullanıcı kimlik doğrulama ve yetkilendirme mekanizmasını kutudan çıktığı gibi sunar; güvenli API geliştirme sürecini hızlandırır.
LoopBack ile geliştiriciler, web uygulama arka uçlarını ve API'lerini çok daha yüksek verimle, hızlı, ölçeklenebilir ve bakımı kolay şekilde oluşturabilir.
ServBay ile LoopBack Projesi Kurmak ve Çalıştırmak
Bu yazıda, ServBay tarafından sağlanan Node.js ortamını kullanarak bir LoopBack projesinin nasıl oluşturulacağı ve çalıştırılacağı adım adım anlatılacaktır. ServBay'in "Web Sitesi" fonksiyonuyla yerel web sunucusu ayarlayacak, ters proxy üzerinden dış istekleri LoopBack uygulama portuna yönlendirerek uygulamanızın kolayca yerel olarak erişilmesini ve geliştirme/debug akışının rahatça yürütülmesini sağlayacaksınız.
LoopBack Projesi Oluşturma
LoopBack CLI Kurulumu
Başlamadan önce, ServBay üzerinde Node.js paketinin kurulu ve etkinleştirildiğini doğrulayın. Terminali açıp LoopBack CLI aracını global olarak yükleyin:
bashnpm install -g @loopback/cli
1Proje Başlatmak
ServBay'in varsayılan web kök dizini olan
/Applications/ServBay/www
yoluna giderek yeni bir LoopBack uygulamasını CLI aracıyla başlatın. Proje adının küçük harf ve tire ile yazılması önerilir, örneğinservbay-loopback-app
:bashcd /Applications/ServBay/www lb4 app servbay-loopback-app
1
2CLI; özellik seçimi (REST API, serileştirme, kimlik doğrulama vb.) ve proje yapısı gibi ayarlarda sizi yönlendirecektir. Gereksinimlerinize göre seçimlerinizi yapın.
Proje Bağımlılıklarını Yükleyin
Yeni oluşturulan proje klasörüne girip Node.js bağımlılıklarını yükleyin:
bashcd servbay-loopback-app npm install
1
2
LoopBack Projesinin Yanıtını Özelleştirmek (İsteğe Bağlı)
ServBay üzerinden uygulamanıza nasıl ulaşabileceğinizi göstermek için varsayılan /ping
endpoint'ini özelleştirip özel bir yanıt döndürebiliriz.
src/controllers/ping.controller.ts
Dosyasını DüzenlemekProjede bulunan
src/controllers/ping.controller.ts
dosyasının içeriğini aşağıdaki şekilde değiştirin; böylece/ping
endpoint'i "Hello ServBay!" stringini döndürecek:typescriptimport {get} from '@loopback/rest'; export class PingController { constructor() {} @get('/ping') ping(): string { // Yanıtı "Hello ServBay!" olarak değiştirin return 'Hello ServBay!'; } }
1
2
3
4
5
6
7
8
9
10
11
Geliştirme Modunda Projeyi Çalıştırmak
Geliştirme sürecinde, LoopBack uygulamasını kendi geliştirme sunucusunda başlatıp hızlı tekrarlar/yazılım hatalarını gidermek istersiniz. Bu sunucuya ServBay üzerinden ters proxy ile erişeceğiz.
Geliştirme Sunucusunu Başlatmak
Proje kök dizininde, terminal üzerinden LoopBack uygulamasını başlatın. Uygulamanız genellikle belirli bir portu dinler. Port numarasını örneğin
8585
olarak belirtmek içinPORT
ortam değişkenini kullanabilirsiniz:bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8585 npm start
1
2Uygulama açıldığında terminalde "Server is running at http://[::1]:8585" benzeri bir mesaj göreceksiniz.
ServBay Web Sitesi (Ters Proxy) Ayarlamak
ServBay kontrol panelini açın, "Web Sitesi" alanına gidin. Ekle butonuyla yeni bir ters proxy web sitesi oluşturup gelen dış istekleri LoopBack uygulamasının dinlediği dahili adrese ve porta yönlendirin:
- Ad (Name): Örneğin
My first LoopBack dev site
(ServBay'de tanıtıcı amaçlı kullanılır) - Alan Adı (Domain): Örneğin
servbay-loopback-dev.servbay.demo
(tarayıcıda erişeceğiniz adres) - Site Türü (Type):
Ters Proxy (Reverse Proxy)
- IP Adresi (IP Address):
127.0.0.1
(Uygulama yerel olarak çalışıyor) - Port (Port):
8585
(Dinlenen port)
Ayarları kaydedin ve ServBay üzerinde uygulayın. ServBay yerel DNS ayarlarını (ör.
/etc/hosts
dosyası ya da ServBay Helper Tool ile) ve web sunucusunu (Caddy veya Nginx) otomatik olarak yapılandırır; bundan sonra belirlediğiniz alan adından uygulamanıza erişebilirsiniz.ServBay'de ters proxy web sitesi ekleme konusunda detaylı bilgi için şu dökümana bakabilirsiniz: Node.js Geliştirme Web Sitesi Ekleme.
- Ad (Name): Örneğin
Geliştirme Modundaki Uygulamaya Erişmek
Web tarayıcınızı açın, belirttiğiniz alan adından ve LoopBack endpoint'inden ör.
https://servbay-loopback-dev.servbay.demo/ping
adresine gidin.ServBay, yerel siteleriniz için otomatik SSL sertifikası desteği sağladığından (ServBay User CA veya ServBay Public CA ile), doğrudan HTTPS üzerinden de güvenli şekilde erişebilir ve böylece üretim ortamını provalayabilirsiniz. SSL ile ilgili daha fazla bilgi için: Web Sitesini SSL ile Güvenceye Almak.
Üretim Modunda Dağıtım (İsteğe Bağlı)
LoopBack projeniz dağıtıma hazır olduğunda, onu üretim modunda çalıştırmak isteyebilirsiniz. Üretim modunda uygulama daha yüksek performans ve daha az debug çıktısı sunar.
Üretim Sunucusunu Başlatmak
Proje kök dizininde terminalde, uygulamayı üretim parametreleriyle başlatın. Örneğin portu
8586
yaparken,NODE_ENV=production
olarak ayarlayın:bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8586 NODE_ENV=production npm start
1
2ServBay Web Sitesi (Ters Proxy) Ayarlamak
ServBay kontrol panelinde "Web Sitesi" sekmesine dönüp, üretim modunda çalışan uygulamanıza yönlendirecek yeni veyahut mevcut bir ters proxy web sitesi oluşturun/düzenleyin:
- Ad (Name): Örneğin
My first LoopBack production site
- Alan Adı (Domain): Örneğin
servbay-loopback-prod.servbay.demo
- Site Türü (Type):
Ters Proxy (Reverse Proxy)
- IP Adresi (IP Address):
127.0.0.1
- Port (Port):
8586
(Üretim için dinlenen port)
Ayarları kaydedin ve uygulayın.
- Ad (Name): Örneğin
Üretim Modundaki Uygulamaya Erişmek
Web tarayıcınızda
https://servbay-loopback-prod.servbay.demo/ping
adresine giderek üretim sürümünün durumunu görebilirsiniz. ServBay, HTTPS desteği de sunar.
Veri Tabanı Bağlantısı Kurmak
LoopBack, veri kaynağı bağlayıcıları ile birçok veri tabanını destekler. ServBay; MySQL, MariaDB, PostgreSQL, MongoDB ve Redis gibi çeşitli veri tabanı paketlerini kolayca başlatmanızı sağlar. Aşağıda, LoopBack projenizde ServBay üzerinden sağlanan başlıca veri tabanlarına nasıl bağlanacağınıza dair örnekler verilmiştir.
Dikkat: Aşağıdaki örneklerde yer alan veri tabanı kullanıcı adı/şifresi alanları örnek doldurmadır. Kendi projenizde, ServBay’in kontrol panelinde belirlediğiniz gerçek root kullanıcı şifresi ya da oluşturduğunuz diğer kullanıcıların bilgilerini kullanmalısınız. ServBay üzerinden bu şifreleri görüntüleyebilir, yeni kullanıcılar ve şifreler oluşturabilirsiniz.
MongoDB Bağlantısı
İlk önce ServBay’de MongoDB paketinin kurulu ve çalışıyor olduğundan emin olun. LoopBack için MongoDB bağlayıcısını yükleyin:
bashnpm install --save @loopback/connector-mongodb
1Ardından projenizde veri kaynağını şu gibi yapılandırın (
src/datasources/mongodb.datasource.ts
veya benzeri):typescript// src/datasources/mongodb.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mongodb', connector: 'mongodb', // ServBay MongoDB varsayılanı: localhost:27017 url: 'mongodb://localhost:27017/servbay-loopback-app', // Kendi veri tabanınızı ekleyin host: 'localhost', port: 27017, user: '', // Kimlik doğrulama açıksa kullanıcı adı password: '', // Kimlik doğrulama açıksa şifre database: 'servbay-loopback-app', // Kendi veri tabanınızı ekleyin // Diğer opsiyonel ayarlar... }; export class MongodbDataSource extends juggler.DataSource { static dataSourceName = 'mongodb'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Redis Bağlantısı
Önce ServBay'de Redis paketinin kurulumunu ve başlatıldığını kontrol edin. LoopBack için Redis bağlayıcılarını yükleyin (Dikkat: LoopBack 4 için resmi bir
@loopback/connector-redis
bulunmamaktadır. Genellikle topluluk tarafından sağlananloopback-connector-redis
veya Node.js’inredis
paketini LoopBack servisleriyle birlikte kullanabilirsiniz):bashnpm install --save loopback-connector-redis # ya da diğer uyumlu Redis kütüphaneleri
1Projenizde veri kaynağını şöyle yapılandırabilirsiniz (örnekte topluluk bağlayıcısı için genel kullanım):
typescript// src/datasources/redis.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'redis', connector: 'redis', // ServBay Redis varsayılanı: localhost:6379 url: 'redis://localhost:6379', // Diğer opsiyonel ayarlar... }; export class RedisDataSource extends juggler.DataSource { static dataSourceName = 'redis'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Not: LoopBack 4'te veri kaynakları kullanımında LoopBack 3'e göre değişiklikler vardır. Bu örnek LoopBack 3 bağlayıcı tarzının sadeleştirilmiş halidir. LoopBack 4'te güncel veri kaynağı yapılandırmaları için resmi dokümana bakınız.
host
,port
,user
,password
,database
gibi bağlantı parametreleri genellikle değişmez.MariaDB (veya MySQL) Bağlantısı
ServBay’de MariaDB veya MySQL paketlerinden en az birinin kurulup başlatıldığını doğrulayın. LoopBack’in MySQL bağlayıcısı genellikle MariaDB ile de uyumludur. Gerekli bağlayıcıyı yükleyin:
bashnpm install --save @loopback/connector-mysql
1Ardından veri kaynağınızı şu şekilde yapılandırın:
typescript// src/datasources/mariadb.datasource.ts veya mysql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mariadb', // veya 'mysql' connector: 'mysql', // mysql bağlayıcısı ile kullanın // url: '', // İster url ile ister ayrı ayrı host, port ve db belirtin host: 'localhost', // ServBay varsayılanı port: 3306, // MySQL/MariaDB portu user: 'root', // ServBay MySQL/MariaDB kullanıcı adı genellikle root password: 'password', // << ServBay'de tanımladığınız gerçek şifre ile değiştirin >> database: 'servbay_loopback_app', // Kendi veri tabanınızı ekleyin // Diğer opsiyonel ayarlar... }; export class MariaDbDataSource extends juggler.DataSource { static dataSourceName = 'mariadb'; // veya 'mysql' constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Dikkat: Yukarıdaki örnekteki
password: 'password'
, sadece bir yer tutucudur. Kendi gerçek root şifrenizi ServBay kontrol panelinin veri tabanı yönetim ekranından bulup girmelisiniz.PostgreSQL Bağlantısı
ServBay'de PostgreSQL paketinin kurulu ve başlatılmış olduğunu onaylayın. Gerekli bağlayıcıyı kurun:
bashnpm install --save @loopback/connector-postgresql
1Ardından veri kaynağınızı şu şekilde belirleyin:
typescript// src/datasources/postgresql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'postgresql', connector: 'postgresql', // url: '', // Tümü URL ile veya tek tek host/port/db ile de olur host: 'localhost', // ServBay PostgreSQL varsayılanı port: 5432, // PostgreSQL portu user: 'user', // << ServBay'deki gerçek kullanıcı adınızla değiştirin >> password: 'password', // << ServBay'deki gerçek şifreyle değiştirin >> database: 'servbay_loopback_app', // Kendi veri tabanınız // Diğer opsiyonel ayarlar... }; export class PostgresqlDataSource extends juggler.DataSource { static dataSourceName = 'postgresql'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Dikkat: Örneklerdeki
user: 'user'
vepassword: 'password'
alanları yer tutucudur. Gerçek kullanıcı adı ve şifrenizi ServBay kontrol panelinden bulup doldurmalısınız.
Sonuç
Yukarıdaki adımlarla, ServBay yerel geliştirme ortamında bir LoopBack Node.js projesi oluşturup yapılandırmayı, uygulamanıza ServBay'in ters proxy işleviyle ulaşmayı ve LoopBack projenizi farklı veri tabanlarına nasıl bağlayacağınızı öğrendiniz.
ServBay, LoopBack ve diğer Node.js çerçeveleri için kararlı ve pratik bir geliştirme ortamı sunar; entegre web sunucusu, veri tabanı ve çoklu dil çalışma zamanı ile geliştirici iş akışınızı önemli ölçüde kolaylaştırır. ServBay'in web sitesi yönetimi, SSL desteği ve veri tabanı entegrasyonu sayesinde yerelde daha güvenli, hızlı ve verimli çalışabilirsiniz.