29.06.2009

Linux'ta konsoldan CD/DVD yazmak

Hatirlayalim:

Linux'da bir CD ya da DVD'nin iso image ini almak icin

#/$ dd if=/dev/sr0 of=/iso/media.iso

yapiyoruz. Biraz elini yuzunu duzeltirsek yazdiklarimizin:

#/$ dd if=/dev/sr0 of=/iso/media.iso && eject /dev/sr0 && sleep 10 ;eject -t /dev/sr0

Cikardigimiz image.iso isimli iso dosyasini mount etmek icin:

# mount /iso/media.iso /mnt -o loop

Peki cikardigimiz iso dosyasini nasil CD/DVD ye yaziyoruz?

1. Ilk once device isimlerini ve ID lerini ogrenelim:

uileri@uileri:~> cdrecord -scanbus
scsibus0:
0,0,0 0) 'HL-DT-ST' 'DVD-ROM GDR8164B' '0D08' Removable CD-ROM
0,1,0 1) 'HL-DT-ST' 'DVDRAM GSA-H10N ' 'JL12' Removable CD-ROM
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *


2. Simdi gordugunuz gibi iki DVD ROM 'um ve bunlardan birinin de DVD yazici oldugunu gorduk.
O halde elimizdeki iso dosyasini yazalim:

$ cdrecord -v -dao dev=0,1,0 speed=32 Desktop/FREE_XenServer-5.5.0-install-cd.iso

Akilda soru isareti kalmamasi icin:

speed ile yazma hizimizi (speed=32 gibi)
dev ile device id sini (dev= 0,1,0)
dao ile ise yazma tipini veriyoruz (Disc atOnce)

daha fazla bilgi icin

$ wodim --help yapabiliriz

Elimizdeki RW bir CD ve DVD'yo bosaltmak icin :

$ cdrecord -v dev=0,1,0 blank=all

/usr/sbin/apache2: symbol lookup error: /usr/lib/perl5/auto/Apache2/ServerUtil/ServerUtil.so: undefined symbol: ap_get_server_banner


Gecen hafta OCS ile ugrasirken bu sorunla karsilastim. Cok ugrastim ama, cogu sorun gibi bu da cok ufacik birseyden dolayiymis.
Sistemdeki apache versiyonu mod_perl surumu ile uyumlu degil. :)
Tek yapmamiz gereken mod_perl'u yeniden yuklemek ve Apache sunucumuzu yeniden baslatmak.

24.06.2009

MySQL veritabani Replikasyonu II

MySQL replikasyonu yaparken karsilasilabilecek sorunlar, yapilabilecek kisa yollar vs vs..

1. Onceki yazida anlattigim MySQL Replikasyonunu gerceklestirirken datafile tasimak yerine mysqldump kullanabiliriz
2. MySQL slave'de /etc/my.cnf dosyasina
replicate-do-db={database_adi} seklinde verdigimiz databaseimizi replike etmek icin,konfigurasyon ve yeniden baslatma isleminden sonra, mysql shell'inde asagidaki girdiyi kullanabiliriz

mysql> LOAD DATA FROM MASTER;

3. LOAD DATA FROM MASTER sadece MyISAM tablolarda calisir.

4. replicate-do-db={database_adi_1}
replicate-do-db={database_adi_2}
replicate-do-db={database_adi_3} seklinde birdne fazla databasei ayni conf icinde altalta tanimlamamiz gerekiyor.

5. Master sunucuyu show master status\G;
Slave sunucuyu ise show slave status\G;
ile izleyebiliriz.

6. report-host =SLAVE_SUNUCU_TANIMLAMASI seklinde girdimiz olmazsa Slave sistemimizi MySQL Administrator gibi programlarla izleyemiyoruz.

7. InnoDB tablolarin replikasyonu biraz daha sorunlu olabiliyor. Konuyla ilgili detayli bir yazi daha yayinlayacagim.

MySQL veritabani Replikasyonu I


Hepimizin bildigi gibi, hangi sistemi yonetiyorsak yonetelim yedekleme cok onemli bir kavramdir.
Ozellikle Veritas Netbackup Client kullanan arkadaslar da bilirler ki, en buyuk sorunlardan biri NetBackup'in MySQL yedekleme agent'i bulunmamakta.
Dolayisiyla, elimizdeki MySQL veritabani sunucusunu ancak su sekilde yedekleyebiliriz:

1. MySQL veritabani sunucumuzu durdurup, SuSE sistemlerde /var/lib/mysql altinda bulunan data klasorlerini kopyalamak sureti ile yedekleriz
2.MySQL Sunucusu ile birlikte gelen "mysqldump" aracini kullanabiliriz.
$ mysql -u{username} -p{password} {database_ismi} > dump.sql
(Ayrica function ve trigger yedekleme konusunda da bir yazim vardi)

