NGINX’i diğer sunucularımızın önünde kullanabileceğimiz pek çok şey var. Neyse ki, NGINX özelliklerini katman katman ekleyebiliriz. İlk adımımız NGINX’in trafiği alması ve bu trafiği bizim bir uygulamamıza yönlendirmesidir.
Kaynaklarımız,
Node.js Uygulamasını Edinme
Bu ilk uygulama için, GitHub’dan almamız gereken çok uygulamalı bir Node.js sistemi kullanacağız. Yapmamız gereken ilk şey, Node.js‘yi kurmaktır:
[root] $ curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash - [root] $ yum install -y nodejs
Node.js yüklendikten sonra, kod depomuzu klonlayacağız ve gereken birden çok uygulamayı çalıştıracağız:
[root] $ mkdir /srv/www/ [root] $ cd /srv/www/ [root] $ git clone https://github.com/CloudAssessments/s3photoapp [root] $ cd s3photoapp [root] $ make install
Uygulamalarımızı başlatmadan önce AWS kimlik bilgilerinizi yapılandırmamız gerekiyor.
AWS Kimlik Bilgilerini Yapılandırma
S3 ve DynamoDB’ye erişmemiz gerekiyor, bu nedenle AWS IAM’de aşağıdaki izinlere sahip bir kullanıcı oluşturacağız:
- AmazonS3FullAccess
- AmazonDynamoDBFullAccess
Kullanıcıyı oluşturduktan sonra, oluşturacağımız bazı hizmetlerde ACCESS_KEY_ID ve SECRET_ACCESS_KEY değerlerini kullanmamız gerekecek.
Node.js Hizmetlerini Çalıştırma
NGINX’i yapılandırmaya geri dönmeden önce, Node.js uygulamalarının üçü için systemd hizmetleri kuracağız. Fotoğraf filtresi en basit yapılandırmaya sahiptir:
/etc/systemd/system/photo-filter.service
[Unit] Description=photo-filter Node.js service After=network.target [Service] Restart=always User=nobody Group=nobody Environment=NODE_ENV=production ExecStart=/bin/node /srv/www/s3photoapp/apps/photo-filter/server.js [Install] WantedBy=multi-user.target
Hem fotoğraf depolama hem de web istemcisi hizmetleri, AWS ile etkileşim için ek ortam değişkenlerine ihtiyaç duyar:
/etc/systemd/system/photo-storage.service
[Unit] Description=photo-storage Node.js service After=network.target [Service] Restart=always User=nobody Group=nobody Environment=NODE_ENV=production Environment=AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID Environment=AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY ExecStart=/bin/node /srv/www/s3photoapp/apps/photo-storage/server.js [Install] WantedBy=multi-user.target
/etc/systemd/system/web-client.service
[Unit] Description=S3 Photo App Node.js service After=network.target photo-filter.target photo-storage.target [Service] Restart=always User=nobody Group=nobody Environment=NODE_ENV=production Environment=AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID Environment=AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY ExecStart=/srv/www/s3photoapp/apps/web-client/bin/www [Install] WantedBy=multi-user.target
Son olarak, hizmetlerimizi başlatıp etkinleştirelim:
[root] $ systemctl start photo-storage [root] $ systemctl enable photo-storage [root] $ systemctl start photo-filter [root] $ systemctl enable photo-filter [root] $ systemctl start web-client [root] $ systemctl enable web-client
Bir sonraki derste, NGINX’i Node.js uygulamalarımızın önünde bir reverse proxy olarak nasıl yapılandıracağımızı inceleyeceğiz.