Apache ve PHP’nin versiyon bilgilerini gizleme

Apache ve PHP’nin versiyon bilgilerini headerdan gizleme ihtiyacı duydum. Dursun diye buraya da koyayım bari.

Apache’nin versiyon bilgilerini saklamak için :

/etc/httpd/conf/httpd.conf dosyasında ( ya da sizin conf dosyasınız nerede ise ) aşağıdaki parametreleri ayarlayın.

ServerSignature Off
ServerTokens ProductOnly

Siz aşağıdaki tablodan yararlanıp isterseniz başka değer verebilirsiniz.

ServerToken Görüntülenecek Bilgi
ProductOnly Server: Apache
Major Server: Apache/2
Minor Server: Apache/2.0
Minimal Server: Apache/2.0.55
OS Server: Apache/2.0.55 (Redhat)
Full(veya boş) Server: Apache/2.0.64 (Unix) mod_ssl/2.0.64 OpenSSL/0.9.8e-fips-rhel5
 

Parametreleri ayarlamadan önce :

root@localhost:~# curl -I http://www.kursaddara.com
HTTP/1.1 200 OK
Date: Mon, 16 Apr 2012 06:45:50 GMT
Server: Apache/2.0.64 (Unix) mod_ssl/2.0.64 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
X-Powered-By: PHP/5.2.9
Connection: close
Content-Type: text/html

Parametreleri ayarladıktan sonra :

root@localhost:~# curl -I http://www.kursaddara.com
HTTP/1.1 200 OK
Date: Mon, 16 Apr 2012 06:47:56 GMT
Server: Apache
X-Powered-By: PHP/5.2.9
Connection: close
Content-Type: text/html

Gördüğünüz gibi Apache bilgileri gizlendi.

Şimdi PHP versiyon bilgilerini gizleyelim.

/etc/php.ini dosyasında ( sizin config dosyanız nerede ise ) aşağıdaki parametreleri ayarlayın.

expose_php Off

Parametreleri ayarladıktan sonra :

root@localhost:~# curl -I http://www.kursaddara.com
HTTP/1.1 200 OK
Date: Mon, 16 Apr 2012 06:48:47 GMT
Server: Apache
Connection: close
Content-Type: text/html

Gördüğünüz gibi PHP versiyon bilgisi gitti.

Bu parametreleri değiştirdikten sonra apache’yi restart etmeniz gerekmektedir.

Posted in Apache, Linux, PHP on April 16th, 2012 by Kürşad DARA | | 0 Comments

ERROR 1598 (HY000) at line 16: Binary logging not possible. Message: Transaction level ‘READ-UNCOMMITTED’ in InnoDB is not safe for binlog mode ‘STATEMENT’ hatası

Replikasyon kullandığınız bir mySQL veritabanında aşağıdaki hatayı alıyorsanız :

ERROR 1598 (HY000) at line 16: Binary logging not possible. Message: Transaction level 'READ-UNCOMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'
mysql> show variables like "binlog_format%";
+---------------+-----------+
| Variable_name | Value     |
+---------------+-----------+
| binlog_format | STATEMENT |
+---------------+-----------+
1 row in set (0.00 sec)                  

mysql> SET GLOBAL binlog_format="MIXED";
Query OK, 0 rows affected (0.00 sec)      

kalıcı olarak bu ayarın durması içinde my.cnf dosyasına

binlog_format = "MIXED"

ekleyin ki sonrasında mySQL i restart ettiğinizde tekrar bu ayarlarla ugraşmayın.

Detaylı bilgi için : http://dev.mysql.com/doc/refman/5.1/en/binary-log-setting.html

Posted in Genel, Linux, MySQL on April 13th, 2012 by Kürşad DARA | | 0 Comments

Got fatal error 1236 from master when reading data from binary log: ‘Could not find first log file name in binary log index file’ hatası

mysql slave sunucu da show slave status dediğinizde aşağıdaki hatayı alıyorsanız :

Last_IO_Errno: 1236
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: ‘Could not find first log file name in binary log index file’

Öncelikle slave sunucu da

stop slave;

sonrasında master sunucu da

mysql> flush logs;
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000005 |     106  |              |                  | 
+------------------+----------+--------------+------------------+

Buradan log file ismini ve position alıp daha sonra

slave sunucu da

mysql> CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000005′, MASTER_LOG_POS=106;
mysql> start slave;

bu kadar.

Posted in Linux, MySQL on April 13th, 2012 by Kürşad DARA | | 0 Comments

vi/vim editörde yorum satırlarının rengini değiştirmek için

Anlık olarak değiştirmek istiyorsanız : yazdıktan sonra aşağıdaki komutu girip entere basarsanız yorumların renkleri koyu gri olacaktır. İstediğiniz rengi verebilirsiniz.

highlight Comment ctermfg=darkgray

Eğer kalıcı olarak bu değişikliği yapmak istiyorsanız /etc/vim/vimrc dosyasının içine bu satırları eklemeniz yeterli olacaktır.