Ancak herhangi bir sekilde sunucumuz down oldugunda, geri dondurmek icin oncelikle yeni bir sistem kurmak ve uzerindeki MySQL Sunucusunu yapilandirmaktan sonra, aldigimiz en son yedekten grei donmemiz gerekir.
Yalniz burada da goze alinmasi gereken kayiplar var, ne gibi:

1. Sunucuyu yeniden kurmak, yapilandirmak, MySQL veritabani sunucusunu kurarak,yapilandirmak icin harcanan zaman
2. Geri donus yapacagimiz veri sadece -en son - yedekledigimiz ankine ait olacaktir. Ornegin. hergun saat 14:00 de yedek aliyorsak ve sistemi 13:00 da kaybedersek, yaklasik 23 saatlik bir data kaybi gerceklesmis olur. BU kayip bazen onemsiz olabilecegi gibi, ozellikle buyuk sirketlerde-projelerde hayati onem arz edebilir.

Bu kayiplarin onune gecmek icin yapmamiz gereken MySQL veritabani sunucumuz uzerindeki veritabanlarini replike edebiliriz. Nasil mi?

1. Yeni bir sunucu ve onun uzerine de MySQL veritabani sunucusu kuruyoruz.
---- MASTER ----
2. Eski - yeni adiyla Master - sunucumuzdaki /etc/my.cnf dosyasini yeni kurdugumuz - yeni adiyla Slave - sunucumuza kopyaliyoruz.
3. Ardindan Master sunucumuzun /etc/my.cnf dosyasini aciyoruz ve [mysql] ile baslayan bolume

server-id = 1
log-bin=mysqlreplikasyon-bin

satirlarini ekliyoruz.
4. Master sunucu uzerindeki my.cnf dosyasinda bind-address ve skip-networking gecen satirlarin basina # koyuyoruz.
---- MASTER ----


---- SLAVE ----
5. Slave sunucumuza ssh ile baglanip /etc/my.cnf dosyasini aciyoruz.
7. server-id=1 satirini ,
#server-id=1 olarak degistiriyoruz.
6. Yine [mysqld] ile baslayan bolume gelip su satirlari ekliyoruz.

server-id = 2
master-host ={MASTER_SUNUCU_IPSI}
master-user =repl_user
master-password ={SIFRE}
master-port =3306
log-bin=mysqlreplikasyon-bin
replicate-do-db={DATABASE_ADI}
report-host =SLAVE_SUNUCU_TANIMLAMASI
---- SLAVE ----

7. Master ve Slave sunucu uzerindeki MySQL veritabanlarini durduruyoruz

# rcmysql stop (SuSE sistemler icin)
# service mysqld stop (RedHat Sistemler icin)
# /etc/init.d/mysqld stop

8. Master sunucu uzerindeki datafile klasorlerini "tar" liyoruz.

# tar -cvpPf mysqlrepl.tar /var/lib/mysql/{database_ismi}

9. sftp ya da ftp ile Master sunucuda aldigimiz tar yedegini Slave sunucuya atip, yedegi aciyoruz.

# tar -xvpPf mysqlrepl.tar

10 . Master ve Slave sunucuyu baslatiyoruz

# rcmysql start (SuSE sistemler icin)
# service mysqld start (RedHat Sistemler icin)
# /etc/init.d/mysqld start

11. Master sunucusundaki MySQL konsola dusuyoruz.

mysql> show master status\G;

11. Master sunucusundaki MySQL konsola dusuyoruz.

mysql> show slave status\G;

15.06.2009

MySQL'de unutulan root sifresini degistirme

Diyelim ki MySQL root sifresini unuttuk.

Ilk yapmamiz gereken MySQL veritabanimizi kapatabilecegimiz bir bosluk bulmak.
Ardindan, SuSE sistemler icin

# rcmysql stop
RedHat sistemler icin ise

# service mysql stop

Ardindan
# whereis mysqld_safe
(/usr/bin/mysqld_safe)
# /usr/bin/mysqld_safe --skip-grant-tables &

Simdi MySQL sistemine root olarak baglaniyoruz.

# mysql -uroot

Buradan sonrasi cok kolay cunku root olarak MySQL komut satirina dusmus olduk.
mysql > use mysql;
mysql > update user set password=PASSWORD('sifrem') where user='root';
mysql > flush privileges;
mysql > quit;

Simdi SuSE sistemler icin

# rcmysql restart
RedHat sistemler icin ise

# service mysql restart

# mysql -uroot -psifrem

12.06.2009

ISO'dan DVD yazmak

Bugun elimdeki DVDBurner programlarini kullanmayip komut satirindan dvd yazmak istedim.

