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

CentOS 7de Tavşan Kümesini Kümeleme

CentOS 7de Tavşan Kümesini Kümeleme

RabbitMQ, AMQP, STOMP ve diğer iletişim teknolojilerini destekleyen açık kaynaklı bir mesaj aracısıdır. Kurumsal uygulamalarda yaygın olarak kullanılan bir

Debianda NFS Paylaşımı Ayarla

Debianda NFS Paylaşımı Ayarla

NFS, bilgisayarların bilgisayar ağı üzerindeki dosyalara erişmesine izin veren ağ tabanlı bir dosya sistemidir. Bu kılavuz, klasörleri NF üzerinden nasıl açığa çıkarabileceğinizi açıklar

GitBucket Ubuntu 16.04 Kurulumu

GitBucket Ubuntu 16.04 Kurulumu

Bu kılavuz, Ubuntu 16.04 çalıştıran bir Vultr örneği için GitBucketin temel kurulumunu ve kurulumunu kapsar ve komutları şu şekilde yürüttüğünüzü varsayar:

Bir Fedora 26 LAMP VPSye Directus 6.4 CMS Yükleme

Bir Fedora 26 LAMP VPSye Directus 6.4 CMS Yükleme

Farklı Bir Sistem mi Kullanıyorsunuz? Directus 6.4 CMS, geliştirici sağlayan güçlü ve esnek, ücretsiz ve açık kaynaklı Başsız İçerik Yönetim Sistemidir (CMS)

Ubuntu 16.04 Üzerine Mattermost 5.2 Kurulumu

Ubuntu 16.04 Üzerine Mattermost 5.2 Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Mattermost, Slack SAAS mesajlaşma servisine açık kaynaklı, kendi kendine barındırılan bir alternatiftir. Başka bir deyişle, Mattermost ile,

Linuxta TeamTalk Sunucusu Kurma

Linuxta TeamTalk Sunucusu Kurma

TeamTalk, kullanıcıların yüksek kaliteli sesli / görüntülü konuşmalara, metin sohbetine, dosya aktarımına ve ekranları paylaşmasına olanak tanıyan bir konferans sistemidir. Ben

Pagekit CMSyi CentOS 7ye Yükleme

Pagekit CMSyi CentOS 7ye Yükleme

Farklı Bir Sistem mi Kullanıyorsunuz? Pagekit PHP ile yazılmış açık kaynaklı bir CMSdir. Pagekit kaynak kodu GitHubda herkese açık olarak barındırılıyor. Bu kılavuz size

Kök olmayan kullanıcılara giriş yapmak için SSH anahtarınızı kullanma

Kök olmayan kullanıcılara giriş yapmak için SSH anahtarınızı kullanma

Vultr, yeni bir örnek oluşturduktan sonra SSH anahtarlarını önceden yüklemenizi sağlayan bir özellik sağlar. Bu, sunucu kök kullanıcısına erişmenizi sağlar, ancak

Debian 9da Diaspora ile Sosyal Ağınızı Kurun

Debian 9da Diaspora ile Sosyal Ağınızı Kurun

Farklı Bir Sistem mi Kullanıyorsunuz? Diaspora gizliliğe duyarlı, açık kaynaklı bir sosyal ağdır. Bu derste, bir Diaspora posının nasıl kurulacağını ve yapılandırılacağını öğreneceksiniz

Debian 9 Üzerinde Yakıt CMS Kurulumu

Debian 9 Üzerinde Yakıt CMS Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Fuel CMS, CodeIgniter tabanlı bir içerik yönetim sistemidir. Kaynak kodu GitHubda barındırılmaktadır. Bu kılavuz size

Arch Linux Üzerinde PostgreSQL 11.1 Kurulumu

Arch Linux Üzerinde PostgreSQL 11.1 Kurulumu

Önkoşullar Güncel Arch Linux çalıştıran bir Vultr sunucusu (bu makaleye bakın.) Sudo erişimi. Kök olarak çalıştırılması gereken komutların önüne # ve bir

Ubuntu 16.10 Üzerinde Snipe-IT Kurulumu

Ubuntu 16.10 Üzerinde Snipe-IT Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Snipe-IT, BT varlık yönetimi için ücretsiz ve açık kaynaklı bir web uygulamasıdır. Laravel 5.2 çerçevesi ve kullanımı üzerine yazılmıştır.

SSL / TLS ile vsFTPd Nasıl Güvenli Hale Getirilir

SSL / TLS ile vsFTPd Nasıl Güvenli Hale Getirilir

Çok Güvenli FTP arka plan programı, ya da sadece vsFTPd, özelleştirme yeteneği olan hafif bir yazılım parçasıdır. Bu derste bir müttefikimiz olacak

Linuxta Ranger Terminal Dosya Yöneticisini Yükleme

Linuxta Ranger Terminal Dosya Yöneticisini Yükleme

Ranger, VI anahtar bağlamaları olan komut satırı tabanlı bir dosya yöneticisidir. Dizin hiyerarşisi manzaralı minimalist ve hoş bir curses arayüzü sağlar

Ubuntu 18.04 LTS Kaynaktan Brotli Nasıl Yapılır

Ubuntu 18.04 LTS Kaynaktan Brotli Nasıl Yapılır

Farklı Bir Sistem mi Kullanıyorsunuz? Brotli, GZIPden daha iyi bir sıkıştırma oranına sahip yeni bir sıkıştırma yöntemidir. Kaynak kodu bu Githuda herkese açık olarak barındırılıyor

CentOS 7de Yalnızca SFTP Kullanıcı Hesaplarını Kurma

CentOS 7de Yalnızca SFTP Kullanıcı Hesaplarını Kurma

Belirli durumlarda, Sistem Yöneticisinin bir kullanıcı hesabı oluşturması ve yalnızca kendi dosyalarını sFTP yoluyla yönetmek için erişimini kısıtlaması gerekebilir, ancak b

Ubuntu 16.04 LAMBA VPS Üzerine Omeka Classic 2.4 CMS Kurulumu

Ubuntu 16.04 LAMBA VPS Üzerine Omeka Classic 2.4 CMS Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Omeka Classic 2.4 CMS, digita paylaşımı için ücretsiz ve açık kaynaklı bir dijital yayıncılık platformu ve İçerik Yönetim Sistemidir (CMS)

Arch Linux Üzerinde Nginx 1.14 Kurulumu

Arch Linux Üzerinde Nginx 1.14 Kurulumu

Önkoşullar Güncel Arch Linux çalıştıran bir Vultr sunucusu (bu makaleye bakın.) Sudo erişimi. Kök olarak çalıştırılması gereken komutların başına # işareti gelir. th

Linuxta SSH ile Kök Girişini Devre Dışı Bırakma veya Kısıtlama

Linuxta SSH ile Kök Girişini Devre Dışı Bırakma veya Kısıtlama

SSH üzerinden kök girişine izin vermek, teknoloji endüstrisinde genellikle zayıf bir güvenlik uygulaması olarak kabul edilir. Bunun yerine, hassas yönetim gerçekleştirebilirsiniz

Ubuntu 16.04 Üzerine RabbitMQ Kurulumu

Ubuntu 16.04 Üzerine RabbitMQ Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? RabbitMQ, Erlang programlama dilinde yazılmış, yaygın olarak kullanılan açık kaynaklı bir mesaj aracısıdır. Mesaj odaklı bir ara katman yazılımı olarak

CentOS 7de LibreNMS Kullanarak Cihazlarınızı İzleyin

CentOS 7de LibreNMS Kullanarak Cihazlarınızı İzleyin

CentOS 7 üzerinde LibreNMS kullanarak ağ cihazlarınızı etkili bir şekilde izleyin. Ağ izleme için gerekli adımları ve yapılandırmaları öğrenin.

Counter-Strike: Global Offensive Server Nasıl Kurulur?

Counter-Strike: Global Offensive Server Nasıl Kurulur?

Counter-Strike: Global Offensive sunucusu kurmak için gerekli adımlar. Gerekli araçlar ve yükleme süreci hakkında bilgi.

Ubuntu 16.04 LTS Üzerinde OpenNMS Kurulumu

Ubuntu 16.04 LTS Üzerinde OpenNMS Kurulumu

OpenNMS, çok sayıda cihazı izlemek ve yönetmek için kullanılabilen bir açık kaynak ağ yönetim platformudur. Ubuntu 16.04 LTS üzerinde OpenNMS kurulumu için tüm adımları keşfedin.

Ubuntu 16.04te LibreNMS Kullanarak Cihazlarınızı İzleyin

Ubuntu 16.04te LibreNMS Kullanarak Cihazlarınızı İzleyin

Farklı Bir Sistem mi Kullanıyorsunuz? LibreNMS tam özellikli bir açık kaynak ağ izleme sistemidir.

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?