WordPress Notları

WordPress Haberleri,İpuçları,Eklentileri,Temaları ve dahası

  • Haberler
  • İpuçları
  • Nasıl Yapılır
  • Eklentiler
  • Temalar
  • Multisite
  • Güvenlik

22 Aralık 2012 tarihinde Mustafa Uysal yazdı 5 Yorum

Centos Üzerinde Nginx – WordPress Multisite – Php-fpm Kurulumu ve Yapılandırması

centos-nginx-php-wordpress

Bu yazımızda Centos sunucu üzerinde Nginx, wordpress multisite (subdomain) ve php-fpm kurulum ve yapılandırmasını ele alacağız. Baştan söyleyim uzun bir yazı olacak ve muhtemelen kurulum sırasında  biraz kafa yorcaksınız.

Bunun sebebi benim sunucu aldığım firma ile sizin hizmet aldığınız firmanın farkı, (örneğin bazıları 80 portunu kapatıyor ilk kurulumda, bazıları selinux’u açık bırakıyor vs… bunları sizin halletmeniz gerekli) yada kullandığınız işletim sisteminin farklı olması olabilir. Neyse, bu hataları sadece sizin karşılaşmadığınızı ve internettten çözümünü bulabileceğinizi aklınızın bi tarafına yazın şimdilik.

Gelelim kuruluma.

Bu kurulum genel olarak Centos 6.2 üzerinde nano editörü kullanarak anlatılmıştır.

Önce nginx repo’sunu ekliyoruz.

Bunun için /etc/yum.repos.d dizini altına nginx.repo adında bir dosya oluşturup aşağıdaki satırları yazıp kaydetmemiz gerekli.

Örn: nano /etc/yum.repos.d/nginx.repo şeklinde dosyayı açarak çıkışta kaydedebilirsiniz.

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

Şimdi remi’i dahil edelim.

[root@centos62 ~]# rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
[root@centos62 ~]# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
Retrieving http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
Preparing... ########################################### [100%]
1:remi-release ########################################### [100%]

Komutlarıyla repoyu dahil ettikten sonra /etc/yum.repos.d dizini altına remi.repo adında bir dosya oluşturup aşağıdaki satırları içine yazıp kaydediyoruz.


[remi]
 name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
 mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
 enabled=1
 gpgcheck=1
 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
 failovermethod=priority

Şimdi gelelim nginx,php-fpm ve wordpress için gerekli diğer yan bileşenleri kurmaya. Komut satırına aşağıdaki satırın yazıp devam edin.

yum install nginx php php-fpm php-cli php-mysql php-pdo php-pear php-gd php-devel

Kurulumu onaylamak için sizden cevap isterse Y tuşana basıp enterlayın.

PHP-FPM Yapılandırması

İşe önce php-fpm yapılandırmasından başlayalım. Bunun için /etc/php-fpm.d/www.conf dosyasını açalım.

nano /etc/php-fpm.d/www.conf

listen = 127.0.0.1:9000

olan satırı

listen = /tmp/php5-fpm.sock

olarak değiştirelim.  Bunu yapmamızdaki amaç php-fpm unix socket kullandıpı için TCP overhead olayından kurtulmamızı sağlar.

Neyse daha pek çok parametre ile yapılandırma dosyanıza çeki düzen verebilirsiniz. Yeni başlayanlar ve uğraşmak istemeyenler için örnek www.conf dosyasını buradan indirebilir bu dosyayı kullanabilirsiniz.
Yapılandırma dosyasını indir.

Ardından /etc/php.ini dosyasını açalım ve cgi.fix_pathinfo değerini 0 olarak değiştirelim.

Şimdi sırası ile aşağıdaki komutları uygulayarak php-fpm servisinin çalışmasını ve açılışlarda da otomatik çalışmasını sağlıyoruz.

service php-fpm start
chkconfig --levels 235 php-fpm on

