CentOS 5 Lighttpd – Php Kurulumu
Salı, Temmuz 15, 2008 20:41Server kurulumları sırasında yoğun olarak insanlar apache ve php ikilisini tercih etmektedir. Ancak son zamanlarda Alexa , Youtube gibi büyük siteler lighttpd’ye geçiş yapmaya başladılar. lighttpd’nin perfonmans olarak çok daha iyi sonuç vermesi daha az memory kullanması , jail chroot imkanına sahip olması (ki sadece bu bile güvenlik açısından tercih edilmesine sebep olan bir özellik) benimde lighttpd yi test etmek istememe yol açtı. Bu karar sonrasında yaptığım ilk şey Floren ile birlikte gerekli incelemeleri başlatmak ve testlere başlamaktı. Ilk olarak testleri düzgün şekilde yapabilmek için ubuntu’dan vazgeçerek kendi bilgisayarıma CentOs 5 kurdum. CentOs 5 i tercih etmemdeki sebep en yeni sürümü olması ve server da kullanacağımız tüm Rpm’leri Floren ile birlikte kendimizin oluşturacak olmasıydı. Makaleyi kendi serverınıza uygulamak istiyorsanız her adımı sırasıyla takip etmenizi ve aşağıdakiler haricinde RPM kullanmamanızı şiddetle tavsiye ederim. Çünkü tüm RPM’ler özel olarak hazırlanmış ve maksimum perfonmans için optimize edilmişlerdir.
Ilk olarak home klasörümüzde redhat isimli bir klasör oluşturuyoruz.
mkdir -p /home/drazil/redhat
Daha sonra /usr/src/redhat/ altındaki tüm dosyaları yeni oluşturduğumuz klasörün altına kopyalıyoruz. -R kodu alt dizinleride kopyalamak içindir
mkdir -p /home/drazil/redhat
Daha sonra kurulumda gerekli olabilecek tüm gerekli yazılımları yüklüyoruz.
# yum -y install \
autoconf automake \
gcc gcc-c++ \
bzip2 bzip2-devel \
gd glib2 glib2-devel \
ImageMagick \
libaio libaio-devel \
libtool \
openldap openldap-devel \
openssl openssl-devel \
pcre pcre-devel
yum install gmp*
Daha sonra var olan tüm RPM leri kullanabilmeniz için gerekli olan Key’i import edeceksiniz. Bu key olmadan RPM’leri malesef kullanamazsınız.
rpm –import /home/drazil/redhat/RPM-GPG-KEY-TECK
Kurulum sıramızı şu şekilde uygulayacaz.
1. Php
2. memcached
3. Lighttpd
4. xCache
5. Mysql
Php Kurulumu :
Php kurulumu için sırasıyla aşağıdaki RPM’leri import ediniz.
rpm -Uvh /home/drazil/redhat/RPMS/i386/php-common-5.1.6-1.el5.i386.rpm
rpm -Uvh /home/drazil/redhat/RPMS/i386/php-cli-5.1.6-1.el5.i386.rpm
rpm -Uvh /home/drazil/redhat/RPMS/i386/php-5.1.6-1.el5.i386.rpm
rpm -Uvh /home/drazil/redhat/RPMS/i386/php-devel-5.1.6-1.el5.i386.rpm
rpm -Uvh /home/drazil/redhat/RPMS/i386/php-pdo-5.1.6-1.el5.i386.rpm
rpm -Uvh /home/drazil/redhat/RPMS/i386/php-mysql-5.1.6-1.el5.i386.rpm
Memcached Kurulumu :
Rpm’leri sırasıyla import ediniz.
rpm -Uvh /home/drazil/redhat/RPMS/i386/memcached-1.2.2-1.el5.i386.rpm
rpm -Uvh /home/drazil/redhat/RPMS/i386/pecl-memcache-2.1.2-1.el5.i386.rpm
Daha sonra memcached’i aşağıdaki kodları sırasıyla uygulayıp aktif hale getiriniz.
chkconfig memcached on
service memcached start
Lighttpd kurulumu için gerekli olan iki dependencies in ilkini rpm lerden ikincisini yum kullanarak yüklüyoruz.
rpm -Uvh /home/drazil/redhat/RPMS/i386/lua-5.1.2-1.el5.i386.rpm
rpm -Uvh /home/drazil/redhat/RPMS/i386/lua-devel-5.1.2-1.el5.i386.rpm
yum install gamin-devel gdbm-devel
Lighttpd Kurulumu :
Rpm leri sırasıyla import ediyoruz.
rpm -Uvh /home/drazil/redhat/RPMS/i386/lighttpd-1.4.15-1.el5.i386.rpm
rpm -Uvh /home/drazil/redhat/RPMS/i386/lighttpd-fastcgi-1.4.15-1.el5.i386.rpm
lighttpd için özel olarak optimize ettiğimiz lighttpd ini dosyasını php.d klasörüne , lighttpd.conf dosyasını lighttpd klasörüne kopyalıyoruz.
cp /home/drazil/redhat/lighttpd.ini /etc/php.d
cp /home/drazil/redhat/lighttpd.conf /etc/lighttpd
Daha sonra dosya izinlerini değiştirip chown komutu ile log dosyasının sahibini değiştiriyoruz.
chmod 0644 /etc/php.d/lighttpd.ini
chmod 0644 /etc/lighttpd/lighttpd.conf
chown lighttpd:root /var/log/lighttpd
En son lighttpd’yi aktif hale getiriyoruz.
chkconfig lighttpd on
service lighttpd start
chcon -R -t public_content_t /var/www
chcon -R -t samba_share_t /var/www
xCache Kurulumu :
Yine özel oluşturduğumuz xCache rpmlerinden birisini import ediyoruz.
rpm -Uvh /home/drazil/redhat/RPMS/i386/xcache-1.2.0-1.el5.i386.rpm from
Daha sonra içeriği aşağıdaki gibi olucak bir php dosyası oluşturuyoruz ve server’a koyuyoruz
echo md5(‘şifreniz’);
Bu dosyası browserınızdan açtıktan sonra çıkacak olan c635c3dad4d8f8c123319ff45d8a0996 gibi değeri /etc/php.d/xcache.ini dosyasındaki şifre kısmına yazıyoruz. Kullanıcı isminide değiştirmeyi unutmayın. Bunlar xCache panelinize login olmanızı sağlayacaktır.
Dosyayı save ettikten sonra aşağıdaki komut ile lighttpd’yi restart ediyoruz.
service lighttpd restart
Daha sonra domain.com/xcache/ adresinden xcache kontrol panelinize giriş yapabilirsiniz.
MySql Kurulumu :
Mysql kurulumu sırasında dikkat etmeniz gereken ilk olgu yine aşağıdaki sıralarla kurmak olacaktır. Dikkat edin arada yum ile kurmanız gereken ayrı bir gereklilik daha var.
rpm -Uvh /home/drazil/redhat/RPMS/i386/mysql-5.0.22-1.el5.i386.rpm
yum install perl-DBD-MySQL
rpm -Uvh /home/drazil/redhat/RPMS/i386/mysql-server-5.0.22-1.el5.i386.rpm
Kurulum tamamlandıktan sonra mysql i aşağdaki kodla çalıştırıyoruz.
service mysqld start
Mysql’e login olmak için aşağıdaki komutu kullanıyoruz.
mysql -u root
Şimdi mysql serverımızı biraz güvenli hale getiricez. Normal olarak mysql ilk kurulum ile birlikte birden fazla kullanıcı ekler. Ilk olarak root kullanıcısı için yeni bir şifre oluşturmak için aşağıdaki kodu giriyorsunuz.
SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘yenişifre’);
Daha sonra kurulum sırasında oluşmuş iki kullanıcıyı kaldırıyoruz
DELETE FROM mysql.user WHERE User = ”;
FLUSH PRIVILEGES;
DELETE FROM mysql.user WHERE Host = ”;
FLUSH PRIVILEGES;
En son olarak root haricinde bir kullanıcı kalıp kalmadığını kontrol etmek için ilk satırdaki kodu giriyoruz.
SELECT User, Host FROM mysql.user;
Eğer aşağıdaki gibi bir cevap alırsak
+——+——————–+
| User | Host |
+——+——————–+
| root | drazil-desktop.lan |
| root | localhost |
+——+——————–+
2 rows in set (0.00 sec)
Bu kodu uygulayarak son kullanıcıyıda kaldırıcaz.
DELETE FROM mysql.user WHERE Host = ‘drazil-desktop.lan’;
FLUSH PRIVILEGES;
Bir sonraki adımımız lighttpd nin kendine has özelliği olan güvenliği hazırlamak. Ilk önce aşağıdaki komutları girerek (root ile) gerekli klasörleri oluşturuyoruz.
mkdir -p /webroot/tmp
mkdir -p /webroot/etc
mkdir -p /webroot/var/log/lighttpd
chown lighttpd:lighttpd /webroot/var/log/lighttpd
chmod 0640 /webroot/var/log/lighttpd
mkdir -p /webroot/home/lighttpd
chown lighttpd:lighttpd /webroot/home/lighttpd
chmod 0750 /webroot/home/lighttpd
Daha sonra aşağıdaki kodu giriyoruz.
ls -dl /webroot/home/lighttpd
Almamız gereken yanıt şu olucak
drwxr-x— 2 lighttpd lighttpd 4096 Jun 12 22:01 /webroot/home/lighttpd
En son olarak jail chroot için gerekli olan bir script oluşturucaz
Aşağıdaki kodu l2chroot.txt isimli bir dosya oluşturarak içine yapıştırın ve kolay erişebileceğiniz bir dosyaya kaydedin.
#!/bin/bash
BASE=$2
[ ! $BASE ] && mkdir -p $BASE || :
echo “Copying files to $BASE …”
FILES=“$(ldd $1 | awk ‘{ print $3 }’ |egrep -v ^’\(‘)”
for i in $FILES
do
DIRECTORY=“$(dirname $i)”
[ ! -d $BASE$DIRECTORY ] && mkdir -p $BASE$DIRECTORY || :
/bin/cp $i $BASE$DIRECTORY
done
LDDIR=“$(ldd $1 | grep ‘ld-linux’ | awk ‘{ print $1}’)”
LDSUBDIR=“$(dirname $LDDIR)”
if [ ! -f $BASE$LDDIR ]; then
echo “Copying $LDDIR $BASE$LDSUBDIR …”
/bin/cp $LDDIR $BASE$LDSUBDIR
else
:
fi
Dosyayı kaydettikten sonra sırasıyla aşağıdaki kodları giriyoruz.
mv /home/drazil/tmp/l2chroot.txt /bin/l2chroot
chmod +x /bin/l2chroot
