Merhaba arkadaşlar, bu konuda fazlasıyla istek aldığım için bir anlatım yapmaya karar verdim. Sözü fazla uzatmadan işe koyulalım.

Adım 1: Centos 7 özelliklede MariaDB biraz fazla kaynak gerektirdiği için 512mb ram bu sunucu için yeterli olmayacaktır. En az 1gb ram olması gerekli. İlaveten oluşturacağınız sunucunun hostname kısmı FQDN: Fully qualified domain name olmalı, örneğin; s1.internetin.org



NGINX KURULUMU

Adım 2: Putty Terminal yardımıyla sunucumuza ssh bağlanıyoruz. Ve aşağıdaki komutu uyguluyoruz.

nano /etc/hosts



Açılan ekranda aşağıdaki resimdeki gibi ipmizi ve hostname i ekliyoruz ve ctrl+x >Y>enter komutunu uygulayarak kayıt edip çıkıyoruz.



Adım 3: Bu aşamada aşağıdaki kodu uygulayarak sunucuyu güncelleyelim.

yum -y update



Adım 4: Güncelleme işlemimiz tamamlandı. Centos 7 içerisinde Nginx kütüphanesi mevcut olmadığı için biz bunu manuel olarak ekleyeceğiz. Aşağıda komutları sırasıyla uygulayalım.

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm



yum install nginx -y



Nginxi kurduk şimdi aşağıdaki komutla başlatalım ve diğeriyle sunucu başlatıldığında otomatik başlamasını sağlayalım.

systemctl start nginx.service

systemctl enable nginx.service



Artık nginx sunucumuzda çalışır durumda ipmizi adres çubuğuna yazarak kontrol edelim.



Aşağıdaki kodu uygulayarak kurmuş olduğunuz nginx versiyonunu görebilirsiniz. Biz Stabil olan son versiyonu yükledik.



nginx -v

PHP5-FPM KURULUMU

Adım 5: Normalde aşağıdaki komutla php-fpm yi basit bir biçimde kurabiliriz.

yum install php php-mysql php-fpm

yada gelişmiş olarak modüllerle kurabilirsiniz.

yum install php php-fpm php-common php-cli php-devel php-gd php-imap php-intl php-mysql php-process php-xml php-xmlrpc php-zts -y

Ancak biz şuanda en son sürüm olan PHP 5.6.4 ü kuracağımız için ufak bir kaç işlem yapmamız gerekiyor. Aşağıdaki komutları sırasıyla uyguluyoruz.

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7*.rpm epel-release-7*.rpm



Epel ve remiyi sistemimize işledikten sonra aşağıdaki komutu uygulayalım.

nano /etc/yum.repos.d/remi.repo

[remi-php56] kısmına iniyoruz.(Aşağı inmek için ctrl+v komutunu uygulayabilirsiniz.) enable:0 ı enable:1 olarak değiştirip ctrl+x>Y>enter komutunu uygulayarak kayıt edip çıkıyoruz.

Önemli:Bazı sunucularda kurulum hata veriyor, bu yüzden [remi] satırındaki enable değerinide 0dan 1 e çevirin ve öyle kayıt edin.



Artık PHP yi yükleme komutunu uygulayabiliriz.
yum install php php-mysql php-fpm -y



PHP-FPM yi yükledik aşağıdaki komutu uygulayarak versionumuzu kontrol edelim

php -v



Adım 6: Sunucumuz için gerekli PHP-FPM ayarlarını yapalım, aşağıdaki komutu uygulayalım ve cgi.fix değerini aktif hale getirerek 0 değeri verelim.

nano /etc/php.ini

CTRL+W komutunu uygulayarak arama satırını açalım ve “cgi.fix_pathinfo” yazarak enterlayalım.



CTRL+X>Y>ENTER uygulayarak kayıt edip çıkıyoruz ve hemen akabinde aşağıdaki komutu uyguluyoruz.

nano /etc/php-fpm.d/www.conf

CTRL+W komutunu uygulayarak “user = apache” kelimesini arayalım.

Öncesi:



listen = /var/run/php-fpm/php-fpm.sock

Sonrası:



PHP-FPM ayarlarımız tamam artık başlatabiliriz aşağıdaki komutları uygulayalım.