NGINX Yapılandırması

Şimdi gelelim nginx yapılandırmasına

Nginx ayar dosyası  /etc/nginx/nginx.conf  ‘u açıp aşağıdaki içindeki satırları aşağıdakilerle değiştirelim.

user  nginx;
worker_processes  2;

#warn
error_log  /var/log/nginx/error.log debug;

pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;
    client_max_body_size 13m;

    keepalive_timeout  65;
    index index.php index.html index.htm;

    gzip on;
    gzip_types text/css application/x-javascript text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;

    #Upstream to backend - PHP
    upstream php {
	server unix:/tmp/php-fpm.sock;
       # server 127.0.0.1:9000;
    }

    include /etc/nginx/conf.d/*.conf;

}

Yada winscp gibi bir programla bu işleri yapıyorsanız örnek nginx.conf dosyasını indirip mevcut dosyanın üzerine yazdırabilirsiniz. Tabiki uzantısı txt olmamalıdır 🙂

Şimdi sıra geldi nginx fast-cgi ayarına. Bunun için /etc/nginx/fastcgi_params dosyasını açıp. İçindeki satırları sildikten sonra, aşağıdaki satırları yapıştırın.

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param  PATH_INFO $fastcgi_script_name;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

Yada örnek dosyayı indirip txt uzantısını kaldırarak mevcut dosyanın üzerine yazdırın.

Ardından aşağıdaki komutlarla nginx’i başlatalım ve açılışlarda otomatik olarak açılmasını sağlayalım.

service nginx start
chkconfig --levels 235 nginx on

WordPress Yapılandırması

Şimdi sıra geldi wordpress sitemize göre nginx’e ayar vermeye. Daha önce apache yada litespeed kullananlar vhosts kavramını ve .htaccess dosyasını unutun. Bunları nginx’te server block’lar arasında tanımlamamız gerekli.

Öncelikle birden çok wordpress sitesinde kullanabileceğinizi varsayarak wordpress için ortak ayar dosyaları oluşturalım.

nginx conf.d dosyası altına global isminde bir dizin oluşturup wordpress.conf adında bir dosya oluşturun ve aşağıdaki satırları kaydedip çıkın. Yada wordpress.conf ‘u indirip kullanın.

nano /etc/nginx/conf.d/global/wordpress.conf

# WordPress multisite rules!
# Designed to be included in any server {} block.

# This order might seem weird - this is attempted to match last if rules below fail.
# http://wiki.nginx.org/HttpCoreModule
location / {
	try_files $uri $uri/ /index.php?$args;
}

# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;

# Directives to send expires headers and turn off 404 error logging.
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
	expires 24h;
	log_not_found off;
}

# Pass all .php files onto a php-fpm/php-fcgi server.
location ~ \.php$ {
	# Zero-day exploit defense.
	# http://forum.nginx.org/read.php?2,88845,page=3
	# Won't work properly (404 error) if the file is not stored on this server, which is entirely possible with php-fpm/php-fcgi.
	# Comment the 'try_files' line out if you set up php-fpm/php-fcgi on another machine.  And then cross your fingers that you won't get hacked.
	try_files $uri =404;

	fastcgi_split_path_info ^(.+\.php)(/.+)$;
	#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

   include fastcgi_params;
   fastcgi_index  index.php;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   fastcgi_pass php;
}
rewrite ^.*/files/(.*)$ /wp-includes/ms-files.php?file=$1 last;
if (!-e $request_filename) {
rewrite  ^(.+)$  /index.php?q=$1  last;
}

Şimdi de yine global dizini altında isteğe bağlı olarak kullanabileceğimiz bir kısıtlama dosyası oluşturacağız.

nano /etc/nginx/conf.d/global/restrictions.conf ile global dizini altında restrictions.conf dosyası oluşturup aşağıdaki satırları kaydedin. Yada örnek dosyayı indirin.

