ServBay ile Express.js Projesi Oluşturma ve Çalıştırma
Express.js Nedir?
Express.js, Node.js tabanlı hızlı, açık kaynaklı ve minimal bir web uygulama çatısıdır. Tek sayfalık, çok sayfalı ve karma web uygulamaları geliştirmek için güçlü özellikler sunar. Express.js, Node.js ekosistemindeki en popüler framework’lerden biri olup, sade ve esnek tasarımıyla geliştiriciler arasında büyük beğeni toplar.
Express.js’in Temel Özellikleri ve Avantajları
- Sadelik ve Esneklik: Express.js, sade bir API ve esnek bir middleware (ara katman) sistemine sahiptir, bu sayede web uygulamaları oldukça verimli şekilde geliştirilebilir.
- Middleware Desteği: İstek ve yanıtları kolayca işleyebilen çeşitli middleware'ler sunar. Örneğin, istek gövdesini ayrıştırma, oturum yönetimi, statik dosya sunumu gibi işlemler için kolay entegrasyon sağlar.
- Yönlendirme: Güçlü routing mekaniği sayesinde farklı HTTP metodlarını (GET, POST, PUT, DELETE, vs.) ve URL yollarını işler.
- Yüksek Entegrasyon: Farklı şablon motorları (Pug, EJS, Handlebars gibi), veritabanları (MongoDB, MySQL, PostgreSQL gibi) ve diğer Node.js modülleriyle sorunsuz entegre olur.
- Geniş Topluluk ve Eklenti Desteği: Büyük bir topluluk ve çok sayıda üçüncü parti middleware/eklenti ile olası problemlere hızlıca çözüm ve kaynak bulma imkânı sunar.
Express.js’in gücüyle geliştiriciler yüksek performanslı web uygulamaları ve API’lar hızla inşa edebilirler. ServBay ise güçlü bir yerel web geliştirme ortamı olarak Express.js projelerini kolayca çalıştırmak, ters proxy üzerinden erişim sağlamak ve kapsamlı veritabanı yönetimi gibi avantajlar sunar.
ServBay ile Express.js Projesi Oluşturma ve Çalıştırma
Bu makalede, ServBay’in Node.js ortamını kullanarak bir Express.js projesini nasıl kurup çalıştırabileceğinizi öğrenebilirsiniz. ServBay’in Web Sitesi özelliği ile web sunucusunu yapılandıracak ve ters proxy yöntemiyle projeye erişeceksiniz. Bu yöntem, belirli bir portta çalışan Node.js, Python, Go, Java gibi uygulamalar için özellikle uygundur.
Ön Koşullar
Başlamadan önce aşağıdaki şartları sağlamalısınız:
- macOS işletim sisteminde ServBay’in başarıyla kurulu olması.
- ServBay’de Node.js paketinin kurulu ve etkin olması (ServBay kontrol panelindeki "Paketler" sekmesinden yönetebilirsiniz).
- (İsteğe bağlı) Veritabanı kullanacaksanız ilgili ServBay veritabanı paketlerinin (MariaDB, PostgreSQL, MongoDB, Redis, MySQL gibi) kurulu ve etkin olması.
- Temel terminal veya komut satırı bilgisi.
Express.js Projesi Oluşturma
Proje Başlatma
Terminali açıp, ServBay’in önerdiği ana dizine (
/Applications/ServBay/www
) gidin. Sonra,npx express-generator
komutuyla hızlıca bir Express.js proje altyapısı oluşturun.npx
, npm v5.2 ve sonrası sürümlerde gelen, Node.js paketlerinin çalıştırılmasına yarayan bir aracıdır.bashcd /Applications/ServBay/www npx express-generator servbay-express-app
1
2Bu komut
/Applications/ServBay/www
altındaservbay-express-app
adında, Express.js’in temel dosya yapısını içeren bir klasör yaratacaktır.Proje Bağımlılıklarını Kurma
Yeni oluşan
servbay-express-app
klasörüne girin venpm install
komutunu çalıştırarak Express.js ve varsayılan ayarlar için gerekli şablon motoru, statik dosya sunucu gibi diğer bağımlılıkları kurun.bashcd servbay-express-app npm install
1
2Bağımlılıkların kurulmasını bekleyin.
Express.js Projesi Çıktı İçeriğini Düzenleme
Projeyi başarıyla çalıştırdığınızı test etmek için varsayılan ana sayfa çıktısını değiştireceğiz.
routes/index.js
Dosyasını DüzenlemeExpress.js projelerinde, farklı URL istekleri genellikle yönlendirme (route) dosyalarıyla yönetilir. Projenizdeki
routes/index.js
dosyasını açın ve kök yol (/
) için GET isteğini işleyen kısmı değiştirin. Varsayılan Pug şablonu gösteren kodu kaldırıp doğrudan basit bir metin yanıtı gönderin.javascriptvar express = require('express'); var router = express.Router(); /* Ana sayfa için GET isteği. */ router.get('/', function(req, res, next) { // Metin yanıtı gönderilecek şekilde değiştirildi res.send('Hello ServBay!'); }); module.exports = router;
1
2
3
4
5
6
7
8
9
10Dosyayı kaydedin.
Geliştirme Moduna Geçiş
Geliştirme sırasında, anlık değişiklikleri görebilmek için genellikle yerel geliştirme sunucusunu çalıştırırız. Express.js projeleri, npm start
komutuyla dahili bir HTTP sunucusu ile başlatılabilir.
Geliştirme Sunucusunu Başlatma
servbay-express-app
proje kök dizininde, sunucuyu başlatmak için aşağıdaki komutu girin. Sunucunun dinleyeceği portuPORT
ortam değişkeniyle (örneğin8585
) belirtiyoruz.DEBUG
değişkeni ise hata ayıklama mesajlarını aktif eder.bashcd /Applications/ServBay/www/servbay-express-app PORT=8585 DEBUG=servbay-express-app:* npm start
1
2Terminalde sunucunun çalıştığına dair bilgi göreceksiniz; Express.js uygulamanız artık
8585
portunda dinliyor.ServBay'de Web Sitesi Ters Proxy Yapılandırması
Express.js uygulamanız 8585 gibi özel bir portta çalışacağından (varsayılan HTTP portları olan 80/443 değil), ServBay’in Web Sitesi fonksiyonu ile bir ters proxy ayarlamanız gerekir. ServBay’in varsayılan web sunucusu (genellikle Caddy), standart 80/443 portlarını dinler ve belirlediğiniz alan adından gelen istekleri Express.js’e (ör.
127.0.0.1:8585
) yönlendirir.ServBay kontrol paneline giriş yapın, "Web Sitesi" sekmesine geçin ve yeni bir site ekleyin. Aşağıdaki şekilde yapılandırın:
- İsim:
My first Express.js dev site
(Tanımlayıcı bir ad) - Alan Adı:
servbay-express-test.servbay.demo
(.servbay.demo
uzantısı ServBay’in User CA ile otomatik HTTPS sağlar) - Site Türü:
Ters Proxy
- IP:
127.0.0.1
(veyalocalhost
) - Port:
8585
(Express.js’in kullandığı port)
Ayarları kaydedin ve ServBay’in yapılandırmasını uygulayın. ServBay, web sunucusunu otomatik olarak yapılandıracak ve SSL sertifikasını (özellikle
.servbay.demo
için) oluşturacaktır.Adım adım talimatlar için ServBay dokümantasyonundaki Node.js geliştirme sitesi ekleme rehberine bakabilirsiniz.
- İsim:
Geliştirme Modu Web Sitesini Ziyaret Etme
Tarayıcınızda yapılandırdığınız alan adını
https://servbay-express-test.servbay.demo
adresinden ziyaret edin. ServBay’in web sunucusu, isteğinizi alıp 8585 portundaki Express.js uygulamasına yönlendirecektir. Sayfada "Hello ServBay!" mesajını görmelisiniz.ServBay’in özelleştirilebilir alan adları ve ücretsiz SSL sertifika desteği ile (
.servbay.demo
alanı için otomatik HTTPS dâhil) yerel geliştirmede kolayca HTTPS kullanabilirsiniz. Bu, gerçek üretim ortamına daha yakın bir test süreci ve olası sorunların erken tespiti imkânını sunar.
Üretim Sürümünü Yayına Hazırlama
Express.js projenizi tamamladığınızda, üretim ortamına taşımadan önce yerel bir üretim simülasyonu yapmanız önerilir.
Üretim Ortamı Hazırlığı
Genellikle Express.js projeleri üretim ortamında çalışırken
NODE_ENV
ortam değişkeniniproduction
yapmanız gerekir. Bu bazı paketlerin (debug modunun kapanması, performans optimizasyonları gibi) çalışma şeklini değiştirebilir. Projenizin bu ayara doğru yanıt verdiğinden emin olun.Üretim Sunucusunu Çalıştırma
servbay-express-app
dizininde, üretimi simüle etmek için sunucuyu farklı bir portta (örn.8586
) veNODE_ENV=production
ile başlatın:bashcd /Applications/ServBay/www/servbay-express-app PORT=8586 NODE_ENV=production npm start
1
2Terminal, uygulamanın
8586
portunda çalıştığını gösterecektir.ServBay'de Üretim için Ters Proxy Yapılandırması
Geliştirme modunda olduğu gibi, üretim için de ayrı bir ServBay web sitesi ("ters proxy") yapılandırın.
Kontrol panelinde "Web Sitesi" sekmesine geçin, yeni site ekleyin ve:
- İsim:
My first Express.js production site
- Alan Adı:
servbay-express-test-prod.servbay.demo
(veya test etmek istediğiniz başka bir alan adı) - Site Türü:
Ters Proxy
- IP:
127.0.0.1
- Port:
8586
(üretim sürümünün dinlediği port)
Yapılandırmayı kaydedin ve uygulayın.
- İsim:
Üretim Web Sitesini Ziyaret Etme
Üretim simülasyonu için yapılandırdığınız alan adını
https://servbay-express-test-prod.servbay.demo
adresinde açın. Express.js üretim sürümü, ServBay’in ters proxy özelliğiyle bu adrese yönlendirilecektir. Böylece üretim ortamına benzer şekilde yerel testler yapabilirsiniz.
Veritabanına Bağlanmak
ServBay, yerel geliştirme için MariaDB, PostgreSQL, MongoDB ve Redis gibi çeşitli veritabanı paketleri sağlar. Bu veritabanları aktifleştirilmişse, Express.js projenizle kolayca bağlantı kurabilirsiniz. ServBay genellikle varsayılan kullanıcı ve şifrelerle gelir: örneğin MariaDB/MySQL için root kullanıcısının şifresi password
, PostgreSQL’de ise varsayılan kullanıcı user
, şifre password
ve veritabanı servbay_default
olur. Bağlantı kurarken ServBay arayüzündeki verilere veya bu varsayılan ayarlara bakabilirsiniz.
Aşağıda, Express.js projelerinde bu veritabanlarına nasıl bağlanılabileceğine dair örnekler bulabilirsiniz. Lütfen ilgili Node.js veritabanı sürücüsünü npm install <paket-adı>
ile yüklemeyi unutmayın.
MongoDB'ye Bağlanmak
Öncelikle en popüler MongoDB ORM’i olan
mongoose
’u kurun:bashnpm install mongoose
1Sonrasında kodunuzda (ör.
app.js
veya ayrı bir veritabanı dosyasında) aşağıdaki bağlantıyı yapın:javascriptvar mongoose = require('mongoose'); // Yerel MongoDB'ye bağlanılıyor, veritabanı adı: servbay-express-app // ServBay'de MongoDB varsayılan olarak parolasızdır mongoose.connect('mongodb://localhost/servbay-express-app', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('MongoDB\'ye bağlandı')) .catch(err => console.error('MongoDB bağlantı hatası:', err));
1
2
3
4
5
6
7
8
9
10MongoDB paketinin ServBay’de çalışır durumda olduğuna emin olun.
Redis'e Bağlanmak
Önce, Redis istemci kütüphanesi
redis
'i kurun:bashnpm install redis
1Sonra kodunuza ekleyin:
javascriptvar redis = require('redis'); // ServBay'de Redis varsayılan olarak localhost:6379'da şifresiz çalışır var client = redis.createClient({ host: 'localhost', port: 6379 }); client.on('connect', function() { console.log('Redis\'e bağlı'); }); client.on('error', function (err) { console.log('Redis Hatası: ' + err); }); // Anahtar-değer ayarlama ve alma örneği // client.set('mykey', 'Express\'ten selamlar!', redis.print); // client.get('mykey', function(err, reply) { // if (err) throw err; // console.log(reply); // "Express'ten selamlar!" çıktısı alınır // }); // Redis işlemleri için client nesnesini kullanabilirsiniz
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23ServBay’de Redis’in etkin olduğundan emin olun.
MariaDB / MySQL'e Bağlanmak
ServBay, MariaDB ve MySQL’i destekler. Bağlantı için genellikle
mariadb
veyamysql2
npm paketleri kullanılır. Burada örnek olarakmariadb
gösterilmiştir (aynı kod MySQL için de kullanılabilir).Önce
mariadb
veyamysql2
kurun:bashnpm install mariadb # veya npm install mysql2
1Sonra ServBay’in varsayılan bilgileriyle bağlantı kurun. MariaDB/MySQL’de root kullanıcısı şifresi:
password
.javascriptvar mariadb = require('mariadb'); // MariaDB/MySQL varsayılan olarak localhost:3306'ya kurulu var pool = mariadb.createPool({ host: 'localhost', port: 3306, // Varsayılan port user: 'root', // ServBay varsayılan kullanıcı password: 'password', // ServBay varsayılan şifre database: 'servbay_express_app', // ServBay'de kolayca oluşturabilirsiniz connectionLimit: 5 // Bağlantı havuzu boyutu }); pool.getConnection() .then(conn => { console.log("MariaDB/MySQL'e bağlanıldı"); // conn ile sorgu gönderebilirsiniz // conn.query("SELECT 1").then(...).catch(...).finally(() => conn.release()); conn.release(); // İş bitince havuza bağlantı iade edilir }) .catch(err => { console.log("Bağlantı kurulamadı: " + err); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Bağlantıdan önce, ServBay’in veritabanı yönetim araçları (phpMyAdmin, Adminer gibi) ile
servbay_express_app
veritabanını oluşturmanız gerekebilir. İlgili veritabanı paketinizin çalışıyor olması gerekir.PostgreSQL Bağlantısı
Önce PostgreSQL istemci paketi
pg
’yi yükleyin:bashnpm install pg
1Ardından ServBay’in varsayılan bilgilerini kullanarak bağlanın. Kullanıcı:
user
, şifre:password
, veritabanı:servbay_default
.javascriptvar { Pool } = require('pg'); // PostgreSQL varsayılan olarak localhost:5432'de çalışır var pool = new Pool({ user: 'user', // ServBay varsayılan kullanıcı host: 'localhost', database: 'servbay_default', // ServBay varsayılan veya sizin oluşturduğunuz veritabanı password: 'password', // ServBay varsayılan şifre port: 5432, // Varsayılan port }); pool.connect((err, client, done) => { if (err) { console.error('PostgreSQL bağlantı hatası:', err); return; } console.log('PostgreSQL\'e bağlanıldı'); // client ile sorgu yapabilirsiniz // client.query('SELECT NOW()', (err, res) => { ... done(); }); done(); // Bağlantı iade edilir }); // Veya async/await ile: // try { // const client = await pool.connect(); // console.log('PostgreSQL\'e bağlanıldı'); // // const res = await client.query('SELECT NOW()'); // // console.log(res.rows[0]); // client.release(); // Bağlantı iade edilir // } catch (err) { // console.error('PostgreSQL bağlantı hatası:', err); // }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31ServBay’de PostgreSQL paketinin de etkin olduğuna emin olun.
Özet
Bu adımlar sayesinde ServBay kullanarak Express.js projesi oluşturma, yapılandırma ve çalıştırmayı başarıyla başardınız. Artık şunları biliyorsunuz:
express-generator
ile yeni proje oluşturmak- Express.js uygulamasını belirli bir portta çalıştırmak
- ServBay Web Sitesi ile ters proxy kurup uygulamanıza standart HTTP/S portlarından erişmek
- ServBay’in sunduğu ortamda çoklu veritabanına bağlantı yapmak
ServBay; Node.js (Express.js) geliştirmeyi hem kurulumda hem de yönetim aşamasında önemli ölçüde kolaylaştırır, asıl odağınız olan yazılıma yoğunlaşmanızı sağlar. Ayrıca; otomatik SSL sertifikaları, site yedekleme, günlük log kaydı görüntüleme gibi ekstra özelliklerle de yerel geliştirme iş akışınızı daha pratik hâle getirir.