macOS’ta ServBay ile Yerel NestJS Projesi Oluşturma ve Çalıştırma
NestJS, yüksek performanslı ve ölçeklenebilir Node.js sunucu uygulamaları geliştirmek için kullanılan, TypeScript tabanlı, ilerlemeci bir Node.js framework’üdür. Angular’dan ilham alan modüler mimarisi ve bağımlılık enjeksiyonu (DI) modelini kullanır. NestJS, sürdürülebilir, test edilebilir ve yüksek derecede ayrıştırılmış karmaşık uygulamalar oluşturmak için güçlü araçlar ve özellikler sunar.
NestJS’in Temel Özellikleri ve Avantajları
- Modüler Mimari: Kodunuzu modüllerle organize ederek uygulamanın daha düzenli, anlaşılır ve bakımı kolay olmasını sağlar.
- Bağımlılık Enjeksiyonu: Güçlü ve kullanımı kolay bağımlılık enjeksiyonu sistemiyle kodun test edilebilirliğini ve sürdürülebilirliğini artırır.
- TypeScript Kullanımı: TypeScript’in statik tip kontrolü, arayüzleri ve modern JavaScript özelliklerinden tam anlamıyla faydalanılır; geliştirme verimliliği ve kod kalitesi artar, çalışma zamanı hataları azalır.
- Zengin Dekoratörler: Kontrolör, servis ve modül gibi öğeleri tanımlamak için dekoratörler kullanılır; kod daha anlaşılır ve niyet odaklı olur.
- Güçlü Ekosistem: NestJS, dinamik bir topluluğa ve çok sayıda üçüncü parti modül/eklenti desteğine sahiptir. TypeORM, Mongoose, GraphQL, WebSocket, cache ve doğrulama gibi sık kullanılan işlevler kolayca entegre edilebilir.
- Standartlara Dayalı: Express veya Fastify gibi olgun HTTP sunucu çatıları üzerine kuruludur; iyi bir uyumluluk ve performans sunar.
NestJS ile geliştiriciler, SOLID prensipleri ve tasarım kalıpları gibi en iyi backend geliştirme pratiklerini kullanarak yüksek performanslı, kurumsal web uygulamaları, API hizmetleri ya da mikroservisler oluşturabilirler.
ServBay ile NestJS Projesi Oluşturma ve Çalıştırma
ServBay, macOS için güçlü ve entegre bir yerel web geliştirme ortamı sağlar. Birden çok Node.js sürümünü, yaygın veritabanlarını ve web sunucularını bünyesinde barındırır. Bu rehberde, ServBay’in Node.js ortamı ve ‘Web Sitesi’ işlevini kullanarak bir NestJS projesi nasıl oluşturulur, çalıştırılır ve yapılandırılır gösterilecektir. ServBay’in ters proxy özelliği sayesinde, yerel NestJS uygulamanıza özel bir alan adıyla kolayca erişebilirsiniz.
Ön Koşullar
Başlamadan önce aşağıdakilerin hazır olduğundan emin olun:
- ServBay’in Kurulması: ServBay’i başarıyla macOS üzerine kurmuş olmalısınız.
- Node.js Paketinin Etkinleştirilmesi: ServBay kontrol panelindeki ‘Paketler’ sekmesinden ihtiyacınız olan Node.js sürümünü seçip yükleyin. Eğer Node.js etkin değilse, lütfen ServBay Node.js Kullanım Rehberi belgesine başvurun.
NestJS Projesi Oluşturma
Global NestJS CLI Kurulumu
Terminali açıp, genellikle Node.js ile birlikte gelen npm ile NestJS komut satırı aracını (CLI) küresel olarak yükleyin. NestJS CLI, uygulamaları başlatmak, geliştirmek ve yönetmek için güçlü bir araçtır.
bashnpm install -g @nestjs/cli
1Proje Başlatma
ServBay’in varsayılan web kök klasörü olan
/Applications/ServBay/www
dizinine gidin. Projenizi burada oluşturmak, ilerideki web sitesi yapılandırmalarında kolaylık sağlar. NestJS CLI ile yeni bir proje oluşturun:bashcd /Applications/ServBay/www nest new servbay-nest-app
1
2Komutu çalıştırdıktan sonra, CLI size proje oluşturma adımlarında yardımcı olacak ve paket yöneticisi seçimi (npm, yarn veya pnpm) isteyecektir. Tutarlılık açısından npm önerilir. Proje,
/Applications/ServBay/www/servbay-nest-app
dizininde oluşturulacaktır.Proje Bağımlılıklarını Kurma
Yeni oluşturulan
servbay-nest-app
dizinine girin ve gerekli bağımlılıkları yükleyin:bashcd servbay-nest-app npm install
1
2nest new
komutuyla otomatik olarak gerekli paketler yüklense de, bu komutu tekrar çalıştırarak tüm bağımlılıkların doğru şekilde kurulduğuna emin olabilirsiniz.
NestJS Projesinin Çıktı İçeriğini Değiştirme (Opsiyonel)
Projenin başarıyla çalışıp çalışmadığını ve ServBay üzerinden erişilebildiğini doğrulamak için varsayılan root route yanıtını değiştirebilirsiniz.
src/app.controller.ts
Dosyasını DüzenlemeProje klasörünüzdeki
src/app.controller.ts
dosyasını favori kod editörünüzle açın. İçeriğini aşağıdaki şekilde değiştirin, böylece kök yol (/
) ziyaret edildiğinde "Hello ServBay!" döner:typescriptimport { Controller, Get } from '@nestjs/common'; import { AppService } from './app.service'; // AppService'i koruduğunuzu varsayın @Controller() export class AppController { constructor(private readonly appService: AppService) {} // AppService korunuyorsa @Get() getHello(): string { // return this.appService.getHello(); // Eğer AppService kullanılıyorsa return 'Hello ServBay!'; // Direkt dize döndürülüyor } }
1
2
3
4
5
6
7
8
9
10
11
12
13Bu kod, uygulamanın kök yoluna (
/
) gelen HTTP GET isteğini işleyen ve belirtilen metni döndüren basit bir denetleyici (controller) tanımlar.
Geliştirme Modunda NestJS'i Çalıştırma ve ServBay ile Erişim
NestJS projeleri genellikle geliştirme sırasında dahili bir sunucu ile belirli bir port dinleyerek başlatılır. Ardından, ServBay’in ‘Web Sitesi’ işlevinde bir ters proxy yapılandırarak, özel alan adınızdan bu uygulamaya erişebilirsiniz.
Geliştirme Sunucusunu Başlatma
Proje ana dizininiz
/Applications/ServBay/www/servbay-nest-app
altında aşağıdaki komutu çalıştırarak NestJS uygulamasının geliştirme sunucusunu başlatın. Örneğin, uygulamanın dinleyeceği portuPORT
ortam değişkeni ile8585
olarak belirleyin.bashcd /Applications/ServBay/www/servbay-nest-app PORT=8585 npm run start:dev
1
2npm run start:dev
, NestJS projelerinde tanımlı hazır bir scripttir;ts-node
ile TypeScript kodunuzu çalıştırır ve dosya izleme ile değişikliklerde sunucuyu otomatik yeniden başlatır. Sunucu,localhost:8585
üzerinde çalışmaya başlar.ServBay’de Web Sitesi Ters Proxy Yapılandırması
ServBay kontrol panelini açın ve ‘Web Sitesi’ (Websites) sekmesine geçin. Ekle (+) butonuna tıklayarak yeni bir web sitesi yapılandırması oluşturun:
- İsim (Name): Kolay tanımlanabilir bir isim verin, ör.
İlk NestJS geliştirme sitem
. - Alan Adları (Domains): Yerelde projenize erişmek istediğiniz alan adını girin, ör.
servbay-nest-test.dev
. ServBay,.dev
gibi uzantıları otomatik olarak yerel olarak çözümlediğinden hosts dosyasına müdahale gerekmez. - Tür (Type):
Ters Proxy (Reverse Proxy)
olarak seçin. - IP Adresi (IP Address): Node.js uygulamanızın dinlediği IP’yi girin; genellikle
127.0.0.1
(localhost). - Port (Port): NestJS uygulamasının dinlediği port, burada
8585
.
Ayarları kaydedin. ServBay, web sunucu (Caddy veya Nginx) yapılandırmasını otomatik olarak günceller. Detaylı web sitesi ekleme bilgisi için ServBay Web Sitesi Ekleme Dokümantasyonu sayfasına bakabilirsiniz.
- İsim (Name): Kolay tanımlanabilir bir isim verin, ör.
Geliştirme Sitesine Erişim
Tarayıcınızdan, az önce tanımladığınız alan adını ziyaret edin:
https://servbay-nest-test.dev
.Dikkat:
- ServBay, yapılandırılmış yerel siteler için otomatik olarak ServBay User CA tarafından imzalanmış ücretsiz SSL sertifikası sağlar. Bu nedenle güvenli
https
üzerinden erişebilirsiniz. Eğer sertifika uyarısı alırsanız, ServBay User CA sertifikasını güvenilir olarak eklemeniz gerekebilir. Ayrıntılar için Web Sitenizi SSL ile Güvenceye Alma Dokümantasyonu sayfasına bakabilirsiniz. - NestJS geliştirme sunucunuzun (
PORT=8585 npm run start:dev
) çalışıyor olduğundan emin olun. Sunucu çalışmıyorsa alan adınızdan erişilemezsiniz.
- ServBay, yapılandırılmış yerel siteler için otomatik olarak ServBay User CA tarafından imzalanmış ücretsiz SSL sertifikası sağlar. Bu nedenle güvenli
Üretim (Production) Versionu Yayınlama ve ServBay ile Erişim
NestJS uygulamanızı üretim ortamında yayınlamadan önce (ister gerçek ister yerelde üretim taklidi), projenizi derleyerek başlatmalısınız.
Üretim Versiyonu Derleme
Ana proje dizininizde aşağıdaki komutla projeyi derleyin:
bashcd /Applications/ServBay/www/servbay-nest-app npm run build
1
2Bu komut, TypeScript derleyicisiyle kaynak kodunuzu
dist
klasörüne derler.Üretim Sunucusunu Başlatma
Derleme bittikten sonra üretim sürümünü başlatmak için aşağıdaki komutu kullanın.
node
ile derlenmiş dosyayı çalıştırın, portu örneğin8586
olarak belirleyin veNODE_ENV=production
değişkenini ayarlayın.bashcd /Applications/ServBay/www/servbay-nest-app PORT=8586 NODE_ENV=production node dist/main.js
1
2Üretim modunda dosya izleme ve hot-reload genellikle devre dışıdır.
ServBay Web Sitesi Ters Proxy Ayarları
ServBay kontrol panelindeki ‘Web Sitesi’ sekmesine dönün, üretim sitesine erişmek için yeni bir konfigürasyon oluşturun ya da var olanı düzenleyin:
- İsim (Name): Ör.
İlk NestJS üretim sitem
. - Alan Adları (Domains): Ör.
servbay-nest-test.prod
- Tür (Type):
Ters Proxy (Reverse Proxy)
- IP Adresi (IP Address):
127.0.0.1
- Port (Port):
8586
(üretim sunucusunun dinlediği port)
Ayarları kaydedin.
- İsim (Name): Ör.
Üretim Sitesine Erişim
https://servbay-nest-test.prod
adresine girerek üretimda çalışan NestJS projenizi görebilirsiniz. ServBay otomatik olarak SSL ile koruma sağlar.
ServBay Sağladığı Veritabanlarına Bağlanma
ServBay, MariaDB (MySQL uyumlu), PostgreSQL, MongoDB ve Redis dahil pek çok veritabanı sunucusunu dahili olarak destekler. NestJS uygulaması geliştirirken bu veritabanlarına kolayca bağlanıp kullanabilirsiniz.
Önemli Not: Bağlantıdan önce, ServBay kontrol panelindeki ‘Paketler’ sekmesinden ilgili veritabanı paketinin etkinleştirildiğinden emin olun. Varsayılan port, kullanıcı adı ve şifre bilgilerini ServBay arayüzünde veya dokümantasyonunda bulabilirsiniz. Üretim ortamı için varsayılan şifreleri mutlaka değiştirin ve özel veritabanı kullanıcıları oluşturun.
Aşağıda, NestJS projelerinde yaygın ORM/kütüphaneler kullanılarak ServBay veritabanlarına bağlantı örnekleri yer almaktadır. Bu örnekler genellikle ana modülünüzde (AppModule
) veya ayrı bir veritabanı modülünde yer alır.
MongoDB ile Bağlantı
@nestjs/mongoose
modülü ile MongoDB’ye bağlanın. Önce paketleri yükleyin:bashnpm install @nestjs/mongoose mongoose
1Modülünüzde
MongooseModule
'i şu şekilde ayarlayabilirsiniz:typescriptimport { Module } from '@nestjs/common'; import { MongooseModule } from '@nestjs/mongoose'; // ... Diğer importlar @Module({ imports: [ MongooseModule.forRoot('mongodb://localhost:27017/servbay-nest-app'), // Varsayılan port 27017 // ... diğer modüller ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13ServBay’in varsayılan MongoDB bağlantısı genellikle
mongodb://localhost:27017/
şeklindedir. Gerekirse MongoDB Compass veyamongosh
ile bağlanıpservbay-nest-app
veritabanını oluşturabilirsiniz.Redis ile Bağlantı
@nestjs/redis
modülüyle Redis’e bağlanmak için aşağıdaki paketleri yükleyin:bashnpm install @nestjs/redis redis @types/redis
1Modülünüzü şöyle yapılandırın:
typescriptimport { Module } from '@nestjs/common'; import { RedisModule } from '@nestjs/redis'; // ... Diğer importlar @Module({ imports: [ RedisModule.forRoot({ url: 'redis://localhost:6379', // Varsayılan port 6379 }), // ... diğer modüller ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15ServBay’in varsayılan Redis adresi:
localhost:6379
.MariaDB (MySQL Uyumlu) ile Bağlantı
@nestjs/typeorm
modülüyle MariaDB’ye bağlanın. ServBay, MariaDB ve MySQL paketlerini, MySQL protokolüyle uyumlu olarak destekler. TypeORM'damysql
veyamariadb
tipiyle bağlanabilirsiniz. Önce şu paketleri kurun:bashnpm install @nestjs/typeorm mysql2 typeorm
1Ardından şu şekilde yapılandırın:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // ... Diğer importlar @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mariadb', // ya da 'mysql' host: 'localhost', port: 3306, // Varsayılan port 3306 username: 'root', // ServBay MariaDB/MySQL varsayılan root kullanıcısı password: 'password', // Varsayılan root şifresi database: 'servbay_nest_app', // Bu veritabanı önceden oluşturulmalı entities: [], // Entity sınıflarınız synchronize: true, // Geliştirme ortamında true olabilir, prod'da dikkatli olun }), // ... diğer modüller ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Not: ServBay MariaDB/MySQL’de varsayılan
root
şifresipassword
’dur.localhost:3306
’ya (ör. TablePlus, DBeaver ya da MySQL CLI ile) bağlanıproot
/password
ile giriş yaparakservbay_nest_app
veritabanını oluşturmanız gerekir. Üretimde, güvenlik için root şifresini değiştirin ve sadece yetkili uygulama kullanıcıları oluşturun.PostgreSQL ile Bağlantı
@nestjs/typeorm
modülüyle PostgreSQL’e bağlanmak için gerekli paketleri kurun:bashnpm install @nestjs/typeorm pg typeorm
1Ardından şu şekilde yapılandırın:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // ... Diğer importlar @Module({ imports: [ TypeOrmModule.forRoot({ type: 'postgres', host: 'localhost', port: 5432, // Varsayılan port 5432 username: 'servbay', // ServBay PostgreSQL’de örnek varsayılan kullanıcı, mutlaka kontrol edin password: 'password', // Varsayılan şifre, kesin doğrulayın database: 'servbay_nest_app', // Bu veritabanı önceden oluşturulmalı entities: [], // Entity sınıflarınız synchronize: true, // Geliştirme için true, prod için dikkatli olun }), // ... diğer modüller ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Not: ServBay PostgreSQL’in varsayılan kullanıcı adı ve şifresi sürüme göre değişebilir; yaygın olanlar
servbay
veyapostgres
’tir. Güncel bilgileri ServBay arayüzünden veya dökümantasyonundan kontrol edin. Ayrıca üretim için varsayılan şifreleri değiştirmeniz gereklidir.
Sonuç
Bu rehber ile, ServBay’i kullanarak macOS üzerinde yerel bir NestJS projesini nasıl oluşturup çalıştıracağınızı, test/üretim ortamına nasıl alacağınızı ve proje için güvenli alan adı ve SSL yapılandırmasını nasıl yapacağınızı öğrendiniz. ServBay’in entegre Node.js ortamı, kolay web sitesi ve ters proxy yapılandırması ve güçlü veritabanı desteğiyle yerel NestJS geliştirme ve test süreçleriniz büyük ölçüde kolaylaşacaktır. Geliştirme ve üretim modları arasında hızlıca geçiş yapabilir, özel alan adları ve HTTPS ile uygulamanıza güven içinde erişebilir ve ServBay’in dahili veritabanı hizmetlerinin tüm avantajlarından yararlanabilirsiniz.