Ubuntu 16.04 LTS Üzerinde Koa.js Düğüm Uygulaması Nasıl Kurulur

Bu eğitimde, Node.js kullanarak üretim için bir Koa.js web uygulamasını nasıl kuracağımızı öğreneceğiz. Ayrıca Apache'yi kullanarak örnek bir etki alanını ters proxy ile bağlayacağız ve uygun bir süreç yöneticisiyle nasıl yöneteceğimizi öğreneceğiz. Daha fazla uzatmadan başlayalım.

Node.js, Koa.js ve Apache'nin Kısa Açıklaması

Node.js, Chrome'un V8 motorunu temel alan hızlı, platformlar arası bir JavaScript çerçevesidir. Hem masaüstü hem de sunucu uygulamalarında kullanılır ve tek iş parçacıklı olay döngü işlemleriyle ünlüdür. Node.js, yarım milyondan fazla paketi barındıran Düğüm Paketi Yöneticisi (NPM) adı verilen bir paket kayıt defterine sahiptir. NPM paketleri (veya modülleri), Node.js uygulamanızda yararlı olabilecek topluluk güdümlü kod oldukları için Node.js'nin temel omurgasıdır. Koa.js uygulamamızda, Node.js işlevinin temel parçasıdır.

Koa.js, Node.js platformunda oluşturulmuş minimalist bir web çerçevesidir. Popüler Express.js çerçevesinin arkasındaki aynı ekip tarafından yapılan hedef, orta katman yazılımını çekirdeğinden hariç tutarak zaten minimalist Express.js çerçevesini en aza indirmek. Koa.js'nin önemli bir özelliği, geri arama olmamasıdır. Koa.js, ES6 tabanlı jeneratörler ve Promises gibi ES6 özellikleri üzerine kurulmuştur.

Apache, web sunucuları için çok temel bir başlangıç ​​noktası olarak kullanılan popüler bir açık kaynaklı web sunucusudur. Bu derste, Apache'yi ters bir proxy olarak kullanacağız, bu da uygulamamızı örnek bir etki alanına bağlamamıza izin verecektir. Bir alan adınız yoksa, bu eğitim yine de sizin için çalışır; tek fark web sitesinin bir alan adı yerine VPS IP'nizde çalışmasıdır.

Node.js kurulumu

Tüm Node.js çerçevelerinde olduğu gibi, VPS'nize Node.js yüklemeniz gerekir. Bu öğretici adına, sisteminizde zaten Node.js yüklü olduğunu varsayacağım. Değilse, sadece talimatları takip edebilirsiniz burada .

Uygulama dizinimizi ayarlama

Uygulamamızın temel dosyalarını içeren bir klasör oluşturmamız gerekecek.

mkdir site

siteDizin için istediğiniz başka bir adla değiştirmekten çekinmeyin . Ardından, Node.js paket dosyamızı başlatmamız gerekecek. Az önce oluşturduğunuz dizine geçin ve çalıştırın npm initve komut istemlerini tamamlayın. Sonunda, şöyle bir şey olmalı:

{
  "name": "site",
  "version": "1.0.0",
  "description": "Koa.js Site",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "yourname",
  "license": "ISC"
}

Koa.js'yi Yükleme

Şimdi dizinimiz kuruldu, Koa.js'yi yüklemeye devam edebiliriz. Geçerli çalışma dizinine /siteaşağıdakini yazın.

npm install koa

Bu, Koa.js modülünü NPM'den indirecek ve ileride kullanmak üzere proje dizinimize kuracaktır. Ardından, uygulama kodumuzu tutacak örnek uygulama dosyamızı oluşturacağız. Bunu yapmak için bir index.jsdosya oluşturun.

nano index.js

Dosyanın içine girdikten sonra örnek bir uygulama oluşturun.

const Koa = require('koa');
const app = new Koa();

app.use(async ctx => {
     ctx.body = 'Hello World';
 });

app.listen(3000);
console.log('Website is live!')

Dosyayı kaydedip kapatın. CTRL+ X.

Uygulamamızın düzgün çalıştığından emin olmak isteyeceğiz. Başlamak için çalıştırın node index.jsve Website is livekonsolda göreceksiniz .

Apache Kurulumu

Web sitemizin işlevsel olduğunu bildiğimize göre, Apache'yi ve bağımlılıklarını yüklemeye devam edebiliriz.

sudo apt install -y libapache2-mod-proxy-html libxml2-dev

Apache'de bulunan ters proxy özelliğini kullanmak için gerekli modülleri etkinleştirmemiz gerekecek.

a2enmod proxy
a2enmod proxy_http
a2enmod proxy_ajp
a2enmod rewrite
a2enmod deflate
a2enmod headers
a2enmod proxy_balancer
a2enmod proxy_connect
a2enmod proxy_html

