Debian linux’da Otomatik Tamamlama ve Sudo Özelliği Ekleme

Standard

Merhaba;

Lokalime sunucu olarak debian kurmam gerekti ve debian kurduğumda yaşadığım ilk 2 sıkıntı [tab] ile tamamlama özelliğinin olmaması ve sudo’nun çalışmamasıydı. Haliyle bu sorunlara çözüm gerekti, önce otomatik tamamlama özelliği ile başlayalım;

apt-get install bash-completion

Ardından konsolda bunun aktif olmasını sağlayalım;

nano /etc/bash.bashrc

Dosyanın şu kısmını bulup, başlarındaki “#” işaretini kaldırarak aktif hale gelmesini sağlayalım;

 # enable bash completion in interactive shells
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

Eğer sizin dosyanızda yoksa, sonuna ekleyebilirsiniz.

Gelelim sudo’yu yüklemeye;

 # apt-get install sudo

Şimdi de hangi kullanıcıya “sudo” özelliğini kullandırmak istiyorsak onu sudoers dosyasına yazalım;

 # nano /etc/sudoers

Açılan dosyada bu satırlardan sonra, [kullanici-adiniz] yazan kısma kullanıcı adımızı yazalim, CTRL + O ile kaydedip, CTRL + X ile kapatalım.

1
2
3
# User privilege specification
root    ALL=(ALL) ALL
[kullanici-adiniz] ALL=(ALL) ALL

Şimdi yeniden başlatıp aktif olmasını sağlayalım;

 # reboot

Mission complete 🙂

 

 

 

Nginx üzerinde Buffer Size Konfigürasyonu

Standard

Merhaba;

Bu gün wordpress site üzerinde çalışırken bir dosya yüklemesi yapmam gerekti ve dosyanın boyutu 1.8 MB olunca kullandığım plugin sürekli sunucunun dosyayı reddetmesi nedeniyle hata verdi. Başta sorunun php-fpm üzerindeki buffer-size’dan kaynaklandığını düşünüp değerleri yükselttim. Buna rağmen sonuç değişmedi. Sorunu tekrar araştırdığımda (Serdar Aydoğan ve İlhan Pamuk’a teşekkürler) nginx’in bir buffer size’ının olduğunu ve bunu geçen dosyayı direk reddettiğini gördüm. Gelelim bu buffer-size’ı nasıl konfiğürasyonunun nasıl yapıldığına.

$ sudo nano /etc/nginx/nginx.conf

Bu dosya nginx in konfigürasyon ayarlarının barındırıldığı dosya. Burada “Virtual Host Configs ” satırından sonra şöyle bir kod ekliyoruz;

        ##
        # Nginx Buffer Konfigurasyonu
        ##

        client_body_buffer_size 10K;
        client_header_buffer_size 1k;
        client_max_body_size 8m;
        large_client_header_buffers 2 1k;

Bu kod şu anlama geliyoruz, client tarafındaki buffer’ı 10 kb a bölüyor, başlık size’ını 1 kb yapıyor, maximum size’ı ise 8 mb yapıyor (burayı kendi dosya boyutunuza göre değiştirebilirsiniz tabii) . Bu sayede 8 mb ‘dan küçük dosyalar sunucu tarafından reddedilmemiş oluyor.

Konfigürasyonun geçerli olması için nginx’i yeniden başlatıyoruz;

$ sudo service nginx restart

Ayrıca servisin çalıştığını gözlemlemek için de durumuna şu şekilde bakabilirsiniz;

$ sudo service nginx status

Nginx üzerine daha detaylı konfigürasyon ayarları için;

https://www.digitalocean.com/community/tutorials/how-to-optimize-nginx-configuration

banner

Debian / Ubuntu Üzerinde Nginx ve Mysql ile WordPress Kurulumu

Standard

Merhabalar;

Nginx aslında bir Rus yazılım mühendisi tarafından başlangıçta mail servisi olarak tasarlanmış, ardından web sunucu olarak evrilip gelişmiş bir işletim sistemidir. Yaygın olarak (görece) apache’ye nazaran daha hızlı ve stabil bir yapıya sahiptir.

