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, Ubuntu 16.04 LTS'de NGINX ile ters proxy uygularken Node.js ve Express kullanarak HTTP isteklerini sunacak eksiksiz bir RESTful API'nin nasıl kurulacağını öğreneceksiniz. Postacı adlı bir uygulama kullanacağızAPI'mızı test etmek ve tamamen işlevsel olduğundan ve düzgün çalıştığından emin olmak için çok iyi bilinen bir API geliştirme aracı. 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 için oluşturulan web uygulama çerçevemiz Express.js ile paketlenmiş RESTful API'mızın arka ucu olarak Node.js'yi kullanacağız. Express.js ücretsiz ve açık bir yazılım olarak piyasaya sürüldü. Express, sunucu tarafındadır, JavaScript ile yazılmıştır ve API'leri oluşturmak için tasarlanmıştır, bu da onu projemiz için mükemmel kılar. Öte yandan Postman, API geliştirme düşünülerek çok güçlü bir HTTP istemcisidir. API geliştirme için isteyebileceğiniz tüm araçları içerir.
İlk olarak, Postman'ın web sitesine gitmek ve ana bilgisayarınız için Postman'ı indirip yüklemek istiyorsunuz (Sunucunuz değil). Tüm kurulum talimatları web sitelerinde olacaktır.
Başlamak için önce Node.js'yi yüklememiz gerekecek, böylece API'mızı geliştirmeye başlayalım. Resmi web sitesinden Node.js dosyasını indirip kuracağız.
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
Ayrıca, modülleri derlemede yardımcı olacak gerekli oluşturma araçlarını da almak isteyeceksiniz.
sudo apt-get install build-essential
Bu eğitim için, Node.js'nin 8.9.3 sürümü olan LTS sürümünü kullanacağız.
Bir uygulama içerecek yeni bir Node.js projesi başlatmamız gerekecek. Bunu yapmak için yeni bir dizin oluşturun.
mkdir expressapi
Yeni dizine geçin. İçeri girdikten sonra npm init
, gerekli tüm istemleri çalıştırın ve tamamlayın. Uygulamanızın "giriş noktası" nı not edin: bu dosyayı daha sonra oluşturacaksınız. İşiniz bittiğinde, package.json
geçerli dizininizde bir dosya göreceksiniz . Projemizin bir açıklaması olarak işlev görür ve çalışması için gereken tüm bağımlılıkları listeler.
Şimdi Express.js ve bağımlılıklarını yapılandıracağız.
npm install express
Kurulum işlemi başlayacaktır. Her şeyin indirilmesinin tamamlanması birkaç dakika sürecektir.
Ardından, API'mız için ana başlangıç dosyamızı oluşturacağız. Burada, package.json
dosyada gördüğünüz "giriş noktası" nı kullanacaksınız . Bu öğretici adına, varsayılan adlandırma şemasını kullanacağım index.js
.
touch index.js
Ardından, nano metin düzenleyicisinde açın.
nano index.js
Ana dosyamızda, önce tüm ana paketlerimizi aramak ve rotalarımızı kaydetmek istiyoruz.
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var port = process.env.PORT || 8080;
const router = express.Router();
router.get('/', function(req, res) {
res.json({ message: 'API is Online!' });
});
app.use('/api', router);
app.listen(port);
console.log('Listening on port ' + port);
Temel olarak burada yaptığımız şey, uygulamamızı başlatmak ve API'mız için temel bir yönlendirici kurmaktır. Uygulamamızın bağlantı noktasını ayarladığımızı unutmayın 8080
. RESTful API'mızı yapılandırdığımızda bu numaraya ihtiyacımız olacak. Şimdi devam edip API'mızı test etmeye hazırız.
Proje dizininde aşağıdakileri çalıştırın.
node <filename>.js
Bu, <filename>
dosyada belirttiğiniz başlangıç dosyasının bulunduğu API'yı başlatır package.json
. Ardından, PC / Mac'inizde Postacı'yı açın ve New
sağ üst köşedeki " " düğmesini, ardından " Request
" düğmesini tıklayın . Oradayken GET
yanında " " yazan bir çubuk görmelisiniz . Buraya istek URL’nizi gireceğiz. İstek URL'si bölümüne aşağıdakileri girin ve " Send
" düğmesini tıklayın .
`http://your-server-ip:3000/api`
" 'API is online'
" Göreceksiniz .
Rotaları ele almak için Express yönlendiricisini kullanacağız. Bir yönlendiricinin ne olduğunu bilmiyorsanız, esasen uygulama uç noktalarının istemci isteklerine nasıl yanıt verdiği budur. Örnek olarak oluşturacağımız rotalar şunlardır:
/api/numbers
- 1-10 arasındaki tüm sayıları gösterir.
/api/letters
- AZ'dan gelen tüm harfleri gösterir.
Şimdi ilk rota ara katman yazılımı yapımızı kuracağız.
router.use(function(req, res, next) {
console.log('We've got something.');
next() //calls next middleware in the application.
});
router.route('/numbers/:number').get((req, res) => {
res.json({result: req.params.number + 1})
});
Bu örnekte, bir kullanıcının GET yöntemini kullanarak kelime biçimini sağlayarak + 1 sayısının toplamını isteyebileceği bir durum oluşturduk. Bu router.route()
işlevi, sonuç olarak hangi numarayı geri göndermek istediğimizi göstermek için kullanırız. Parametreler :
önlerinde " " ile adlandırılır . Bu parametrelere aracılığıyla erişiyoruz req.params
.
İşte harflerle bir örnek.
router.route('/letters/:letter').get((req, res) => {
res.json({result: req.params.letter.toUpperCase()})
});
Yukarıdaki ile aynı yöntemi kullanıyoruz, ancak mektubu büyük harfle geri gönderiyoruz.
NGINX, web sunumu, ters proxy'ler, akış ve daha fazlası için kullanılan iyi bilinen açık kaynaklı bir yazılımdır. 80
Node.js kök erişimi olmayan 1024'ten küçük bağlantı noktalarında bağlantıya izin vermediğinden, API'mızı tersine çevirmek için NGINX'i kullanacağız . Bu, alan adınızı sunucunuza bağlarken kullanışlı olabilir.
NGINX kurulumuna başlamak için terminalinizde aşağıdakileri çalıştırmanız ve kurulumun tamamlanmasını beklemeniz gerekir.
sudo apt-get install nginx
Daha sonra, NGINX'in uygulamamızı tersine çevirmek için kullanacağı site dosyamızı oluşturmak isteyeceğiz.
sudo nano /etc/nginx/sites-available-api.js
Dosyayı aşağıdakilerle doldurun, ardından kaydetmek için CTRL+ işaretini Okullanın.
server {
listen 80;
location / {
proxy_set_header X-Real-IP
$remote_addr;
proxy_set_header
X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_set_header Host
$http_host;
proxy_set_header
X-NginX-Proxy true; proxy_pass
http://127.0.0.1:8080/;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade
$http_upgrade;
proxy_set_header Connection
"upgrade";
proxy_redirect off;
proxy_set_header
X-Forwarded-Proto $scheme;
}
}
Aynı bağlantı noktasını kullanarak uygulamamızı daha önce çalıştırdık, Nginx'e tüm istekleri bağlantı noktasındaki IP adresimizden bağlantı noktasında 80
çalışan API'mıza yönlendirmesini söylüyoruz 8080
.
Ardından, yeni oluşturulan dosyamızı sites-available
klasöre bağlayarak ters proxy'yi etkinleştirin :
sudo ln -s /etc/nginx/sites-available/api /etc/nginx/sites-available
Bu, NGINX'in API'mızı tersine çevirmesini sağlayacaktır.
NGINX yapılandırmamızı tamamladıktan sonra, NGINX'i başlatacağız, ardından API'mızı başlatacağız. İlk olarak, NGINX'i yeniden başlatın.
sudo systemctl restart nginx
Ardından, API dizininize geri dönün ve başlatın.
node <filename>.js
Uygulama, bağlantı noktasında çalışır 80
. Her şeyin düzgün çalıştığından emin olmak için testi Postman ile yukarıdan yapmanız yeterlidir.
Bir üretim ortamında, arka planda sonsuza kadar çalışmaya devam etmelerini sağlamak için Düğüm uygulamalarınız için bir süreç yöneticiniz olduğundan emin olmak istersiniz. Bu derste, Node.js uygulamaları için minimum duruş süresiyle sonsuza dek hayatta kalmasını sağlayacak bir süreç yöneticisi olan PM2 (Process Manager 2) adlı bir süreç yöneticisi kullanacağız. PM2, durdurma, yeniden yükleme, duraklatma ve daha fazlası gibi birçok yararlı yönetim aracıyla birlikte gelir. PM2'yi yüklemek için aşağıdakileri yazın ve yüklenmesini bekleyin.
sudo npm install pm2 -g
Kurulduktan sonra, yapmanız gereken tek şey proje dizininde olduğunuzdan emin olmak, aşağıdakileri yazmak ve uygulama başlatılır.
pm2 start <filename>.js
Daha önce de belirtildiği gibi, PM2 uygulamanızı daha iyi yönetmek için kullanabileceğiniz bazı yararlı araçlara sahiptir.
pm2 stop
- Adından da anlaşılacağı gibi, bu, o anda çalışan uygulamayı durdurmanıza ve işlemini sonlandırmanıza olanak tanır. Uygulamanız beklenmedik bir sonuç veriyorsa, durdurmanız kullanışlı olacaktır.
pm2 list
- Liste işlevi, şu anda çalışan tüm uygulamaları PM2 aracılığıyla adlarıyla eşleştirmenizi sağlar. Uygulamanızın çalışma süresini hızlı bir şekilde kontrol etmeniz gerekiyorsa, bu aracı kullanmalısınız.
pm2 restart
- Uygulamanız herhangi bir nedenle donarsa ve yeniden yüklemek isterseniz, pm2 yeniden başlatma bunu yapar. Başvuru sürecini öldürecek ve farklı bir süreç altında yeniden başlatacaktır.
pm2 monit
- PM2'nin yerleşik monitör aracı, uygulamanızın CPU / RAM kullanımı gibi belirli ayrıntılarının bir grafiğini kullanıcı dostu ncurses tarzı bir grafikte görüntülemenizi sağlar. Bu, uygulamanızın yükünün görsel bir resmini istiyorsanız yararlıdır.
Artık Node.js, Express kullanan ve NGINX ile ters proxy uygulayan RESTful API oluşturma görevimizi tamamladık. Bu eğitimde genişlemekten çekinmeyin. Yeni API'nızla kimlik doğrulama yöntemleri ekleme, veritabanı, daha iyi rota ve hata işleme ve çok daha fazlası gibi birçok harika şey yapabilirsiniz. IP adresinize önceden ayarlanmış bir "A" kaydına sahip bir alanınız varsa, alan adınızdan API’nıza erişebilirsiniz. Express.js hakkında daha fazla bilgi edinmek istiyorsanız, http://expressjs.com adresindeki web sitelerini ziyaret edin . NGINX ve ters proxy uygulaması hakkında daha fazla bilgi edinmek için http://nginx.com adresini ziyaret edin . PM2 hakkında daha fazla bilgi için http://pm2.keymetrics.io adresindeki sayfalarını ziyaret edin .
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