LINUX ÜZERİNE NGINX KURULUMU

Kategori: HAFİF BİLGİLER, LINUX, NGINX, YAZILIM | 0

NGINX’IN RPM DOSYASI ÜZERİNDEN KURULUMU

Burada anlatılacak kurulum çalışmaları manuel kurulum üzerinden olacaktır.  Öcelikle kurulum için .rpm uzantılı dosyanın indirilmesi gerekmektedir. Buradan ilgili nginx sürümünün güncel versiyonu indirilir. Kurulum rhel 7.6 üzerinde yapılmıştır.

Nginx rpm dosyası indirlmesi

Dosya indirildikten sonra WinSCP proğramı(buradan indirebilirsiniz) üzerinden linux makinesinde istediğimiz dizine atılır. Ben burada /opt/nginxrpm/ dosya yolunu kullanacağım.

Klasör oluşturulması
Dosyanın WinSCP üzerinden oluşturduğumuz nginxrpm klasörü altına atılması

Dosya atıldıktan sonra kurulum adımına geçilir.

yum localinstall nginx-1.16.1-1.el7.ngx.x86_64.rpm

yukarıdaki komut ile kurulum işlemi yapılır. Yukarıdaki komut nginxrpm dizini altında çalıştırılır.

Yum komutu ile yükleme işlemi
Kurulumun tamamlanması

Kurulum tamamlandıktıktan sonra nginx servisi başlatılır.

systemctl start nginx 

Servis çalıştırıldıktan sonra servisin durumuna bakılır.

systemctl status nginx

Nginx servisinin başlatılması ve durum kontrolü

Nginx kurulduktan sonra local bilgisayardan sanal makineye bağlantı sağlayarak nginx sayfasına bağlantı sağlanabalir.

NOT:eğer bağlantı sağlayamazsanız firewall ayarlarını kapatmanız gerekebilir.
systemctl stop firewalld komutu ile kapatabilirsiniz.

Firewall kapatılması
nginx default html sayfası

Yukarıdaki gibi ip adresi girilerek nginx uygulamasının default web sayfası açılabilir.

LINUX ÜZERİNE TAR DOSYASI İLE NGINX KURULUMU

Aşağıdaki anlatımda LINUX Rhel 7.6 üzerine tar dosyası üzerinden nginx kurulumu gerçekleştirilecektir. Bu kurulumun rpm dosyası ile kurulumdan farklı olarak özelleştirilmiş bir şekilde kurulum yapılması sağlanır. İlgili dosya istenilen versiyon durumuna göre buradan indirilir. Bu anlatımda nginx-1.18.0 versiyonu kullanılacaktır.

Nginx Web Server Dosyasının İndirilmesi

Kurulum yapılacak makinenin internet ortamına erişimi var ise aşağıdaki şekilde blirli bir kalsör içerisine indirilmesi sağlanır.

mkdir /opt/nginx && cd /opt/nginx
wget http://nginx.org/download/nginx-1.18.0.tar.gz
Nginx Web Server Uygulamasının İndirilmesi
tar -zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0

NOT: Bu adımlardan sonra derleme işlemi yapılacaktır. Derleme işleminde log, pid, vb. dizinlerin belirlenmesi gibi işlemleri yapabilirsiniz. Gerekli düzenlemeler için bu sayfayı kullanabilirsiniz. Ayrıca aşağıdaki şekilde header bilgisi gizlenebilir. Aşağıdaki komut seti ile .c uzantılı yapılandırma dosyaları içerisinde değişiklikler yapılır. Ve header bilgisi gizlenmiş olur.

sed -i 's@"nginx/"@"-/"@g' src/core/nginx.h
sed -i 's@r->headers_out.server == NULL@0@g' src/http/ngx_http_header_filter_module.c
sed -i 's@r->headers_out.server == NULL@0@g' src/http/v2/ngx_http_v2_filter_module.c
sed -i 's@<hr><center>nginx</center>@@g' src/http/ngx_http_special_response.c

NOT: Derleme işlemi içerisinde bazı gereksinimlere ihtiyaç vardır. Bu sebeble internet ortamına çıkan makine üzerinde yapılması büyük kolaylık sağlayacaktır. Kullanılan makine internet ortamına çıkmıyor ise gereksinimler manuel olarak indirilip makine içerisine atılarak yüklenmesi sağlanabilir.

./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/run/nginx.pid --with-http_ssl_module

Yukarıdaki komut ile bazı dosyaların çalışma dizini belirtilmiştir. Dizin belirtilmeden yapılacak derleme işleminde default olarak gelen değerlerde yükleme yapılacaktır. Ayrıca SSL sertifikaların kullanılması için yukarıdaki modülün eklenmesi sağlanır. Buna benzer bazı modüllerin yükleme işlemi default olarak gelmediği için yukarıda belirttiğim link içerisinden projenize uygun modül seçilerek kullanılması sağlanır.

