Debian Lenny, Openvz VPS, Nginx, MySQL, Munin, etc. etc.

1 sitemiz var, uzerinde calisan basit php mysql script ile randevu kaydi aliyoruz.
Ama cogu zaman alamiyoruz cunku yogun oldugu zamanlarda anlik 1000 – 1200 request geliyor.
apache dayanmiyor, mysql sapitiyor. sonucta site erisilmez oluyor. apacheyi, phpyi tweak etmek , mysqli tweak etmek sorunu cozmuyor. Sorunun cozumu kuvvetli bir vps ve dogru duzgun hafif ve hizli bir php,mysql altyapisi.
Ubuntu 10.10 ustunde nginx ve php-fpm olabilir — Olamaz — cunku php kodumuz php 5.3 uyumlu degil. O zaman debian lenny? Default olarak php5.2 var? Olabilir ancak Php-FPM default repo larda yok? Derleriz. Bosver standart disina cikma. Ok.
Sonuc: Debian lenny, nginx, php 5.2 (spawn-cgi(lighthttpd)) mysql. Monitor etmek icin nginx destekli Munin. Ok kuruluma basla…

1-debian lenny vpsimizi hazir edelim, guncel edelim.
2-mysql kuralim
aptitude install mysql-server mysql-client
3-nginx kuralim,calistiralim
aptitude install nginx
/etc/init.d/nginx start
4-php 5 kuralim
aptitude install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

nano /etc/php5/cgi/php.ini

en altina ekle

cgi.fix_pathinfo = 1

Debian Lenny icin FastCGI daemon paketi yok o yuzden lighttpd icindeki spawn-fcgi programini kullanicaz.

aptitude install lighttpd

hata vericek port80 kullanimda diye onemli degil kapat gitsin

update-rc.d -f lighttpd remove

Php FasCGI daemonu calistiralim

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

bunu /etc/rc.local icine ekleyelim ayni sekilde ki reboot ettigimizdede calissin

nano /etc/rc.local ve ekle yukaridaki satiri

php isimiz bitti

5- nginx i konfigure edelim

nano /etc/nginx/nginx.conf

onemli 3 ayarimiz var

worker_processes 5;
worker_connections 4096;
keepalive_timeout 2;

defaut nginx sitemizi konfigure edelim

server {
listen 80;
server_name _;

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

location / {
root /var/www/nginx-default;
index index.php index.html index.htm;
}

#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 /var/www/nginx-default;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
include fastcgi_params;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
location /nginx_status {
stub_status on;
access_log off;
allow x.x.x.x;
allow 127.0.0.1;
allow x.x.x.x;
deny all;
}
}

NOT: burada munin ile daha sonra monitor edecegimizden nginixi uygun status kayitlarinida simdiden ekledik. Hazir olsun.
Nginx ayari bitti yeniden baslatim bir tanede info.php atip durumuna bakalim.

nano /var/www/nginx-default/info.php ve ekle

sonra

/etc/init.d/nginx restart

son olarak duruma bakalim , hersey hazir
http://ip.ad.re.si/info.php
http://ip.ad.re.si/nginx_status

6- phpmyadmin kuralim lazim olur
apt-get install phpmyadmin

repodan gelen phpmyadmin sorunsuz sekilde calissin nginximizde
cd /var/www/nginx-default/
ln -s /usr/share/phpmyadmin phpmyadmin

7- MySQL imizi azicik tweak edelim
asagidaki my.cnf gayet guzel is goruyor.

# The MySQL server
[mysqld]
wait_timeout=60
connect_timeout=10
interactive_timeout=120

port = 3306
socket = /var/run/mysqld/mysqld.sock
skip-locking
key_buffer = 384M
key_buffer_size=64M
max_allowed_packet = 1M
table_cache = 1024
sort_buffer_size = 8M
read_buffer_size = 8M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 128M
query_cache_limit = 2M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8

8- munin kuralim

apt-get install munin munin-node
/etc/init.d/munin-node restart
cd /var/www/nginx-default/
ln -s /var/www/munin monitoring

http://ip.ad.re.si/monitoring
altinda munin hazir calisiyor. 15 20 dakka beklemek gerek dogru duzgun grafikler icin sadece 🙂

9- munin nginx monitoring ayarlarini yapalim
https://github.com/perusio/nginx-munin adresine gidilir download diyip munin nginx plugin paketi indirilir. kurulumun istedigi nginx status isini halletmistik o zaman:
paketin icindekileri /etc/munin/plugins altina atalim
sonra

nano /etc/munin/plugin-conf.d/munin-node

icine an alta yaz

[nginx_status]
env.url=http://ip.ad.re.si/nginx_status nginx_status

[nginx_connection_request]
env.url=http://ip.ad.re.si/nginx_status nginx_status

[nginx_request]
env.url=http://ip.ad.re.si/nginx_status nginx_status

kaydet cik

/etc/init.d/munin-node restart

diyip bastan calistir munini oldu bitti
http://ip.ad.re.si/monitoring altinda nginx lerimizde geldi.

Gule gule kullanalim olsun da bitsin masallah.