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

20
13125

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 "" > /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.