Takip et

Ubuntu 16.04 Üzerinde Node.js Uygulamasını Üretim Ortamı İçin Kurulumu: Kapsamlı Bir Rehber

Ubuntu 16.04 Üzerinde Node.js Uygulamasını Üretim Ortamı İçin Kurulumu: Kapsamlı Bir Rehber Giriş Node.js, modern web uygulamaları gelişt

Ubuntu 16.04 Üzerinde Node.js Uygulamasını Üretim Ortamı İçin Kurulumu: Kapsamlı Bir Rehber

Giriş

Node.js, modern web uygulamaları geliştirmek için popüler ve güçlü bir çalışma zamanı ortamıdır. Yüksek performanslı, ölçeklenebilir ve gerçek zamanlı uygulamalar oluşturma yeteneği sayesinde, birçok geliştiricinin ve şirketin tercih ettiği bir teknolojidir. Ancak bir Node.js uygulamasını geliştirme ortamından üretim ortamına taşımak, uygulamanın sürekli, güvenli ve verimli bir şekilde çalışmasını sağlamak için belirli adımları ve en iyi uygulamaları gerektirir. Bu makale, Ubuntu 16.04 işletim sistemi üzerinde bir Node.js uygulamasını üretim ortamı için nasıl kuracağınızı, yapılandıracağınızı ve güvence altına alacağınızı adım adım açıklamaktadır.

Ubuntu 16.04, uzun süreli destek (LTS) sunan stabil bir işletim sistemi sürümü olsa da, daha yeni Ubuntu sürümleri (örneğin 20.04, 22.04) mevcut ve genellikle yeni kurulumlar için tercih edilir. Ancak, mevcut altyapılar veya belirli gereksinimler nedeniyle hala Ubuntu 16.04 kullanan sistemler olabilir. Bu rehber, bu özel sürüme odaklanarak, gerekli tüm adımları detaylandıracaktır. Konumuz, Node.js uygulamanızı bir web sunucusu (Nginx), bir süreç yöneticisi (PM2) ve güvenlik duvarı ayarlarıyla nasıl entegre edeceğinizi kapsamaktadır.

Ön Gereksinimler

Bu rehbere başlamadan önce, aşağıdaki ön gereksinimlere sahip olduğunuzdan emin olun:
* Ubuntu 16.04 Sunucusu: Temiz bir Ubuntu 16.04 sunucusu (VPS veya fiziksel sunucu).
* SSH Erişimi: Sunucuya SSH üzerinden erişim yetkisi olan bir kullanıcı (root olmayan, sudo yetkisine sahip bir kullanıcı önerilir).
* Temel Linux Bilgisi: Komut satırı (CLI) kullanımı hakkında temel bilgi.
* Node.js Uygulaması: Sunucuya dağıtılmaya hazır, çalışan bir Node.js uygulamanız olmalı. Bu uygulama genellikle app.js veya server.js gibi bir ana dosya ile başlar ve belirli bir portta dinler (örneğin, 3000).

Adım 1: Sunucuyu Güncelleme

Herhangi bir kuruluma başlamadan önce, sunucunuzdaki paket listelerini güncellemek ve mevcut paketleri en son sürümlerine yükseltmek iyi bir uygulamadır. Bu, güvenlik açıklarını kapatmaya ve uyumluluk sorunlarını önlemeye yardımcı olur.

sudo apt update
sudo apt upgrade -y

sudo apt update komutu, yerel paket indeksini güncellerken, sudo apt upgrade -y komutu ise kurulu tüm paketleri onay gerektirmeden yükseltir.

Adım 2: Node.js ve npm Kurulumu

Node.js uygulamanızın çalışması için Node.js çalışma zamanı ortamının ve npm (Node Package Manager) paket yöneticisinin sunucuya kurulması gereklidir. Node.js’i kurmanın birkaç yolu vardır, ancak üretim ortamları için Node Version Manager (NVM) kullanılması, farklı Node.js sürümleri arasında kolayca geçiş yapmanızı sağladığı için genellikle en iyi yöntemdir.