Posted in Linux on March 26th, 2012 by Kürşad DARA | | 0 Comments

Insert sorgularında duplicate hatasının ignore edilmesi.

mysql> insert ignore into veritabani1.table1 select * from veritabani2.table2 where x=226;
Query OK, 87571 rows affected (4 min 58.31 sec)
Records: 111439  Duplicates: 23868  Warnings: 0

Posted in Linux, MySQL on March 21st, 2012 by Kürşad DARA | | 0 Comments

ERROR 1010 (HY000): Error dropping database (can’t rmdir ‘.\\’, errno: 17) hatası

mySQL üstünde bir veritabanını silmek istediğinizde bu hatayı alabilirsiniz.

Birkaç sebebi olabilir.

1. Veritabanının data dosyalarının olduğu dizinde gizli bir dosya olabilir.
2. Veritabanının data dosyalarının olduğu dizinde mySQL’in data dosyaları dışında başka dosyalar olabilir.
3. Veritabanının data dosyalarının olduğu dizinin hakları ile ilgili sorun olabilir.
vs. vs.

mysql> drop database test;
ERROR 1010 (HY000): Error dropping database (can't rmdir '.\test\', errno: 17) 

Yukardaki durumlardan birisi varsa onu çözüp sonra

mysql> drop database test;
Query OK, 0 rows affected (0.01 sec)

silebilirsiniz.

Posted in Genel, Linux, MySQL on February 29th, 2012 by Kürşad DARA | | 0 Comments

“kernel: udev: renamed network interface eth0 to eth1” hatası

Vmware üstünde bir makine klonlayıp eth0’dan IP adresini değiştirdiğimde makine açıldığında eth0 ı aktif etmediğini yerine eth1 olarak aktif ettiğini görürseniz benim gibi, IP değiştirirken MAC adresini değiştirmemişsinizdir ve aşağıdaki gibi bir hata almışsınızdır.

Feb 24 00:38:41 mongodbs2 kernel: udev: renamed network interface eth0 to eth1

ve

[root@mongodbs2 ~]# ifconfig 
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:55 errors:0 dropped:0 overruns:0 frame:0
          TX packets:55 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:5340 (5.2 KiB)  TX bytes:5340 (5.2 KiB)

eth0 ın aktif olmadığını göreceksiniz.

[root@mongodbs2 ~]# ifconfig eth0 up

yazdığınızda ise

 Device eth0 does not seem to be present, delaying initialization.

şeklinde bir hata alacaksınız.

[root@mongodbs2 ~]# ifconfig eth1 up

yazıp yolunuza devam edebilirsiniz. Ama kafaya takıp illa eth0 istiyorum derseniz bir ufak değişiklik yapmanız gerekecek.

[root@mongodbs2 ~]# cat /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x8086:0x100f (e1000) (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:aa:00:be", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Burada diğer makinenin MAC adresi tanımlı kaldığı için sistem otomatik olarak eth1 e yeni MAC adresini verecek ve eth1 i aktif edecektir.

Buradan eth0 için MAC adresini doğru MAC adresi ile değiştirirseniz makineyi kapatıp açtığınızda ya da

[root@mongodbs2 ~]# ifconfig eth0 up

komutunu verdiğinizde sisteminiz eth0 üstünden çalışacaktır.

Tavsiyem makineyi kapatıp açmanız.

Posted in Linux on February 24th, 2012 by Kürşad DARA | | 0 Comments

mongoDB data dosyalarının purge edilmesi

mongoDB data dizinine baktığınızda

-rw------- 1 root root  64M 2012-02-21 12:04 xxx.0
-rw------- 1 root root 128M 2012-02-21 12:02 xxx.1
-rw------- 1 root root 256M 2012-02-21 12:02 xxx.2
-rw------- 1 root root 512M 2012-02-21 12:04 xxx.3
-rw------- 1 root root 1.0G 2012-02-21 12:03 xxx.4
-rw------- 1 root root 2.0G 2012-02-21 12:04 xxx.5
-rw------- 1 root root 2.0G 2012-02-21 12:03 xxx.6

şeklinde uzayıp giden dosyalar göreceksiniz.

Bu dosyalar belli zaman sonra artacaktır.

Bunun nedeni şu:

mongoDB belirli büyüklükte (Örn 2GB) data dosyaları tutuyor. Bu alanı kullansanızda kullanmasanız da bu alanı ayırıyor. Siz veritabanı üstünde delete ve insertler yaptığınızda mongoDB’ni bu alanlardaki dataları delete etse bile hala bu alanı ayırmaya devam ediyor.

Bu yüzden belirli aralıklarla bu alanları free etmeniz gerekiyor.

Bunun içinde db.repairDatabase() komutunu çalıştırıp bu alanları free edebilirsiniz.

Komutu;

PRIMARY> use xxx
switched to db xxx

PRIMARY> db.repairDatabase();
{ "ok" : 1 }

şeklinde çalıştırabilirsiniz.

Not : Burada xxx fazlasıyla yer kaplayan veritabanının ismi.

Bu işlem sırasında bu veritabanınızı lock edeceği için production makinesinde yapacaksınız kullanılmadığı bir zamanda yapmanız mantıklı olur.

Yoksa;

Tue Feb 14 15:00:54 [conn78277] warning: ClientCursor::yield can't unlock b/c of recursive lock ns: xxx.xxx top: { opid: 212476020, active: true, lockType: "write", waitingForLock: false, secs_running: 1, op: "query", ns: "xxx", query: { repair
Database: 1.0 }, client: "xxx.xxx.xxx.xxx:38186", desc: "conn", threadId: "0x7f736eacc700", connectionId: 78277, msg: "index: (3/3) btree-middle", numYields: 0 }