# ls -l /dev/cdrom*
2 tane cd/dvd wr karsima cikti.

Peki /iso altinda bulunan Fedora-11-x86_64-DVD.iso dosyasini DVD'ye yazmak icin ne yapmamiz lazim?

$ growisofs -dvd-compat -Z /dev/cdrom2=/iso/Fedora-11-x86_64-DVD.iso


Kaynak: http://www.linuxforums.org/forum/installation/35772-how-burn-dvd-iso.html

4.06.2009

Mevcut bir LVM partition'u buyutmek

Oncelikle kullandigimiz LVM partition'u buyutmek icin ya mevcut VolumeGroup'ta musait yer olmali ya da yeni disk -ya da partitionu- VolumeGroup'a eklemeliyiz.

VolumeGroup icindeki kullanilabilir alani gormek icin :

# vgdisplay {VolumeGroup_adi} | grep -i free // ornek #vgdisplay vg0 | grep -i free

Elimizdeki LogicalPartitionu 20 GB'a buyutmek icin

# lvextend -L 20G /dev/mapper/{VolumeGroup}-{LogicalVolume}

ya da

# lvextend -L 20G /dev/VolumeGroup}/{LogicalVolume}

eger elimizdeki LogicalPartitionu 20 GB arttirmak icin ise:

# lvextend -L +20G /dev/VolumeGroup}/{LogicalVolume}

LVM ile bir partition nasil olusturulur?

Elimizde 3 e bolunmus bir disk:
Ornegin
/dev/sda1 40GB
/dev/sda2 4GB
/dev/sda3 28 GB

Elimizde 2 'ye bolunmus baska bir disk:

/dev/sdb1 60GB
/dev/sdb2 20 GB

Elimizde tek parca baska bir disk bulunsun:

/dev/sdc1 146 GB

Bu diskler uzerine / bolumunu /dev/sda1 e, swap'i /dev/sda2 'ye kurdugumuzu dusunelim.
Dolayisiyla

$ df -h
/dev/sda1 / 40GB
/dev/sda2 swap 4GB