NVM (Node Version Manager) Kullanarak Kurulum (Önerilen)

NVM, aynı sunucuda birden fazla Node.js sürümünü yönetmenizi sağlar. Bu, farklı projeler için farklı Node.js sürümlerine ihtiyaç duyduğunuzda veya Node.js’in yeni bir sürümünü test etmek istediğinizde çok kullanışlıdır.

Öncelikle NVM kurulum betiğini indirin ve çalıştırın:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

Not: v0.39.1 yerine NVM’nin en son kararlı sürümünü kontrol edip kullanmanız önerilir. NVM GitHub sayfasından güncel sürümü bulabilirsiniz.

Kurulum betiği tamamlandıktan sonra, NVM’nin kabuğunuzda kullanılabilir olması için terminal oturumunuzu yeniden başlatmanız veya aşağıdaki komutu çalıştırmanız gerekir:

source ~/.bashrc

Şimdi NVM’yi kullanarak Node.js’in en son LTS (Uzun Süreli Destek) sürümünü kurabiliriz:

nvm install --lts

Belirli bir sürümü kurmak isterseniz (örneğin Node.js 10, Ubuntu 16.04 için daha uygun olabilir):

nvm install 10

Kurduktan sonra, bu sürümü varsayılan olarak ayarlayın ve kullanmaya başlayın:

nvm use 10 # Veya nvm use --lts
nvm alias default 10 # Veya nvm alias default --lts

Kurulumun başarılı olduğunu doğrulamak için Node.js ve npm sürümlerini kontrol edin:

node -v
npm -v

Apt Paket Yöneticisi Kullanarak Kurulum (Alternatif)

Eğer NVM kullanmak istemiyorsanız, Node.js’i doğrudan Ubuntu’nun paket yöneticisi (apt) aracılığıyla da kurabilirsiniz. Ancak bu yöntemle genellikle daha eski Node.js sürümleri gelir. Daha güncel bir sürüm için NodeSource deposunu eklemeniz gerekir.

NodeSource deposunu ekleyelim (örneğin Node.js 10.x için):

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -

Not: setup_10.x yerine setup_12.x, setup_14.x vb. kullanarak istediğiniz Node.js sürümünü seçebilirsiniz. Ancak Ubuntu 16.04’ün daha eski çekirdek ve glibc sürümlerine sahip olması nedeniyle, çok yeni Node.js sürümleriyle uyumluluk sorunları yaşanabilir. Node.js 10 veya 12 genellikle 16.04 ile iyi çalışır.

Depoyu ekledikten sonra Node.js’i kurun:

sudo apt install -y nodejs

Bu, Node.js ve npm’i kuracaktır. npm’in en son sürümünü edinmek için ayrıca şu komutu çalıştırabilirsiniz:

sudo npm install -g npm@latest

Kurulumu doğrulamak için:

node -v
npm -v

Adım 3: Uygulama Dosyalarını Sunucuya Aktarma

Node.js ve npm kurulduktan sonra, uygulama dosyalarınızı sunucuya aktarmanız gerekir. Bu işlemi yapmanın birkaç yaygın yolu vardır.

Git Kullanarak Aktarım (Önerilen)

Eğer uygulamanız bir Git deposunda barındırılıyorsa, dosyaları doğrudan sunucuya klonlamak en kolay yoldur.

Öncelikle Git’i kurun:

sudo apt install git -y

Uygulamanızı klonlamak istediğiniz dizine gidin (örneğin /var/www/ altına):

sudo mkdir -p /var/www/your_app_name
sudo chown -R your_username:your_username /var/www/your_app_name # Kullanıcı adınızı değiştirin
cd /var/www/your_app_name
git clone  . # Mevcut dizine klonla