# Global restrictions configuration file.
# Designed to be included in any server {} block.</p>
location = /favicon.ico {
	log_not_found off;
	access_log off;
}

location = /robots.txt {
	allow all;
	log_not_found off;
	access_log off;
}

# Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
location ~ /\. {
	deny all;
	access_log off;
	log_not_found off;
}

Şimdi sıra geldi son adım olan bitirici hamleyi yapmaya 🙂 WordPress sitemizin yapılandırma dosyasını oluşturalım.

/etc/nginx/conf.d dizini altına uzantısı conf olacak şekilde bir dosya oluşturun. Genelde siteadi.conf tarzı bir yaklaşım kullanılır.

nano /etc/nginx/conf.d/wpnotlari.conf

artından aşağıdaki satırları ekleyip kaydedilim.

server {
#dinleyeceğiniz port. domain mapping için statik ip kullanıyorsanız onu yazmalısınız.
listen 192.168.1.1:80;
#sunucu adınız
server_name *.wpnotlari.com;
#sitenizin root klasörü buraya
root /www/wpnotlari;

#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

include conf.d/global/restrictions.conf;
include conf.d/global/wordpress.conf;

}

bu şekilde wordpress sitemizide yapılandırmış olduk.

Şimdi aşağıdaki komutlarla tüm servislere bir restart atalım, kendilerine gelsin 🙂

service nginx reload
service nginx restart
service php-fpm restart

Geçtiğimiz günlerde buna benzer bir yapılandırma ile lettoblog’u nginx’e geçirdik. Şu anda fena görünmüyor, ancak apc kurmak ve opcode cache yapmakta bir diğer önemli nokta. Zaten bu yazı yeterince uzun olduğundan nasip olursa  APC kurulumunu başka bir yazıda anlatmak istiyorum.

Bir kez daha tekrarlamakta fayda var; bu kurulum wordpress multisite subdomain şeklinde kullananlar için örnektir. Subdirectory yada single wordpress kullanıcıları baştaki adımları takip ettikten sonra wordpress ayarlarını kendi kurulumlarına göre düzeltmek zorundadır.

Eklemek istediğiniz bilgi varsa yorum olarak yazabilirsiniz. Elimden geldiğince soruları cevaplayama çalışıyorum ancak, lütfen sorunuzun cevabını internette aramadan bende bu çalışmadı şeklinde destek talebinde bulunmayın.

Tavsiyeler;

  • Bu kurulumu yapabilmeniz için az çok konsol kullanmaya aşina olmanız gerekmektedir. Bu konuda hiç tecrübeniz yoksa herhangi bir ftp istemcisi ile (filezilla, winscp…) 22 portundan root girişi yaparak örnek verdiğimiz konfigurasyon dosyalarını kullanarak işlem yapabilirsiniz.
  • Versiyon olarak farklı bir işletim sistemi sürümü kullanıyorsanız, işletim sistemini güncelleyebilir yada kullandığınız repoları ona göre ayarlayabilirsiniz.
  • Private ip içinde çalışacaksanız 192.168.x.x  hosts dosyanızı ve network ayarının doğru yapıldığından emin olunuz.
  • Varsayılan olarak apache kurulu ve çalışıyorsa nginx ile port çakışmasına uğrayacağından “service httpd stop” komutu ile apache’yi durdurun.
  • Text editör olarak nano kullanmak istiyor ama hata ile karşılaşıyorsanız “yum install nano” komutu ile kurulumu gerçekleştirebilirsiniz. Vi kullananlar zaten bilirlerki nano da yapabileceklerini aynı şekilde vi ilede yapabilirsiniz.
  • 80 portunun açık olduğundan emin olunuz.Eğer kapalıysa iptables’ten açabilirsiniz.

Faydalanılan kaynaklar;

