CentOS 6.3 – Apache, Mysql, PHP, FTP, PhpMyAdmin, Bind DNS Kurulumları

4
6771
Centos-php-apache-mysql-logo
Centos-php-apache-mysql-logo
Centos-php-apache-mysql-logo
Centos-php-apache-mysql-logo

CentOS üzerinde apache, mysql, php gibi yapıları çalıştırmak için genelde cpanel gibi hosting kontrol panelleri kurup kolay yönetim sağlıyoruz. Ancak az domain olduğunda yada lisansa para ödememeyi düşündüğümüz zamanlarda manuel olarak bu servisleri kurup yapılandırmak gerekiyor. Bu makalemiz de biraz bunlara değineceğiz. Open source yazılımlarda genel olarak versiyonlara dikkat ederek hareket etmeniz oluşabilecek hataları önleyecektir. Bu yüzden makalemizde olabildiğince versiyonları belirterek hazırladık. Sizde kurulum sırasında uygun versiyonların olduğuna emin olmanızda yarar var.

Apache, MySQL, php, php-mysql, mysql-server kurulumları için aşağıdaki adımları takip edebilirsiniz.

RPM dosyasından yum repo’larını güncelliyoruz.
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

Yum aracılığıyla kurulumlarımızı gerçekleştiriyoruz.

# yum install httpd mysql php php-mysql mysql-server wget nano -y

Apache ve mysql’in otomatik olarak çalışması için chkconfig ile startup’a ekliyoruz.
# chkconfig httpd on
# chkconfig mysqld on

Apache ve mysql’i çalıştırıyoruz.
# /etc/init.d/httpd start
# /etc/init.d/mysqld start

# mysqladmin -u root password ‘Yeni-Mysql-Sifresi-Belirtiniz’

FTP Server kurulumu için yine yum ile proftp server’ı kuruyoruz.

# yum install proftpd -y

FTP Server’ı başlatıyoruz.
# /etc/init.d/proftpd start

Startup’a ekliyoruz.
# chkconfig proftpd on

Proftpd’nin config’ini ayarlamak için conf dosyasına müdahale edebilirsiniz. FTP portunu değiştirmek, bağlantı sayısını ayarlamak gibi işlemleri buradan gerçekleştirebilirsiniz. Default halde pek bir değişiklik yapmanıza gerek yok.
# nano /etc/proftpd.conf

FTP Server için user oluşturalım.
# useradd kullaniciadi (/home klasörünün içerisine oluşturur.)
# passwd kullaniciadi (Kullanıcının şifresini belirler.)
# cd /home
# chown -R kullanici:kullanici kullanici_klasoru/ (klasöre kullanıcı sahipliği atamak.)
# chmod 755 /home/kullanici_klasoru
# mkdir -p /home/kullanici_klasoru/http
# mkdir -p /home/kullanici_klasoru/logs

FTP user’ımızı oluşturduğumuza göre içerisine bağlanıp web sayfanıza ait verileri atabilirsiniz. Şimdide web sayfanızı apache config’ini yapalım.

# nano /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
ServerAdmin alanadi.com
DocumentRoot /home/kullanici_klasoru/http

ServerName alanadi.com
ServerAlias www.alanadi.com

ErrorLog /home/kullanici_klasoru/logs/alanadicom-error_log
CustomLog /home/kullanici_klasoru/logs/alandicom-access_log common

<Directory “/home/kullanici_klasoru/http”>
AllowOverride All
Allow from all
</Directory>
</VirtualHost>

Her yeni eklemede üstteki config’i uygun şekilde güncelleyip apache config’inize ekleyebilirsiniz.

Biraz da güvenlik yapalım.
# usermod -s /sbin/nologin kullanıcı_adi (Kullanıcının root erişimi engellenir.)
# /etc/init.d/httpd start

MySQL Server’daki tabloları yönetmek, user v.s. oluşturmak için genelde phpmyadmin’i kullanırız. Web üzerinden çalıştığı ve bilinen bir problemi olmadığı için çok başarılı bir yapıdır. Kurulumu için yine yum’u kullanıyoruz.

# yum install phpMyAdmin -y

Kurulumdan sonra phpmyadmin apache config’inden emin olalım. Alias kayıtları bu şekildeyse bir düzeltmeye ihtiyaç yoktur. Kayıtlar yok ise ekleyelim.
# nano /etc/httpd/conf.d/phpMyAdmin.conf

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

Aynı config içerisinde # ile başlayan satırlar yanlızca lokal bağlantın için erişime açılır. Tüm dünyaya açmak için # işareti ile bu engel kaldırılır.
<Directory /usr/share/phpMyAdmin/>
<IfModule !mod_authz_core.c>
#Order Deny,Allow
#Deny from All
#Allow from IP_ADRESI
#Allow from ::1
</IfModule>
</Directory>

PHPMyAdmin config’i içerisinde http üzerinden kimlik doğrulaması yapmayı aktif edelim.

# nano /etc/phpMyAdmin/config.inc.php
$cfg[‘Servers’][$i][‘auth_type’] = ‘http’; (Kimlik doğrulama tipi seçilmelidir. Önerilen http tipidir.)

# /etc/init.d/httpd restart

http://IPADRESI/phpmyadmin adresinden phpmyadmin’e erişebilirsiniz.