Bu modüllerden bazıları zaten etkinleştirilmiş olabilir, ancak bunları iki kez kontrol etmek her zaman iyidir.

Şimdi Apache için varsayılan yapılandırma dosyasını düzenlememiz gerekiyor.

sudo nano /etc/apache2/sites-enabled/000-default.conf

Burada, uygulamamız için bir blok eklememiz gerekecek.

<VirtualHost *:*>
    ProxyPreserveHost On
    ProxyPass / http://0.0.0.0:3000/
    ProxyPassReverse / http://0.0.0.0:3000

    ServerName localhost
</VirtualHost>

Dosyayı kaydedin, CTRL+ X.

3000Portu bizim ProxyPassve ProxyPassReverseIP için port olarak kullandığımızı fark edebilirsiniz . Koa.js uygulamamızı çalıştırdığımızla aynı bağlantı noktası olduğundan, doğru bağlantı noktasını girmemiz zorunludur.

Değişiklikler yapıldıktan sonra Apache'yi yeniden başlatmamız ve Koa.js uygulamamızı yeniden başlatmamız gerekecek.

sudo systemctl restart apache2

Bu, Koa.js uygulamamızı başlattığımızda yapılandırma dosyamızın etkin ve çalışmaya hazır olmasını sağlayacaktır. Apache yeniden başlatıldıktan sonra, site dizininize geri dönün ve daha önce yaptığımız gibi Koa.js uygulamasını başlatın. Web tarayıcınızdan http://yourdomainveya öğesine gidin http://yourip:ve "Merhaba Dünya" yı göreceksiniz.

Uygulamamızı systemd ile yönetme

Örnek bir Koa.js uygulaması oluşturmanın temellerini ele aldığımıza göre, bir üretim ortamında uygulamayı şu anda başlatmanın pratik olmadığını anlıyoruz. Süreç yöneticisi kesinlikle bir gerekliliktir. Burada systemd devreye giriyor. Basit bir ifadeyle, systemd, bir Linux sistemi için yapı taşları sağlayan yazılımdan oluşur. "İnit" e benzer şekilde, sistem başlatıldıktan sonra kullanıcı süreçlerini yönetmek için bir sistem sağlar. Uygulamamız durumunda systemd, sistem yeniden başlatıldıktan sonra sistem çalışma süresini kesintiye uğratan bir olay olması durumunda otomatik olarak web sitemizi başlatmamızı sağlar. Ayrıca, uygulamamızı yönetirken kullanışlı olabilecek bir dizi araç sağlar. En iyi bölüm, Ubuntu 16.04 LTS'de yerleşik olması, bu nedenle başka bir yazılım yüklememiz gerekmiyor.

Systemd hizmeti oluştur

Uygulamamızı başlatmak için ihtiyacımız olan her şey adlı bir dosyada bulunacaktır service. Uygulamamızın adı, dizini, ortamı ve daha fazlası gibi ayrıntıları içerir. Sistem dosyamızı oluşturmak için bir metin düzenleyici açın.

sudo nano /lib/systemd/system/site.service

Dosyayı bu şekilde düzenleyin ve kaydedin.

[Unit]
Description=desc here
Documentation=https://example.com
After=network.target

[Service]
Environment=NODE_PORT=3000
Type=simple
User=youruser
ExecStart=/usr/bin/node /home/[youruser]/site/index.js
Restart=on-failure

[Install]
WantedBy=multi-user.target

youruserSunucunuzun kullanıcı adıyla değiştirin . İşte önemli alanların kısa bir açıklaması:

  • After - Bu, sistemd uygulamamıza başlamadan önce ağ arayüzü hazır olana kadar beklemesini bildirir.
  • Environment- Burada uygulamamız için ortam değişkenlerini belirleyebiliriz. Node.js portumuz bunlardan biri.
  • Type - Bu, systemd'ye kullanıcı ayrıcalıklarını ve benzerlerini sormadan uygulamamızın yeni başlatılabileceğini bildirir.
  • User- Bu, systemd'ye uygulamayı kullanıcı hesabımız altında çalıştırmak istediğimizi bildirir. Uygulamaları kök kullanıcı olarak çalıştırmak birçok güvenlikten ödün vermenize neden olabilir.
  • ExecStart - Esasen, daha önce manuel olarak başlattığımız gibi, sistemimizin uygulamamızı başlatmak için çalışacağı komut.
  • Restart- Systemd'e hangi koşullar altında uygulamamızı yeniden başlatacağını söyler. Bu durumda, bir hata durumunda web sitemizin yeniden başlatılmasını istiyoruz.