Komutun çalıştırılması esnasında aşağıdaki gibi hata alınması durumunda C derleyicisinin yüklenmesi sağlanarak derleme işlemine devam edilir. Bun benzer alınan hata durumunda ilgili kurulumlar yum install <paket adı> komutu kullanılarak yüklenir. Anlatıma LINUX Rhel7.6 üzerinde değindiğim için yum komutu ile yüklenmesini anlatılmıştır.

Configure Komutu Sonrası Alınan Hata

Aşağıdaki paket ve gereksinimlerin sunucu üzerinde yüklü olması gerekir.

yum install gcc
yum install openssl
yum install openssl-devel
yum install pcre
yum install pcre-devel

Bu yüklemelerin ardından yukarıdaki ./configure ile başlayan komut tekrar çalıştırılır. Daha sonra oluşacak make dosyaları üzerinden kurulum bitirilir ve servis dosyası oluşturulması sağlanır.

make
make install
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
# Nginx will fail to start if /run/nginx.pid already exists but has the wrong
# SELinux context. This might happen when running `nginx -t` from the cmdline.
# https://bugzilla.redhat.com/show_bug.cgi?id=1268621
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true

[Install]
WantedBy=multi-user.target
systemctl enable nginx
systemctl start nginx

Bu adımlardan sonra isteğe göre nginx.conf dosyası düzenlenir. Ayrıca aşağıdaki komut ile header bilgisinin gizlendiği gözlemlenebilir. Aşağıdaki görsel durumu açıklar, web sayfası düzenlenmediği için 404 hatası mevcuttur.

Header Bilgisinin Gizlenmesi

NGINX DEFAULT PORT NUMARASININ DEĞİŞTİRİLMESİ

Öncelikle nginx kofigürasyon dosyasına gidilir.

vim /etc/nginx/conf.d/default.conf

Dosya açıldıktan sonra ilgili kısımlarda düzenleme yapılarak port numarası düzenlenir. Ayrıca sanal makinenin ip adreside düzenlenebilir.

Nginx konfigürasyon dosyasının düzenlenmesi

İlgili düzenlemeler yapıldıktan sonra dosya kaydedilerek kapatılır ve nginx servisi restart edilir, dinlediği port’a bakılır.

systemctl restart nginx 

netstat -tulpn

NGINX ÜZERİNE SERTİFİKA YÜKLENMESİ

Burada yapılacak işlemler kendinden imzalı sertifika üzerinden yapılacaktır. Sertifika üzertmek için openssl kullanılmıştır.

openssl req -newkey rsa:4096 \
> -x509 \
> -sha256 \
> -days 3650 \
> -nodes \
> -out selfsigned.crt \
> -keyout selfsigned.key

yukarıdaki komutlar ile sertifika üretimi işlemine geçilir.

Ssl sertifika üretimi

Gelen alanlar istege göre doldurulur veya boş geçilebilir.

Ssl sertifika üretimi

mkdir /etc/nginx/certificates

komutu ile certificates adında klasör oluşturulur. Ve bu klasör altına oluşturduğumuz sertifika dosyaları taşınır.

mv selfsigned.crt /etc/nginx/certificate
mv selfsigned.key /etc/nginx/certificate

Daha sonra bu sertifikalar nginx konfigürasyon dosyasında dizin belirtilerek tanıtılır.

Sertifika ayarları

Sertifikalar ilgili klasöre atıldıktan sonra nginx konfigürasyon dosyası düzenlenmek  üzere açılır. Ve içerisine ilgili satırlar yazılır.

vim /etc/nginx/conf.d/default.conf

listen 443 ssl;
ssl_certificate /etc/nginx/certificates/selfsigned.crt;
ssl_certificate_key /etc/nginx/certificates/selfsigned.key;

Bu satırlar yazıldıktan sonra kaydedilip kapatılır ve nginx servisi restart edilir.
systemctl restart nginx

NOT: Eğer servis restart edildiğinde nginx servisi ayağa kalkmıyor ise linux selinux ayarlarından olabilir. 
vim /etc/selinux/config 
 
dosya yoluna gidilerek disabled seçeneği yazılır ve makine restart yapılır.Aşağıdaki görsellerde inceleyebilirsiniz.

Nginx konfigürasyon dosyası açılması
Nginx konfigürasyon dosyası düzenlenmesi
Selinux konfigürasyon dosyasının açılması
Selinux ayarlarının kapatılması
Sistemin restart edilmesi
Nginx servisinin durum kontrolü
Bağlantının sağlanması
Ssl ile güvenli bağlantının sağlanması
Nginx default web sayfasının açılması

NGINX HTTP TO HTTPS REDIRECT İŞLEMİ (HTTP İLE GELEN İSTEKLERİ HTTPS OLARAK YÖNLENDİRME)

Http olarak yapılan istekleri https olarak yönlendirme için aşağıdaki işlemeler yapılabilir. İlgili ayarlar nginx konfigürasyon dosyası üzerinden yapılacaktır . Ayarlamalar sonrası nginx restart edilerek tarayıcı üzerinden http olarak istek gönderilip https ‘e çevrildiğine bakılacaktır.
1 )
vim /etc/nginx/conf.d/default.conf

