Ubuntu Üzerine Node.js Kurulumu
Giriş
Node.js, sunucu tarafında programlama için kullanılan bir JavaScript çalışma ortamıdır.
Geliştiricilere, tarayıcı tabanlı web geliştirmeden zaten aşina oldukları JavaScript dilini kullanarak ölçeklenebilir backend işlevselliği oluşturma imkânı sunar.
Bu rehberde, bir Ubuntu sunucusuna Node.js kurmanın üç farklı yolunu göstereceğiz:
- apt kullanarak Ubuntu’nun varsayılan yazılım deposundan
nodejspaketini kurmak - apt ve alternatif bir PPA deposu kullanarak
nodejspaketinin belirli sürümlerini kurmak - nvm (Node Version Manager) aracını kurarak, birden fazla Node.js sürümünü yüklemek ve yönetmek
Çoğu kullanıcı için, varsayılan depodan apt ile kurulum yeterli olacaktır.
Daha yeni veya eski (legacy) bir sürüme ihtiyacınız varsa, PPA deposunu tercih etmelisiniz.
Eğer aktif olarak Node uygulamaları geliştiriyor ve sık sık sürüm değiştirmeniz gerekiyorsa, nvm yöntemi en doğru seçimdir.
Varsayılan Depolardan Apt ile Node.js Kurulumu
Ubuntu 20.04, varsayılan depolarında bir Node.js sürümü barındırır.
Bu sürüm, farklı sistemler arasında tutarlı bir deneyim sağlamak için kullanılabilir.
Bu rehber hazırlanırken depolarda bulunan sürüm 10.19 idi.
Bu, en güncel sürüm olmayabilir ancak kararlı bir sürümdür ve dili hızlıca denemek veya basit projeler üzerinde çalışmak için fazlasıyla yeterlidir.
Bu sürümü edinmek için apt paket yöneticisini kullanabilirsin.
Öncelikle yerel paket indeksini güncelle:
sudo apt update
Ardından Node.js paketini kur:
sudo apt install nodejs
Kurulumun başarılı olduğunu doğrulamak için node komutunu çalıştırarak sürüm numarasını kontrol et:
node -v
Output
v10.19.0
Eğer depolardaki paket senin ihtiyaçlarını karşılıyorsa, Node.js kurulumu için yapman gerekenler bu kadar.
Çoğu durumda ayrıca npm (Node.js paket yöneticisi) kurmak da isteyeceksin.
Bunu yapmak için apt kullanarak npm paketini kurabilirsin:
sudo apt install npm
Bu sayede Node.js ile birlikte kullanabileceğin modül ve paketleri kurabilirsin.
Bu noktada, apt ve Ubuntu’nun varsayılan depolarını kullanarak Node.js ve npm başarıyla kurulmuş oldu.
Bir sonraki bölümde, farklı Node.js sürümlerini kurmak için alternatif bir depo kullanımını göreceğiz.
NodeSource PPA Kullanarak Apt ile Node.js Kurulumu
Farklı bir Node.js sürümü kurmak için, NodeSource tarafından sağlanan bir PPA (personal package archive) kullanabilirsin.
Bu PPA’larda, Ubuntu’nun resmi depolarına kıyasla daha fazla Node.js sürümü bulunur.
Bu rehber hazırlanırken Node.js v16 ve v18 sürümleri mevcuttu.
Öncelikle, PPA’yı ekleyerek paketlere erişim sağlamalısın.
Ana dizininden (home directory) curl komutunu kullanarak tercih ettiğin sürümün kurulum betiğini indir.
Eğer farklı bir sürüm kurmak istiyorsan, 16.x kısmını kendi istediğin sürümle değiştir:
cd ~
curl -sL https://deb.nodesource.com/setup_16.x -o /tmp/nodesource_setup.sh
Mevcut sürümler hakkında daha fazla bilgi için NodeSource documentation sayfasına göz atabilirsin.
İndirilen betiğin içeriğini nano veya tercih ettiğin başka bir metin düzenleyici ile inceleyebilirsin:
nano /tmp/nodesource_setup.sh
Betik dosyasının çalıştırılmasında bir sakınca olmadığından emin olduktan sonra, düzenleyiciden çık.
Ardından betiği sudo ile çalıştır:
sudo bash /tmp/nodesource_setup.sh
PPA yapılandırmana eklenecek ve yerel paket önbelleğin otomatik olarak güncellenecektir.
Artık Node.js paketini, önceki bölümde yaptığın gibi kurabilirsin:
sudo apt install nodejs
Yeni sürümün kurulduğunu doğrulamak için node komutunu -v parametresiyle çalıştır:
node -v
Output
v16.19.0
NodeSource tarafından sağlanan nodejs paketi hem node çalıştırılabilir dosyasını hem de npm’i içerir, bu yüzden npm’i ayrıca kurmana gerek yoktur.
Bu noktada, apt ve NodeSource PPA kullanarak Node.js ve npm başarıyla kurulmuş oldu.
Bir sonraki bölümde, birden fazla Node.js sürümünü kurmak ve yönetmek için Node Version Manager (nvm) kullanımını göreceğiz.
Node Version Manager (nvm) Kullanarak Node Kurulumu
Node.js kurmanın bir diğer ve oldukça esnek yolu da nvm (Node Version Manager) kullanmaktır.
Bu yazılım sayesinde aynı anda birden fazla ve birbirinden bağımsız Node.js sürümünü ve bu sürümlere ait paketleri kurup yönetebilirsin.
Ubuntu 20.04 makinene NVM kurmak için projenin GitHub sayfasını ziyaret et.
Ana sayfada yer alan README dosyasındaki curl komutunu kopyala. Bu komut, kurulum betiğinin en güncel sürümünü indirmeni sağlayacaktır.
Komutu doğrudan bash üzerinden çalıştırmadan önce betiği incelemek iyi bir fikirdir.
Bunu yapmak için curl komutunun sonundaki | bash kısmını kaldırabilirsin:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh
Betik dosyasını incele ve yaptığı değişikliklerden emin ol. İçeriğin güvenli olduğuna karar verdiğinde, komutu tekrar çalıştır fakat bu kez sonuna | bash ekle.
Kullanacağın URL, nvm’in en güncel sürümüne göre değişiklik gösterebilir.
Şu an için kurulum betiğini indirmek ve çalıştırmak için kullanabileceğin komut:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
Bu komut, nvm betiğini kullanıcı hesabına kuracaktır.
Kullanabilmek için önce .bashrc dosyanı yeniden yüklemen gerekir:
source ~/.bashrc
Artık NVM’den hangi Node sürümlerinin mevcut olduğunu sorgulayabilirsin:
nvm list-remote
Output. . .
v18.0.0
v18.1.0
v18.2.0
v18.3.0
v18.4.0
v18.5.0
v18.6.0
v18.7.0
v18.8.0
v18.9.0
v18.9.1
v18.10.0
v18.11.0
v18.12.0 (LTS: Hydrogen)
v18.12.1 (LTS: Hydrogen)
v18.13.0 (Latest LTS: Hydrogen)
v19.0.0
v19.0.1
v19.1.0
v19.2.0
v19.3.0
v19.4.0
Liste oldukça uzundur.
Orada gördüğün sürümlerden herhangi birini yazarak Node’un ilgili sürümünü kurabilirsin.
Örneğin, v14.10.0 sürümünü kurmak için:
nvm install v14.10.0
Kurmuş olduğun farklı sürümleri görmek için şu komutu çalıştırabilirsin:
nvm list
Output
-> v14.10.0
v14.21.2
default -> v14.10.0
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v14.21.2) (default)
stable -> 14.21 (-> v14.21.2) (default)
. . .
Bu çıktı, ilk satırda şu an aktif olan sürümü gösterir (örneğin -> v14.10.0).
Ardından bazı isimlendirilmiş kısayollar (aliases) ve bu kısayolların işaret ettiği sürümler listelenir.
Not: Eğer apt üzerinden kurulmuş bir Node.js sürümün de varsa, listede system şeklinde bir giriş görebilirsin.
Bunun yanı sıra, Node’un farklı uzun süreli destek (LTS – Long Term Support) sürümleri için de özel kısayollar (alias) bulunur:
Output
lts/* -> lts/hydrogen (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.21.2
lts/gallium -> v16.19.0 (-> N/A)
lts/hydrogen -> v18.13.0 (-> N/A)
Bu kısayolları kullanarak da sürüm kurabilirsin.
Örneğin, en güncel uzun süreli destek (LTS) sürümü olan hydrogen’i kurmak için:
nvm install --lts=hydrogen
Output
Downloading and installing node v18.13.0...
. . .
Now using node v18.13.0 (npm v8.19.3)
Kurulu sürümler arasında geçiş yapmak için nvm use komutunu kullanabilirsin:
nvm use v14.10.0
Output
Now using node v14.10.0 (npm v6.14.8)
Kurulumun başarılı olup olmadığını doğrulamak için, önceki bölümlerde kullandığımız yöntemle sürümü kontrol edebilirsin:
node -v
v14.10.0
Beklendiği gibi, doğru Node sürümü artık makinene kurulmuş durumda.
Ayrıca uyumlu bir npm sürümü de birlikte gelmektedir.
Node.js Kaldırma
Node.js’i, kurulum yöntemine bağlı olarak apt ya da nvm ile kaldırabilirsin.
Eğer Node.js’i sistem depolarından yüklediysen, şu komutla kaldırabilirsin:
sudo apt remove nodejs
Varsayılan olarak apt remove, kurulumdan sonra oluşturulan yerel yapılandırma dosyalarını silmez.
Eğer bu yapılandırma dosyalarını da tamamen kaldırmak istiyorsan apt purge komutunu kullanabilirsin:
sudo apt purge nodejs
nvm kullanarak kurduğun bir Node.js sürümünü kaldırmak için önce onun şu an aktif sürüm olup olmadığını kontrol etmelisin:
nvm current
Hedeflediğin sürüm şu an aktif değilse, kaldırmak için şu komutu çalıştırabilirsin:
nvm uninstall node_version
Output
Uninstalled node node_version
Bu komut, seçtiğin Node.js sürümünü kaldıracaktır.
Eğer kaldırmak istediğin sürüm şu an aktif sürümse, önce değişikliklerin uygulanabilmesi için nvm’i devre dışı bırakman gerekir:
nvm deactivate
Artık mevcut sürümü, daha önce kullandığın uninstall komutuyla kaldırabilirsin.
Bu işlem, seçilen Node.js sürümüne ait tüm dosyaları tamamen silecektir:
Pratik Kullanım Senaryoları
Uygulama Geliştirme için Node.js Kurulumu
Yeni bir projeye başlarken Node.js kurmak kritik bir adımdır.
Node.js, JavaScript’in sunucu tarafında çalıştırılmasına olanak sağlar ve bu yüzden web uygulamaları için oldukça popülerdir.
Örneğin, gerçek zamanlı bir sohbet uygulaması geliştiriyorsan, gelen istekleri karşılamak ve cevap göndermek için Node.js’i Express.js gibi bir framework ile birlikte kullanabilirsin.
Bunu daha net görmek için basit bir sohbet uygulaması senaryosu düşünelim.
Burada amaç, bir sunucu kurup gelen mesajları dinlemek ve tüm bağlı kullanıcılara göndermektir.
Bunu yapmak için Node.js ve Express.js kullanabiliriz.
const express = require('express');
const app = express();
const server = require('http').createServer(app);
const io = require('socket.io')(server);
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
io.on('connection', (socket) => {
console.log('Bir kullanıcı bağlandı');
socket.on('disconnect', () => {
console.log('Kullanıcı ayrıldı');
});
socket.on('chat message', (msg) => {
io.emit('chat message', msg); // Mesajı tüm kullanıcılara gönder
});
});
server.listen(3000, () => {
console.log('Sunucu 3000 portunda dinleniyor');
});
Bu örnek, Node.js’in istemciler arasında gerçek zamanlı iletişimi yöneten bir sunucu oluşturmak için nasıl kullanılabileceğini göstermektedir.
Uygulama geliştirme için Node.js kurmak istersen, bu rehberde daha önce bahsedilen yöntemleri kullanabilirsin.
Örneğin, Ubuntu deposundan apt ile Node.js kurabilir veya belirli bir sürümü kurmak için nvm tercih edebilirsin.
Apt kullanarak Node.js kurmak için örnek komut:
sudo apt update && sudo apt install nodejs
Alternatif olarak, belirli bir Node.js sürümünü kurmak için nvm kullanabilirsin.
Eğer nvm daha önce kurulmadıysa önce onu kur, ardından şu komutla istediğin Node.js sürümünü yükle:
nvm install <version>
Backend Projeleri Kurma
Node.js, olay odaklı (event-driven) ve engellemeyen I/O (non-blocking I/O) modeli sayesinde backend projelerinde sıkça tercih edilir.
Bu yaklaşım, aynı anda birçok bağlantıyı hafif ve verimli bir şekilde yönetmeyi sağlar.
Örneğin, bir RESTful API geliştiriyorsan, Node.js ile:
- Sunucu tarafı mantığını oluşturabilir,
- Veritabanı işlemlerini gerçekleştirebilir,
- İstemciye verileri geri döndürebilirsin.
Backend projesi kurarken süreci kolaylaştırmak için Express.js veya Koa.js gibi framework’leri kullanabilirsin.
Bu framework’ler, kodunu düzenlemen ve HTTP istek/cevaplarını yönetmen için hazır bir yapı sunar.
NVM ile Birden Fazla Node.js Sürümünü Yönetmek
Farklı projeler farklı Node.js sürümleri gerektirebilir. Bu yüzden birden fazla Node.js sürümünü yönetmek oldukça önemlidir.
NVM (Node Version Manager), tek bir makinede birden fazla Node.js sürümünü kolayca yönetmeni sağlayan popüler bir araçtır.
Örneğin, iki farklı proje üzerinde çalışıyorsun diyelim:
- Biri Node.js 14.x sürümüne ihtiyaç duyuyor,
- Diğeri ise Node.js 16.x sürümüne ihtiyaç duyuyor.
NVM sayesinde bu sürümler arasında kolayca geçiş yapabilir ve sistemin varsayılan Node.js sürümünü etkilemeden çalışabilirsin.
Sürüm değiştirmek için şu komutu kullanabilirsin:
nvm use <version>
Buradaki <version> kısmını kullanmak istediğin sürüm numarasıyla değiştir.
Bu komut, Node.js sürümünü belirttiğin sürüme geçirecek ve böylece diğer projelerini etkilemeden istediğin proje üzerinde çalışabileceksin.
Yaygın Hatalar ve Hata Ayıklama
Global Kurulumlarda İzin Sorunları
npm ile bir paketi global olarak kurmaya çalıştığında gerekli izinlere sahip değilsen hata alabilirsin.
Bunun nedeni, global paketlerin sistem dizinlerine kurulmasıdır ve bu dizinlere yazmak için root erişimi gerekir.
Neden olur?
Bu hata, npm’in root erişimi gerektiren bir dizine yazmaya çalışması ama komutu çalıştıran kullanıcının bu izne sahip olmaması durumunda ortaya çıkar.
Nasıl düzeltilir?
Bu sorunu çözmek için aşağıdaki yöntemlerden birini kullanabilirsin:
- Komutu
sudoile çalıştır:sudo npm install -g <paket-adi> - npm dizininin sahipliğini mevcut kullanıcıya ver:
sudo chown -R $USER:$(whoami) /usr/local/{lib/node_modules,bin,share/man} \
&& sudo chown -R $USER:$(whoami) ~/.npm
- Global kurulumlarda root erişimi gerektirmeyen nvm veya yarn gibi bir paket yöneticisi kullan.
NVM Kurulumdan Sonra Bulunamadı (Profil Yüklenmedi)
Hata: NVM kurulumundan sonra nvm komutu bulunamıyorsa, genellikle NVM betiği shell profiline eklenmediği için olur.
Neden olur?
Kurulum sonrası NVM sistemin PATH değişkenine eklenmez.
NVM’in kullanılabilmesi için shell profilinde (örn. ~/.bashrc veya ~/.zshrc) betiğin source edilmesi gerekir.
Nasıl düzeltilir?
Shell profil dosyana aşağıdaki satırı ekle:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
Ardından terminalini yeniden başlat veya şu komutu çalıştırarak değişiklikleri uygula:
source ~/.nvm/nvm.sh
Kurulum Yöntemlerinin Karşılaştırması
| Yöntem | Açıklama | Artıları | Eksileri | Örnek Komut |
|---|---|---|---|---|
| Apt | Node.js’i Ubuntu deposundan kurar | Kolay kurulum, ek yapılandırma gerekmez | Sınırlı sürüm kontrolü, her zaman en güncel sürüm olmayabilir | sudo apt install nodejs |
| NVM | Birden fazla Node.js sürümünü kurar ve yönetir | Kolay sürüm geçişi, çoklu sürüm desteği | Ek kurulum gerektirir, yeni başlayanlar için karmaşık olabilir | nvm install node |
| NodeSource PPA | Üçüncü taraf depodan Node.js kurar | En güncel sürümlere erişim, kolay kurulum | Diğer yöntemler kadar güvenli olmayabilir, üçüncü taraf deposu eklemek gerekir | sudo apt update && sudo apt install nodejs |
| Binary | Önceden derlenmiş ikili dosyalardan kurar | Hızlı kurulum, bağımlılık gerekmez | Tüm sistemlerle uyumlu olmayabilir, manuel güncelleme gerekir | sudo apt update && sudo apt install nodejs |
| Source | Node.js’i kaynak koddan kurar | Kurulum üzerinde tam kontrol, özelleştirilebilir | Zaman alıcı, teknik bilgi gerektirir, manuel güncelleme gerekir | sudo apt update && sudo apt install nodejs |
Sonuç
Ubuntu sunucuna Node.js kurmanın birkaç farklı yolu vardır ve her birinin kendine göre avantajları bulunur.
İster varsayılan depodaki paketi kullan, ister nvm veya NodeSource PPA yolunu seç; önemli olan, projenin ihtiyaçlarına en uygun yöntemi belirlemektir.