Staj yaptığım sırada böyle bir sisteme ihtiyacım oldu. Ve Türkçe döküman olmadığını farkettim, bende birkaç kaynaktan derlediğim bu işlemleri Türkçe’ye kazandırmak istedim.

Kuruluma depoları ekleyerek başlayabiliriz. (eğer depoları web yansısı kullanarak kur dediyseniz eklemeden de bu depolara erişebiliyorsunuz, dolayısıyla bu adımı geçebilirsiniz)

$ echo "deb-src http://nginx.org/packages/mainline/ubuntu/ `lsb_release -cs` nginx"  >> /etc/apt/sources.list
$ echo "deb http://nginx.org/packages/mainline/ubuntu/ `lsb_release -cs` nginx" >> /etc/apt/sources.list

Şimdi sistemi güncelleyelim ve repolarımızı ekleyelim;

$ sudo apt-get install software-properties-common
$ sudo add-apt-repository -y ppa:ondrej/mysql-5.5
$ sudo add-apt-repository ppa:ondrej/php5

Key güncellemesi yapıp, ihtiyacımız olan nginx php mysql-server ve bunları birbirine bağlayacak php5-mysql paketlerini sisteme kuralım;

$ curl http://nginx.org/keys/nginx_signing.key | apt-key add -
$ sudo apt-get update
$ sudo apt-get install nginx php5 php5-fpm  mysql-server php5-mysql

Kurulum sırasında mysql yüklenirken sizden root şifresi belirlemenizi isteyecektir, bu parola gayet önemlidir, bir kenara not alın, wordpress kurulumu sırasında bu bilgilere ihtiyacımız olacak.

Şimdi fpm servisini konfigüre edelim;

$ sudo nano /etc/php5/fpm/php.ini

CTRL + W yapıp, “cgi.fix_pathinfo” kısmını bulup, şu şekilde aktif edin (baştaki “;” silmeyi unutmayın)

cgi.fix_pathinfo=0

Nginx’i yapılandırırken, uzantısı php olan herşeyi process edilmesi için php-fpm’e ilet diyeceğiz, eğer cgi.fix_pathinfo özelliği devrede olursa ve örnek olarak http://url/falanca.jpg/filanca.php gibi bir istek gelirse ve filanca.php dosyası sistemde yoksa sistem hangi dosyanın işleneceğini tahmin etmeye çalışır ve heralde falanca.jpg diyerek işlenmesi için FastCGI’a iletir. Eğer kötü niyetli biri sisteminize içerisinde php kodları gömülü olan bir jpg yükleyip göndereceği URL’de önde kendi upload ettiği dosyanın ismini ardından da sistemde olmayan bir php dosyasını geçirirse, sistem olmayan php’yi bulamadığı için jpg dosyasının işlenmesi için FastCGI’a iletecek ve ilgili jpg dosyasında gömülü php kodları çalıştırılacaktır.

İşte böyle olası bir güvenlik açığının önüne geçmek için php’ye URL’de geçen path’i olduğu gibi değerlendirmesini, eğer dosya bulunamıyorsa tahmin etmek yerine işlemi sonlandırmasını söylemek gerekir. Bunu da cgi.fix_pathinfo özelliğini 0 yapmak sureti ile (ki default 1’dir) devre dışı bırakarak yapıyoruz.

Şimdi de fpm tüm portları dinlediği için onu 9000. portu dinleyecek şekilde konfigüre edelim;

$ sudo nano /etc/php5/fpm/pool.d/www.conf

Yine CTRL + W kısayolu ile arama yapıp, aşağıdaki “listen= /var/….fpm.sock” kısmını yorum satırı haline getirip, 9000. portu dinlemesini sağlayalım;

; listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000

Bu aşamaya kadar sıkıntısız geldiyseniz sistemi kontrol edelim;

$ sudo service nginx restart
$ sudo service php5-fpm restart