Not: Uygulamanızı root kullanıcısı yerine, özel bir uygulama kullanıcısı altında çalıştırmak daha güvenlidir. Bu rehberde, basitlik adına your_username kullanılmıştır. Üretim ortamında your_app_user gibi ayrı bir kullanıcı oluşturmak daha iyi bir uygulamadır.

SCP Kullanarak Aktarım

Eğer uygulamanız bir Git deposunda değilse veya sadece belirli dosyaları aktarmanız gerekiyorsa, SCP (Secure Copy Protocol) kullanabilirsiniz. Bu işlemi yerel makinenizden yaparsınız:

scp -r /path/to/local/your_app_folder user@your_server_ip:/var/www/your_app_name

user, your_server_ip, /path/to/local/your_app_folder ve /var/www/your_app_name değerlerini kendi bilgilerinizle değiştirin.

Uygulama Bağımlılıklarını Yükleme

Uygulama dosyaları sunucuya aktarıldıktan sonra, projenizin package.json dosyasında belirtilen tüm bağımlılıkları yüklemeniz gerekir:

cd /var/www/your_app_name # Uygulamanızın kök dizinine gidin
npm install --production

--production bayrağı, yalnızca üretim bağımlılıklarını (devDependencies hariç) yükler, bu da disk alanından tasarruf sağlar ve kurulum süresini kısaltır.

Adım 4: Süreç Yöneticisi Kullanma: PM2

Node.js uygulamaları genellikle tek bir işlem olarak çalışır. Eğer bu işlem çökerse, uygulamanız erişilemez hale gelir. Bir süreç yöneticisi, uygulamanızın sürekli çalışmasını sağlamak, çöktüğünde otomatik olarak yeniden başlatmak, performansını izlemek ve loglarını yönetmek için kritik öneme sahiptir. PM2 (Process Manager 2) bu amaç için popüler ve güçlü bir araçtır.

PM2 Kurulumu

PM2’yi global olarak kurun:

sudo npm install -g pm2

Uygulamayı PM2 ile Başlatma

PM2’yi kullanarak Node.js uygulamanızı başlatmak çok kolaydır. Uygulamanızın ana dosyasının bulunduğu dizinde olduğunuzdan emin olun:

cd /var/www/your_app_name
pm2 start app.js # Veya server.js, index.js vb.

Eğer package.json dosyanızda bir start betiği tanımladıysanız (örneğin "start": "node app.js"), onu da kullanabilirsiniz:

pm2 start npm --name "my-app" -- run start

Uygulamanızın çalıştığını doğrulamak için:

pm2 list

Bu komut, çalışan PM2 süreçlerinin bir listesini gösterir. Uygulamanızın online durumda olması gerekir.

PM2, uygulamanızın performansını ve loglarını izlemek için de araçlar sunar:

pm2 monit # Gerçek zamanlı izleme
pm2 logs # Uygulama loglarını görüntüleme

PM2’yi Yeniden Başlatma ve Durdurma

Uygulamanızda değişiklikler yaptıktan sonra, PM2 sürecini yeniden başlatmanız gerekir:

pm2 restart all # Tüm PM2 süreçlerini yeniden başlat
pm2 restart my-app # Belirli bir uygulamayı yeniden başlat (my-app yerine uygulama adınızı veya ID'sini kullanın)

Uygulamayı durdurmak veya silmek için:

pm2 stop my-app
pm2 delete my-app

Başlangıçta PM2’yi Çalıştırma (Startup Script)

Sunucu yeniden başlatıldığında PM2’nin uygulamalarınızı otomatik olarak başlatmasını sağlamak için bir başlangıç betiği oluşturmanız gerekir.

pm2 startup systemd

Bu komut, sunucunuzun init sistemi (systemd) için bir başlangıç betiği oluşturma talimatlarını verir. Komutun çıktısını dikkatlice okuyun; size çalıştırmanız gereken tam komutu verecektir. Genellikle şöyle bir şey olacaktır:

sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u your_username --hp /home/your_username

Bu komutu kendi kullanıcı adınızla ve doğru yollarla çalıştırdığınızdan emin olun.

Son olarak, PM2’nin mevcut uygulama listesini kaydetmesini sağlayın, böylece başlangıçta bu uygulamaları yeniden başlatabilir:

pm2 save

Artık sunucunuz yeniden başlatılsa bile Node.js uygulamanız otomatik olarak PM2 tarafından başlatılacaktır.

Adım 5: Ters Proxy Kurulumu: Nginx

Node.js uygulamalarını doğrudan internete açmak, genellikle güvenlik ve performans nedenleriyle önerilmez. Bunun yerine, bir ters proxy sunucusu (reverse proxy) kullanmak yaygın bir yaklaşımdır. Nginx, bu amaç için popüler, yüksek performanslı ve hafif bir web sunucusudur. Nginx, gelen HTTP isteklerini Node.js uygulamanızın dinlediği porta yönlendirecek, aynı zamanda statik dosyaları sunma, SSL/TLS sonlandırma ve yük dengeleme gibi ek işlevler sağlayacaktır.

Nginx Kurulumu

Nginx’i Ubuntu paket yöneticisi aracılığıyla kurun:

sudo apt install nginx -y

Kurulumdan sonra Nginx otomatik olarak başlayacaktır. Durumunu kontrol edebilirsiniz:

sudo systemctl status nginx

active (running) durumunda olmalıdır.

Eğer UFW (Uncomplicated Firewall) kullanıyorsanız, Nginx trafiğine izin vermeniz gerekir:

sudo ufw allow 'Nginx HTTP'
sudo ufw status

Bu, Nginx’in HTTP (80 numaralı port) trafiğini kabul etmesini sağlar.

Nginx Yapılandırması

Şimdi Nginx’i Node.js uygulamanıza gelen istekleri yönlendirecek şekilde yapılandırmamız gerekiyor. Nginx yapılandırma dosyaları /etc/nginx/sites-available/ dizininde bulunur. Yeni bir yapılandırma dosyası oluşturalım:

sudo nano /etc/nginx/sites-available/your_app

Dosyanın içine aşağıdaki yapılandırmayı yapıştırın. your_domain.com, www.your_domain.com ve your_server_ip değerlerini kendi alan adınız ve sunucu IP adresinizle değiştirin. Ayrıca, Node.js uygulamanızın dinlediği portu (proxy_pass satırındaki 3000) doğru şekilde ayarladığınızdan emin olun.