1) http://ysfkc.com/php/nginx-load-balancer-ve-nginx-php-fpm-web-sunucu-kurulumu
2) http://www.ehowstuff.com/how-to-install-remi-yum-repository-on-centos-6-2-x86-and-x86_64/11/
3) http://www.timstephenson.me.uk/technology/get-started-with-wordpress-in-15-minutes

Bunu paylaş:

  • Tweet
  • Daha fazla
  • Tumblr' da Paylaş
  • Reddit üzerinde paylaşmak için tıklayın (Yeni pencerede açılır) Reddit
  • Arkadaşınıza e-posta ile bağlantı göndermek için tıklayın (Yeni pencerede açılır) E-posta

İlgili

Kategori:Hosting, İpuçları, LettoBlog, Multisite, Nasıl Yapılır, Ortaya Karışık Etiketler: centos nginx, nginx, nginx kurulumu, wordpress centos nginx, wordpress multisite nginx, wordpress multisite subdomain nginx, wordpress nginx, wordpress nginx fpm, wordpress nginx kurulumu, wordpress php-fpm

Hakkımda Mustafa Uysal

WPNotları'nın kurucu editörü. WordPress üzerine yazar, çizer arada katkı yapar.

Yorumlar

  1. Bekir Cem der ki

    09 Aralık 2014 ile 21:44

    Merhabalar.

    Tüm ayarları yaptım ancak bir değişiklik olmadı.

    Digital Ocean üzerinde Centos 6.5 64 Bit + Webuzo Panel + Nginx + Pagespeed Modülü yapılandırmalı bir VPS kullanıyorum. Sanırım network ayarı ile ilgili kısımda hata yapıyorum.

    Yanıtla
    • Mustafa Uysal der ki

      12 Aralık 2014 ile 01:42

      Merhaba,

      Yazi centos 6.2 uzerinde, pagespeed modulu kullanilmadan anlatilmistir. Yazi sonundaki tavsiyeleri bi’ kontol edin isterseniz.

      Yanıtla
      • Bekir Cem der ki

        12 Aralık 2014 ile 03:18

        “[emerg] no port in upstream “php” in /usr/local/apps/nginx/etc/conf.d/global/wordpress.conf:33
        nginx: configuration file /usr/local/apps/nginx/etc/nginx.conf test failed
        ”

        Service nginx restart komutu verdiğimde bu hatayı alıyorum.

        Yanıtla
        • Mustafa Uysal der ki

          14 Aralık 2014 ile 22:39

          nginx.conf’a seklinde upstream tanimlayin. Tabii fpm’in socket uzerinde calismasi icin gerekli ayarlamalarida yapin 😉

          upstream php {
          server unix:/var/run/php5-fpm.sock;
          }

          Yanıtla

Trackbacks

  1. Nginx – WordPress | Nginx Türkiye dedi ki:
    17 Nisan 2015, 22:12

    […] ? […]

    Yanıtla

Bir yanıt yazın Yanıtı iptal et

Lütfen gerçek bilgilerinizi kullanın. Herhangi bir site adı ile yazılan yorumlar onaylanmayacaktır!

Popüler Yazılar & Sayfalar

  • WordPress Resim Kalitesini Düzenleyin
    WordPress Resim Kalitesini Düzenleyin
  • Tam Ekran Yazım Modu
    Tam Ekran Yazım Modu

Bloga e-posta ile abone ol

Bu bloga abone olmak ve e-posta ile bildirimler almak için e-posta adresinizi girin.

Blogroll

  • HandyPlugins
  • NoCodeWP
  • Powered Cache
  • WholeStuff
  • WPHandle
  • Hakkımızda
  • İletişmeyin!
  • Bülten Gönder
  • Site Haritası
  • Gizlilik Politikası

© 2025 - WPNotlari

Bu internet sitesinde, kullanıcı deneyimini geliştirmek ve internet sitesinin verimli çalışmasını sağlamak amacıyla çerezler kullanılmaktadır. TamamGizlilik politikası