ServBay ile Koa.js Projesi Oluşturma ve Çalıştırma
ServBay, macOS ve Windows üzerinde çalışan yerel bir Web geliştirme ortamıdır. Node.js çalışma zamanı ve çeşitli veritabanlarını da dahil olmak üzere geliştiricilerin sık kullandığı pek çok paketi içerisinde bulundurur. Bu makalede, ServBay’in sunduğu pratik ortamdan faydalanarak Koa.js projenizi hızlıca oluşturma, çalıştırma ve yönetme adımlarını bulacaksınız.
Koa.js Nedir?
Koa.js, Express.js ekibi tarafından geliştirilen, Node.js tabanlı yeni nesil bir Web framework’üdür. Sadeliği, güçlü özellik seti ve ifade gücüyle bilinen Koa.js; Web uygulamaları ve API'lar geliştirmek için ideal bir tercihtir. Modern JavaScript’in özelliklerinden, özellikle async/await
söz diziminden tam anlamıyla faydalanır; bu sayede asenkron işlemlerin ve middleware’lerin yazımı son derece kolay ve bakımı rahat hale gelir.
Koa.js'in Temel Özellikleri
- Async/Await tabanlıdır: Çekirdek mimarisi
async/await
etrafında tasarlanmıştır, bu da asenkron akış kontrolünü oldukça sezgisel kılar. - Hafif çekirdek: Koa'nın çekirdek kütüphanesi çok küçük ve yalnızca temel işlevleri içerir, ek fonksiyonlar ise modüler middleware’ler ile eklenir.
- Güçlü middleware sistemi: Katmanlı (cascading) middleware mantığı sayesinde istek işleme akışı oldukça esnek ve anlaşılırdır.
- Web odaklıdır: Yalnızca Web uygulamaları ve API geliştirmeye odaklanır, gereksiz veya ekstra işlevler içermez.
Koa.js ile, yazılım geliştiriciler yüksek performanslı ve bakımı kolay Web servislerini daha verimli şekilde geliştirebilirler.
ServBay ile Koa.js Geliştirme Ortamı Kurulumu
ServBay, Node.js geliştiricileri için kutudan çıktığı gibi kullanılabilen bir ortam sunar; Node.js çalışma zamanı ve temel veritabanı hizmetleri halihazırda entegre edilmiştir. ServBay’in Website (Site) özelliği ile projelerinize özel alan adı ve SSL sertifikası ile kolayca ulaşabilirsiniz.
Ön Gereksinimler
Başlamadan önce aşağıdaki adımları tamamlamış olmalısınız:
- ServBay’i yükleyin: ServBay resmi sitesi üzerinden en son ServBay sürümünü indirip yükleyin.
- Node.js paketini kurun: ServBay uygulamasını açıp Packages (Paketler) yönetimi menüsünden gerekli Node.js sürümünü yükleyin. Yüklü değilse seçip yükleme işlemini başlatın.
- ServBay’in temel kullanımına aşina olun: ServBay'de hizmetleri başlatma/durdurma ve Website (Site) yönetimini öğrenin.
Koa.js Projesi Oluşturma
ServBay’in önerilen site kök dizini olan /Applications/ServBay/www
klasörünü kullanacağız.
Proje dizinini başlatın
Terminal (Uçbirim) uygulaması ile ServBay’in site kök dizinine geçip yeni bir proje klasörü oluşturun (örneğin
servbay-koa-app
). Ardından 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 birpackage.json
dosyasını hızlıca oluşturacaktır.Koa.js’i yükleyin
Proje kökündeyken Koa.js’i (ve TypeScript kullanıyorsanız tip tanımlarını) yükleyin:
bashnpm install koa # TypeScript kullanıyorsanız tip tanımlarını yükleyin # npm install @types/koa --save-dev
1
2
3Uygulama giriş dosyasını oluşturun
Proje klasörünün kökünde
app.js
adında bir dosya açıp basit bir Koa.js uygulama kodunu ekleyin:javascriptconst Koa = require('koa'); const app = new Koa(); // Middleware: İstek bilgisini kaydeder 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 dizine istekleri yanıtlar app.use(async ctx => { ctx.body = 'Hello from ServBay Koa.js App!'; }); // Port tanımlaması, ö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 server running on http://localhost:${port}`); console.log(`Project path: ${__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 kodda iki adet basit middleware bulunur: birincisi istek süresi ve yolunu kaydeder, ikincisi ise kök dizine (
/
) yapılan istekleri "Hello from ServBay Koa.js App!" mesajı ile yanıtlar. Uygulama,PORT
ortam değişkeni varsa onu veya varsayılan3000
portunu kullanır.
Geliştirme Moduna Geçiş
Geliştirme süresince Koa.js uygulamanızı yerel bir Node.js işlemi ile başlatıp, ServBay’in Website (Site) işlevi üzerinden erişebilirsiniz.
Koa.js geliştirme sunucusunu çalıştırın
Terminalde projenin köküne geçin ve
node
ileapp.js
dosyasını başlatın. Port seçimini örneğin ServBay ile kolay konfigüre edebilmek için8585
olarak belirleyelim:bashcd /Applications/ServBay/www/servbay-koa-app PORT=8585 node app.js
1
2Terminalde şu şekilde bir çıktı göreceksiniz:
Koa.js server running on http://localhost:8585
. Bu sunucu başarılı şekilde8585
portunda çalışmakta demektir. Terminali açık bırakın ki sunucu çalışmaya devam edebilsin.ServBay Website (Site) için ters proxy ayarı yapın
Kendi alan adınızla
localhost:8585
üzerinde çalışan Koa.js uygulamanıza ulaşmak için ServBay’de yeni bir Website (Site) ayarı ve ters proxy gereklidir.- ServBay uygulamasını açın.
- Website (Site) menüsüne girin.
- Sol alttaki
+
butonundan yeni bir site ekleyin. - Site ayarlarını şu şekilde doldurun:
- Ad (Name):
ServBay Koa.js Dev Site
- Alan Adı (Domain):
servbay-koa-dev.servbay.demo
(.servbay.demo uzantısı önerilir, ServBay otomatik SSL sertifikası oluşturur) - Tür (Type):
Reverse Proxy (Ters Proxy)
- IP Adresi (IP Address):
127.0.0.1
(Lokaldeki Node.js sürecine yönlendirir) - Port (Port):
8585
(Koa.js uygulamasının dinlediği port) - Kök Dizin (Document Root): Ters proxy için önemli değildir, boş bırakabilir veya proje yolunu (
/Applications/ServBay/www/servbay-koa-app
) girebilirsiniz.
- Ad (Name):
- Kaydedin.
- ServBay sizden değişiklikleri uygulamanızı isteyebilir, bunu onaylayın.
Kurulum sonrası ServBay, yerel hosts dosyanızı günceller ve
servbay-koa-dev.servbay.demo
alan adını127.0.0.1
’e yönlendirir, dahili Caddy veya Nginx ile ilgili isteğilocalhost:8585
’e ters proxy yapar..servbay.demo
alan adları için ServBay User CA, otomatik SSL sertifikası üretip güvenilir olarak işaretler; böylece HTTPS ile güvenli erişim sağlanır.Detaylı adımları ServBay dokümanındaki Node.js geliştirme sitesi ekleme bölümünde bulabilirsiniz (İngilizce tercih edin).
Koa.js geliştirme sitesine erişim
Tarayıcınızı açıp
https://servbay-koa-dev.servbay.demo
adresini girin.Her şey doğru ayarlandıysa ekranda "Hello from ServBay Koa.js App!" mesajını görmelisiniz. Yani ServBay’in Website özelliği ile Koa.js geliştirme sunucunuza artık alan adı üzerinden ulaşabiliyorsunuz.
app.js
’de değişiklik yapıp Node.js sürecini yeniden başlattığınızda, sayfayı yenileyerek değişiklikleri görebilirsiniz.
Üretim Versiyonu (Simülasyon) Dağıtımı
Üretim ortamını simüle ettiğinizde port, ortam değişkenleri veya başlatma yöntemi değişik olabilir. ServBay’in ters proxy ayarı bu durumda da kullanılır.
Koa.js üretim sunucusunu çalıştırın (simülasyon)
Yeni bir terminal açıp, daha önceki geliştirme sunucusunu durdurun ve üretim simülasyonu için farklı bir port (
8586
) veNODE_ENV
ortam değişkeni ile başlatın:bashcd /Applications/ServBay/www/servbay-koa-app PORT=8586 NODE_ENV=production node app.js
1
2Bu şekilde uygulamanız
8586
portunda, üretim modunda çalışacak.ServBay Website (Site) ters proxy ayarı (üretim simülasyonu)
ServBay’de üretim simülasyonu için yeni bir site ekleyin:
- ServBay uygulamasında Website (Site) menüsüne girin.
- Sol alttaki
+
butonuna tıklayın ve yeni site ekleyin. - Ayarları doldurun:
- Ad (Name):
ServBay Koa.js Prod Site
- Alan Adı (Domain):
servbay-koa-prod.servbay.demo
(veya kendi alan adınız varsa onu girip ServBay’in ACME/Let's Encrypt ile sertifika alabilirsiniz) - Tür (Type):
Reverse Proxy (Ters Proxy)
- IP Adresi (IP Address):
127.0.0.1
- Port (Port):
8586
(Üretim modunda Koa.js’in dinlediği port) - Kök Dizin (Document Root): Boş bırakabilir veya proje yolunu girebilirsiniz.
- Ad (Name):
- Kaydedip değişikliği uygulayın.
.servbay.demo
alan adı ile yine ServBay User CA sertifikası kullanılır. Kendi açık alan adınızı kullanırsanız ServBay ACME protokolünü (Let’s Encrypt gibi) destekler ve ücretsiz SSL/TLS sertifikası alabilirsiniz. Detaylar için ServBay’in SSL ile siteyi koruma dökümantasyonuna bakabilirsiniz.Koa.js üretim (simülasyon) sitesine erişim
Tarayıcıdan
https://servbay-koa-prod.servbay.demo
adresine gidin.Geliştirme ortamındakiyle aynı çıktıyı görmelisiniz; bu sefer istek ServBay ters proxy üzerinden
8586
portunda çalışan Node.js sürecine yönlendirilmiş olur.
Veritabanı Bağlantısı
ServBay, MongoDB, Redis, MariaDB (MySQL uyumlu) ve PostgreSQL dahil en popüler veritabanlarını entegre şekilde sunar. Koa.js projenizden bu veritabanlarına bağlanmak oldukça kolaydır; tüm hizmetler yerelde çalışır ve genellikle localhost
adresiyle ulaşılır.
Aşağıda Node.js sürücüleriyle ServBay’deki çeşitli veritabanlarına bağlantıyı örnekleyen kısa kod parçacıkları bulacaksınız. ServBay’in Packages (Paketler) menüsünde ilgili veritabanını kurup çalıştırdığınızdan emin olun.
MongoDB'ye bağlantı
Önce Koa.js projesinde MongoDB için Node.js sürücüsünü yükleyin (örneğin
mongoose
veyamongodb
):bashcd /Applications/ServBay/www/servbay-koa-app npm install mongoose # veya npm install mongodb
1
2Ardından
app.js
veya başka bir modülde bağlantı kodunu ekleyin:javascript// Mongoose ile MongoDB bağlantısı const mongoose = require('mongoose'); // ServBay’de varsayılan olarak kimlik doğrulama gerekmez, veritabanı ismi özelleştirilebilir mongoose.connect('mongodb://localhost:27017/servbay-koa-app', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('Connected to MongoDB')) .catch(err => console.error('MongoDB connection error:', err)); // Not: Gerçek uygulamalarda bağlantı kodu genellikle uygulama başlatılırken eklenir // ve bağlantı sağlandıktan sonra port dinleme başlatılır.
1
2
3
4
5
6
7
8
9
10
11
12
13ServBay’deki MongoDB genellikle
27017
portunu dinler, varsayılan olarak kullanıcı adı ve şifre gerektirmez. Doğrudan istediğiniz veritabanı adını verebilir, yoksa otomatik oluşturulmasını sağlayabilirsiniz.Redis’e bağlantı
Redis için Node.js istemci kütüphanesini yükleyin:
bashcd /Applications/ServBay/www/servbay-koa-app npm install redis
1
2Redis sunucunuza bağlanma:
javascript// Redis istemcisi ile Redis’e bağlanma const redis = require('redis'); // Varsayılan olarak localhost:6379’a bağlanır const client = redis.createClient({ url: 'redis://localhost:6379' // ServBay’de varsayılan Redis portu 6379’dur }); client.on('connect', () => { console.log('Connected to Redis'); }); client.on('error', (err) => { console.error('Redis connection error:', err); }); // Redis sunucusuna bağlan client.connect(); // Not: Gerçek uygulamalarda, bağlantı sağlandıktan sonra Redis işlemlerini gerçekleştirmek için // async/await ile client.connect() kullanabilirsiniz.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21ServBay’deki Redis varsayılan olarak
6379
portunu dinler ve şifre gerektirmez.MariaDB (veya MySQL) bağlantısı
MariaDB, MySQL’in bir türevidir ve API uyumluluğu üst seviyededir. ServBay MariaDB paketini içerir, MySQL işlevleriyle aynıdır.
Node.js MariaDB sürücüsünü yükleyin:
bashcd /Applications/ServBay/www/servbay-koa-app npm install mariadb # veya uyum için mysql2 (önerilen)
1
2mariadb
sürücüsüyle bağlantı:javascript// MariaDB istemcisiyle MariaDB’ye bağlanma const mariadb = require('mariadb'); // ServBay’de root kullanıcı şifresi 'password' olarak ayarlanmıştır const pool = mariadb.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_koa_app', // Veritabanının oluşturulduğundan emin olun veya değiştirin connectionLimit: 5 }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB"); conn.release(); // Bağlantıyı bağlantı havuzuna geri bırakır }) .catch(err => { console.error("MariaDB connection error:", 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ı (önerilir):javascript// mysql2 istemcisi ile MariaDB/MySQL’e bağlanma const mysql = require('mysql2/promise'); // Promise tabanlı sürüm // ServBay’de root kullanıcı şifresi 'password' const pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_koa_app', // Veritabanını oluşturmayı unutmayın waitForConnections: true, connectionLimit: 10, queueLimit: 0 }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB/MySQL using mysql2"); conn.release(); // Bağlantıyı havuza geri bırakır }) .catch(err => { console.error("MariaDB/MySQL connection error:", err); }); // Not: ServBay’de root şifresi GUI’daki veritabanı ayarları kısmında görülebilir ve değiştirilebilir. // Üretim sistemlerinde şifreleri kodda tutmak yerine ortam değişkenleriyle yönetin.
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’deki MariaDB genellikle
3306
portunu dinler. Varsayılan root şifresi ServBay’in veritabanı yönetiminde görüntülenebilir. Gerekirse ServBay veya SQL istemcisi (TablePlus, DBeaver vb.) ileservbay_koa_app
veritabanını manuel oluşturmanız gerekir.PostgreSQL’e bağlantı
PostgreSQL için Node.js sürücüsünü yükleyin:
bashcd /Applications/ServBay/www/servbay-koa-app npm install pg
1
2PostgreSQL sunucusuna bağlanma:
javascript// pg istemcisi ile PostgreSQL sunucusuna bağlanma const { Pool } = require('pg'); // ServBay’de varsayılan PostgreSQL kullanıcı adı 'user', şifre 'password' const pool = new Pool({ user: 'user', // ServBay’de varsayılan kullanıcı host: 'localhost', database: 'servbay_koa_app', // Veritabanını oluşturmayı unutmayın password: 'password', // ServBay’de varsayılan şifre port: 5432, // Varsayılan PostgreSQL portu }); pool.connect((err, client, done) => { if (err) { console.error('PostgreSQL connection error:', err); return; } console.log('Connected to PostgreSQL'); client.release(); // Bağlantıyı havuza geri bırak }); // Not: Varsayılan user şifresi ServBay GUI'da veritabanı ayarlarında görülebilir ve düzenlenebilir. // Şifreleri kodda saklamak yerine ortam değişkeni 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’deki PostgreSQL genellikle
5432
portunu dinler. Varsayılan kullanıcı adı ve şifre ServBay’in veritabanı yönetim menüsünde bulunabilir. Aynı şekildeservbay_koa_app
veritabanını manuel olarak oluşturmanız gerekebilir.
ServBay'de Veritabanı Yönetimi
Kod ile bağlantı dışında, grafik arayüzlü istemci araçları ile ServBay’in veritabanlarını yönetebilirsiniz. Veritabanları varsayılan olarak 127.0.0.1
veya localhost
’ta, ServBay GUI’da gösterilen port ve kullanıcı adı/şifreyle bağlantı kurulabilir.
- Varsayılan şifreyi görüntüleme/düzenleme: ServBay uygulamasında ilgili veritabanı paketini bulup ayarlar simgesine tıklayarak root (MariaDB) veya user (PostgreSQL) şifrelerinin görülebilmesini ve değiştirilebilmesini sağlayabilirsiniz.
- Veritabanı/kullanıcı oluşturmak: TablePlus, DBeaver, pgAdmin, MongoDB Compass gibi istemci araçlarıyla ServBay’deki veritabanlarına bağlanıp yeni veritabanı, kullanıcı veya tablo oluşturabilirsiniz.
Dikkat Edilecek Hususlar
- Port çakışması: Koa.js uygulaması için seçtiğiniz portun (ör. 8585, 8586) başka bir program tarafından kullanılmadığından emin olun.
- ServBay durumunu kontrol edin: ServBay uygulaması ve ihtiyaç duyduğunuz Node.js paketi ve veritabanı servislerinin çalışır durumda olduğuna emin olun.
- hosts dosyası: ServBay hosts dosyasını otomatik yönetir, ama alan adı ile ilgili sorun olursa
/etc/hosts
dosyasını kontrol edin. - Güvenlik duvarı: macOS’un veya üçüncü taraf güvenlik yazılımlarının ServBay ya da Node.js süreçlerinin ağ bağlantısını engellemediğinden emin olun.
- Logları inceleyin: Sorun yaşarsanız ServBay uygulama loglarına (ServBay arayüzündeki log sekmesinde) ve Node.js’in terminal çıktısına bakarak teşhis yapabilirsiniz.
Sıkça Sorulan Sorular (SSS)
S: Koa.js projemi ServBay’de neden ters proxy üzerinden erişmeliyim?
C: Ters proxy (ServBay'in Website özelliği ile) kullanmanın bazı avantajları şunlardır:
- Üretim ortamı simülasyonu: Özel alan adı ile erişim (örn.
.servbay.demo
veya kendi alan adınız) gerçek bir websitesine erişimi simüle eder,localhost:PORT
adresinden daha yakındır. - SSL desteği: ServBay, yerel site için otomatik SSL sertifikası (ServBay User CA veya Let’s Encrypt) oluşturabildiğinden geliştirme esnasında HTTPS test edebilirsiniz.
- Toplu yönetim: Tüm yerel geliştirme sitelerinizi ServBay üzerinden kolayca tek merkezden yönetebilirsiniz.
- Port gizleme: Harici veya tarayıcı erişimi için standart 80/443 portu kullanılır, dahili istekler Node.js’in yüksek portuna yönlendirilir.
- Üretim ortamı simülasyonu: Özel alan adı ile erişim (örn.
S: Ters proxy olmadan
localhost:PORT
ile erişebilir miyim?C: Evet, Koa.js uygulamanız belirlediğiniz portta (örn. 3000 veya başka bir port) dinliyorsa doğrudan
http://localhost:PORT
ile tarayıcıdan ulaşabilirsiniz. Fakat bu durumda ServBay’in özel alan adı, otomatik SSL, gelişmiş log yönetimi gibi avantajlarından yararlanamazsınız. Gerçek ortamı simüle etmek için ServBay’in ters proxy özelliğini kullanmak daha uygundur.S: ServBay’de varsayılan veritabanı şifresi nedir, nasıl değiştirilir?
C: ServBay’de varsayılan veritabanı şifresi, ServBay uygulamasının Database (Veritabanı) bölümünde görülebilir. İlgili veritabanının (ör. MariaDB veya PostgreSQL) yanındaki ayarlar simgesine tıklayın, genellikle açılan pencerede varsayılan kullanıcı ve şifreyi görebilirsiniz. Dilerseniz şifreyi burada değiştirebilirsiniz. Güvenlik için varsayılan şifreyi değiştirmenizi tavsiye ederiz.
Sonuç
Bu rehberle, ServBay kullanarak macOS’ta Koa.js geliştirme ortamı nasıl kurulur artık biliyorsunuz. Temel bir Koa.js uygulaması oluşturduk, ServBay’in Website özelliğiyle ters proxy yapılandırıp özel alan adı ve HTTPS üzerinden yerelde geliştirme/yayında simülasyon erişimi sağladık. Ayrıca ServBay’in sunduğu popüler veritabanlarına nasıl bağlanacağınızı öğrendiniz.
ServBay, Node.js geliştiricileri için entegre ve kolayca yönetilebilen bir yerel geliştirme ortamı sunar; karmaşık kurulumlarla vakit kaybetmeden kod odaklı çalışmanızı sağlar. ServBay’in güçlü özellikleri ile üretkenliğinizi ciddi şekilde artırabilirsiniz.