server {
    listen 80;
    server_name your_domain.com www.your_domain.com your_server_ip;

    location / {
        proxy_pass http://localhost:3000; # Node.js uygulamanızın çalıştığı port
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Bu yapılandırma, Nginx’in 80 numaralı porttan (HTTP) gelen tüm istekleri localhost:3000 adresinde çalışan Node.js uygulamanıza yönlendirmesini sağlar. proxy_set_header satırları, Node.js uygulamanızın istemcinin gerçek IP adresini ve diğer önemli bilgileri almasını sağlar.

Yapılandırma dosyasını kaydettikten sonra (CTRL+X, Y, Enter), bu yapılandırmayı etkinleştirmek için bir sembolik bağlantı oluşturmanız gerekir:

sudo ln -s /etc/nginx/sites-available/your_app /etc/nginx/sites-enabled/

Varsayılan Nginx yapılandırmasını devre dışı bırakmanız gerekebilir:

sudo rm /etc/nginx/sites-enabled/default

Nginx yapılandırmanızın sözdizimini kontrol edin:

sudo nginx -t

Eğer herhangi bir hata yoksa, Nginx’i yeniden başlatarak yeni yapılandırmayı uygulayın:

sudo systemctl restart nginx

Artık tarayıcınızdan alan adınızı veya sunucu IP adresinizi ziyaret ettiğinizde, Nginx isteği Node.js uygulamanıza yönlendirmeli ve uygulamanızın çıktısını görmelisiniz.

Adım 6: Güvenlik Ayarları

Bir üretim sunucusunda güvenlik her zaman öncelikli olmalıdır. Aşağıdaki temel güvenlik adımlarını uygulamanız önemlidir.

Güvenlik Duvarı (UFW) Yapılandırması

UFW (Uncomplicated Firewall), Ubuntu’da güvenlik duvarını yönetmek için basit bir arayüz sağlar. Sadece gerekli portlara izin vererek sunucunuzu korumanız gerekir.

sudo ufw enable # Güvenlik duvarını etkinleştir
sudo ufw allow OpenSSH # SSH erişimine izin ver (port 22)
sudo ufw allow 'Nginx HTTP' # Nginx'in HTTP trafiğine izin ver (port 80)

Eğer SSL kullanacaksanız, daha sonra 'Nginx HTTPS' için de izin vereceksiniz

sudo ufw status verbose # Güvenlik duvarı durumunu kontrol et

Bu ayarlar, yalnızca SSH ve HTTP trafiğine izin verirken diğer tüm portları kapatır.

SSH Güvenliği

* Parola Yerine Anahtar Tabanlı Kimlik Doğrulama: SSH parolaları yerine SSH anahtar çiftleri kullanarak kimlik doğrulama, çok daha güvenlidir. Bu, sunucunuza erişim için bir özel anahtar gerektirir.
* Varsayılan SSH Portunu Değiştirme: Varsayılan 22 numaralı SSH portunu değiştirmek, otomatik saldırı girişimlerini azaltmaya yardımcı olabilir. /etc/ssh/sshd_config dosyasını düzenleyerek Port 22 satırını farklı bir port numarasıyla değiştirin ve UFW’de yeni porta izin verin.
* Root Girişini Devre Dışı Bırakma: /etc/ssh/sshd_config dosyasında PermitRootLogin no olarak ayarlayarak root kullanıcısının doğrudan SSH üzerinden giriş yapmasını engelleyin.
* Kullanıcı Adı ve Parola Politikaları: Güçlü parolalar kullanın ve düzenli olarak değiştirin.

Uygulama Kullanıcısı Oluşturma

Uygulamanızı root kullanıcısı altında çalıştırmak büyük bir güvenlik riskidir. Bunun yerine, Node.js uygulamanızı çalıştırmak için sudo yetkisi olmayan özel bir kullanıcı oluşturmanız önerilir.

sudo adduser your_app_user

Bu kullanıcıya uygulamanızın dosyalarının bulunduğu dizine okuma ve yazma erişimi verdiğinizden emin olun:

sudo chown -R your_app_user:your_app_user /var/www/your_app_name

PM2’yi de bu kullanıcı altında çalıştırmanız gerekir. PM2’nin başlangıç betiği komutunda --hp /home/your_app_user parametresini kullanarak bu kullanıcıyı belirtin.

Adım 7: SSL/TLS Kurulumu (Certbot ile Let’s Encrypt)

HTTP trafiğini şifrelemek ve uygulamanızın güvenliğini artırmak için SSL/TLS sertifikası kullanmak zorunludur. Let’s Encrypt, ücretsiz SSL sertifikaları sağlayan popüler bir sertifika yetkilisidir ve Certbot aracı ile kolayca kurulabilir ve yönetilebilir.

Certbot Kurulumu

Certbot’u kurmak için öncelikle gerekli depoları eklememiz ve Certbot’u yüklememiz gerekiyor:

sudo apt install software-properties-common -y
sudo add-apt-repository ppa:certbot/certbot -y
sudo apt update
sudo apt install python-certbot-nginx -y

SSL Sertifikası Alma

Certbot’u Nginx ile entegre ederek otomatik olarak bir SSL sertifikası alabilir ve Nginx yapılandırmanızı güncelleyebilirsiniz:

sudo certbot --nginx -d your_domain.com -d www.your_domain.com

Bu komutu çalıştırdıktan sonra Certbot, e-posta adresinizi isteyecek ve hizmet şartlarını kabul etmenizi isteyecektir. Ayrıca HTTP trafiğini HTTPS’ye yönlendirip yönlendirmeyeceğinizi de soracaktır (genellikle “2: Redirect” seçeneği önerilir).

Certbot, Nginx yapılandırma dosyanızı otomatik olarak güncelleyerek hem HTTP hem de HTTPS trafiğini dinlemesini sağlayacak ve HTTP isteklerini HTTPS’ye yönlendirecektir.

Eğer UFW kullanıyorsanız, HTTPS trafiğine izin verdiğinizden emin olun:

sudo ufw allow 'Nginx HTTPS'
sudo ufw delete allow 'Nginx HTTP' # Artık sadece HTTPS kullanıyorsak HTTP'yi kapatabiliriz
sudo ufw status

Otomatik Yenileme Testi

Let’s Encrypt sertifikaları 90 gün geçerlidir, ancak Certbot bunları otomatik olarak yenilemek için bir cron işi kurar. Yenileme sürecinin düzgün çalıştığını test edebilirsiniz:

sudo certbot renew --dry-run

Bu komut, sertifikaların başarıyla yenilenebileceğini simüle eder.

Adım 8: Ortam Değişkenleri ve Yapılandırma

Üretim ortamında hassas bilgiler (veritabanı kimlik bilgileri, API anahtarları vb.) doğrudan kod içinde tutulmamalıdır. Bunun yerine, ortam değişkenleri veya ayrı yapılandırma dosyaları kullanılarak yönetilmelidir.

PM2 ile Ortam Değişkenleri

PM2, uygulamalarınız için ortam değişkenlerini yönetmek için bir ecosystem.config.js dosyası kullanmanıza olanak tanır. Bu, farklı ortamlar (geliştirme, üretim) için farklı değişken setleri tanımlamanıza olanak tanır.

Uygulamanızın kök dizininde ecosystem.config.js adında bir dosya oluşturun:

// /var/www/your_app_name/ecosystem.config.js
module.exports = {
  apps : [{
    name: "my-app",
    script: "./app.js", // Uygulamanızın ana dosyasının yolu
    instances: "max", // CPU çekirdek sayısı kadar örnek çalıştır
    exec_mode: "cluster", // Küme modunda çalıştır
    env: {
      NODE_ENV: "development",
      PORT: 3000
    },
    env_production: {
      NODE_ENV: "production",
      PORT: 3000,
      DB_HOST: "localhost",
      DB_USER: "your_db_user",
      DB_PASS: "your_db_password",
      API_KEY: "your_secret_api_key"
    }
  }]
};

Bu yapılandırma ile, uygulamayı farklı ortamlar için farklı değişkenlerle başlatabilirsiniz:

pm2 start ecosystem.config.js --env production

Bu komut, env_production bölümündeki değişkenleri kullanarak uygulamayı başlatır. NODE_ENV değişkenini production olarak ayarlamak, birçok Node.js kütüphanesinin ve çerçevesinin (Express gibi) performans optimizasyonlarını etkinleştirmesine yardımcı olur.

.env Dosyaları (dotenv)

Alternatif olarak, Node.js uygulamanızda dotenv kütüphanesini kullanarak .env dosyalarını yönetebilirsiniz.
1. Uygulamanızın bağımlılıklarına dotenv‘i ekleyin:

npm install dotenv

2. Uygulamanızın ana dosyasının en başına (örneğin app.js veya server.js) aşağıdaki satırı ekleyin:

require('dotenv').config();

3. Uygulamanızın kök dizininde .env adında bir dosya oluşturun ve hassas değişkenlerinizi buraya yazın:

# /var/www/your_app_name/.env
    PORT=3000
    DB_HOST=localhost
    DB_USER=your_db_user
    DB_PASS=your_db_password
    API_KEY=your_secret_api_key

4. Uygulamanızda bu değişkenlere process.env.PORT gibi erişebilirsiniz.
5. ÖNEMLİ: .env dosyasını Git deposuna yüklememek için .gitignore dosyanıza .env eklediğinizden emin olun. Bu dosyayı sunucuya manuel olarak aktarmanız veya dağıtım betiğinizin bir parçası olarak oluşturmanız gerekecektir.

Adım 9: Log Yönetimi

Uygulamanızın performansını izlemek, hataları ayıklamak ve sorunları gidermek için loglar hayati öneme sahiptir.

PM2 Logları

PM2, uygulama loglarınızı otomatik olarak yakalar ve yönetir.
* Uygulamanızın loglarını gerçek zamanlı olarak görmek için:

pm2 logs my-app

* Belirli sayıda satırı görmek için:

pm2 logs my-app --lines 100

* Tüm logları temizlemek için:

pm2 flush

PM2 logları varsayılan olarak /home/your_username/.pm2/logs/ dizininde bulunur.

Nginx Logları

Nginx, erişim (access) ve hata (error) loglarını tutar. Bunlar, web sunucusu seviyesindeki sorunları veya gelen isteklerle ilgili bilgileri izlemek için kullanışlıdır.
* Erişim logları: /var/log/nginx/access.log
* Hata logları: /var/log/nginx/error.log

Log Rotasyonu (Logrotate)

Log dosyaları zamanla çok büyük hale gelebilir ve disk alanını tüketebilir. logrotate aracı, log dosyalarını otomatik olarak döndürmek, sıkıştırmak ve silmek için kullanılır. Ubuntu’da Nginx ve sistem logları için logrotate varsayılan olarak yapılandırılmıştır. Kendi uygulama loglarınız için de özel logrotate yapılandırmaları oluşturabilirsiniz.
/etc/logrotate.d/ dizininde kendi uygulamanız için yeni bir dosya oluşturarak bunu yapabilirsiniz.

Sonuç ve Özet

Bu kapsamlı rehberde, bir Node.js uygulamasını Ubuntu 16.04 üzerinde üretim ortamı için kurmanın ve yapılandırmanın tüm temel adımlarını ele aldık. Başlangıçta sunucuyu güncelleyerek ve Node.js’i NVM ile kurarak temel altyapıyı oluşturduk. Ardından, uygulamanızı sunucuya aktardık ve PM2 kullanarak uygulamanızın sürekli çalışmasını, otomatik olarak yeniden başlamasını ve loglarını yönetmesini sağladık. Nginx’i bir ters proxy olarak yapılandırarak gelen web trafiğini Node.js uygulamanıza yönlendirdik ve statik dosya sunumu ile SSL/TLS sonlandırması için zemin hazırladık. Güvenlik duvarı ayarları, SSH güvenliği ve uygulama kullanıcısı oluşturma gibi kritik güvenlik adımlarını uyguladık. Son olarak, Certbot ile ücretsiz SSL sertifikaları alıp uygulamanızın güvenli iletişimini sağladık ve ortam değişkenlerinin yönetimi ile loglama stratejilerini inceledik.

Bu adımları takip ederek, Node.js uygulamanızın Ubuntu 16.04 üzerinde güvenli, kararlı ve performanslı bir şekilde çalışmasını sağlayabilirsiniz. Unutmayın ki, üretim ortamları sürekli izleme, düzenli güncellemeler ve güvenlik denetimleri gerektirir. Uygulamanız büyüdükçe, bir CI/CD (Sürekli Entegrasyon/Sürekli Dağıtım) boru hattı kurmayı, veritabanı sunucularını ayrı tutmayı ve daha gelişmiş izleme araçlarını kullanmayı düşünebilirsiniz. Bu rehber, sağlam bir temel oluşturmanıza yardımcı olacaktır.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.