SSH üzerinden MySQL Database oluşturmak ve şifre atamak ve yetkilerini verebilmek için aşağıdaki adımları izleyebilirsiniz. PHPMyAdmin kurduğunuz için phpmyadmin üzerinden de görsel olarak bu işlemi gerçekleştirebilirsiniz.
# mysql -u root -p
# CREATE DATABASE db_adi;
# GRANT USAGE ON db_adi.* to db_kullaniciadi@localhost IDENTIFIED BY ‘db_sifresi’;  (Veritabanı adı, kullanıcı adı ve şifreyi oluşturmak içindir.)
# GRANT ALL ON db_adi.* to db_kullaniciadi@localhost;  (Veritabanı ile kullanıcı adını bağlamak içindir.)
# DROP database db_adi;  (Veritabanını silmek içindir.)
# DROP user kullaniciadi@localhost;  (Kullanıcıyı silmek içindir.)

DNS içinde bind’ı tavsiye ediyoruz. Bunun için aşağıdaki adımları takip edebilirsiniz.

Yine yum üzerinden bind kurulumunu ve gerekli tool’ları yükleyelim.
# yum install bind bind-utils bind-chroot -y

Bind config dosyasında aşağıdaki yönlendirmelere göre ihityacımız olanları gerçekleştirelim.

# nano /etc/named.conf

acl recurseallow { NETWORK_BLOG_IP/24; }; /* Resursive query’lere izin vereceğimiz network için bir ACL tanımlıyoruz. */

options {
listen-on port 53 { 127.0.0.1; SUNUCU_IP_ADRESI; }; /* 53 portun hangi ip üzerinden dinleneceğini belirtiyoruz. */

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; }; /* Genel olarak heryerden sorgu yapılmasına izin veriyoruz. */
allow-recursion { recurseallow; }; /* Daha önce tanımladığımız recurseallow isimli ACL’e recursive sorgulama izni veriyoruz. */
allow-transfer     { localhost; SUNUCU_IP_ADRESI; }; /* Hangi iplerin zone transfere (zone kopyalamaya) izini olduğunu belirtiyoruz. */

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”;
};

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

zone “.” IN {
type hint;
file “named.ca”;
};

zone “alanadi.com” IN {
type master;
file “/var/named/alanadi.com.db”;
allow-update { none; }; /* Burada da master zone üzerinde dinamik update’e izin vermediğimizi belirtiyoruz. */
};

include “/etc/named.rfc1912.zones”;
include “/etc/named.root.key”;

Bind genel config’i hazırladıktan sonra alan adlarına ait kayıtları oluşturalım. Bunun için aşağıdaki yönlendirmeleri takip edebilrisiniz.

# nano /var/named/alanadi.com.db

Aşağıyı tamamen içerisine yapıştıralım. Gerekli düzenlemeleri saglayalim.
$TTL 86400
@   IN  SOA     ns1.alanadi.com. info.alanadi.com. (
2014020801  ;Serial
3600        ;Refresh
1800        ;Retry
604800      ;Expire
86400       ;Minimum TTL
)

; NS sunucularini belirtiyoruz:
IN     NS              ns1.alanadi.com.
IN     NS              ns2.alanadi.com.

; NS’lere ait kayitlar. (bu domain ayni zamanda ana zone oldugundan ns1 ve ns2’yi de tanimliyoruz.):
ns1                 IN     A               SUNUCU_IP_ADRESI
ns2                 IN     A               SUNUCU_IP_ADRESI

; ve diger tum kayitlar.
@                   IN     A               SUNUCU_IP_ADRESI
www                 IN     CNAME           @
@                   IN     MX      10      mail.alanadi.com.
mail                IN     A               SUNUCU_IP_ADRESI
webmail             IN     A               SUNUCU_IP_ADRESI

DNS Servisimi startup’a ekleyelim.

# chkconfig named on && service named start

Domain Zone kayıtları ile ilgili sorun olup olmadığını kontrol etmek için;

# named-checkzone alanadi.com /var/named/alanadi.com.db

# http://www.intodns.com/alanadi.com (DNS Zone kaydımızı kontrol edelim.)

Makale biraz uzun oldu ama bir kontrol paneli kurulunca yapılan bütün ayarları manuel olarak yapılması için herşeyden bahsettiğimizi düşünüyorum.

Not: Makalenin sizlerle buluşmasını sağlayan, günlerce tek tek test yapıp deneyen, herşeyi tek tek yazan adam, Serkan Ceylan‘a teşekkürler.

4 YORUMLAR

  1. Üstat mysql kurulumda sorun çıkıyor mysql şifre belirlemede sorun çıkaran oluyorsa sırasıyla şunları denesin

    yum install mysql mysql-server

    chkconfig –levels 235 mysqld on

    /etc/init.d/mysqld start

    mysql_secure_installation

    Şifre belirleyin önünüze çıkanlara y deyin yeterli oluyor

    Bu arada ftp serverda user belirlemeyi bilmiyordum sayende öğrendim sağolasın büyüksün üstat birde şu wirtual host ve mail server kurulumu öğretsen bir türlü beceremiyorum

  2. Hocam elerinize sağlık başka hiçbir yerde boyle detayli anlatim yok. Supersiniz.
    Bide hocam bu sekilde kullanmak , panel kullanmaktan daha mi az sunucuyu yorar. Yani bu sekildemi, yoksa panel kullanincami sunucu daha az kasılır.Tesekkur ederim

  3. Merhabalar Abdullah Bey,

    Her zaman için panel kullanmak extra yük getirir. Ancak çok fazla domain’iniz varsa panel kullanmamak da yönetim yükü getirir. Ayrıca sistemlerde bilgili değilseniz panel kurduuğunuzda bir çok güvenlik açığı ayar v.s. kendisi yaptığı için de artınız da olabilir. Burada biraz neye ihtiyacınız olup-olmadığını düşünüp karar vermek gerekiyor aslında.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.