HELLO, I’M SERHAT AND THIS IS MY FANCY TITLE.

Passenger ve nginx konfigürasyonu

Özenle hazırladığım, sorunsuz çalışan nginx konfigürasyonumu belki birileri göz atar diyerek paylaşıyorum. Yurtdışında pek çok sistem yöneticisi bu şekilde konfigürasyon dosyalarını birbirleri ile paylaşarak peer-review yapmaktalar. Bende bu review'ların pek çoğunu ve official nginx dökümanını okuyarak aşağıdaki konfigürasyonu hazırladım.

Konfigürasyon Debian 7.7 kurulu olan bir Rails sunucusu içindir. Web sunucu olarak Nginx + Passenger kullandım. Veritabanı sunucusu ise MySQL 14.14. Uygulama olarak Ruby 2.1.5 sürümü ve Rails 4.1.2 kurulu. Makinada 8 GB RAM bulunuyor ve 8 çekirdekli. Makina üzerinde sadece 1 tane Rails uygulaması koşuyor ve onunda VM boyutu 344mb.

passenger-memory-stats çıktısı aşağıdaki şekilde:

passenger-stats

/etc/nginx/nginx.conf dosyası:

# Nginx ayarları
# Uygulama bazlı ayarlar için bknz: /etc/nginx/sites-enabled/ais.config

# Makinadaki çekirdek sayısı (worker_processes):
  # grep processor /proc/cpuinfo | wc -l
# Cekirdek basina izin verilen islem sayisi (worker_connections):
  # ulimit -n
worker_processes 8;
events {
  worker_connections 1024;
}

http {
  # root and ruby
  passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
  passenger_ruby /home/serhat/.rbenv/shims/ruby;

  # security
  passenger_show_version_in_header off;

  # permissions
  passenger_default_user www-data;

  # pre-start
  passenger_pre_start http://foobar.omu.edu.tr/;

  # debugging
  passenger_friendly_error_pages off;

  # logging
  # access_log /var/log/nginx/access.log;
  access_log off;
  error_log /var/log/nginx/error.log;

  # performance & optimization
  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;
  passenger_max_pool_size 120;
  client_max_body_size 32m;
  client_body_buffer_size 128k;
  types_hash_max_size 2048;

  # timeouts
  client_body_timeout 15;
  client_header_timeout 15;
  send_timeout 15;
  keepalive_timeout 30;

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

  # gzip
  gzip on;
  gzip_disable "msie6";
  gzip_types text/plain application/csv application/xml;
  gzip_min_length  5000;
  gzip_comp_level  2;
  gzip_proxied     off;

  # include paths
  include /etc/nginx/conf.d/*.conf;
  include /etc/nginx/sites-enabled/*;

  # server_tokens off;
  # server_names_hash_bucket_size 64;
  # server_name_in_redirect off;
}

Daha sonra ayarların geçerli olması için:

$ service nginx restart

/etc/nginx/sites-enabled/ klasörü içerisinde ais.conf isimli bir dosya oluşturun - içeriği şöyle olacak:

# ais ayarlari
# nginx için bknz: /etc/nginx/nginx.conf

server {
  listen 80;
  server_name foobar.edu.tr;
  root /srv/www/foobar.edu.tr/site/public;
  passenger_enabled on;

  charset utf-8;

  location @passenger {
    passenger_enabled on;
  }

  location ~ ^/assets/ {
    gzip_static on;
    expires 1y;
    add_header Cache-Control public;
    add_header Last-Modified "";
    add_header ETag "";
    break;
  }
}

Nginx konfigürasyonunda hata varmı kontrol için:

$ sudo nginx -t

Başarılar.


Share this post!


Blog Comments powered by Disqus.