şeklinde bir hata göreceksiniz log dosyasında.

Bu işlemler başarılı bir şekilde bittikten sonra gözle görülür şekilde disk kullanımından tasarruf etmiş olacaksınız.

Posted in Linux, MongoDB on February 21st, 2012 by Kürşad DARA | | 0 Comments

Anlık mongodb istatistikleri

Anlık olarak mongodb nin istatistiklerini görmek isterseniz:

root@mongodbs1:~# mongostat -h xxx.xxx.xxx.xxx
connected to: xxx.xxx.xxx.xxx
insert  query update delete getmore command flushes mapped  vsize    res faults locked % idx miss %     qr|qw   ar|aw  netIn netOut  conn   set repl       time 
     0      0      0      0       1       2       0  14.2g  29.2g  2.86g      0        0          0       0|0     1|0   239b     1k     5 myset    M   12:14:35 
     0      0      0      0       0       2       0  14.2g  29.2g  2.86g      0        0          0       0|0     1|0   192b     1k     5 myset    M   12:14:36 
     0      0      0      0       1       2       0  14.2g  29.2g  2.86g      0        0          0       0|0     1|0   239b     1k     5 myset    M   12:14:37 
     0      0      0      0       0       2       0  14.2g  29.2g  2.86g      0        0          0       0|0     1|0   192b     1k     5 myset    M   12:14:38 
     0      0      0      0       1       2       0  14.2g  29.2g  2.86g      0        0          0       0|0     1|0   239b     1k     5 myset    M   12:14:39 
     0      0      0      0       0       2       0  14.2g  29.2g  2.86g      0        0          0       0|0     1|0   192b     1k     5 myset    M   12:14:40 
     0      0      0      0       1       2       0  14.2g  29.2g  2.86g      0        0          0       0|0     1|0   239b     1k     5 myset    M   12:14:41 
     0      0      0      0       0       2       0  14.2g  29.2g  2.86g      0        0          0       0|0     1|0   192b     1k     5 myset    M   12:14:42 
     0      0      0      0       0       2       0  14.2g  29.2g  2.86g      0        0          0       0|0     1|0   192b     1k     5 myset    M   12:14:43 
     0      0      0      0       1       2       1  14.2g  29.2g  2.86g      0        0          0       0|0     1|0   239b     1k     5 myset    M   12:14:44 

Posted in Linux, MongoDB on February 17th, 2012 by Kürşad DARA | | 0 Comments

ERROR 126 (HY000): Incorrect key file for table ‘/mnt/mysql-tmp/#sql_1a76_2.MYI’; try to repair it hatası

mySQL de bir query çalıştırdığınızda;

ERROR 126 (HY000): Incorrect key file for table '/mnt/mysql-tmp/#sql_1a76_2.MYI'; try to repair it

hatasını alıyorsanız bunun birkaç sebebi olabilir.

1. mySQL’in temp tabloları oluşturduğu dizini RAM üzerinde oluşturacak şekilde ayırdıysanız ve örneğin 2GB alan verdiyseniz ve gönderdiğiniz querynin oluşturduğu temp tablosu 2GB’tan büyük ise bu hatayı alırsınız. Bunun çözümü ya RAM’de temp tablo için ayırdığınız alanı artıracaksınız ya da querynizi optimize edeceksiniz.

/dev/ram1             2.0G     0  2.0G   0% /mnt/mysql-tmp
kursad:/mnt/mysql-tmp # ls -la /mnt/mysql-tmp/
total 2.0G
drwxrwxrwt 2 root  root    80 Feb 16 11:01 .
drwxr-xr-x 9 root  root  4.0K Feb 15 14:16 ..
-rw-rw---- 1 mysql mysql 2.0G Feb 16 11:01 #sql_1a76_0.MYD
-rw-rw---- 1 mysql mysql 1.0K Feb 16 11:01 #sql_1a76_0.MYI

2. İlgili tablo bozuk olabilir. Repair edip sorunu çözebilirsiniz.

Posted in Linux, MySQL on February 16th, 2012 by Kürşad DARA | | 0 Comments

« Previous PageNext Page »