systemctl start php-fpm
systemctl enable php-fpm.service



NGINX AYARLARI

Adım 7: Aşağıdaki komutu uygulayarak default.conf dosyasımızı açalım.

nano /etc/nginx/conf.d/default.conf

Öncesi:



Sonrası:



Değiştirilenler.

1
server_name internetin.org;

2
root /usr/share/nginx/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;


3
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}


Adım 8: NGİNX servisini yeniden başlatarak NGİNX ve PHP-FPM yi test edelim.

systemctl restart nginx.service

echo "" > /usr/share/nginx/html/info.php



Nginx in ve PHP-FPM nin çalışıp çalışmadığına bakalım.



MariaDB KURULUM

Adım 9: Kurulum için aşağıdaki komutu uygulayalım.

yum install mariadb-server mariadb -y



Adım 10: Veritabanı sistemini başlatalım ve otomatik başlaması için komutumuzu uygulayalım.

systemctl start mariadb.service
systemctl enable mariadb.service

Adım 11: Şimdi MariaDB yapılandırmamıza geçelim.

mysql_secure_installation



Sırasıyla Enter, Y Enter (2 kere şifre girmemiz gerekiyor veritabanı serveri şifremiz bu olacak) ve sonrasında da tüm uyarılara Y Enter diyerek yapılandırmayı tamamlayalım.



Adım 12: Veritabanı sunucumuza aşağıdaki komut yardımıyla bağlanacağız. Yapılandırma sırasında belirlediğimiz şifreyi gireceğiz. ( Daha sonra buraya veritabanı oluşturmak için tekrar döneceğiz.)

mysql -u root -p



VirtualHost Yapılandırması

Adım 13: Sitelerimizi barındıracağımız fiziki dosya alanını oluştup gerekli yetkilendirmeleri yapacağız.

mkdir -p /home/internet/public_html
mkdir /home/internet/logs
chown -R nginx:nginx /home/internet
chown -R nginx:nginx /home/internet/public_html

Adım 14: Virtual Host dosyalarımız için gerekli alanı oluşturalım.

mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled



Adım 15: Bu aşamada nginx.conf dosyamızın içerisine virtual host dosyalarımızın bulunduğu yeri include edeceğiz.

nano /etc/nginx/nginx.conf

Aşağıdaki kodu ekleyeceğiz. Resimlere bknz.