2)
server {
      listen 80;
      server_name $servername;
      return 301 https://$servername$request_uri;
}

3)
systemctl restart nginx

Nginx redirect işlemi için konfigürasyon dosyasının düzenlenmesi
Nginx’in dinlediği portlar

NGINX İLE REVERSE PROXY İŞLEMİ

Nginx ile reverse proxy işlemi için aşağıdaki adımlar yapılacaktır. Öncelikle nginx üzerinde örnek olacak şekilde 81 portunu dinleyen konfigürasyon düzenleme değişikliğine gidilir. Böylelikle 80 portuna gelen istekler 81 portunda çalışan nginx server’na yönlendirilecektir.
Reverse proxy yapacağımızın anlaşılması için açılacak default nginx server sayfasının üzerinde değişikliğe gidilir.

1) 
vim /etc/nginx/conf.d/default.conf

server {
listen 80;
server_name 192.168.56.101;
location / {
proxy_pass http://192.168.56.101:81;
}
}

server {
listen 81;
server_name 192.168.56.101;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}

2)
vim /usr/share/nginx/html/index.html


<h1>Welcome to nginx!REVERSE PROXY</h1>

4) 
systemctl restart nginx

Yukarıdaki adımlar ile reverse proxy işlemi gerçekleştirilir. Böylelikle aracı site üzerine gelen istekler arka planda başka bir siteye yönlendirilebilir ve o sitenin içeriği görüntülenebilir.

Nginx konfigürasyon dosyasının açılması
Nginx konfigürasyon dosyasının düzenlenmesi
Nginx default web sayfasının html kodunun bulunduğu dosyanın açılması
Nginx default web sayfasının html kodunun bulunduğu dosyanın düzenlenmesi
Nginx serverin restart edilmesi
Nginx’in dinlediği portlar
Nginx ile reverse proxy ile 81 nolu portta çalışan nginx web serverine bağlantının tarayıcı üzerinden sağlanması

NGINX İLE LOADBALANCER (YÜK DENGELEME) İŞLEMİ

Nginx ile yük dengeleme işlemi için aşağıdaki adımlar kullanılacaktır. Burada kullanacağımız metot varsayılan yük dengeleme işlemi olacaktır. Burada yapacağımız işlemlerden bahsedecek olursak öncelikle nginx’in default konfigürasyon dosyası üzerinde 81, 82 ve 83 portlarını dinleyen server ayarları yapılacaktır. Daha sonra default1 isimli bir konfigürasyon dosyası oluşturularak bu dosyanın içeriği load balancer konfigürasyonu olarak ayarlanacaktır. Ayrıca her bir serverin açılacak web sayfası değiştirilecektir. Değiştirme amacımız loadbalancer olayını gözlemlemektir.

1)
  vim /usr/share/nginx/html/index1.html
   loadnbalancer1
  vim /usr/share/nginx/html/index2.html
   loadnbalancer2

    vim /etc/nginx/conf.d/default.conf

server {
listen 81;
server_name 192.168.56.101;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
server {
listen 82;
server_name 192.168.56.101;
location / {
root /usr/share/nginx/html;
index index1.html index.htm;
}
}

server {
listen 83;
server_name 192.168.56.101;
location / {
root /usr/share/nginx/html;
index index2.html index.htm;
}
}

2)
vim /etc/nginx/conf.d/default1.conf

upstream loadbalancer {
server 192.168.56.101:81;
server 192.168.56.101:82;
server 192.168.56.101:83;
}

server {
listen 80;
location / {
proxy_pass http://loadbalancer;
}
}

3)
systemctl restart nginx

4)
netstat -tulpn

NOT: ikinci oluşturduğumuz konfig dosyasını Nginx nasıl tanıyacak diye soracak olursanız; Nginx çalışırken nginx.conf dosyası üzerinden çalışmaya başlar. Ve bu dosya içerisinde include satırında conf.d klasörü altındaki bütün .conf uzantılı dosyanın include edilmesini sağlar. Bu sebebten ötürü .conf dosyası olarak tanımladığımız dosyalar nginx tarafından uygulanacaktır.
vim /etc/nginx/nginx.conf

aşağıdaki satır include eder;

keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}

Açılacak birinci web sayfası ayarı
Web sayfası içeriğinin oluşturulması
Açılacak ikinci web sayfası ayarı

Web sayfası içeriğinin oluşturulması

Nginx konfigürasyon dosyası açılması

Konfigürasyon dosyasının içeriğinin düzenlenmesi
Default1 adında konfigürasyon dosyasının oluşturulması
Default1 konfigürasyon dosyasının içeriğinin düzenlenmesi
Nginx servisinin restart edilmesi ve çalıştığının gözlemlenmesi
Nginx web serverinin dinlediği portlar
İlk web serverin web sayfasının açılması
İkinci web serverin web sayfasının açılması
Üçüncü web serverin web sayfasının açılması

Vakit buldukça yazmaya devam edeceğim.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir