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.
Ü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
Gayet Başarılı Bir Anlatım Olmuş. Elinize Sağlık
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
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.