include /etc/nginx/sites-enabled/*;

Öncesi



Sonrası



Adım 16: Artık sitelerimizi ekleyebiliriz, bunun için her sitemiz için ayrı ayrı .conf dosyası oluşturmanızı tavsiye ederim, tek bir conf dosyasında da tüm sitelerinizi toplayabilirsiniz bu sizin kendi seçiminiz.

nano /etc/nginx/sites-available/internetin.org.conf



server {
server_name internetin.orgwww.internetin.org ;
listen 80;
root /home/internet/public_html;
access_log /home/internet/internetin.org-access.log;
error_log /home/internet/logs/internetin.org-error.log;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
access_log off;
expires max;
}
location ~ /\.ht {
deny all;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}


Aşağıdaki kodları kendinize göre düzenleyerek uygulayın.

cd /etc/nginx/sites-enabled/

ln -s /etc/nginx/sites-available/internetin.org.conf

Evet sitemiz için virtual host dosyamızı oluşturup olması gereken yere taşıdık herşey hazır derken bind(dns) serveri kurmayı unuttuğumu farkettim son olarakta onu kuracağız ve sunucumuzu aktif olarak kullanmaya başlayacağız.

Adım 17:
Nginxi yeniden başlatıyoruz.

systemctl restart nginx.service

BİND SERVER KURULUM

Bind server çalışmazsa bu linke bknz: http://www.o12.org/bind-dns-server-nasil-kurulur.html
Adım 18: Sunucuyu tekrar update edelim
yum update -y

Adım 19: Bind için gerekli dosyaları yükleyelim
yum install bind bind-utils -y

Adım 20: Bind(named) config dosyasını editlemek üzere açıyoruz.)
nano -w /etc/named.conf

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
#listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
allow-transfer { localhost; 2.2.2.2; };

/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion no;

dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;

/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";

managed-keys-directory "/var/named/dynamic";

pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};

logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};

zone "internetin.org" IN {
type master;
file "internetin.org.zone";
allow-update { none; };
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";


Öncesi:



Sonrası:



Aşağı doğru ctrl v ile iniyoruz ve zone dosyamızla alakalı düzenlemeleri yapıyoruz.

Öncesi:



Sonrası:



ctrl x + y + enter yapıyoruz kayıt edip çıkıyoruz.

Adım 21: Sitemiz için zone kaydını oluşturalım.

nano -w /var/named/internetin.org.zone

Örnek Zone.

$TTL 86400
@ IN SOA ns1.internetin.org. info@internetin.org. (
2013042201 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
; Specify our two nameservers
IN NS ns1.internetin.org.
IN NS ns2.internetin.org.
; Resolve nameserver hostnames to IP, replace with your two droplet IP addresses.
ns1 IN A 188.166.50.93
ns2 IN A 188.166.50.93

; Define hostname -> IP pairs which you wish to resolve
@ IN A 188.166.50.93
www IN A 188.166.50.93


Adım 22: Bind Serverimizi Başlatalım, aşağıdaki kodları sırasıyla uygulayalım. İlk denediğiniz zaman çalışmayabilir 10 15 saniye cevap vermezse. Ctrl c yaparak durdurun ve aynı kodu yeniden kullanın bende 3. seferde çalıştı.

systemctl restart named.service
systemctl enable named.service
systemctl status named.service



Serverimizi doğru yapılandırıp yapılandırmadığımızı kontrol edelim.
dig @178.62.60.85 internetin.org





Bind (DNS) serverimizde sorunsuz çalıştığına göre domain panelinden ns leri girerek domaini sunucumuza bağlayabiliriz. Ben bu işlemi yaptım dnslerin yönlenip yönlenmediğini aşağıdaki siteler yardımıyla öğrenebiliriz.

https://www.whatsmydns.net/#A/www.internetin.org
http://www.intodns.com/internetin.org



Diyeceksiniz birde nasıl veritabanı oluşturacağımızı göstersen ellerine sağlık, hemen onuda gösterip bi wordpress kuralım internetin.org ‘ a.

SSH bağlantımıza dönerek aşağıdaki komutu uygulayalım ve veritabanı serverini kurarken kullandığımız şifreyi girelim.

mysql -u root -p

Aşağıdaki vereceğim kodları kendinize göre ayarlayın.

CREATE DATABASE internetin_org;
CREATE USER 'internetin_user'@'localhost' IDENTIFIED BY 'sivasspor';
GRANT ALL ON internetin_org.* TO 'internetin_user'@'localhost';
FLUSH PRIVILEGES;
exit



İşlemler bu kadar.

Şimdi ftpye 22 portundan bağlanalım ve wordpress dosyalarımızı gönderelim.



Evet veritabanımızı oluşturduk, dosyalarımızı 22 portuyla bağlanarak gönderdik e ne duruyoruz? Hadi wordpresside kuralım.







Son olarak eğer kurulumdan sonra WordPress Panelinden ftp ile ilgili sorun yaşarsanız aşağıdaki ekranla karşılaşmamak için (çünkü ftp serveri kurmadık) sitemizin dosyalarının bulunduğu yere yetkilendirme yapacağız ki bu ekran gelmesin.



chown -R nginx:nginx /home/internet/public_html

Bu yetkilendirmeyi yaptıktan sonra güncelleme ve yüklemeleri wp admin panelinden sorunsuz yapabilirsiniz.



Panelsiz saat gibi çalışan sunucumuz ve ekleyeceğimiz siteler şimdiden hayırlı olsun.





Yoğun isteğinize cevapsız kalamadım bu yazıyı hazırlamak tam 5-6 saatimi aldı. Bunu göz önünde tutarak emeğe saygı çerçevesinde yazılarımı kopyalamayın lütfen. Buraya bile konuyu taşımak 30 dakikadan fazla süremi aldı.

Makale Linki:http://www.o12.org/centos-7-panelsiz-nginx-mariadb-ve-bind-server-kurulumu-ile-virtual-host-yapilandirmasi.html