CentOS 6.2 ve RedHat 6.2 e nginx PHP-FPM kurulumu

  1. su - ile root oluyoruz.
  2. php-fpm official CentOS repositorylerinde yok. bu yuzden additional repositoryleri enable ediyoruz:
  3. rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
    rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
    (Bu linkler bazen calismayabilir, epel-release-6-5.noarch.rpm ya da remi-release-6.rpm‘i farklı bir kaynak üzerinden bularak rpm -Uvh komutu ile kullanabiliriz.)

  4. /etc/yum.repos.d/ altında nginx.repo adında bir repo dosyası oluşturuyoruz. Bu repo nginx’in kurulum deposu olacaktır.
  5. CentOS icin nginx.repo içerisine bunu yaziyoruz :

    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=0
    enabled=1

    RedHat icin nginx.repo içerisine bunu yaziyoruz :

    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/
    gpgcheck=0
    enabled=1

  6. Repoyu oluşturduktan sonra aşağıdaki komutla kurulumu gerçekleştirebiliriz.
    yum --enablerepo=remi install nginx php php-fpm php-common
  7. Soyle bir sorun cikabilir:

    Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

    Bu durumda epel repository’de bir sorun var demektir. O zaman biz de epel i kaldiririz. Bunun icin:
    /etc/yum.repos.d/ deki ilgili dosyalari siliyoruz ve
    /var/cache/yum/ daki cache klasorunu siliyoruz.
    Ayni komutu tekrar calistirdigimizda yuklenmesi lazim.

  8. nginx kurulumu ardından Php 5.3.10 modüllerini kurabiliriz.
  9. APC (php-pecl-apc) : Php kodlarını önbelleklemeye yarar. Bir çeşit php hızlandırıcısı, önbellekleme sistemidir.
    CLI (php-cli) : Php için komut satırı arayüzüdür.
    PEAR (php-pear) : Php için kod deposudur diyebiliriz. Php yazılımcılarının işini kolaylaştıran öntanımlı bazı özellikler ve fonksiyonların toplandığı kod deposu.
    PDO (php-pdo) : MySQL, MsSQL, Oracle, SQLite gibi veritabanları ile büyük düzenlemelere gerek kalmadan bağlantı kurulmasına imkan veren sürücü, veri erişim katmanıdır.
    MySQL (php-mysql) : MySQL veritabanı ile işlem yapabilmenizi sağlayan modüldür.
    PostgreSQL (php-pgsql) : PostgreSQL veritabanı ile işlem yapabilmenizi sağlayan modüldür.
    MongoDB (php-pecl-mongo) : PHP MongoDB veritabanı ile işlem yapabilmenizi sağlayan modüldür.
    SQLite (php-sqlite) : SQLite veritabanı ile işlem yapabilmenizi sağlayan modüldür.
    Memcache (php-pecl-memcache) : Memcache, dinamik web yazılımlarında veritabanı sorugusunu azatlmaya ve uygulamayı hızlandırmaya yarayan bir önbellekleme (cache) sistemidir. Detaylı bilgi resmi web sitesinde mevcuttur. http://memcached.org/
    Memcached (php-pecl-memcached) : Memcache ile aynı işlevi gören farklı bir geliştirici tarafından hazırlanmış önbellekleme sistemidir. İsim benzerliği pek çok kullanıcının kafasını karıştırmaktadır. Resmi sitesinden detaylı bilgi edinebilirsiniz. http://libmemcached.org/libMemcached.html
    GD (php-gd) : GD grafik kütüphanesi gerektiren php yazılımları için gerekli modül.
    XML (php-xml) : Xml kullanan php yazılımları için gerekli modül.
    MBString (php-mbstring) : Latin alfabesi dışındaki alfabeye sahip dillerde kullanılan her bir karakterlerin kapladığı alan latin alfabesindeki dillerin kapladığı alandan daha fazladır. MBString ise latin alfabesi dışında bir alfabeye sahip dillerin php’de kullanılabilmesine imkan tanıyan bir modüldür. Örneğin birden fazla dilde yayın yapacak bir portal projeniz varsa kurulu olması gerekir.
    MCrypt (php-mcrypt) : Standart metinleri şifrelemeye olanak tanıyan bir php modülüdür. Örneğin magento gibi bir açık kaynak kodlu eticaret sistemi kuracaksanız cookie’lerin şifrelenebilmesi için bu modüle ihtiyacınız olacaktır.

    Daha fazla modül için detaylı bilgi: http://www.php.net/manual/tr/funcref.php

    Kurulum için aşağıdaki komutu çalıştırmamız yeterli. İhtiyacımız olmayanları çıkarabiliriz.

    yum --enablerepo=remi install php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml

  10. Nginx ve php-fpm’i başlatıyoruz.
  11. /etc/init.d/nginx start
    /etc/init.d/php-fpm start

  12. Açılış sırasında nginx ve php-fpm’i otomatik başlatmak için:
  13. chkconfig --add nginx
    chkconfig --levels 235 nginx on

    chkconfig --add php-fpm
    chkconfig --levels 235 php-fpm on

  14. Bu işlemler tamamlandıktan sonra nginx php desteği ile sistemimize kurulmuş olacaktır.
  15. nginx varsayılan kurulum dizinleri ve dosyaları şu şekildedir :

    Varsayılan nginx yayın dizini : /usr/share/nginx/html
    Varsayılan nginx config dosyası : /etc/nginx/nginx.conf
    Varsayılan virtual host dosyası : /etc/nginx/conf.d/default.conf
    Varsayılan erişim kayıtları : /var/log/nginx/access.log
    Varsayılan hata kayıtları : /var/log/nginx/error.log

    Varsayılan virtual host dosyası içerisinde nginx’in ana kurulum dizini, erişim ve hata kayıt dosyalarının konumu belirtilmediği için sorun yaşayabiliriz. Bu nedenle kurulum tamamlandıktan sonra sistemimizde bulunan varsayılan virtual host dosyasını düzenlememiz gerekmektedir.

    /etc/nginx/conf.d/ altında bulunan default.conf dosyasını aşağıdaki şekilde düzenliyoruz:

    server {
        listen        80;
        server_name  localhost;
        access_log  /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
        root /usr/share/nginx/html;
    
        location / {
            index index.html index.htm index.php;
        }
    
        location ~ \.php$ {
            include /etc/nginx/fastcgi_params;
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
        }
    }
  16. default.conf dosyasını düzenledikten sonra terminal penceresinde service nginx restart yazarak nginx’i yeniden başlatmamız gerekiyor.
  17. Artık nginx web sunucumuza http://127.0.0.1(sanal makinede connection refuse olabilir) ya da http://localhost yazarak erişebiliriz.

    Php’yi test etmek için /usr/share/nginx/html dizini altında info.php adında bir dosya hazırlayarak içeriği <?php phpinfo(); ?> olacak sekilde kayıt ediyoruz ve ardından tarayıcımız ile http://localhost/info.php ‘yi aciyoruz.

windows’ta nginx kurulumu ve proxy olarak kullanımı

önce windows için burdan indiriyoruz.

conf klasöründeki nginx.conf dosyasında şu gibi değişiklikleri yapıyoruz:

server {
 listen 80;
 server_name localhost;

 location / {
 #proxy_pass http://localhost:8080;
 proxy_pass https://madvens.wordpress.com;
 }
}

cmd den nginx klasörüne girip start nginx komutu ile nginx’i çalıştırıyoruz.

artık 80. porta gelen istekleri nginx otomatik proxy_pass te belirttiğimiz yere yönlendiriyor.

not: nginx i durdurmak için: taskkill /F /IM nginx.exe