ServBay ile Koa.js Projesi Oluşturma ve Çalıştırma
ServBay, macOS için özel olarak tasarlanmış yerel bir Web geliştirme ortamıdır. Node.js çalışma zamanı ve çeşitli veritabanları dahil olmak üzere geliştiricilerin sıkça kullandığı birçok paketi entegre olarak sunar. Bu makalede, ServBay’in sunduğu kolaylıklarla Koa.js projenizi hızlıca nasıl oluşturup, çalıştırıp ve yönetebileceğinizi adım adım öğreneceksiniz.
Koa.js Nedir?
Koa.js, Express.js çekirdek ekibi tarafından geliştirilen, Node.js tabanlı yeni nesil bir Web framework’dür. Sade, etkileyici ve güçlü bir özellik setine sahip olmasıyla bilinir; Web uygulamaları ve API'lar oluşturmak için ideal bir tercihtir. Koa.js, özellikle async/await
sözdizimi sayesinde modern JavaScript’in avantajlarından tam olarak yararlanarak asenkron işlemlerin ve ara yazılımların (middleware) daha kolay ve bakımı rahat hale gelmesini sağlar.
Koa.js’in Temel Özellikleri
- async/await Tabanı: Çekirdek tasarımı
async/await
etrafında şekillenmiştir, böylece asenkron akış kontrolü çok daha sezgiseldir. - Minimal Çekirdek: Koa’nın çekirdeği oldukça hafiftir ve yalnızca temel fonksiyonları içerir; ek özellikler modüler ara yazılımlar aracılığıyla eklenir.
- Güçlü Middleware Mimari: Katmanlı (cascading) middleware mekanizmasıyla istek işleme oldukça esnek ve şeffaftır.
- Web’e Odaklı: Yalnızca Web uygulamaları ve API geliştirmeye odaklanır; gereksiz veya fazladan bir özellik barındırmaz.
Koa.js ile geliştiriciler, yüksek performanslı ve sürdürülebilir Web servislerini çok daha verimli şekilde inşa edebilirler.
ServBay ile Koa.js Geliştirme Ortamı Kurulumu
ServBay, Node.js geliştiricileri için kutudan çıktığı haliyle kullanılabilen bir ortamdır; Node.js çalışma zamanı ve sık kullanılan veritabanları hazır olarak gelir. ServBay’in Website (Web Sitesi) özelliği ile kendi alan adınızı ve SSL sertifikanızı kullanarak yerel Koa.js projenize kolayca erişebilirsiniz.
Ön Koşullar
Başlamadan önce lütfen aşağıdaki adımları tamamladığınızdan emin olun:
- ServBay’i Kurun: ServBay resmi internet sitesinden son sürümü indirip yükleyin.
- Node.js Paketini Yükleyin: ServBay uygulamasını açıp Paketler (Packages) bölümüne gidin ve ihtiyacınız olan Node.js sürümünün kurulu olduğundan emin olun. Kurulu değilse işaretleyip yükleyin.
- ServBay Temel İşlemlerine Hakim Olun: ServBay üzerinden servisleri başlatıp durdurmayı ve Websites (Web Sitesi) yönetimini öğrenin.
Koa.js Projesi Oluşturma
Projelerinizi saklamak için ServBay’in önerdiği website kök dizini olan /Applications/ServBay/www
kullanılacaktır.
Proje Klasörünü Başlatın
Terminal uygulamasını açın, ServBay’in web sitesi kök dizinine gidin ve yeni bir proje klasörü oluşturun (ör:
servbay-koa-app
). Sonrasında bu klasöre girerek yeni bir Node.js projesi başlatın:bashcd /Applications/ServBay/www mkdir servbay-koa-app cd servbay-koa-app npm init -y
1
2
3
4npm init -y
komutu, varsayılan ayarlara sahip birpackage.json
dosyası oluşturacaktır.Koa.js’i Yükleyin
Proje kök dizini
servbay-koa-app
içinde Koa.js’i ve (TypeScript kullanıyorsanız) tip tanımlarını yükleyin:bashnpm install koa # TypeScript kullanılıyorsa tip tanımlarını yükleyebilirsiniz # npm install @types/koa --save-dev
1
2
3Uygulama Ana Dosyasını Oluşturun
servbay-koa-app
klasörü altındaapp.js
adında bir dosya oluşturup basit bir Koa.js uygulama kodu ekleyin:javascriptconst Koa = require('koa'); const app = new Koa(); // Middleware: İstek bilgisini logla app.use(async (ctx, next) => { const start = Date.now(); await next(); const ms = Date.now() - start; console.log(`${ctx.method} ${ctx.url} - ${ms}ms`); }); // Middleware: Ana dizinden gelen istekleri işle app.use(async ctx => { ctx.body = 'ServBay Koa.js Uygulamasından Merhaba!'; }); // Portu tanımla, önce ortam değişkeni PORT kullanılır const port = process.env.PORT || 3000; // HTTP sunucusunu başlat app.listen(port, () => { console.log(`Koa.js sunucusu http://localhost:${port} üzerinde çalışıyor`); console.log(`Proje dizini: ${__dirname}`); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24Bu kod temel bir Koa uygulaması oluşturur, iki orta katmanı (middleware) içerir: biri istek süresini ve yolunu loglar, diğeri ise ana
/
yoluna yanıt vererek "ServBay Koa.js Uygulamasından Merhaba!" metni döner. Uygulama; ortam değişkeniPORT
üzerinden veya varsayılan3000
portunda dinleme yapar.
Geliştirme Moduna Geçiş
Geliştirme sırasında genellikle yerel Node.js sürecini başlatıp Koa.js uygulamanızı çalıştırır ve ServBay’in Website özelliği ile erişirsiniz.
Koa.js Geliştirme Sunucusunu Çalıştırın
Terminali açın, proje dizinine (
servbay-koa-app
) girin veapp.js
dosyasını çalıştırın. Port çakışmasını önlemek veya ServBay yapılandırmasını kolaylaştırmak için örneğin8585
portunu belirleyebilirsiniz:bashcd /Applications/ServBay/www/servbay-koa-app PORT=8585 node app.js
1
2Terminalde
Koa.js sunucusu http://localhost:8585 üzerinde çalışıyor
gibi bir çıktı görmeniz gerekir. Sunucu sürekli açık kalmalı, bu yüzden terminal penceresini açık bırakın.ServBay Web Sitesi (Website) Ters Proxy’sini Yapılandırın
localhost:8585
üzerinde çalışan Koa.js uygulamanıza özel alan adı ile ulaşmak için ServBay’de bir Web Sitesi (Website) ekleyip ters proxy yapısı oluşturmanız gerekir.- ServBay uygulamasını açın.
- Website sekmesine gidin.
- Sol alttaki
+
butonu ile yeni bir web sitesi ekleyin. - Aşağıdaki bilgileri doldurun:
- Ad (Name):
ServBay Koa.js Dev Site
- Alan Adı (Domain):
servbay-koa-dev.servbay.demo
(.servbay.demo
ile biten bir alan adı kullanımı önerilir, SSL sertifikası otomatik atanır) - Tür (Type):
Ters Proxy (Reverse Proxy)
seçin - IP Adresi (IP Address):
127.0.0.1
(Yerel Node.js süreci) - Port:
8585
(Koa.js’in dinlediği port) - Kök Dizin (Document Root): Ters proxy için önemli değil, boş bırakabilir veya proje yolu
/Applications/ServBay/www/servbay-koa-app
yazabilirsiniz.
- Ad (Name):
- Kaydedin.
- ServBay değişiklikleri uygulamanızı isteyebilir, onaylayın.
Bu ayarlar; ServBay’in hosts dosyanıza
servbay-koa-dev.servbay.demo
için127.0.0.1
kaydı eklemesini ve gelen isteklerin yerleşik Caddy veya Nginx sunucusu ile localhost:8585’e yönlendirilmesini sağlar..servbay.demo
alan adları için ServBay User CA tarafından otomatik ve güvenilir bir SSL sertifikası atanır, böylece HTTPS ile erişim mümkündür.Daha detaylı adımlar ve görseller için, ServBay dokümantasyonunda Node.js geliştirme sitesi ekleme bölümüne bakabilirsiniz (İngilizce seçmeyi unutmayın).
Koa.js Geliştirme Sitesini Ziyaret Edin
Tarayıcınızı açıp
https://servbay-koa-dev.servbay.demo
adresine gidin.Ayarlarda bir hata yoksa sayfada "ServBay Koa.js Uygulamasından Merhaba!" mesajını görebilirsiniz. Bu, ServBay’in web sitesi özelliğiyle yerel Koa.js geliştirme sunucunuzu başarıyla gördüğünüz anlamına gelir.
app.js
dosyanızı değiştirip Node.js sürecini yeniden başlattığınızda, tarayıcıyı yenileyerek değişiklikleri anında görebilirsiniz.
Üretim Versiyonu Dağıtımı (Simülasyon)
Üretim ortamını simüle ederken farklı portlar, ortam değişkenleri veya başlatma yöntemleri kullanmanız gerekebilir. ServBay'in ters proxy yapılandırması aynıyla geçerlidir.
Koa.js Üretim Sunucusunu (Simülasyon) Çalıştırın
Farklı bir terminalde, önceki geliştirme sunucusunu durdurun (çalışıyorsa) ve uygulamayı örneğin
8586
portunda,NODE_ENV=production
satırıyla başlatın:bashcd /Applications/ServBay/www/servbay-koa-app PORT=8586 NODE_ENV=production node app.js
1
2Bu,
8586
portunda çalışan ve üretim ortamı simülasyonu sunan bir Koa.js örneğini çalıştırır.ServBay Production (Üretim) Web Sitesi Ters Proxy’sini Yapılandırın
Benzer şekilde bir üretim ortamı simülasyonu için yeni bir site ekleyin:
- ServBay uygulamasında Website sekmesine gidin.
- Sol alttaki
+
ile yeni bir site oluşturun. - Şu bilgileri girin:
- Ad (Name):
ServBay Koa.js Prod Site
- Domain (Alan Adı):
servbay-koa-prod.servbay.demo
(veya kendi alan adınızı kullanıp Let's Encrypt ile ücretsiz SSL alabilirsiniz) - Type (Tür):
Ters Proxy (Reverse Proxy)
- IP Address:
127.0.0.1
- Port:
8586
(Koa.js üretim örneğinin portu) - Kök Dizin: Boş bırakabilir veya proje yolunuzu yazabilirsiniz.
- Ad (Name):
- Kaydedip değişiklikleri uygulayın.
.servbay.demo
alan adlarında ServBay User CA sertifikası atanmaya devam eder. Kendi kamu alan adınızı kullanıyorsanız, ServBay üzerinden ACME (Let's Encrypt gibi) yoluyla ücretsiz SSL/TLS sertifikası alabilirsiniz. Ayrıntılar için Web sitesini SSL ile koruma dökümanına göz atın.Koa.js Üretim Sitesini (Simülasyon) Ziyaret Edin
Tarayıcıyı açıp
https://servbay-koa-prod.servbay.demo
adresine gidin.Geliştirme ortamıyla aynı çıktı karşınıza çıkacaktır; fakat bu sefer istekler ServBay ters proxy yapılandırması ile 8586 portundaki Node.js sürecine yönlendirilir.
Veritabanı Bağlantısı
ServBay; MongoDB, Redis, MariaDB (MySQL uyumlu) ve PostgreSQL gibi en popüler veritabanlarını hazır olarak sunar. Koa.js projenizde bu veritabanlarına bağlanmak oldukça kolaydır çünkü tamamı yerel olarak çalışır ve genelde localhost
üzerinden erişilebilir.
Aşağıda, Node.js sürücüleriyle ServBay’in sunduğu bazı veritabanlarına nasıl bağlanılacağına dair örnek kod parçacıklarını bulabilirsiniz. İlgili veritabanı paketlerini Packages bölümünden kurarak çalışır durumda olduklarından emin olun.
MongoDB’ye Bağlanma
Proje dizininizde MongoDB'nin Node.js sürücüsünü yükleyin (ör:
mongoose
veyamongodb
):bashcd /Applications/ServBay/www/servbay-koa-app npm install mongoose # veya npm install mongodb
1
2Bağlantı kodunu
app.js
veya başka bir modüle ekleyin:javascript// Mongoose ile MongoDB’ye bağlanın const mongoose = require('mongoose'); // ServBay'de, varsayılan olarak MongoDB kimlik doğrulaması gerekmez, veritabanı adı isteğe bağlıdır mongoose.connect('mongodb://localhost:27017/servbay-koa-app', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('MongoDB’ye bağlandı')) .catch(err => console.error('MongoDB bağlantı hatası:', err)); // Not: Gerçek uygulamalarda bu bağlantı kodu, genellikle uygulamanın başlangıç aşamasında yer alır // ve bağlantı sağlandıktan sonra sunucu dinlenmeye başlar.
1
2
3
4
5
6
7
8
9
10
11
12
13ServBay’de kurulu MongoDB genellikle
27017
portunda ve varsayılan olarak parolasız erişim sunar. Veritabanı adını doğrudan verebilirsiniz (varsa kullanılmazsa otomatik oluşturulur).Redis’e Bağlanma
Redis’in Node.js istemci kütüphanesini kurun:
bashcd /Applications/ServBay/www/servbay-koa-app npm install redis
1
2Redis’e bağlantı örneği:
javascript// redis istemcisi ile Redis'e bağlanın const redis = require('redis'); // Varsayılan olarak localhost:6379 kullanılır const client = redis.createClient({ url: 'redis://localhost:6379' // ServBay'de Redis varsayılan olarak 6379 portunda }); client.on('connect', () => { console.log('Redis’e bağlandı'); }); client.on('error', (err) => { console.error('Redis bağlantı hatası:', err); }); // Redis sunucusuna bağlan client.connect(); // Not: Uygulamada genellikle bağlantı sağlandıktan sonra Redis işlemlerine başlanır // Örneğin, async/await ile client.connect() kullanılabilir.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21ServBay’de varsayılan olarak Redis
6379
portunu kullanır ve şifre istemez.MariaDB (veya MySQL)’e Bağlanma
MariaDB, MySQL'in bir çeşididir ve API uyumluluğu yüksektir. ServBay MariaDB paketini sunar ve bunu standart bir MySQL gibi kullanabilirsiniz.
MariaDB’nin Node.js sürücüsünü yükleyin:
bashcd /Applications/ServBay/www/servbay-koa-app npm install mariadb # veya npm install mysql2 (daha iyi uyumluluk, önerilir)
1
2mariadb
sürücüsü kullanıyorsanız:javascript// mariadb istemcisi ile MariaDB'ye bağlan const mariadb = require('mariadb'); // ServBay'de varsayılan MariaDB root kullanıcı parolası 'password' dür const pool = mariadb.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_koa_app', // Veritabanını önceden oluşturduğunuzdan emin olun connectionLimit: 5 }); pool.getConnection() .then(conn => { console.log("MariaDB’ye bağlandı"); conn.release(); // Bağlantı havuza geri bırakılır }) .catch(err => { console.error("MariaDB bağlantı hatası:", err); }); // Not: Bağlantı havuzundan bağlantı almak asenkron bir işlemdir
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22mysql2
sürücüsüyle bağlantı (önerilen):javascript// mysql2 istemcisi ile MariaDB/MySQL’e bağlan const mysql = require('mysql2/promise'); // promise tabanlı sürüm // ServBay'de root parolası varsayılan olarak 'password'dür const pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_koa_app', // Veritabanınız önceden oluşturulmalıdır waitForConnections: true, connectionLimit: 10, queueLimit: 0 }); pool.getConnection() .then(conn => { console.log("mysql2 kullanarak MariaDB/MySQL'e bağlanıldı"); conn.release(); // Bağlantı havuza geri bırakılır }) .catch(err => { console.error("MariaDB/MySQL bağlantı hatası:", err); }); // Not: Varsayılan root şifresini ServBay arayüzünde görebilir veya değiştirebilirsiniz. // Gerçek projelerde parolaları kodda vermek yerine ortam değişkenlerinde tutmak tavsiye edilir.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25ServBay’de MariaDB
3306
portunu kullanır. Varsayılanroot
parolası ServBay’in veritabanı yönetimi arayüzünde bulunabilir. Gerekirse veritabanını kendiniz (ör. TablePlus, DBeaver vb. ile) oluşturmanız gerekir.PostgreSQL’e Bağlanma
PostgreSQL’in Node.js sürücüsünü yükleyin:
bashcd /Applications/ServBay/www/servbay-koa-app npm install pg
1
2PostgreSQL’e bağlantı örneği:
javascript// pg istemcisi ile PostgreSQL'e bağlan const { Pool } = require('pg'); // ServBay'de varsayılan PostgreSQL kullanıcı adı 'user', parola 'password' const pool = new Pool({ user: 'user', // ServBay varsayılan kullanıcı host: 'localhost', database: 'servbay_koa_app', // Önceden veritabanı oluşturulmalı password: 'password', // Varsayılan parola port: 5432, // PostgreSQL'in varsayılan portu }); pool.connect((err, client, done) => { if (err) { console.error('PostgreSQL bağlantı hatası:', err); return; } console.log('PostgreSQL’e bağlanıldı'); client.release(); // Bağlantı havuza geri bırakılır }); // Not: Varsayılan PostgreSQL kullanıcı/parolası ServBay arayüzünden değiştirilebilir. // Gerçek projelerde parolaları kodda bırakmayın; ortam değişkeni gibi yöntemler tercih edin.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23ServBay’de PostgreSQL
5432
portunu kullanır. Varsayılan kullanıcı adı/parolayı yönetmek için ServBay’in veritabanı arayüzüne başvurabilirsiniz. Aynı şekilde, bağlantı yapmadan önce veritabanını elle oluşturmanız gerekebilir.
ServBay'de Veritabanı Yönetimi
Kod üzerinden bağlantının yanı sıra, ServBay’in sunduğu veritabanlarını grafik arayüz araçlarıyla doğrudan yönetebilirsiniz. Tüm veritabanları 127.0.0.1
veya localhost
adresinde çalışır ve ilgili port ile kullanıcı/parola bilgileri ServBay GUI’de görülebilir.
- Varsayılan parolayı görüntüle/değiştir: ServBay uygulamasında ilgili veritabanı paketinde ayarlar simgesine tıklayarak, varsayılan
root
(MariaDB) veyauser
(PostgreSQL) parola bilgisini görebilir ya da değiştirebilirsiniz. - Veritabanı/kullanıcı oluşturma: TablePlus, DBeaver, pgAdmin, MongoDB Compass vb. gibi istemci araçlarını kullanıp, SQL komutları veya arayüzleriyle yeni veritabanı, kullanıcı ve tablo oluşturabilirsiniz.
Dikkat Edilmesi Gerekenler
- Port Çakışması: Koa.js uygulamanız için seçtiğiniz portun (ör. 8585, 8586) sistemde başka bir program tarafından kullanılmadığından emin olun.
- ServBay Durumu: ServBay uygulaması ve gerekli Node.js paketleri ile veritabanlarının çalıştığından emin olun.
- hosts Dosyası: ServBay,
hosts
dosyanızı otomatik yönetir. Alan adı çözümlemede sorun yaşarsanız/etc/hosts
dosyasında doğru kayıtları olup olmadığını kontrol edin. - Güvenlik Duvarı: macOS’un veya üçüncü taraf bir güvenlik duvarının, ServBay veya Node.js süreçlerinin ağ bağlantılarını engellemeyeceğinden emin olun.
- Logları Kontrol Edin: Karşılaştığınız sorunlarda, ServBay’in log sekmesindeki günlük kayıtlarına ve Node.js’in terminal çıktısına bakmak faydalı olabilir.
Sıkça Sorulan Sorular (SSS)
Soru: Neden Koa.js uygulamama erişmek için ServBay’in ters proxy’sini kullanmalıyım?
Yanıt: Ters proxy’yi (ServBay web sitesi özelliği ile) kullanmanın birkaç avantajı vardır:
- Üretim ortamını simüle eder: Kendi alan adınızla (
.servbay.demo
veya kendi alan adınız) localhost:PORT yerine gerçek bir web sitesi gibi erişim sağlanır. - SSL desteği: ServBay, yerel web siteniz için otomatik olarak SSL sertifikasını yapılandırabilir (ServBay User CA veya Let's Encrypt ile). Böylece geliştirme sırasında HTTPS testini yapabilirsiniz.
- Merkezi yönetim: Tüm yerel geliştirme sitelerinizi ServBay üzerinden kolayca yönetin.
- Port gizleme: Dış erişimler (isterseniz) ve tarayıcı tarafından standart 80/443 portları kullanılır, asıl istekler yüksek portlardaki Node.js sürecine yönlendirilir.
- Üretim ortamını simüle eder: Kendi alan adınızla (
Soru: Ters proxy olmadan doğrudan
localhost:PORT
ile uygulamama erişebilir miyim?Yanıt: Evet, uygulamanız belirli bir portta çalışıyorsa (ör. 3000 veya istediğiniz başka bir port), doğrudan
http://localhost:PORT
adresinden geliştirme ve test yapabilirsiniz. Ancak, bu durumda ServBay’in sunduğu özel alan adı, otomatik SSL, merkezi log yönetimi gibi pek çok avantajdan yararlanamazsınız. Gerçek üretim ortamına daha yakın bir geliştirme deneyimi ve ek avantajlar için ServBay'in ters proxy özelliğini kullanmanız önerilir.Soru: ServBay’in varsayılan veritabanı şifresi nedir ve nasıl değiştirilir?
Yanıt: ServBay’in varsayılan veritabanı şifreleri uygulamanın Veritabanları bölümünde görülebilir. İlgili veritabanının (ör: MariaDB veya PostgreSQL) yanındaki ayarlar ikonuna tıklayarak kullanıcı adı ve parolayı görebilir veya değiştirebilirsiniz. Güvenlik açısından varsayılan şifreleri değiştirmeniz tavsiye edilir.
Sonuç
Bu rehber ile ServBay kullanarak macOS üzerinde kendi Koa.js geliştirme ortamınızı kolayca kurabilmelisiniz. Temel bir Koa.js uygulaması oluşturduk, ServBay’in website fonksiyonunu ve ters proxy yapısını yapılandırarak özel alan adı ve HTTPS üzerinden geliştirme/üretim (simülasyon) ortamlarını aktif ettik; ayrıca ServBay’in sunduğu popüler veritabanlarıyla nasıl bağlantı kurulacağını da öğrendik.
ServBay, Node.js geliştiricilerinin kolay yönetilebilir, entegre ve profesyonel bir yerel geliştirme ortamında kodlarına odaklanabilmeleri için harika bir araçtır. ServBay’in güçlü olanakları ile geliştirme veriminizi önemli ölçüde artırabilirsiniz.