Ardından tarayıcıda IP adresinizi yazdığınızda şöyle bir hoşgeldin ekranı görmelisiniz;

 

Bu ekranı gördüyseniz içiniz rahat edebilir, doğru yoldasınız 🙂

Şimdi wordpress kurulumuna başlayabiliriz.Wordpress’in database’ini oluşturup, ona kullanıcı atayalım, isteğe göre “wp_user” kısmına database’e atayacağınız wordpress’in kullanacağı kullanıcı adını değiştirebilir, “wp_db” kısmını yine wordpress’in database’ ismi olduğundan değiştirebilirsiniz. “_secret_password_” kısmına ise kullanıcı şifresi atamanız gerekmekte. Bu kısımdaki bilgileri de not alınız, wordpress kurulumu sırasında bu kısımlara ihtiyacınız olacak;

$ mysql -u root -p
Enter password:

mysql> CREATE DATABASE wp_db;
mysql> GRANT ALL ON wp_db.* to 'wp_user'@'localhost' IDENTIFIED BY '_secret_password_';
mysql> FLUSH PRIVILEGES;
mysql> quit

Artık wordpress’i indirebiliriz;

$ wget http://wordpress.org/latest.tar.gz

Şimdi onu açıp www yani web’e açılacak olan dizinimize taşıyıp yetkilerini düzenleyelim, “example.com” kısımlarını, siz de kuracağınız site adına göre değiştiriniz;

$ tar xzf latest.tar.gz
$ sudo mv wordpress /var/www/example.com
$ sudo chown -R www-data.www-data /var/www/example.com
$ sudo chmod -R 755 /var/www/example.com

Şimdi nginx’i konfigüre edelim;

$ sudo nano /etc/nginx/conf.d/example.com.conf

İçerisine bu yapıyı aynen yapıştırıp, “example.com” kısımlarını site adımıza göre değiştiriyoruz;

server {
        listen   80;

        root /var/www/example.com;
        index index.php index.html;
        server_name  example.com www.example.com;

        location / {
                try_files $uri $uri/ /index.php?q=$request_uri;
        }

        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
              root /usr/share/nginx/www;
        }

        location ~ .php$ {
                try_files $uri =404;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
}

Yaptığımız işlemlerin uygulanması için servislerimizi yeniden başlatıyoruz;

$ sudo service nginx restart
$ sudo service php5-fpm restart

Şimdi site adımızı yazdığımız da ya da localhostta isek locale bağlandığımızda bizi wordpress karşılıyor olacak 🙂

Buradan sonrası standart wordpress kurulum basamakları. İstek olursa bir gün wp kurulumunu da anlatırım.

İyi çalışmalar herkese 🙂

Kaynaklar;

http://tecadmin.net/install-wordpress-with-nginx-on-ubuntu/
http://nginx.nedir.com/
https://www.syslogs.org/php5-fpm-mysql-destekli-nginx-kurulumu/

 

 

 

 

Linux’da Path’e Yeni Yol Ekleme

Standard

Merhaba;

Elle program kurulumunda, tüm programlar /usr/bin gibi Path’in gördüğü dizinlere yüklenmemekteler ya da kişisel tercih olarak programlarınızı bir dizin altında tutup yönetmek isteyebilirsiniz. Böyle durumlarda konsoldan programın dizinine her seferinde gidip “./” ile programı çalıştırmak zahmetli olduğundan konsolun PATH’ine programlarınızı tuttuğunuz dizini bir kere bildirirseniz, direk adını yazarak ulaşabilir hale geliyorsunuz .

Gelelim uygulamasına, 2 farklı yöntem kullanabiliriz;

  1. İlgili dizine gidip, konsolda o dizindeyken bu kodu yazmanız kafii:
    1
    echo "export PATH=$(pwd):\${PATH}" >> ~/.bashrc
  2. Direk konsolu açıp:
    1
     
    1
    echo "export PATH="gostermek_istediginiz_dizin":\${PATH}" >> ~/.bashrc

    İşlem tamamdır 🙂