Centos 7 Panelsiz Nginx MariaDB ve Bind Server kurulumu ile Virtual Host yapılandırması

20
6767

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

Screenshot_1

 NGINX KURULUMU

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

nano /etc/hosts

Screenshot_2

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.

Screenshot_3

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

yum -y update
Screenshot_4

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

Screenshot_5

yum install nginx -y
Screenshot_6

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

Screenshot_7

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

Screenshot_8

Aşağıdaki kodu uygulayarak kurmuş olduğunuz nginx versiyonunu görebilirsiniz. Biz Stabil olan son versiyonu yükledik.Screenshot_9
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

Screenshot_10

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.

Screenshot_11

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

Screenshot_12

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

php -v

Screenshot_13

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.

Screenshot_14

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:

Screenshot_15

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

Sonrası:

Screenshot_16

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

Screenshot_17

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:

Screenshot_18

Sonrası:

Screenshot_19

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
Aşağıdaki kodu uygulayın.

echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php

Screenshot_20

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

Screenshot_21

MariaDB KURULUM

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

yum install mariadb-server mariadb -y

Screenshot_22

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

Screenshot_23

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.

Screenshot_24

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

Screenshot_26

 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

Screenshot_27

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

Screenshot_28

Sonrası

Screenshot_29

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

Screenshot_52
server {
server_name internetin.org www.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

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

Öncesi:

Screenshot_31

Sonrası:

Screenshot_32

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

Öncesi:

Screenshot_33

Sonrası:

Screenshot_34

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 178.62.60.85
ns2 IN A 178.62.60.85
; Define hostname -> IP pairs which you wish to resolve
@ IN A 178.62.60.85
www IN A 178.62.60.85

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

Screenshot_37

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

Screenshot_38

Screenshot_39

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

Screenshot_40

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

Screenshot_41

İşlemler bu kadar.

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

Screenshot_42

Screenshot_43

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

Screenshot_44

Screenshot_45

Screenshot_46

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.

Screenshot_47

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

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

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

Screenshot_49

Screenshot_50

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.

  • yavuz

    ellerine sağlık hocam ilave site eklemek için ne yapmamız lazım

    • Teknograph

      Merhaba, her site için VirtualHost oluşturma adımlarını tekrarlamanız yeterli, ayrıca isterseniz tek bir NS kullanın isterseniz, diğer siteleriniz içinde zone kaydı ekleyip öyle kullanın sıkıntı olmayacaktır.

  • Teknograph

    Merhaba aşağıdaki komutla named.conf dosyasını açın ve eklediğim resimlerdeki gibi yapılandırıp kayıt edin (CTRL+X > Y > Enter). Sonrasında siteniz.com.zone dosyanızın doğru yapılandırıldığından emin olun bind serveri yeniden başlatın.

    • fatih

      Çok sağolun hocam işe yaradı .

      • Teknograph

        İyi çalışmalar.

  • Emeğinize sağlık.

    512mb ram yetmez demişsiniz centos6 64 bit le nasıl olur?
    vpn kuracağım birde 5 adet sitem var 512 ram yetmez mi gerçekten. digital oceandan aldım

    • Teknograph

      Merhaba, 512ram bu sistemi için yeterli değil, söylediğiniz gibi 5 siteyi ve vpn için yeterli olması da mümkün değil. Farklı kurulumlara yönelmenizi tavsiye ederim.

      • hocam farklı kurulumlar derken diğer hazır panelleri mi kastettiniz yoksa bir donanım upgrade mi olmalı. hazır panellerde bu kurulumları otomatik yapıyor sanırım..

        • Teknograph

          Centos 6 64bit 512ram+512mb swap ile yine panelsiz kurulum yapabilirsiniz digitaloceanda anlatımlar mevcut, yahut webuzo panel yükleyin o herşeyi otomatik olarak kuracaktır. Vpnyide üzerine yüklersiniz sorunsuz çalışır diye düşünüyorum. İyi Geceler.

  • xLab

    Merhaba.
    Burada anlatılan nginx salt bir kurulum mu yoksa proxy üzerinden çalışan nginx kurulumu mu?

    • Teknograph

      Merhaba, anlatımını gerçekleştirdiğim kurulum nginx salt kurulumdur. Yoğun hitli bir site sahibiyseniz, bu kurulumun üzerine varnish kurmanızı öneririm.

      • xLab

        Teşekkürler ilginiz için.
        Bu salt nginxle beraber spdy + pagespeed + varnish nasıl ekleriz hocam ?
        sanırım bunları ekledikten sonra beraber compile etmemiz lazımmış.
        bununla ilgili türkçe bir makale bulamadım.herhangi bir bilginiz var mı ?

        • Teknograph

          Merhaba, elbette bilgim var fakat detaylı bir anlatım yapacak vakit bulamıyorum. Sizde takdir edersiniz ki en ince ayrıntısına kadar anlatım yapmak gerçekten zahmetli bir iş. Bu hususta yabancı makalelere başvurabilirsiniz uğraşa uğraşa öğrene öğrene bu kurulumları gerçekleştirebilirsiniz. En kısa zamanda bu konuda bir anlatım yapmayı planlıyorum. İyi günler dilerim.

  • [root@server ~]# systemctl restart named.service
    Job for named.service failed. See ‘systemctl status named.service’ and ‘journalctl -xn’ for details.

    hocam 3 kerede yapmışsın 300 kere denedim başlamadı 🙂

    • Teknograph

      Merhaba, konunun o kısmında bir düzeltme yapmam gerek fakat vakit bulamadığım için bir türlü düzeltemiyorum, mazur görün.
      Aşağıdaki linkteki bind server yapılandırmasına göre yaparsanız sorunsuz çalışacaktır. Sürüm farketmez mantık aynı, config içerikleri aynı şekilde yapılandırmanız kafi.

      https://www.o12.org/bind-dns-server-nasil-kurulur.html

      Kolay gelsin.

  • Süleyman Yılmaz

    Merhaba. /var/run/php-fpm/php-fpm.sock
    Böyle bir dosya yok yüklemeden sonra gelmiyor.

    • Teknograph

      Merhaba, anlatıma sadık kalarak CentOS 7 üzerine kurulum gerçekleştirdiyseniz, php-fpm.sock dosyasının gelmesi gerekir. Adımları gözden geçirin lütfen.

  • incelemeco

    root@test etc]# yum install nginx

    Failed to set locale, defaulting to C

    Loaded plugins: fastestmirror

    Setting up Install Process

    Loading mirror speeds from cached hostfile

    * base: mirror.euserv.net

    * extras: mirror.imt-systems.com

    * updates: mirror.imt-systems.com

    No package nginx available.

    Sanırım artık nginx yum üzerinden indirilemiyor.

    • Teknograph

      Merhaba, sürümünüz CentOS 7 ise, Adım 4′ teki nginx kütüphanesini import etmezseniz nginxi yükleyemezsiniz. Adımları gözden geçirin.

      İyi çalışmalar.

  • Fatih Demir

    Yazı 3 sene önce yayınlanmış ama mükemmel bir emek var ortada. Teşekkürler paylaşım için.
    Büyük ihtimal artık site ile ilgilenemiyorsunuzdur yoğunluğunuzdan dolayı. Bu ve benzeri güncel yazıları takip etmek iyi olurdu.