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.