Systemd hizmetini başlatma

Şimdi systemd servisimizi başlatmaya hazırız.

sudo systemctl daemon-reload

Bu, systemd'nin yapılan yeni değişiklikleri kaydetmesi için bir systemd hizmet dosyası değiştiğinde gereklidir.

Ardından, uygulamanızı başlatın.

sudo systemctl start site

Her şeyin çalıştığını doğrulamak için tarayıcınızdaki siteye bir kez daha gidin.

Anahtar sistem yönetimi fonksiyonları

  • stop - Uygulamayı tamamen durdurur.
  • restart - Uygulamayı durdurur ve yeni bir işlem altında yeniden başlatır.
  • enable - Systemd'e bilgisayarınızı her başlattığınızda uygulamayı başlatmasını söyler.
  • status - Çalışma süresi, uygulama durumu ve daha fazlası gibi şu anda çalışan uygulama hakkında bilgi gösterir.

Bu işlevlerden herhangi birini kullanmak için aşağıdakileri çalıştırın.

systemctl <function> site

Sonuç

Bir Koa.js uygulamasını başarıyla kurduk ve uygulamanın nasıl tersine çevrileceğini ve systemd ile nasıl yönetileceğini öğrendik. Artık uygulamanızı genişletmeye ve bu örneği temel almaya hazırsınız. Koa.js hakkında daha fazla bilgi edinmek ve yapabileceğiniz diğer şeyleri öğrenmek isterseniz, daha yararlı bilgiler için web sitelerini ziyaret edin . Buna ek olarak, systemd'nin işlem yöneticisi hakkında daha fazla bilgi edinmek istiyorsanız, bunun için belgeleri burada okuyun . Son olarak, Apache'nin ters proxy'si hakkında daha fazla bilgi edinmek isterseniz, onları buradan kontrol etmekten çekinmeyin .



Leave a Comment

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Birçoğunuz Switch'in Mart 2017'de çıkacağını ve yeni özelliklerini biliyorsunuz. Bilmeyenler için, 'Switch'i 'olmazsa olmaz bir gadget' yapan özelliklerin bir listesini hazırladık.

Hala Teslim Edilmeyen Teknoloji Sözleri

Hala Teslim Edilmeyen Teknoloji Sözleri

Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zekanın küçük ölçekli şirketler arasında nasıl popüler hale geldiğini ve onları büyütme ve rakiplerine üstünlük sağlama olasılıklarını nasıl artırdığını öğrenmek için bunu okuyun.

CAPTCHA: İnsan-AI Ayrımı İçin Ne Kadar Geçerli Bir Teknik Kalabilir?

CAPTCHA: İnsan-AI Ayrımı İçin Ne Kadar Geçerli Bir Teknik Kalabilir?

CAPTCHA, son birkaç yılda kullanıcıların çözmesi oldukça zorlaştı. Gelecekte spam ve bot tespitinde etkili kalabilecek mi?

Teknolojik Tekillik: İnsan Uygarlığının Uzak Bir Geleceği mi?

Teknolojik Tekillik: İnsan Uygarlığının Uzak Bir Geleceği mi?

Bilim hızla gelişip birçok çabamızı üstlendikçe, kendimizi açıklanamaz bir Tekilliğe maruz bırakmanın riskleri de artıyor. Okuyun, tekillik bizim için ne anlama gelebilir.

Teletıp ve Uzaktan Sağlık Hizmeti: Gelecek Burada

Teletıp ve Uzaktan Sağlık Hizmeti: Gelecek Burada

Teletıp, uzaktan sağlık hizmetleri ve gelecek nesiller üzerindeki etkisi nedir? Pandemi durumunda iyi bir yer mi değil mi? Bir görünüm bulmak için blogu okuyun!

Hackerların Nasıl Para Kazandığını Hiç Merak Ettiniz mi?

Hackerların Nasıl Para Kazandığını Hiç Merak Ettiniz mi?

Bilgisayar korsanlarının çok para kazandığını duymuş olabilirsiniz, ancak bu kadar parayı nasıl kazandıklarını hiç merak ettiniz mi? Hadi tartışalım.

macOS Catalina 10.15.4 Ek Güncellemesi Çözmekten Daha Fazla Soruna Neden Oluyor

macOS Catalina 10.15.4 Ek Güncellemesi Çözmekten Daha Fazla Soruna Neden Oluyor

Son zamanlarda Apple, sorunları gidermek için macOS Catalina 10.15.4'ü ek bir güncelleme yayınladı, ancak güncelleme, mac makinelerinde tuğla oluşmasına neden olan daha fazla soruna neden oluyor gibi görünüyor. Daha fazla bilgi edinmek için bu makaleyi okuyun