Ubuntu – Apache Rewrite Modulü Kurulumu (Etkinleştirilmesi)

Merhaba,

Ubuntu platformunda rewrite kurulumunu(etkinleştirilmesi) anlatacağım. İşinize yarayacaktır diye düşünüyorum. (apache kurulu varsayılmıştır)

Ne işe yarar bu modül?

Apache web sunucusunda URL yi yeniden yazma ve düzenleme iznini verir.

Tam olarak ne işe yaradığını öğrenmek için arşivimizdeki bu yazıyı okumanızı tavsiye ediyorum.

sudo a2enmod rewrite

Yukarıdaki komutu çalıştırarak modülü etkinleştiriyoruz. Daha sonra ilgili projenizin vhost dosyasında birkaç düzenleme yapmamız gerekecek.

sudo nano /etc/apache2/site-available/default

Açılan vhost dosyasında aşağıdaki değişiklikleri yapmanız gerekiyor. İlk açtığınızdaki durumunu ve yanına okla yapmanız gereken düzenlemeyi belirtiyorum.

AllowOverride None -> AllowOverride All

Görmüş olduğunuz tüm “AllowOverride None” ları “AllowOverride All” a çeviriyoruz ve kaydedip çıkıyoruz. Son olarak apache‘yi yeniden başlatacağız.

sudo /etc/init.d/apache2 restart

Modül artık aktifleşti. Projenizde kullanabilirsiniz, hayırlı olsun.

Ubuntu nginx uzerine php fastcgi kurulumu (php-fcgi)

Daha önceden bu yazımızda nginx kurulumunu anlatmıştık. (sadece kurmak, ayarlamak değil.) Şimdi ise, nginx üzerine php fastcgi kurma işlemini yapalım.

Aşağıdaki komut ile sistemimize gerekli paketleri kuralım.

apt-get install php5-cli php5-cgi spawn-fcgi psmisc

Artık sistemimizde php fcgi ile ilgili paketler yüklendi. Ancak bunu dürtecek bir mekanizmamız henüz yok. Bu yüzden nginx ayarlarında henüz bunu çağıramıyoruz. Şimdi bunu dürtebilir hale getirelim.
Aşağıdaki içerikler ile /usr/bin/php-fcgi adında bir dosya üretelim. Bu dosyaya göre php 9000 nolu portta çalışacak, ve 127.0.0.1 (localhost) için hizmet verecektir. Bu hizmet www-data adlı kullanıcı ve www-data adlı grup ile ilgili oluşacaktır.

/usr/bin/php-fcgi dosyası

#!/bin/bash

FASTCGI_USER=www-data
FASTCGI_GROUP=www-data
ADDRESS=127.0.0.1
PORT=9000
PIDFILE=/var/run/php-fcgi/php-fcgi.pid
CHILDREN=6
PHP5=/usr/bin/php5-cgi

/usr/bin/spawn-fcgi -a $ADDRESS -p $PORT -P $PIDFILE -C $CHILDREN -u $FASTCGI_USER -g $FASTCGI_GROUP -f $PHP5

Chmod vererek de çalıştırabilir hale getirelim. Bunun için de aşağıdaki kodu çalıştıralım :

chmod +x /usr/bin/php-fcgi

Her şey yolunda gidiyor gibi gözüküyor. Ancak bu bir hizmet ve başlatma durdurma gibi özellikleri olması gerekiyor.
yani özetle, /etc/init.d/ içerisine bir şeyler yapmamız gerekiyor.

 

/etc/init.d/php-fcgi adlı bir dosya üretiniz.

/etc/init.d/php-fcgi dosyası : 

#!/bin/bash

PHP_SCRIPT=/usr/bin/php-fcgi
FASTCGI_USER=www-data
FASTCGI_GROUP=www-data
PID_DIR=/var/run/php-fcgi
PID_FILE=/var/run/php-fcgi/php-fcgi.pid
RET_VAL=0

case "$1" in
    start)
      if [[ ! -d $PID_DIR ]]
      then
        mkdir $PID_DIR
        chown $FASTCGI_USER:$FASTCGI_GROUP $PID_DIR
        chmod 0770 $PID_DIR
      fi
      if [[ -r $PID_FILE ]]
      then
        echo "php-fcgi already running with PID `cat $PID_FILE`"
        RET_VAL=1
      else
        $PHP_SCRIPT
        RET_VAL=$?
      fi
  ;;
    stop)
      if [[ -r $PID_FILE ]]
      then
        kill `cat $PID_FILE`
        rm $PID_FILE
        RET_VAL=$?
      else
        echo "Could not find PID file $PID_FILE"
        RET_VAL=1
      fi
  ;;
    restart)
      if [[ -r $PID_FILE ]]
      then
        kill `cat $PID_FILE`
        rm $PID_FILE
        RET_VAL=$?
      else
        echo "Could not find PID file $PID_FILE"
      fi
      $PHP_SCRIPT
      RET_VAL=$?
  ;;
    status)
      if [[ -r $PID_FILE ]]
      then
        echo "php-fcgi running with PID `cat $PID_FILE`"
        RET_VAL=$?
      else
        echo "Could not find PID file $PID_FILE, php-fcgi does not appear to be running"
      fi
  ;;
    *)
      echo "Usage: php-fcgi {start|stop|restart|status}"
      RET_VAL=1
  ;;
