Kategori: Linux

  • Cinnamon Masaüstü Hot Corners özelliğinin efektif kullanımı

    Rahmetli Opera’nın (12 ve öncesi sürümünden bahsediyorum) bana kazandırmış olduğu bir alışanlık olan Fare Hareketleri ile bilgisayarda hakimiyet kurma yeteneğinin, fi tarihinde OpenGL üzerinden masa üstüne çeşitli görsel ve kullanım özellikleri kazandıran Compiz projesi ile ekranın köşe ve kenarlarına işlevlik kazandırılması ile birlikte ekranın tamamına yayılmış durumdaydı.

    Compiz’in kazandırdıkları nelerdi; fare imlecini ekranın herhangi bir kenarına ya da köşesine götürdüğünüz zaman o kenar/köşe’ye atanmış olan eklentiyi çağırarak çeşitli aksiyonlar yapmasıydı. Örneğin, pencereleri ekrana karo karo yerleştirerek ön izleme sağlamak ve istediğin pencereye bu ön izlemeden geçiş yapmak. Tek hareketle masaüstüne ulaşmak ya da pencereleri geri büyütmek gibi…

    Tabi artık bu tip olaylar masaüstlerine entegre olarak gelmekte. Ben de hanidir Compiz ayarları ile oynama çılgınlığından vazgeçmiş durumdaydım.

    Bu gün fare yanlışlıkla köşeye gidince expose çalıştı. Ben de “bu expose yanlış köşede duruyor” diye düşünüp ayarları değiştireyim diye Linux Mint kontrol paneline yöneldim. Hot Corners (evet Cinnamon’da adı bu) özelliklerini açtım ve expose’u baka köşeye aldım. Tabi bu işlemi yaparken dikkatimi çeken bir özellik oldu. Köşelere hali hazırda yaptırılabilecekler sınırlıydı ve hepsi de pencereleri ya da masa üstlerini (çoklu masa üstü kullananlar için) expose etmek üzerineydi.

    hotcorners

    Seçenekler arasında bir de komut çalıştırma özelliği vardı ki onu görünce zaten pek fayda sağlamayan özellikelrinden dolayı çoktan vazgeçmiş olduğum köşeleri kullanma hastalığım nüks eder gibi oldu.

    Madem köşeler var ve bu köşelere komut atayabiliyorum, e o zaman istediğimi yatırayım bari dedim. Sol alt köşeye Mint menüsünü otomatik açma özelliği ekledim. Çok da güzel oldu. Zaten Mint menüsünün fare imlecini üzerine getirince açılması gibi bir özelliği vardı ama sürekli açılıp durmasını da istemiyordum.

    hotcorners_runNe zaman yanlışlıkla üzerinden bi an çeksem menü patlıyordu. İşte burada Köşelerin güzelliği ortaya çıkıyor. Köşeler fare imleci hafifçe dokununca değil, baya sert çarpınca çalışıyor. Böylece sol alt köşeye şu komutu ekledim ve sen sağ ben selamet yoluma devam ettim:

    xvkbd -xsendevent -text “\[Super_L]”

    Bu komutun çalışması için doğal olarak sistemde “xvkbd” paketinin yüklü olmas gerekmekte. Eğer yüklü değilse hemen konsoldan paketi kurabilirsiniz.

    sudo apt-get install xvkbd

    Bu şekilde siz de köşelere istediğiniz komutları atayarak köşeleri etkin kullanmaya başlayabilirsiniz.

  • SSH tünel ile internette dolaşalım

    imagem_sshNe yaptınız ne ettiniz bir şekilde yurt dışından bir sunucu kiraladınız. Ancak henüz üzerine VPN servisi kurma şansına sahip olamadınız ve acilen o çıkışı kullanmanız gerekiyor. İşte yapmanız gereken:

    Öncelikle SSH forwarding özelliğini kullanarak bulunduğunuz makinadan sunucuya bir SSH bağlantısı kuruyoruz:

    # ssh -v -D 5000 -N sunucu_adresi.com

    Bu bağlantıyı işiniz bitmeden kapatmayın aksi takdirde aşağıdaki ayarlar hiçbir işe yaramayacaktır. Daha sonra kullandığınız browser’ın bağlantı ayarlarına girip bu bağlantıyı SOCKS olarak tanıtıyoruz. Görsellerde örnek olarak Firefox browser kullanılmıştır:

    Screenshot from 2015-01-17 14:25:16
    Screenshot from 2015-01-17 14:26:14

    Şu andan itibaren internete karşı sunucu üzerinden erişmektesiniz. İşiniz bittikten sonra yukarıdaki resimde görünen ayarı geri aldıktan sonra, yine normal kullandığınız internet çıkışına dönebilirsiniz. Tabi işiniz bittikten sonra başlattığımız SSH bağlantısını da sonlandırabilirsiniz.

  • Eve Torrent Download sunucusu inşaa edelim

    transmissionÖnceki yazılarımda Atom anakart üzerine nasıl Ubuntu sunucu kurulacağını anlatmıştım. Bu gün sizlere bu sunucu üzerine Torrent Download sunucusu kuracağız. Bu sunucu için paket deposunda bulunan “tranmission” uygulamasının sunucu paketini kullanacağız.

    Atom anakart tercih etmemin sebebi, daha önce de dile getirdiğim üzere düşük enerji tüketimi. Diyeceksiniz ki daha düşük enerji tüketimi için RaspberryPi gibi seçenekler varken neden atom kullanalım. Sebep basit, elde olanı değerlendirmek 🙂

    Şimdi, daha önce kurulumunu tamamlamış olduğumuz Ubuntu sunucuya ister konsoldan, isterseniz SSH ile bağlantı kurarak işe başlıyoruz. Her şeyin yolunda gittiğini varsayarsak sunucumuzu artık “Headless” olarak (Monitörsüz, klavyesiz) uzaktan kullanabilmemiz lazım. O yüzden ben bu işlemleri yaparken SSH ile bağlantı kurarak yapacağım.

    # ssh 192.168.1.10

    (daha önceki yazılara istinaden sunucunun 192.168.1.10 IP’sinde olduğunu varsayıyorum)

    Normal kullanıcı olarak sistem çağında değişiklik yapamayacağımız için “Super User” olmak gerek. Böylece paket kurulumu ve paket ayarlarının yapılmasında sorun yaşamayız.

    #  sudo -s
    [sudo] password for user:
    root:~#

    Paket kurulumlarından önce, eğer yaptığınız işlemler arasında uzun süre geçmişse (mesela bir gün) öncelikle paket depolarını güncelleyin ve eğer yeni güvenlik yamaları gelmişse onları uygulamak gerek.

    root:~# apt-get update
    …..
    Fetched 2.606 kB in 14s (175 kB/s)
    Reading package lists… Done

    root:~# apt-get upgrade
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    Calculating upgrade… Done
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    root:~#

    Artık torrent sunucumuzu kurmaya hazırız. Torrent sunucusu kurmak için:

    root:~# apt-get install transmission-daemon

    Bu işlem sonucunda bağımlılıklardan dolayı ek olarak iki paket daha kurulacaktır: “transmission-cli, transmission-common”. Kurulum işlemi ile birlikte sisteme “debian-transmission” adında yeni kullanıcı ve grup eklenecektir. Bu bilginin neden gerekli olduğunu biraz sonra anlatacağım.

    Kurulum biter bitmez sistem otomatik olarak transmission servisini çalıştıracaktır. Biz ise bu servisi durdurmak zorundayız. Çünkü servisi durdurmadan yapacağınız ayar değişiklikleri, servisi durdurmaya kalktığınızda programın yapısından dolayı mevcut ayarları üzerine yazarak önceki haline döndürecek şekilde ayarlanmıştır. Eğer servisi durdurmadan değişiklik yapıp servisi yeniden başlatırsanız ayar dosyasının eski haline döndüğünü görebilirsiniz.

    root:~# service transmission-daemon stop

    Servisi durdurduktan sonra, öncelikli olarak tranmission servisinin kullanmasını istediğimiz klasörleri ayarlamamız gerekli. Bu makinanın bir sunucu olduğunu göz önüne alırsak, Linux dizin hiyerarşisine göre “/srv” klasörünü kullanmamız doğru bir karar olacaktır. Ancak keyfinize göre bambaşka bir dizini kullanabilirsiniz de. Tabi ki bunlar ileride başınız iş açma potansiyeline sahip davranışlar olabilir.

    root:~# cd /srv
    root:/srv# mkdir -pv torrent/gelen torrent/indi

    Oluşturmuş oduğumuz dizinler doğal olarak “root” kullanıcısına ve grubuna dahil olacaktır. Bu durumda transmission servisinin bu klasöre yazma ile ilgili problemleri olabilir. Sorunu aşmak için öncelikler “torrent” klasörü ve alt klasörlerinin erişim haklarını ayarlayarak doğru gruba dahil etmemiz gerekir;

    root:/srv# chown root:debian-transmission torrent -R
    root:/srv# chmod 775 torrent -R

    Şimdi yapılandırma dosyasını ayarlamaya başlayabiliriz.

    root:/srv# cd /etc/transmission-daemon

    Öntanımlı yapılandırma dosyasını yedeklemek önemli. Herhangi bir aksilik durumunda yedekten geri dönmek gerekebilir.

    root:/etc/transmission-daemon# cp settings.json settings.json.backup

    Yapılandırma dosyasının yedeğini aldığımıza göre, metin tabanlı editör ile “settings.json” dosyasını düzenlemeye başlayalım:

    root:/etc/transmission-daemon# nano settings.json

    Yapılandırma dosyasındaki bazı satırların ayarlarını aşağıdaki yönergeleri takip ederek istediğiniz şekilde ayarlayabilirsiniz. Bu ayarlar şu an mevcut çalışan sistemden alınmıştır ve orjinal değerleri ile birlikte verilmektedir. Ayrıca ne işe yaradıklarına dair bilgi de eklenmiştir:

    “alt-speed-down”: 1, (OD: 50, kB/s cinsinden alternatif Download hız ayarını belirtir)
    “alt-speed-enabled”: true, (OD: false, alternatif hız ayarlarının kullanılıp kullanılmayacağını belirtir)
    “alt-speed-time-begin”: 345,  (OD: 540, dakika cinsinden alternatif hız uygulamasının başlayacağı saati belirtir)
    “alt-speed-time-enabled”: true, (OD: false, alternatif hız sürecinin başlatılıp başlatılmayacağını belirtir)
    “alt-speed-time-end”: 5, (OD: 1020, dakika cinsinden alternatif hız sürecinin biteceği saati belirtir)
    “alt-speed-up”: 1, (OD: 50, kB/s cinsinden Upload hızını belirtir)
    “bind-address-ipv4”: “192.168.1.10”, (OD: 0.0.0.0, sunucunun dış IP adresini belirtir.)
    “blocklist-enabled”: true, (OD: false, tercihen yalancı bağlantıları listesi kullanılıp kullanılmayacağını belirtir.
    “blocklist-url”: “http://john.bitsurge.net/public/biglist.p2p.gz”, (OD: http://www.example.com/blocklist, yalancı bağlantı listesinin edinileceği adres)
    “download-dir”: “/srv/torrent/indi”, (OD: /var/lib/transmission-daemon/downloads, tamamlanan dosyaların taşınacağı dizin)
    “download-limit-enabled”: 1,  (OD: 0 (Sınırsız), Eş zamanlı kaç download yapılacağını belirtir.)
    “download-queue-size”: 1, (OD: 5, En fazla kaç download sıraya sokulabileceğini belirtir)
    “idle-seeding-limit”: 1, (OD: 30, Boştayken ne kadarlık bir süreçte dosyayı dağıtacağını belirtir)
    “idle-seeding-limit-enabled”: true, (OD: false, Boştayken  dosya dağıtımı yapılıp yapılmayacağını belirtir)
    “incomplete-dir”: “/srv/torrent/gelen”, (OD: /home/debian-transmission/Downloads, inmekte olan dosyaların barındırılacağı dizini belirtir)
    “incomplete-dir-enabled”: true, (OD: false, Tamamlanmamış indirmelerin ayrı dizinde tutulmak istenip istenmediğini belirtir)
    “lpd-enabled”: true, (OD: false, Yerel ağda dosya dağıtan eş taraması durumunu belirtir)
    “ratio-limit-enabled”: true, (OD: false, Dosya dağıtımına oransal olarak sınırlandırma uygulanmasını belirler)
    “rpc-authentication-required”: false, (OD: true, Web arayüzüne erişim için parola gerekip gerekmediğini belirtir)
    “rpc-bind-address”: “192.168.1.10”, (OD: 0.0.0.0, Web arayüzüne sunucu dışından erişebilmek için sunucu adresi verilir)
    “rpc-whitelist”: “127.0.0.1, 192.168.1.*”, (OD: 127.0.0.1, web arayüzüne hangi IP’lerden erişilebileceğini belirler=
    “seed-queue-size”: 1, (OD: 10, Eş zamanlı dağıtım kuyruğu sınırını belirler)
    “speed-limit-up”: 50, (OD: 100, kB/s cinsinden normal zamanlarda Upload hızın belirtir)
    “speed-limit-up-enabled”: true, (OD: false, Normal zamanlarda Upload hız sınırı uygulanığ uygulanmayacağını belirtir)
    “trash-original-torrent-files”: true, (OD: false, .torrent uzantılı dosyaların işi bitince silinip silinmemesi gerektiğini belirtir)

    Yukarıdaki ayarlardan normal ve alternatif zaman hız limitlerini, kuyrukları ve block-list ayarını web arayüzünden de yapabilirsiniz. Bu hali ile torrent servisi çalışmaya hazır durumda, ancak bir eksiğimiz var o da loglama. Eğer siz de benim gibi loglama manyağıysanız, Transmission torrent servisinin loglaması ön tanımlı olarak kapalı gelmektedir, bunu belirtmekte fayda var. Loglamayı çalıştırmak için /etc/default/transmission-daemon dosyasına aşağıdaki kalın yazılı kısımları eklemeniz gerek:

    root:/etc/transmission-daemon# cd /etc/default
    root:/etc/default# nano transmission-daemon

    # defaults for transmission-daemon
    # sourced by /etc/init.d/transmission-daemon

    # Change to 0 to disable daemon
    ENABLE_DAEMON=1

    # This directory stores some runtime information, like torrent files
    # and links to the config file, which itself can be found in
    # /etc/transmission-daemon/settings.json
    CONFIG_DIR=”/var/lib/transmission-daemon/info”

    # This directory stores transmission logs.
    LOG_DIR=”/var/log/transmission.log”

    # Default options for daemon, see transmission-daemon(1) for more options
    OPTIONS=”–config-dir $CONFIG_DIR –logfile $LOG_DIR

    # (optional) extra options to start-stop-daemon
    #START_STOP_OPTIONS=”–iosched idle –nicelevel 10″

    Bu dosyayı kaydettikten sonra servisi başlatmadan önce yapmamız gereken son şey “/var/log” dizini içerisinde “transmission.log” isimli bir dosya oluşturmak ve gerekli sahiplik/erişim izinlerini düzenlemek. Aksi takdirde servis kendisi dosya oluşturamayacak ve loglama yapamayacaktır.

    root:/etc/default/# cd /var/log
    root:/var/log/# touch transmission.log
    root:/var/log/# chown debian-transmission:debian-transmission transmission.log
    root:/var/log/# chmod 644 transmission.log

    Log dosyamızı da hazırladığımıza göre artık servisimizi başlatabiliriz.

    root:/var/log/# service transmission start

    Servisimiz çalışmaya başladığına göre, ağdaki diğer bilgisayardaki browserdan transmission web arayüzüne erişip downloada başlayabiliriz. Transmission web arayüzüne erişmek için şu adrese gitmeniz yeterlidir:

    http://192.168.1.10:9091

    Not: Torrent downloadlarınızın daha hızlı çalışması için “settings.json” dosyasında bulunan “peer-port” satırındaki port numarasını, modeminizden sunucuya yönlendiriniz.

  • Atom işlemcili Ubuntu sunucunun IP adres ayarlarını yapalım.

    network_setupDaha önce donanım özelliklerini yazıp kurulumunu yapmış olduğumuz sunucumuz, ilk kullanım esnasında DHCP istemci ile açılacak şekilde otomatik olarak ayarlanmış bulunmakta. Bu da demek oluyor ki evde kullanmış olduğunuz modemin bir özelliği olan, ağa bağlanmak isteyen cihazlara IP sağlama servisinin, sunucumuz için de sıradaki boş IP adresini atayacağı anlamına gelmektedir. Tabi bu durumda her ne kadar ev içerisinde 254 adet cihaz kullanılmayacağını varsaysak da, herhangi bir şekilde sunucunun yeniden başlaması gerektiği bir durumda, modem cihazı, sunucumuza bambaşka bir IP adresi atayabilir. Bunun önüne geçmek için önümüzde iki seçenek var. Tabi bu seçeneklerin ikisini birden kullanmanız daha sağlıklı bir ağ yapısı oluşturulmasını sağlar.

    İlk olarak her modemde olmayabilecek bir özellik olan modem üzerinden sabit IP atama durumunu anlatacağım:

    Bu özellik daha önce değindiğim gibi her modemde bulunmayabilir. Bulunan modemlerde ise bu ayar, modemin arayüzünden yapılır. Bu ayarı yapabilmeniz için öncelikle sunucunun MAC adresi bilgisine ihtiyacınız olacak. MAC adresini öğrenmek için aşağıdaki komutun çıktısına göz atmamız gerek:

    # ifconfig

    Bu komutun çıktısında aşağıdaki gibi ethernet kartına ait bilgiler görünür:

    eth0      Link encap:Ethernet  HWaddr 70:71:bc:4b:aa:3c  
    inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
    inet6 addr: fe80::7271:bcff:fe4b:aa3c/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
    RX packets:7783591 errors:0 dropped:109 overruns:0 frame:0
    TX packets:8576302 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:7357030531 (7.3 GB)  TX bytes:776162943 (776.1 MB)

    Göreceğiniz üzere “inet addr” satırında, sunucu DHPC modda modemden, ilk boş IP adresi olan 192.168.1.2 adresini almış. Bunu modemden değiştirmek için yukarıda “HWaddr” kısmında yazılı olan, ethernet kartının 12 karakterlik donanımsal adresini modemdeki ilgili alana yazıp, karşılığına da hangi IP’de sabit kalmasını istiyorsanız onu yazmanız gerek. Sunucu olarak kullanılacağını düşünürsek genede akılda kalacak IP’leri tercih etmeliyiz, Örneğin; 192.168.1.10

    Bu ayarı modemden yaptığınız vakit, modem 192.168.1.10 adresini sadece bu MAC Adresine tahsis edecek ve sıradaki boş IP olsa dahi bu IP’den sonraki adresi başka makinelere tahsis edecektir. Böylece sunucuda herhangi bir değişikliğe gerek kalmaksızın, sunucu her açıldığında DHPC istemci aracılığı ile 192.168.1.10 adresini alacaktır.

    Ben bu durumda sabit IP konusunda sıkıntı yaşamamak adına, sabit IP’ye sahip olması gereken her cihaz için IP bloğunun en sonundan başlayıp geriye doğru numaralandırmayı tercih ederim. Ya da modemde DHCP sunucu ayarlarından DCHP’den dağıtım dışı bırakılacak bir blok oluştururum. Mesela zaten sabit bir IP’si olan modem 192.168.1.1 ise DHCP’de 192.168.1.2 adresinden itibaren dağıtıma başlıyorsa bunu değiştirip 192.168.1.10 adresinden itibaren dağıtım yapmasını sağlarım. Böylece modem’e MAC ID girmeden de sadece cihazın IP adresini sabitleyerek 2-10 IP aralığında bir yere sabitleyip, sabit IP olmadan çalışan cihazların bu IP’lere yerleşmesinin önüne geçmiş olurum. Sunucunun 2-10 IP aralığına yerleşmesi için doğal olarak DHCP istemci ayarını değiştirip elle sabit bir IP vermemiz gerekir. Bunu nasıl yapacağımızı ise aşağıda açıklayacağım.

    Sunucunun IP adresini sabitlemek için öncelikle o sunucuya doğrudan erişimimizin olması gerekmektedir. Bu işlemi yapmak için sunucuda oturum açtıktan sonra “Super User” olmanız gerekmektedir.

    “Super User” olduktan sonra “/etc/network” klasörü altında “interfaces” dosyasında değişiklik yapmamız gerekiyor. Bunun için komut satırı editörü (nano) ile dosyayı açmamız gerekiyor.

    # cd /etc/network
    # nano interfaces

    # This file describes the network interfaces available on your system
    # and how to activate them. For more information, see interfaces(5).

    # The loopback network interface
    auto lo
    iface lo inet loopback

    # The primary network interface
    auto eth0
    iface eth0 inet dhcp

    # The primary network interface” satırın altında göreceğiniz üzere ethernet kartı DHCP clent olarak ayarlanmış durumda. Sabit IP haline getirmek için “iface eth0 inet dhcp” satırını başına “#” işareti koyarak yorum satırı haline getiriyoruz ve altına aşağıdaki satırları ekliyoruz:

    # The primary network interface
    auto eth0
    #iface eth0 inet dhcp
    iface eth0 inet static
    address 192.168.1.10
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-nameservers 192.168.1.1

    Bu ayarları satır satır açıklayacak olursak:

    • iface eth0 inet static: Ethernet kartının sabit IP alacağını belirtir.
    • address 192.168.1.10: Ethernet kartına 192.168.1.10 adresi verileceğini belirtir.
    • netmask: Satırı için standart bir satır olduğunu ve detaylı bilgi için Google’a danışmanızı söyleyebilirim. Çok detaylı bir anlatım gerektirdiği için burada açıklamaya girmeyeceğim.
    • network 192.168.1.0: IP adresinin hangi networkte bulunduğunu belirtir. Standart bir satırdır.
    • broadcast 192.168.1.255: Ağa gönderilecek paketin ne kadar genişlikte bir ağa yayılmasını belirleyen satırdır. Bu satır da standart olarak yazılır.
    • gateway 192.168.1.1: Ethernet kartı üzerinden internete erişmek için kullanılacak IP adresini belirtir, ki bu adres modemin adresidir.
    • dns-nameservers 192.168.1.1: DNS adresini belirtir. Normalde DHCP ile bağlanıldığında modemin vereceği DNS adresidir. İhtiyaca göre bu satıra aralarında boşluk bulunacak şekilde Google ya da başka bir DNS sunucu adresini girebilirsiniz.

    Ayarları girdikten sonra dosyayı kaydedip sunucuyu yeniden başlattığınızda sunucu artık “192.168.1.10” adresi ile açılacaktır. Ayarların etkinliğini sınamak için aynı ağdaki başka bir bilgisayardan “192.168.1.10” adresine ping atarak test edebilirsiniz. Başka bir yöntem sunucuya login olup “ifconfig” komutunun çıktısına bakabilirsiniz. SSH sunucunun kurulu olduğunu varsayarsak aynı ağdaki başka bir bilgisayar ile “ssh” üzerinden bağlanmayı deneyebilirsiniz.

  • Eve Atom işlemcili Ubuntu sunucu kuralım

    ubuntuGeçen yazımızda donanımsal özelliklerine göz atıp genel bilgilendirme yaptığımız Atom işlemcili ana kartımızın üzerine ev içerisindeki otomasyonunu yıkacağımız işletim sistemini kuracağız.

    Bunun için benim tercihim Ubuntu 64Bit 14.04 LTS Minimal Server dağıtımı oldu. Sebebine gelince sadece alışkanlık. İsterseniz başka dağıtımlar da deneyebilirsiniz. Tamamen sizin tercihinize kalmış durumda. Bahsi geçen dağıtımı bulmak pek kolay değil o yüzden alternatiflerinin de bulunduğu adresi vereceğim: https://help.ubuntu.com/community/Installation/MinimalCD

    Dağıtım o kadar hafif ki ISO boyutu sadece 37MB. İndirdiğiniz ISO’nun doğru ISO olduğunu aşağıdaki “hash”ler ile kontrol edebilirsiniz:

    • MD5: 7297321c2fa6424417a548c85edd6e98
    • SHA1: e1e074b4302898698977c08013e0afe5c06245e2

    Edindiğimiz ISO’yu herhangi bir belleğe USB’ye ISO yazma aracı ile yazıyoruz. Yazma işlemi yapan programların arayüzleri genelde aynıdır. Bunun için harici program kuracaksanız sitesinden, paket deposundan kurulmuş yazılımı tercih edecekseniz kendi “manuel”inden kullanımı konusunda bilgi edinebilirsiniz.

    • ISO’yu USB Belleğe yazma araçları:
      • UnetBootin (Linux, Windows, Mac OSX)
      • USB Image Writer (“usb-creator-*” Ubuntu ve türevlerinde paket deposundan edinebilirsiniz)

    ISO’yu belleğe yazdıktan sonra makinaya takıp USB Bellekten “boot” etmemiz gerekmekte. Bunun için makineyi açtıktan sonra BIOS’un ilklenmesi sırasında (Artık genelde çoğu BIOS’ta mevcut bir özellik olan) “Boot Menu”süne giriş yapacağız. Önceki yazımda belirttiğim donanımın BIOS’unda bu menüye erişmek için “F10” tuşuna basmamız gerekiyor.

    “F10” Tuşuna bastığımız zaman karşınıza çıkacak olan BOOT menüsünden USB Belleği seçtikten kısa bir süre sonra “Ubuntu Kurulum Menüsü” çıkacak.

    Kurulum Menüsünden “Install” seçeneği ile kuruluma başlıyoruz. Kurulumun il adımı, kurulum aşamasındaki ekranlarda kullanmak istediğiniz dili seçmenizi sağlar (1). Sonraki ekranda ise yerel ölçü birimleri ve saat ayarlarınızın yapılabilmesi için nerede olduğunuzu seçeceğiniz menü gelir (2). Bundan sonraki adımda ise klavyenizin dilinin belirlenmesine gelir. Bu noktada “<Yes>” seçeneğini seçip klavyenin otomatik olarak tanınması için bir kaç tuşa basabilir ya da “<No>” seçeneğinden devam edip kendiniz istediğiniz bir klavye dilini seçebilirsiniz (3).

    #1
    #2
    #3

    Otomatik donanım tanıma işleminden sonra yerel ağ ayarlarının yapılmasına sıra gelecek ve sizden kuracağınız sistem için bir makine isim belirlemenizi isteyecek. Bu adımda ön tanımlı olarak “Hostname” satırında “ubuntu” yazar (4). Bu ayarı yaptıktan sonra sizden size en yakın paket deposu yansısının bulunduğu ülkeyi seçmenizi isteyecek. Bulunduğunuz ülkeyi seçmeniz yeterlidir (5). Sonra sizden eğer kullanmak istiyorsanız “Proxy” ayarlarını girmenizi isteyecek. Eğer herhangi bir “Proxy” kullanmıyorsanız bu kısmı boş geçebilirsiniz. Sonrasında seçmiş olduğunuz paket deposunu kontrol edip gerekli kurulum dosyalarını o depodan indirmeye başlayacaktır. (6)

    #4
    #5Screenshot from 2015-01-07 21:11:16
    #6Screenshot from 2015-01-07 21:17:10

    “Set up users and passwords” kısmında, genel olarak her işletim sisteminde olduğu gibi, kullanıcı (7) adı ve parola (8) belirliyoruz. Daha sonra bu kullanıcı için oluşturulacak dosyaların şifrelenmesini isteyip istemediğinizi soracak (9). Ben şimdilik bu kısmı es geçiyorum. Çünkü nasıl olsa ev kullanımı için hazırlanan bir sistem olduğundan ve kullandığımız sistemin işlemci gücünü de göz önünde bulundurarak gereksiz yüklerden kaçınıyorum.

    #7Screenshot from 2015-01-09 20:46:57
    #8Screenshot from 2015-01-09 20:47:36
    #9Screenshot from 2015-01-09 20:48:13

    “Configure The Clock” Kurulum, bu adımda sizin bulunduğunuz yeri baz alarak yaklaşık olarak hangi zaman alanında bulunduğunuzu tahmin eder ve buna göre saat tarih ayarlarının  NTP ile otomatik olarak düzenlenmesi için ayar yapacaktır. Onun için muhtemelen size bulunduğunuz zaman alanının “Asia/İstanbul” olarak gösterip doğru olup olmadığını soracaktır. Eğer doğru ise onaylayın, başka bir ülkedeyseniz ona göre gerekli düzeltmeyi yapıp devam ediniz.

    “Partition Disk” kısmında mevcut hard disk’i nasıl bölümlemek istediğinizi belirlemeniz istenecek (10). Ben çok uğraşmaya gerek görmedim ve “Guided – use entire disk” seçeneğini seçtim (11). Böylece kurulum tüm diski otomatik olarak bölümlendirecek ve değişiklikleri yapmak için benden onay isteyecek (12). Onay verdiğiniz takdirde yapılan bölümleme işlemini diske uygulayacak ve kurulum sonraki adımdan devam edecektir. Eğer bir Super User iseniz zaten bu adımda kendi kurallarınızı koyacaksınızdır.

    #10Screenshot from 2015-01-09 20:57:40
    #11Screenshot from 2015-01-09 20:58:05
    #12Screenshot from 2015-01-09 20:58:50

    “Installing the base system” İşletim sisteminin temel kısmı internetten çekilerek kurulmaya başlar. İnternetten çekilmesinin yegane sebebi kurulum için “Minimal” iso kullanıyor olmamızdır.  Minimal ISO hemen hemen içeriğinde hiçbir şey barındırmamaktadır. Bu işlem internet hızınıza göre zaman alabilir (13-14). Temel işletim sistemi paketleri kurulduktan sonra sisteminizi güvende tutmak için otomatik olarak güvenlik yamalarının yapılması ile ilgili ayar gelecek. “Install security update automatically” seçeneği ile güvenlik yamalarının kurulum esnasında yapılmasını sağlayabilirsiniz (15).

    #13Screenshot from 2015-01-09 21:05:19
    #14Screenshot from 2015-01-09 21:21:12
    #15Screenshot from 2015-01-09 21:42:33

    “Software selection” kısmında sunucumuzda çalışmasını bekleyeceğimiz servislerin kurulması için seçim yapacağız. Ben, temel olarak minimum ihtiyacı karşılamak adına sadece  “Basic Ubuntu Server” ve uzaktan erişim sağlayabilmek için “OpenSSH Server” paketini kurdum (16). “Basic Ubuntu Server” paket içeriğinde bir takım yardımcı araçları barındırmaktadır. paket içeriğini görmek için “tasksel –task-packages server” komutu ile paket içeriğini görmeniz mümkün. Aslında bu paketi kurmasam da olur; ancak eğer kablosuz bağlantı kurmak istiyorsam, ya da screen kullanmayı seviyorsam ya da ne bileyim python ile bir takım görevler yazacaksam bu temel paketi kurmakta fayda var. Diğer servisleri, ihtiyacım oldukça yine “tasksel” yardımı ile ileride kurabiliriz.

    “Install the GRUB boot loader on a hard disk” Son işlemlerden birisi “Grub” ön yükleyicinin nereye kurulacağı konusudur. “Grub” ön yükleyiciyi nereye kurmak istediğinizi soracaktır. Eğer benim sistemimde olduğu gibi tek diskli ve sadece Linux işletim sistemi barındıran bir yapıya sahipseniz “Install the GRUB boot loader to the master boot record” sorusuna “<Yes>” cevabı ile karşılık vermeniz gerek (17). Aslına bakacak olursanız zaten başka bir önyükleyici kullanmayacağınız sürece, diskinizde başka bir işletim sistemi de olsa, sisteminizde birden fazla diskte olsa bu cevabı vermeniz en mantıklısıdır. Daha profesyonel yapılar için tabi ki “<No>” seçeneğini seçip kendi yolunuzu çizebilirsiniz.

    “Finish the installation” Ubuntu 14.04 Server Minimal ISO kurulumu tamamlanmış bulunmakta. Bilgisayarın yeniden başlatılıp kurduğunuz işletim sisteminin açılması için “<Continue>” seçiliyken kalvyenizden “Enter” tuşuna basın ve yeni kurmuş olduğunuz işletim sistemine adımınızı atın (18)…

    #16Screenshot from 2015-01-09 22:47:57
    #17Screenshot from 2015-01-09 22:58:19
    #18Screenshot from 2015-01-09 22:59:41

    Sonraki yazımızda bu sunucumuza evdeki herkesin kullanabileceği ortak bir torrent servisi kuracağız. Görüşmek üzere….

  • Git deposuna dosya eklemeyi unutmamak için…

    Son zamanlarda django-south ile çalışmaya başladığımdan beri, sık sık depoya gönderilecek dosyalar arasında depoya eklenmemeiş dosyaları eklemeyi unutur oldum. Daha doğrusu gözden kaçırıyorum ister istemez. Çünkü oluşturulan dosyalar alt klasörde duruyor ve o klasörler ise kapalı. Yani içindeki dosyalar listelenmiyor pencerede. Doğal olarak kırmızı renkteki dosyaları sağ tıklayıp eklemeyi unutuyorum. Sonunda bu duruma bir dur demem gerekti ve araştırdım ettim, bir yol buldum.

    Bulduğum yol git’in muhteşem hook’larından pre-commit kullanmak oldu. proje dizinindeki .git klasörü altında bulunan hooks klasöründeki örnek birkaç hook dosyasında biri olan pre-commit.sample dosyasının adını pre-commit olarak değiştirdiğimiz zaman, git otomatik olarak bu dosyadaki kuralları işletmeye başlıyor. Bu dosyanın amacı “commit”ten önce gerekli kontrolleri yapmayı sağlamak. Ben de o yüzden aşağıdaki shell script satırlarını bu dosyaya ekledim ve projede git’e eklenememiş dosya varsa hata verip çıkmasını sağladım:

     

    # Git’e eklenmemiş yeni dosyalar var mı kontrol ediyoruz.
    ud=`git status -u | grep ‘^Untracked files:$’`

    if [ -n “$ud” ];
    then
    cat <<\EOF
    Dikkat: Git’e eklenmemiş dosyalar mevcut. Commit durduruldu.
    EOF
    exit 1
    fi

    Artık pycharm’da git commit esnasında eğer eklemeyi unuttuğum dosya varsa bana uyarı veriyor ve commit işlemini durduruyor.

     

  • Ubuntu sunucuda headless firefox kullanmak

    Linux sunucularda genelde olmayan, kullanılmayan hatta gerek dahi duyulmayan yegane şey;  grafik arayüzdür. Sebebi ise basittir. Suncu verilen görevi yerine getirmek için sağlıklı, güvenli ve hızlı çalışmak zorundadır. Özellikle de “Güvenlik”. Linux sistem yöneticileri herşeyi konsoldan yapmanın bir yolunu muhakkak bulur. Grafik arayüzlü bir sistemde ise çok daha fazla açık oluşabileceği hassasiyetinden dolayı böyle bir sistem kullanmayı reddederler. Ancak işler bir yerde grafik işleme kabiliyeti gerektirebilir.

    Örneğin “Selenium” denilen beowser emülatörü kullanımı için illa ki grafik işleme kabiliyeti lazım. Yine de, bu durumda “Selenium”u Linux sunucuda kullanmak imkansızdeğildir. Çünkü her ne kadar grafik bir arayüz olmasa da, gerekli kütüphaneleri ekledikten sonra sunucuyu bu kabiliyete eriştirebilirsiniz.

    Selenium’un neden sunucunun grafik işleme kabiliyetine ihtiyacı olduğu sorusu ise kullandığı “webdriver” tabir edilen nesnelerin aslıdna normalde masaüstünde kullandığımız browserların bir “instance”ını çalıştırması gerekliliğinden kaynaklı. Bu durumda sunucuda bir Firefox browser çalıştırmak için illaki masaüstü olması gerekmiyor. Sadece Firefox’u biraz kandırarak ekranı olan bir makinede çalıştığına ikna edebiliriz. Bunu yapmak için ubuntu suncuda öncelikle firefox kurmak gerek.


     

    sudo apt-get update
    sudo apt-get install firefox

    apt-get install firefox
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    The following extra packages will be installed:
    aptdaemon consolekit libasound2 libcanberra0 libck-connector0 libdbusmenu-glib4 libdbusmenu-gtk4 libogg0 libpam-ck-connector libpolkit-agent-1-0 libpolkit-backend-1-0 libstartup-notification0 libtdb1 libvorbis0a libvorbisfile3 libx11-xcb1
    libxcb-util0 libxt6 policykit-1 python-aptdaemon python-defer sound-theme-freedesktop xul-ext-ubufox
    Suggested packages:
    ttf-lyx libasound2-plugins libasound2-python libcanberra-gtk0 libcanberra-pulse
    The following NEW packages will be installed:
    aptdaemon consolekit firefox libasound2 libcanberra0 libck-connector0 libdbusmenu-glib4 libdbusmenu-gtk4 libogg0 libpam-ck-connector libpolkit-agent-1-0 libpolkit-backend-1-0 libstartup-notification0 libtdb1 libvorbis0a libvorbisfile3
    libx11-xcb1 libxcb-util0 libxt6 policykit-1 python-aptdaemon python-defer sound-theme-freedesktop xul-ext-ubufox
    0 upgraded, 24 newly installed, 0 to remove and 2 not upgraded.
    Need to get 37.8 MB of archives.
    After this operation, 88.0 MB of additional disk space will be used.
    Do you want to continue [Y/n]?

    Bu komut ile birlikte suncunuza Firefox’un depoda bulunan son sürümünü ve yanında bağımlılığı olan birkaç paket ve kütüphaneyi kurmuş bulunacaksınız. Bu işlemden sonra Firefox’u çalıştırmaya kalmanız hiçbir sonuç vermez. Çünkü browseri kandıracak ortamı henüz yaratmadık. Ortamı yaratmak için Xvfb paketini kurmamız lazım (X Virtual FrameBuffer). Xvfb, ekranı olmayan makinelerde X-Server’i framebuffer aracılığı ile sanal bellek kullanarak emüle eder. paketi kurmak için aşağıdaki komutu kullanınız:

    sudo apt-get install xvfb

    apt-get install xvfb
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    The following extra packages will be installed:
    libfontenc1 libgl1-mesa-dri libllvm3.0 libxaw7 libxfont1 libxkbfile1 libxmu6 libxpm4 x11-xkb-utils xfonts-base xfonts-encodings xfonts-utils xserver-common
    Suggested packages:
    libglide3 xfs xserver
    The following NEW packages will be installed:
    libfontenc1 libgl1-mesa-dri libllvm3.0 libxaw7 libxfont1 libxkbfile1 libxmu6 libxpm4 x11-xkb-utils xfonts-base xfonts-encodings xfonts-utils xserver-common xvfb
    0 upgraded, 14 newly installed, 0 to remove and 2 not upgraded.
    Need to get 19.0 MB of archives.
    After this operation, 53.7 MB of additional disk space will be used.
    Do you want to continue [Y/n]?

     

    Paketi kurduktan sonra sunucudaki işletim sistemine farz-ı misal numarası 10 olan bir display yarattıracağız.

    sudo Xvfb :10 -ac

    “-ac” anahtarı xvfb’yi erişim kontrolü kapalı olarak çalışmasını bildirir. Böylece bilinen bir güvenlik açığı oluşturmamış oluruz. An itibariyle 10 numaralı bir sanal görüntü uç birimimiz var. Tabi herşey bu uç birimi yaratmak ile bitmiyor. Mevcut oturum bu uç birimden habersiz. O yüzden borwseri çalıştırmanız halen bir işe yaramayacak. Öncelikle bulunuğunuz oturuma bu durumu izah etmelisiniz. Bunun için aşağıdaki komutu veriyoruz:

    export DISPLAY=:10

     

    Artık hazırız. normal “firefox” komutu vererek Firefox’u ekranı olan bir makinada çalıştığına ikna edebiliriz. Ancak tabi biz ekranda firefox’un log çıktı yığınından başka birşey göremeyeceğiz. Sonuç itibariyle çalışan  headless firefox.

    firefox

    5 XSELINUXs still allocated at reset
    SCREEN: 0 objects of 168 bytes = 0 total bytes 0 private allocs
    DEVICE: 4 objects of 96 bytes = 384 total bytes 0 private allocs
    CLIENT: 0 objects of 152 bytes = 0 total bytes 0 private allocs
    WINDOW: 0 objects of 32 bytes = 0 total bytes 0 private allocs
    PIXMAP: 1 objects of 16 bytes = 16 total bytes 0 private allocs
    GC: 0 objects of 56 bytes = 0 total bytes 0 private allocs
    CURSOR: 0 objects of 8 bytes = 0 total bytes 0 private allocs
    CURSOR_BITS: 0 objects of 8 bytes = 0 total bytes 0 private allocs
    DBE_WINDOW: 0 objects of 24 bytes = 0 total bytes 0 private allocs
    TOTAL: 5 objects, 400 bytes, 0 allocs
    4 DEVICEs still allocated at reset
    DEVICE: 4 objects of 96 bytes = 384 total bytes 0 private allocs
    CLIENT: 0 objects of 152 bytes = 0 total bytes 0 private allocs
    WINDOW: 0 objects of 32 bytes = 0 total bytes 0 private allocs
    PIXMAP: 1 objects of 16 bytes = 16 total bytes 0 private allocs
    GC: 0 objects of 56 bytes = 0 total bytes 0 private allocs
    CURSOR: 0 objects of 8 bytes = 0 total bytes 0 private allocs
    CURSOR_BITS: 0 objects of 8 bytes = 0 total bytes 0 private allocs
    DBE_WINDOW: 0 objects of 24 bytes = 0 total bytes 0 private allocs
    TOTAL: 5 objects, 400 bytes, 0 allocs
    1 PIXMAPs still allocated at reset
    PIXMAP: 1 objects of 16 bytes = 16 total bytes 0 private allocs
    GC: 0 objects of 56 bytes = 0 total bytes 0 private allocs
    CURSOR: 0 objects of 8 bytes = 0 total bytes 0 private allocs
    CURSOR_BITS: 0 objects of 8 bytes = 0 total bytes 0 private allocs
    DBE_WINDOW: 0 objects of 24 bytes = 0 total bytes 0 private allocs
    TOTAL: 1 objects, 16 bytes, 0 allocs……

    …..

    Gördüğünüz üzere tomarla log çıktısı ekranı kapladı. Şu an Firefox sunucuda çalışmakta. Çalışmasını durdurmak için “ctrl+c” tuş kombinasyonu ile firefoxu öldürebilirsiniz.

    Eğer firefox’u “&” ile (çalıştır ve arkaplana at) çalıştırırsanız öldürmek için process id’ini “ps” komutu ile öğrenip “kill” komutu ile öldürmeniz gerekir. Artık “Selenium IDE” ile hazırladığımız “test_case”leri sunucuda deneyebilirsiniz.