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
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 .
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
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
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:
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)
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,
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
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
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
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
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
Ö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
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.
Ç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
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
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
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
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)
Ö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
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
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 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 sunucusu kurmak için gerekli adımlar. Gerekli araçlar ve yükleme süreci hakkında bilgi.
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.
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
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?