CentOS 6.4 üzerine Linux Apache MySql Php – LAMP Server Kurulumu
Neden sizin de her şeyiyle kullanılır vaziyette, performanslı bir web sunucunuz olmasın?
CentOS ile sıfırdan sonuna kadar tam performanslı ve çalışır bir web sunucusu inşa edeceğiz. Bu işlem için yine her zaman ki gibi yine benim favorim RedHat dağıtımlarından biri olan CentOS ile olacak. www.centos.org sitesinden en son sürüm olan CentOS 6.4’ü indirelim. Ben yine her zamanki gibi minimal imajı indiriyorum, sonrasında işime yarayacak olan paketlerle devam edeceğim. Lazım olmayacak paketleri kurmuyorum ve yine lazım olmayacak servisleri tamamen kapatıyorum. İsterseniz hemen kuruluma başlayalım ve indirdiğimiz imajı sunucuya mount edelim. Sonra karşınıza aşağıdaki karşılama ekranı gelecektir. İlk seçenek ile devam edeceğiz,
Enter tuşuna basarak devam edelim,
Yukarıda göreceğiniz üzere selamlama ekranı geliyor. Bu ekran aynı zamanda indirmiş olduğunuz DVD kalıbının kurulum öncesi problem durumunu incelemeye yarıyor. Siz eğer kontrol etmek isterseniz OK seçeneği ile devam edebilirsiniz. Ben bu iso kalıbı ile birçok kurulum yaptığımdan ve problem olmadığından emin olduğum için skip seçeneğini seçerek, yani bu aşamayı atla diyerek geçiyorum.
Ve karşımıza yukarıdaki grafik ekran geliyor. Bundan sonrasında nisbeten daha alışık olduğumuz grafik ekranlar ile devam edeceğiz. En azından kurulum bitene kadar. Next diyerek devam edelim,
Dil seçenekleri, Eğer Türkçe seçerseniz ara yüzdeki her şey Türkçeye dönecek. Ben ara yüz de İngilizce kullanmayı tercih ediyorum. Zaten işim bittiğinde bu grafik ekranları kullanmayacağım. Benim tüm işlemlerim sistem bazında Command-Line tarafında olacak. Next diyelim devam edelim,
Klavye seçenekleri, ben Türkçe bir klavye kullandığım için, Türkçe seçerek devam edeceğim. Alışık olduğum klavye düzeninden vazgeçmek istemiyorum çünkü Next ile devam edelim.
Ve şimdi Disk yapılandırma ekranı geldi karşımıza. Eğer spesifik bir disk kullanıyorsanız, FC, iSCSI yada başka bir tür, seçim yapabilirsiniz. Ben zaten sanal ortam kullandığım için basic storage device seçeneği ile devam ediyorum,
Standart bir uyarı, Diskinizin içeriği tamamen silinecek emin misiniz, Yes, Discard any data seçeneğini tıkladıktan sonra next diyerek devam ediyoruz,
Sunucu ve domain ismi veriyoruz. Ben isim olarak yukarıdaki gibi localhost.localdomain şeklinde kullanmıyorum. Zaten kendisi de bu şekilde geliyor. Eğer isterseniz kendi istekleriniz doğrultusunda bu ismi değiştirebilirsiniz. Next ile devam edelim,
Regional Settings ekranı, saat ve lokasyon bilgilerinin düzenlenmesi için gerekli bilgileri içeriyor. Bizim için gerekli olanları seçerek devam edelim,
root password’ünü vererek devam edelim,
Partition’larımızıda yapılandıralım. Eğer farklı bir yapı kullanacaksanız istediğiniz gibi yapılandırabilirsiniz. Ben tüm alanı bu sunucu için yapılandırdığımdan en üstteki seçenek ile devam ediyorum.
Next diyelim,
Tüm datalara elveda demeye hazır mısınız? O zaman “Write changes to disk” diyelim ve devam edelim,
Ve karşımızda kurulum seçenekleri. Burada istediğiniz tipte kurulum yapabilirsiniz. Bir web server kuracaksanız ilgili paketler yüklenecektir. Yok database sunucu kurmanız lazımsa yukarıdaki seçeneklerden işaretlediğiniz takdirde database için gerekli bileşenler kurulacaktır. Ben gerekli paketleri daha sonra ilave edeceğimden minimal olarak kuracağım. Bu seçenek ekstra kaynak kullanacak paketleri içermeyecek böylece stabil ve performanslı bir sistem elde edeceğiz. Next diyelim devam edelim,
ve kutulum başladı. Minimal kurulum için gerekli tüm paketlerin kurulumu tamamlanacak.
Kurulum tamamlandığında doğal olarak reboot gerekecektir. Artık DVD’yi çıkarabilirsiniz. Kurulum sonrası çalışır temiz bir sistem elde etmiş oluyoruz. Minimal kurulumda, Sistem kurulduktan sonra ne hikmetse ethernet kartı kapalı şekilde geliyor. Biz hemen gördüğünüz gibi yukarıdaki ifup komut ile ethernet kartımızı enable edelim. Şu şekilde,
# ifup eth0
Ethernet kartımız DHCP sunucudan ip alacaktır. Fakat, bu işlem ile eth0 kartı şimdilik enable oldu. Sistemi restart ettiğinizde yine eth0’ın disable olarak geldiğiniz göreceksiniz. Bu işi kalıcı hale getirelim o halde. Hemen marifetli editörümüz nano’yu internetten sunucumuza yükleyelim. Şu komut ile
# yum -y install nano
Nano yüklendikten sonra network kartının konfigürasyon dosyasını düzenleyelim ve hem ipsini sabitleyelim hem de her açılışta otomatik çalışır hale getirelim.
# nano /etc/sysconfig/network-scripts/ifcfg-eth0
Komutu sonrası karşımıza gelen default konfigürasyon şu şekilde olacaktır,
Dosya içeriğini şu şekilde değiştiriyoruz, kırmızı olan bölümler değiştirilecek yada ilave edilecek,
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.55
NETMASK=255.255.255.0
GATEWAY=192.168.1.250
TYPE=Ethernet
ONBOOT=yes
HWADDR=00:0C:29:EB:DB:D2
UUID=73276ef4-b5e8-4600-bba2-e40cd7d273ff
NM_CONTROLLED=yes
Servisi start edelim, yada reboot komutu ile sistemi komple restart’ta edebilirsiniz.
# service network restart
Bu işlem sonrası sistemi upgrade ederek en son sistem güncellemelerini yükleyelim. Gerekli komut şöyle olacak,
# yum -y update
Bu komut sonrası sistemimiz güncellenmiş ve sistem artık gerekli paketlerin kurulumu için hazır hale gelmiş olacak. Şimdi öncelikle sunucumuz üzerinde kullanılmayacak servisleri kapatalım.
# chkconfig netfs off ; chkconfig mdmonitor off
Gerekli tüm paketlerin yüklenmesi için gereken komutu verelim, bu komut ayrıca gerekli paketlerinde yüklenmesini sağlayacaktır.
# yum -y install httpd php php-mysql mysql mysql-server mod_ssl
Paketler yüklendikten sonra servis konfigürasyonları ile devam edelim. Servisleri sistem açılışında otomatik hale getirelim ve start edelim, önce httpd.conf dosyasına küçük bir değişiklik uygulayacağız. Bunun için şu komutu kullanacağız,
# echo “ServerName localhost:80” >> /etc/httpd/conf/httpd.conf
# echo “ServerName localhost:443” >> /etc/httpd/conf/httpd.conf
Sonrasında ise servisleri otomatik hale getirelim,
Şimdi MySql’i güvenli hale getirelim, kırmızı kısımlar benim verdiğim cevaplar. İstekleriniz doğrultusunda değişik cevaplar verebilirsiniz.
# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we’ll need the current
password for the root user. If you’ve just installed MySQL, andy
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): Enter (ilk kurulumda password boştur)
OK, successfully used password, moving on…
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
… Success!
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
… Success!
Normally, root should only be allowed to connect from ‘localhost’. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] n
… Success!
By default, MySQL comes with a database named ‘test’ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment
Remove test database and access to it? [Y/n] y
– Dropping test database…
… Success!
– Removing privileges on test database…
… Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
… Success!
Cleaning up..
All done! If you’ve completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!
MySql konfigürasyonu tamamlandı ve güvenli hale getirildi. Önceden MySql sizden username ve password istemiyorken artık MySql’e login olmanız için, kullanıcı adı ve şifre girmeniz gerekecek. Sırada firewall konfigürasyonumuz var. Linux ile birlikte herkesin bildiği üzere oldukça stabil iptables isimli bir firewall geliyor. Bu firewall için gerekli iki rule
# iptables -I INPUT 1 -p tcp –dport 80 -j ACCEPT
# iptables -I INPUT 2 -p tcp –dport 443 -j ACCEPT
# service iptables save
# service iptables restart
Yetkilendirme işimizde tamam. Sunucumuz hem http hemde https olarak isteklerinize cevap verecek nitelikte çalışır hale geldi. Bir browser vasıtası ile sunucunun ipsini yazarak ulaşabilirsiniz. Birde PHP versiyonunu kontrol edelim. Bunun için küçük bir kod yazmanız gerekiyor. Hemen yazalım ve bakalım,
# nano /var/www/html/phpinfo.php
<?php
phpinfo();
?>
Yukarıdaki metni dosya içine yazarak ctl+x tuş kombinasyonu ile kayıt ederek çıkabilirsiniz. Sonra bir browser’ın adres kısmına http://192.168.1.55/phpinfo.php yazarak PHP versiyon kontrolü yapabilirsiniz. Çıkan sonuç aşağıdaki gibi olacak ve sistemde kurulu olan PHP bilgilerini görebileceksiniz,
Son olarak sunucumuza örnek bir site konumlandıralım. Ben bir site taslağı indirip gerekli lokasyona kopyalıyorum. Google’a free site template diyerek aratırsanız çok fazla seçenek bulabileceksiniz. İnternetten aradıktan sonra bir site taslağı bulup indirdim ve /var/www/html/test lokasyonu altına kopyaladım. Sonrarında ise Apache sunucumuzun konfigürasyon dosyasına bir ilave yapıyoruz. Bunun için,
# nano /etc/httpd/conf/httpd.conf
Komutunu kullanarak dosyayı açıyoruz. Biraz uzunca bir dosya, ve biz en alt satıra gidiyoruz, ve şunları ilave ediyoruz, tabiiki siz yine istekleriniz doğrultusunda değişiklikler yapabilirsiniz.
<VirtualHost *:80>
ServerAdmin bpoyraz@bilgehanpoyraz.com
ServerName localhost.localdomain
DocumentRoot /var/www/html/test
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/html/test.com/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Şimdi bir browser vasıtası ile http://192.168.1.55 adresini açmayı deneyelim. Eğer bir problem yoksa karşınıza benim kullandığım gibi sizin konumlandırdığınız site template’i gelecektir
Eğer gerekli DNS kayıtlarını yapabilirseniz ip yerine site ismi ile de aynı şekilde site’nin açıldığını göreceksiniz. Fark ettiyseniz sistemimize dışarıdan hiçbir paket yüklemedik. Tamamen CentOS Linux repository’sini kullandık. Bunun faydası şu şekilde olacaktır, her ne zaman sistemi yum -y update komutu ile güncellemek isterseniz, sisteme ait tüm paketler son versiyona çıkartılacaktır. Eğer dışarıdan bir paket kurmuş olsaydınız, o paketleri her seferinde elle yenilenmesi gerekecekti.
Sunucunuzu güzel günlerde kullanmanız dileğiyle…