olsun.Kalan alani LVM ile gruplamak istedigimizi dusunelim. (Ornegin ben iso'lar icin bir mount point, sanal makinalar icin baska bir mount point kullanirim)

Simdi senaryomuza su sekilde devam edelim.

/iso mount pointimizin boyutu 80 GB
/virtual mount pointimizin boyutu 150 GB

Bu yapiyi yukaridaki partition tablosunu kullarak ancak LVM ile yapabiliriz nasil mi?

Oncelikle ilk yapmamiz gereken hangi Partitionlarin LVM senaryosunda kullanilacagini belirtmek

# pvcreate /dev/sda3 /dev/sdb1 /dev/sdb2 /dev/sdc1

Bunun ardindan hemen ilk Volume Group'umuzu olusturuyoruz.

# vgcreate vg0 /dev/sda3 /dev/sdb1
# vgcreate vg1 /dev/sdb2 /dev/sdc1

Isimizin cogu bitti,
Simdi Logical Volume'larimizi olusturup islemimizi tamamlayacagiz.

# lvcreate vg0 -L 80G --name iso
# lvcreate vg1 -L 150G --name virt

Simdi sanki partitionlari bulunan yeni bir disk takmisiz gibi;

# mkfs.ext3 /dev/mapper/vg0-iso
# mkfs -t ext3 /dev/mapper/vg1-virt

Son olarak

# mkdir /iso && mount /dev/mapper/vg0-iso /iso
# mkdir /virtual && /dev/mapper/vg1-virt

3.06.2009

Redhat,Public key for "cluster-snmp.x.x.x" is not installed hatasi

Daha onceki yazimda yerel yum repository'si kurmayi anlatmistim.
Bu repository'deki paketlerin sistem icin "Public Key'lerinin" gosterilmesi gerekiyor. Eger bu islemi yapmazsak, yum ile yerel depodan paket kurmamiz mumkun olma ve "Public key for "cluster-snmp.x.x.x" is not installed" seklinde hata aliriz.

Bu sorunun cozumu su sekildedir.

Kurdugumuz repositorynin bagli oldugu klasor icerisinde (ornekte /mnt/iso) RPM-GPG ile baslayan iki dosya vardir.Bu iki dosyayi import edersek bu sorunu da asmis oluruz. Nasil mi?

# rpm --import /mnt/iso/RPM-GPG-KEY*

Redhat ile DVD'yi YUM Repository olarak Kullanmak

Oncelikle makinamiza/ sunucumuza Redhat sistemi kurdugumuzu dusunelim.(Benim kurdugum isletim sistemi RHEL 5.3 x86_64)
Kurulumu tamamladiktan sonra Redhat'in Cluster ve Cluster yonetim araclarini kurmak istedim.
Ancak paket bagimlilliklari basima cok buyuk dertler acti. Sadece bir paket icin bile bir suru paketi kurmam gerekti. onemli olan o degil, bagimliliklarini ogrenmek icin bile bir rpm komutu calistirmak zorunda kaldim. En sonunda bu isten vazgectim ve DVD'mden local bir yum repository kurmaya ve paketleri yum ile kurmaya karar verdim.

Oncelikle DVD'yi dvdrom'a yerlestirdik. Ardindan DVD'mi iso yaptim

1. # mkdir /iso
2. # dd if=/dev/cdrom of=/iso/rhel5.3-x86_64.iso && eject

Ardindan

3. # mkdir /mnt/iso
4. # mount /iso/rhel5.3-x86_64.iso /mnt/iso -o loop
// Bu girdiyi /etc/fstab'a girmekte fayda olabilir

Isleme baslarken hatirlamakta fayda var, ihtiyacimiz olan paketin adi createrepo

5. # rpm -ivh /mnt/iso/Server/createrepo*
6. # cd /mnt
7. # createrepo .
8 # vi /etc/yum.repos.d/iso.repo
Buraya
[iso]
enabled = 1
baseurl = file:///mnt

Isimiz bitti,
artik gerekli paketleri yum ile yukleyebiliriz, Ornek
# yum install net-snmp

SuSE de kullanici eklerken karsilasilan "Unknown Group" hatasi

SLES ve SLED'de komut satirindan kullanici eklenirken

useradd: Unknown group `dialout'.
useradd: Unknown group `uucp'.
useradd: Unknown group `video'.
useradd: Unknown group `audio'.

gibi hata mesajlari alinabilir.
Bunu duzetlemek icin yapmamiz gereken tek sey:

# vi /etc/default/useradd
Burada GROUPS satirini bulup basini "#" ile hashlemektir.

SLES 11 - Sendmail Notlari


Yakin zamanda yaptigim sendmail gecisinden kisa notlar ve ipuclari:

1. Sendmail oldurmek ve baslatmak

# killall sendmail
# sendmail -bd -q30m

2. Sendmail'de mail yonlendirmesi

# vi /etc/mail/mailertable
domain.com.tr smtp:[{smtp_server_ip/adres}]

# makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable

3. Sendmail loglarini canli izlemek icin

#tailf /var/log/mail


4. Sendmail ile kuyruktaki mailleri yollamak

# sendmail -q

mailleri loglarini gorerek yollamak

#
sendmail -v -q

5. Kuyruktaki mail adedini her 3 saniyede 1 defa gostermek

# while [ 1 ]; do sleep 3; mailq|tail -1; done

6. "rejecting connections on daemon MTA: 15 children, max 15" hatasi cozumu:

#vi /etc/sendmail.cf O MaxDaemonChildren=115 (default degeri 15)

1.06.2009

Solaris digest komutu (Solaris'te md5sum)

Linux ve BSD sistemlerde dosya bütünlügünü test etmek için kullanılan md5sum, Solaris sistemlerde bulunmamaktadır.

Fakat bunun yeride Solaris'te daha güzel bir komut var: digest komutu.
Digest komutunun güzelligi birçok algoritmayı desteklemesidir.

Hangi algoritmaların desteklendigini görmek için

yusuf:>digest -l
sha1
md5
sha256
sha384
sha512

kullanım şekli ise;
yusuf:>digest -a algorithm file

yusuf:>digest -a md5 php-5.2.6-sol10-x86-local
d5e3ebe3826ffb8e8ac9e13480454d92

Redhat uzerine Apache PHP MySQL Yuklemek

Bu yazim- aslinda digerlerine gore oldukca- basit kalabilir.
Diyelim ki RHEL 5.3 sistemimiz var uzerine MySQL ve PHP destekli Apache kurmak istiyorsunuz.Isimiz oldukca kolay:
1. Sistemimizin internete cikabildiginden emin oluyoruz.
2. Sistemi register ediyoruz.
# rhn_register // Burada karsimiza cikan formlari rhn.redhat.com (satellite) sitesinde kullandigimiz bilgilerle dolduruyoruz.
3. # yum upgrade // ile sistemimizi guncel hale getiriyoruz. ('y') tusuna basarak onay veriyoruz
4. # yum install httpd // ile apache'yi yukluyoruz
5. # yum install php // ile apache'mize php destegini de veriyoruz.
6. # yum install mysql-server mysql // ile mysql sunucusu ve istemcisini yukluyoruz.

Kurulumumuz tamamlandi. Denememizi yapalim
# cd /var/www/htdocs
# vi index.php (Buraya bir phpinfo atiyoruz)
# service httpd start
# service mysqld start
# lynx http://127.0.0.1