esac
exit $RET_VAL

Neredeyse geldik. Aşağıdaki komutlarla da php-fcgi yı başlatabilirsiniz.

chmod +x /etc/init.d/php-fcgi
update-rc.d php-fcgi defaults
/etc/init.d/php-fcgi start

Tabi bu noktada nginx imizi de artık ayarlamamız gerekiyor.

/etc/nginx/sites-available/www.deneme.com dosyası oluşturalım. 

server {
    server_name www.deneme.com deneme.com;
    access_log /srv/www/www.deneme.com/logs/access.log;
    error_log /srv/www/www.deneme.com/logs/error.log;
    root /srv/www/www.deneme.com/public_html;

    location / {
        index  index.html index.htm;
    }

    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /srv/www/www.deneme.com/public_html$fastcgi_script_name;
    }
}

Artık /srv/www/www.deneme.com/public_html/index.php dosyamızı ve içerisine phpinfo(); komutunu yazıp çalıştırabilir hale geldik. hemen bir nginx i başlatalım, veya çalışıyorsa yeniden başlatalım.

 

service nginx restart
images

ubuntu nginx kurulumu (Ubuntu 12.04)

Nginx kurulumu, kısa anlatımdan göreceğiniz gibi gayet basit.
Aşağıdaki komut ile Ubuntu sisteminize doğrudan nginx’i kurabilirsiniz.

root@ubuntu:/home/emre# : apt-get install nginx

Bu komuttan sonra

service nginx start
service nginx stop

gibi komutlar ile nginx hizmetinizi başlatıp durdurabilirsiniz.

nginx in çalışıp çalışmadığını ise,

ps aux | grep nginx

yazarak ayıklayabilirsiniz.

child pid … exit signal Segmentation fault (11) – cpanel – centos

Centos 5.5 içinde cpanel yüklü sistemde child pid … exit signal Segmentation fault (11)hatası almaktaydım. Her yerde memory’nin yetmediğini belirten , diskin tutarsız olduğunu felan söyleyen yazılar gördüm.

Bu hatayı , apache nin error loglarından görebiliyordum, son kademe log olarak burada yakalayabildim. Ancak bir detay vermiyordu.

Php 5.2 sistem, mysql 5.1 kullanıyorum.

Daha sonra hatayı tespit etmek için tüm veritabanını local bilgisayarıma aktardım, ve aynı hatayı almaya çalıştığımda, windows ortamında , (php5.3, mysql 5.5) bana “Maximum function nesting level of ‘100’ reached” diye bir hata verdi. Yani diyor ki, “içiçe 100den fazla derinliğe kadar indin, sınıra ulaştın”. Anladığım kadarıyla, php5.2 de bunu handle edebilecek bir mekanizma yok. Hatanın sebebi , sınıf içinde recursive olarak kendi sınıfından üreten bir metodun es kaza yanlış çalışması durumu vardı. Şöyle :

class X{
    function load(){
        //...bişeyler bişeyler...
        $this->load();
    }
}

Nitekim, koddan bu tarz bir döngü oluşturabilecek durumun önüne geçtim, ve hata düzeldi.

 

htpasswd sifre olusturmak ve ayarlamak

Herhangi bir yerde bir dosya olusturun.
Bu linki kullanarak (kullanıcı adı ve şifre gireceksiniz) oluşacak datayıyeni açtığınız dosya içine kopyalayıp kaydedin.

Şimdi Apachenin bu dosyayı ilgili sitemiz için görmesini sağlayalım.

2 yöntem var.

1. HTACCESS dosyası yardımıyla htpasswd ayarlamak

.htaccess dosyasının içinden yapabiliriz. Bunu anlatan bir sürü site var. (biri budur).

2. HTTPD.Conf içerisinden htpasswd ayarlamak

ilgili klasörü tagiyle apache ye tarif edelim. İçinde de htpasswd dosyasını gösterelim.
Linux :
<directory “/var/www/sites/deneme”>
AuthName “sifre giriniz”
AuthType Basic
AuthUserFile /var/www/sites/deneme/htpasswd_olan_dosya_adi
require valid-user

</directory>

Windows :
Windowstaki tek fark, dosya yollarının başında disk sürücünüzü yazmaktır.
<directory “D:/web/deneme”>
AuthName “sifre giriniz”
AuthType Basic
AuthUserFile D:/web/deneme/htpasswd_olan_dosya_adi
require valid-user

</directory>

Daha sonra da , apache’mize restart attıktan sonra, işlem tamamlanmış olur.