Aramayan Bulamaz
×
table arama sorgusuna ait içerikleri görüntülemektesiniz.
MongoDB Kurulum ve Konfigurasyonu (Kullanıcı Yetkilendirmesi ve SSL Kurulumu)

Linux işletim sistemine MongoDB kurulumu için öncelikle MongoDB repolarını işletim sistemine eklemeniz gerekmekte.

Linux Redhat / CentOS

1. Adım: /etc/yum.repos.d/mongodb-org.repo dosyasının içerisine aşağıdaki bilgileri eklemeniz gerekmekte. Şu anda son sürüm 4.0 daha sonra farklı bir sürüm çıkarsa eğer o sürüme ait olan repoyu eklemeniz gerekecektir. Güncel MongoDB sürümünü  bu bağlantıdan öğrenebilirsiniz.

[mongodb-org-4.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

2. Adım: Kurulum

yum install -y mongodb-org

Ubuntu

1. Adım: MongoDB servisine ait public key bilgisini işletim sistemine import etmemiz gerekiyor

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

2. Adım: /etc/apt/sources.list.d/mongodb-org.list dosyasının içerisine aşağıdaki bilgileri eklememiz gerekmekte.

Ubuntu 14.04 için

echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list

Ubuntu 16.04 için

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list

3. Adım: Paketleri güncelle

sudo apt-get update

4. Adım: Kurulum

sudo apt-get install -y mongodb-org

Konuya CentOS üzerinden devam edeceğim. Kurulum işlemi sonrasında service mongod start komutunu vererek servisi başlatabilirsiniz. MongoDB kurulumu tamamlandı ve kullanıma hazır durumda terminal üzerinden mongo komutunu vererek MongoDB'nin shell ekranına giriş yapabilirsiniz. MongoDB daha &ou

MongoDB ve NoSQL Kavramı Nedir?

MongoDB bir NoSQL veritabanıdır. NoSQL "not only sql" olarak da açılabilir, yani SQL değil anlamındadır. Çünkü çalıştırılan sorgular bir MySQL ya da MsSQL sistemlerinde alışmış olduğunuz sorgular değiller.

NoSQL Sistemlerinin Avantajları Nelerdir?

Okuma ve yazma konusunda diğerlerine göre daha performanslı olabilirler.

Yatay olarak genişletilebilirler. Yani binlerce sunucu küme oluşturarak çalıştırılabilir ve daha büyük veriler üzerinde daha rahat işlem yapılabilir.

Farklı bir çok özellikleri olması sebebiyle programlama alanında kolaylıklar sağlar.

Maliyet olarak diğer veritabanı sistemlerine göre daha avantajlıdır.


NoSQL Sistemlerin Dezavantajları Nelerdir?

SQL bir veritabanı kullanan uygulamanın NoSQL sisteme taşınması ilk aşamada zor olacaktır. Özellikle join kullanan sorgularda düzenleme yapılması gerekecektir.

NoSQL veritabanı sitemleri veri güvenliği konusunda SQL veritabanlarındaki gibi gelişmiş bir yapıya sahip değiller.


MongoDB'de yukarıdaki dezavantajlarda bahsettiğim gibi güvenlik konusunda ilk kurulumda yetersiz kalmakta. Varsayılan olarak kullanıcı adı ve şifre bulunmamakta. Doğrudan sunucu adresini yazarak veritabanına bağlantı sağlanabilmekte. Bu sebeple veritabanı erişimini sunucu dışına kapatmak gerek ve MongoDB konfigurasyonlarını düzenleyerek kullanıcı yetkilendirmesini açmanız gerek. Kurulum ve konfigurasyonları sonraki konumda açıklayacağım.


MongoDB

10gen firması tarafından 2007 yılında başlanan ve 2009 yılında AGPL lisansıyla açık kaynak projesine dönüştürülen bir veritabanı sistemidir. Belge yönelimli veritabanı olarak tanıtılmaktadır. (Document oriented). MongoDB üzerinde oluşturulan her kayıt bir dökümandır. Bu dökümanlar json formatında saklanır.

MongoDB ve alışılagelmiş S

Bash Script ile Otomatik Iptables Kuralları Tanımlama

Bir başka konumda temel Iptables kullanımı ile ilgili bilgi vermiştim. Iptables üzerinde çok işlem yapıyorsanız eğer, yeni IP adreslerine izin tanımlama farklı portlara izin tanımlama gibi, sürekli sürekli aynı komutları yazmak sıkıcı gelebilir. Aşağıdaki paylaştığım script ile bu işlemi kısa sürede halledebilirsiniz.

#!/bin/bash # Muhammed Niyazi ALPAY # https://niyazi.org function iptablesrules(){ echo "" echo "==========================================================" echo "" read -p "IP adreslerini aralarında virgül ile birlikte giriniz: " ipaddresses echo "" read -p "Port numaralarını aralarında virgül ile birlikte giriniz: " ports echo "" echo 0 > /proc/sys/net/ipv4/ip_forward iptables -A INPUT -p tcp -m multiport --dports $ports -s 127.0.0.1,$ipaddresses -j ACCEPT iptables -A INPUT -p udp -m multiport --dports $ports -s 127.0.0.1,$ipaddresses -j ACCEPT iptables -A INPUT -p tcp -m multiport --dports $ports -j DROP iptables -A INPUT -p udp -m multiport --dports $ports -j DROP echo 1 > /proc/sys/net/ipv4/ip_forward echo "" echo "==========================================================" echo "" echo "İşlem başarı ile tamamlandı." echo "" echo "==========================================================" echo "" } read -p "Önceki Iptables kuralları silinsin mi? (e ya da h) " removerule if [ ${removerule} == "e" ]; then echo "Iptables kuralları silindi" iptables --flush elif [ ${removerule} == "h" ]; then echo "" else echo "Lütfen e veya h olarak giriş yapın" fi iptablesrules condition_to_check="False" while [[ ${condition_to_check} == "False" ]]; do read -p "İşleme devam edilsin mi? (e ya da h) " query if [ ${query} == "h" ]; then condition_to_check="True" elif [ ${query} == "e" ]; then iptablesrules else echo "Lütfen e veya h olarak giriş yapın" fi done chkconfig iptables on service iptables save echo "" echo "===========

Temel Iptables Kullanımı

Iptables Linux bilgisayarlarda firewall olarak kullanılan bir yazılımdır. Iptables ile sisteminize gelen ve sisteminizden giden bağlantıları engelleyebilir, farklı bir yere yönlendirebilir veya izin verebilirsiniz. Iptables kurallar zinciri, bu kurallar zincirlerine ait parametreler ve bağlantı hedefleri ile birlikte çalışmaktadır.

Kural Zincirleri
INPUT Gelen paketleri tanımlamak için.
OUTPUT Giden paketleri tanımlamak için.
FORWARD Yönlendirilen paketleri tanımlamak için.
PREROUTING Sadece NAT için geçerlidir. Gelen paketlerin değiştirilmesi için.
POSTROUTING Sadece NAT için geçerlidir. Giden paketlerin değiştirilmsi için.

Kural Hedefleri
ACCEPT Paketlerin geçisine izin vermek için.
DROP Paketlerin geçişini reddetmek için.
REJECT Paketlerin erişimi reddedilir ve gönderici bu konuda bilgilendirilir.
RETURN Zincirin sonuna gönderilir.
QUEUE Paketler kullanıcı alanına gönderilir.

Kural Parametreleri
-A ZİNCİR Zincire kural ekler.
-E ZİNCİR Zinciri yeniden adlandırır.
-D ZİNCİR Zincirden bir kural siler.
-D ZİNCİR Zincirden belirtilen numaradaki kurali siler.
-L ZİNCİR Belirtilen zincirdeki kurallari gösterir.
-E ZİNCİR Zinciri yeniden adlandirir.
-l ZİNCİR Zincirde belirtilen numaralı alana kuralı ekler.
-R ZİNCİR Zincirde kuralın yerine başkasını koyar.
-R ZİNCİR Zincirde belirtilen numaralı alana bir başkasını koyar.
-N ZİNCİR Yeni bir zincir oluşturur.
-X ZİNCİR Kullanıcının eklediği bir zinciri siler.
-F ZİNCİR Zincirdeki kuralların tümünü siler.
-P ZİNCİR Zincire genel politika ekler.

Kural Seçenekleri
! Kuralı tersine çevirir.
-s Bağlantı sağlayacak adresi belirtmek içn kullanılır 127.0.0.1/255.0.0.0 gibi..
-p UDP,TCP,ICMP,ALL bağlantı protokollerini belirtmek içi

HTML\'de Çerçeveler ve Tablolar

Çerçeveler tarayıcımızda birden fazla html döküman açmamızı sağlar. Her çerçeve de ayrı bir html sayfa vardır ve bunların hepsi birbirinden bağımsızdır.
Dezavantajları;
İstenilen sayfanın yazıcıya gönderilmesi zordur Her sayfayı takip etmek zordur Frameset etiketi
<frameset> sayfanın hangi biçimde çerçeveye ayrılacağını belirler, satır veya sütun olarak belirlenir.

Frame etiketi
Her bir çerçevede hangi dökümanın görüntüleneceğini belirtir.

<frameset cols="30%,70%"> <frame src="frame_1.htm"> <frame src="frame_2.htm"> </frameset> Burada iki sütunlu bir çerçeve belirlenmiş, ilk çerçeve için tarayıcının %30 u ikinci çerçeve için tarayıcının %70 i ayrılmıştır.
%30 luk alana frame_1.html, %70 lik alana da frame_2.html dökümanları çağırılmıştır.

Çerçeveler günümüz standartlarında kullanılmayan, W3C tarafından kullanımdan kaldırlmış bir etikettir, bunun yerine daha çok tablolu sayfalar ya da daha da gelişmişi, tablo kullanmadan <div> ler ile yapılan sayfalar kullanımaktadır. <div> leri css ile birlikte anlatacağım.


Tablolar
Table etiketi ile belirlenir, tr ile satırlara, td ile de sütunlara bölünür.
<td> nin anlamı "table data" dır, yani veri hücresi, tablo içerisine eklenecek olan nesneler (resim, paragraf, form elemanları vs) td etiketinin içinde yazılır.

<table border="1"> <tr> <td> 1. Satır, 1. Hücre </td> <td> 1. Satır, 2. Hücre </td> </tr> <tr> <td> 2. Satır, 1. Hücre </td> <td> 2. Satır, 2. Hücre </td> </tr> </table>
Tablonun ekran çıktısı
1. Satır, 1. Hücre 1. Satır, 2. Hücre 2. Satır, 1. Hücre 2. Satır, 2. Hücre

border parametresi ile