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
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, 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.
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 .
Uygulamamızın temel dosyalarını içeren bir klasör oluşturmamız gerekecek.
mkdir site
site
Dizin 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 init
ve 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"
}
Şimdi dizinimiz kuruldu, Koa.js'yi yüklemeye devam edebiliriz. Geçerli çalışma dizinine /site
aş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.js
dosya 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.js
ve Website is live
konsolda göreceksiniz .
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.
3000
Portu bizim ProxyPass
ve ProxyPassReverse
IP 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://yourdomain
veya öğesine gidin http://yourip:
ve "Merhaba Dünya" yı göreceksiniz.
Ö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.
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
youruser
Sunucunuzun 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.Ş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.
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
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 .
26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm
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.
Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.
Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.
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, son birkaç yılda kullanıcıların çözmesi oldukça zorlaştı. Gelecekte spam ve bot tespitinde etkili kalabilecek 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, 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!
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.
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