Çarşamba, Şubat 17, 2010

pid file /opt/csw/apache2/var/run/httpd.pid overwritten -- Unclean shutdown of previous Apache run



Gecenin bir vakti insan Apache sürümleri, MPM worker , CSW ve SunFreeware repositoryleri gibi derin konularla uğraşınca ve de yorulmuşsa bazen okuyanı güldürecek derecede basit sorunların peşinde helak oluyor. 


"Ockham'ın usturası" önermesi de birazdan anlatacağım bu duruma çok uygun düşüyor sanırım.


Ockham'ın usturası : 


Latincesi "Entia non sunt multiplicanda praeter necessitatem" olarak geçen ; "bir meselenin birden çok açıklaması varsa, ve hepsi de aynı derecede kuvvetli ise, yani bir açıklamayı diğerlerinden üstün tutmak için elle tutulur bir neden yok ise, basit açıklamanın daha faydalı olacağı görüşü"dür.


Neyse, daha fazla saptırmadan konumuza dönelim.


Daha önce Sunfreeware'den alınma Apache 2.2.x paketlerini kullanırken, MPM worker sorunu nedeniyle artık mpm olarak derlenmiş olan ve CSW tabanlı Apache paketini kullanmaya başladık. Ancak daha öncesinde de "Limiting Service Privileges in the Solaris™ 10 Operating System" belgesine dayanarak Apache SMF servisini de 'webservd' hesabı altında kısıtlamış ve çalışır hale getirmiştik.


Ne olduysa zaten bu noktada oldu. Komik ve de gerçek.


Apache servisi normalde 'webservd' hesabı altında açılmalı ve 2-3 prosesten fazlası olmamalıydı. Ancak root, nobody ve webservd olarak 3 farklı hesap altında farklı prosesler görüyorduk. root ile açılan proses 1 no'lu idi ve öldüremiyorduk. Diğer yandan da aşağıdaki hata mesajını almaktaydık.


"pid file /opt/csw/apache2/var/run/httpd.pid overwritten Unclean shutdown of previous Apache run"


Neler düşünmedik ki ? PID dosyasının sahipliğini normal kipte değiştirmeyi, single user mode'da değiştirmeyi , /etc/init altında içinde httpd geçen dosyaları aratmayı vs.vs. o an uykulu kafayla akla gelebilecek envai çeşit (cahil) yöntem denendi ama hiç biri işe yaramadı.


Sonuçta ne mi çıktı ? En basit önerme tabi. CSW paketi hiç de tahmin etmediğimiz şekilde kendi SMF servisini yazmış ve çalıştırmıştı. Ayrıca biz de Apache servisi için SMF yazmış ve çalıştırmıştık. Bizimkini öldürüken aynı zamanda başka bir servisle yarışmaya çalışıyorduk. :) Servislerden birini silince sorun kendiliğinden düzeldi. Artık httpd proseslerini istediğimiz gibi kapatabiliyorduk.

Perşembe, Şubat 11, 2010

NTP zaman ayarı ve Solaris 10

Solaris sunucularınızın harici bir NTP zaman sunucusundan bilgi alması ve saat yönetimi yapmasını istiyorsanız aşağıdaki adımları uygulayabilirsiniz.

1- SUNWntpr ve SUNWntpu paketleri sunucuya yüklenmelidir.
2- /etc/inet/ntp.client dosyası /etc/inet/ntp.conf olarak kopyalanır.
3- ntp.conf dosyası içine aşağıdaki satırlar eklenir.

server 0.europe.pool.ntp.org
server 1.europe.pool.ntp.orgserver 2.europe.pool.ntp.org


4- svcadm enable ntp komutu ile NTP servisi aktif hale getirilir.
5- ntpq -p komutu ile sunucunun saatinin durumu ve eşleme farkları izlenebilir.

Salı, Şubat 09, 2010

SecureCRT ve şifresiz SSH login (1)

Çok sayıda UNIX sunucusuyla ilgilenmeye başlayınca ortaya farklı sunuculara anlık yapılması gereken bağlantıların ne kadar sıkıcı olabileceği , her seferinde şifre girmenin prensipli duruşun gereği olsa bile tahammül sınırlarını zorlayabileceği gerçeği çıktı. Bu durumda, yine güvenlikten ödün vermeden login işlemlerini kolaylaştırmanın yolunu bulmak için SSH sertifikası yöntemini kullanmaya karar verdim. Aşağıda bu işlemin adımları yer alıyor.

1- Public Key oluşturulması

SecureCRT yazılımında public key oluşturmak için aşağıdaki adımları takip ettim.


















Passphrase alanına bir anahtar kelime girilmesi gerekiyor. Ne kadar uzun ve karmaşık, o kadar iyi :)













1024 bit'lik anahtar oluşturuyorum.



















Anahtar oluşturulduğunda kayıt etmesi için bir klasör soracaktır. Ben Linux ve Solaris anahtarlarını ayırmak için ayrı klasörler kullanıyorum. Identitiy ve Identitiy.pub dosyaları otomatik olarak seçtiğiniz klasöre yerleştirilecektir.

2- Private Key'in kullanılması

SecureCRT içinde private key'in kullanılabilmesi için iki yöntem bulunuyor. İlk olarak tüm sunucularda kullanılmak üzere Global Options içinde bu anahtarı gösterebilirsiniz. Linux ve Solaris anahtarlarım farklı olduğu için bu yöntem bende işe yaramadı. Diğer yöntem olarak her sunucu için sunucu seçenekleri içinde anahtar belirtebilirsiniz.













Yukarıdaki resimde görülen kimlik doğrulama sıralamasını değiştirmeniz gerekiyor. Public Key ile çalışabilmek için ben "password" ve "public key"in öncelik sıralamasını değiştirdim.













3- UNIX sunucusunda yapılması gereken işlemler.

  • Öncelikle (~) home folder altında .ssh klasörünü açmalısınız.
  • SecureCRT'nin oluşturduğu identitiy.pub dosyasını UNIX sunucunuza kopyalayınız.
  • touch ~/.ssh/authorized_keys dosyasını oluşturunuz.
  • cat identitiy.pub>>~username/.ssh/authorized_keys ile oluşturduğunuz anahtarı genel anahtar dosyanıza kayıt ediniz. Burada yönlendirmenin sonuna yaz (append) '>>' şeklinde yapılmasının sebebi, farklı sunuculardan gelecek farklı public key'lerin aynı dosyada toplanabilmesini sağlamaktır. Birazdan okuyacağınız gibi iki UNIX host arasında da anahtar değiş tokuşu ile SSH login sağlamak mümkün olacaktır.
Bu noktada kişisel bilgisayarınızdaki SecureCRT üzerinden tekil olarak veya toptan "global options" kullanarak ayarladığınız UNIX sunucularına şifresiz SSH login yapabilecek durumdasınız.

Pazartesi, Şubat 01, 2010

Link : TMG (ISA Server) donanım tavsiyeleri

TMG sürümünde kullanılması tavsiye edilen donanımlara dair uzun ve oldukça açıklayıcı bilgiler içeren bir makale dizisi.

Link : TMG (ISA Server) Best Practices Analyzer

TMG için BPA yayınlandı. ISA Team blog sayfasındaki duyuru aşağıda yer alıyor.



Windows NTFS disk checking işlemini iptal etmek

Bir Sun X4250 sunucuya Windows 2003 yükleyip bir takım işlemler yaptıktan sonra disklerden birinde "disk checking" başlatmak zorunda kaldım. Daha sonra bu işlemden vazgeçmek istedim çünkü uzun sürecekti ama sunucunun yalnızca USB klavye ve fare girişi olduğu için, disk kontrolü başladığında iptal edemiyordum.


Benzer durumlarda Registry'den disk kontrolünü iptal etmek için aşağıdaki anahtarı değiştirmeniz yeterli olacaktır.


My Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\SessionManager\BootExecute


kaydındaki " autocheck autochk * " dışındaki tüm bilgileri silerek disk kontrolünün başlamasını engelleyebilirsiniz.

Pazar, Ocak 31, 2010

Link : Top 20 Most Valued Backup Exec Articles


Symantec tarafından çeşitli değerlendirmeler sonucunda en fazla rağbet gören ve yararlı olduğu kullanıcılar tarafından en çok onaylanan 20 Backup Exec makalesi.

https://www-secure.symantec.com/connect/node/1123091

Cuma, Ocak 29, 2010

Link : My 10 UNIX Command Line Mistakes

Bir UNIX yöneticisinin gerçek hayat deneyimleri. Eğlenceli bir yazı. Dikkate alınacak çok fazla kısmı da var kesinlikle.


http://www.cyberciti.biz/tips/my-10-unix-command-line-mistakes.html



Jboss SMF hizmet delegasyonu (delegation) ve RBAC (1.kısım)

Solaris 10 üzerinde çalışan Jboss hizmetinin yönetimini (kapatmak, açmak ve askıya almak) root dışında başka bir kullanıcıya verme ihtiyacı bir süredir üzerinde konuştuğumuz bir konuydu. İlk etapta hizmeti SMF biçimine dönüştürmüştük. Şimdi de bu SMF metodunun yönetimini başkalarına delege etmek gerekiyordu.


Bu konuda ne yazık ki çok fazla kaynak yok. Sun'ın bir kaç belgesi ve bir kaç blog yazısı dışında bir şeye rastlayamadım. Ancak olanları derleyerek aşağıdaki yönteme ulaştım. Bu yöntemin çalışabilmesi için hizmetin SMF'e dönüştürülmüş olması, network/jboss olarak kayıt edilmiş olması ve hizmeti devredecek 'jboss ' adında bir hesap açmış olmanız gerekiyor.



# vi /etc/security/auth_attr
                  dosya içinde en son satıra eklenir > solaris.smf.manage.network/jboss:::Jboss servisi


# usermod -A solaris.smf.manage.network/jboss jboss
# svcprop -p general network/jboss
# svccfg -s network/jboss setprop general/action_authorization=astring: solaris.smf.manage.network/jboss
# svcadm refresh network/jboss
# svcprop -p general network/jboss


Buraya kadar olan kısımı uyguladığınızda servisi yeniden başlatma yetkisini kullanıcıyı devretmiş oldunuz. Bundan sonrasını uyguladığınızda ise servisi enable / disable etme yetkisini de devrediyorsunuz.


# svccfg -s network/jboss setprop general/value_authorization=astring: solaris.smf.manage.network/jboss

Bu yöntemi uyguladığınızda RBAC metoduna girmeden yalnızca tek bir kişi ve hizmet için delegasyonu sağlayabiliyorsunuz. Aynı işin RBAC ile nasıl yapılacağını bir sonraki yazımda anlatacağım. Bitirmeden önce bu konuda fayda sağlayacak bir iki kaynak adresi de ekte vermek istiyorum.

Restricting Service Administration in the Solaris™ 10 Operating System

Salı, Ocak 26, 2010

64bit Windows 2003, SQL 2005 ve MSXML6.0 problemi

64bit Windows 2003 server üzerine SQL 2005 yüklemek isterken MSXML 6.0 ile ilgili probleme rastlamış olabilirsiniz. Ben de karşılaştım ve deneyimledim :) 


Çözüm aşağıdaki makalede.


error 3 : bad or corrupt data while decompressing file

Solaris 10 U7 bir sunucumuzda yüksek oranda hesaplamaya dayanan tomcat ve mysql tabanlı bir uygulamamız vardı. Bu uygulama için kurulan yeni sunucuda JVM ayarlarıyla ilgili yapılan bir hata nedeniyle core dump oluşmaya başladı ve süratle sunucunun diskini doldurdu.


Kapatıp açtıktan sonra , açılış sırasında aşağıdaki nahoş hatayı almaya başladık ve işletim sistemini yükleyemez hale geldik.


error 3 : bad or corrupt data while decompressing file


Yaptığım kısa bir araştırmadan sonra bunu çözmenin basit bir yolu olduğunu öğrendim. Aşağıda paylaşıyorum.


Sunucu failsafe modda açıldıktan sonra aşağıdaki komutlar çalıştırılır.


sh> rm -f /a/platform/i86pc/boot_archive
sh> bootadm update-archive -R /a
sh> reboot


Salı, Ocak 19, 2010

Tomcat 6 SMF servisi oluşturma (Solaris 10)


Tomcat 6.0'ı Solaris 10 üzerinde SMF servisi olarak çalıştırmak için hazırda bir kaynak bulamadım. Yaptığım araştırmalarda da net olarak bir XML dosyası elde edemedim. Dolayısıyla iş başa düştü. Sırayla tüm adımları aşağıda gönderiyorum.

1- Java 1.6 yüklenir ( /opt/jdk1.6)
2- Tomcat 6.0 yüklenir (/opt/apache-tomcat6)
3- Tomcat XML oluşturulur ve /var/svc/manifest/network altına tomcat.xml olarak kopyalanır.
4- /opt/apache-tomcat6/bin altındaki tüm çalıştırılabilir dosyalara +x (execute) hakkı verilir.
5- tomcat için bir kullanıcı hesabı ve grup oluşturulur.
6- /opt/apache-tomcat6/log klasörünün sahipliği tomcat:tomcat grubuna verilir.
7- svccfg import /var/svc/manifest/network/tomcat.xml ile servis hazırlanır.
8- Java, /usr/bin'den farklı bir yere yüklenmiş olduğu için sembolik link oluşturulur.

ln -s /opt/jdk1.6/java /usr/bin/java

9- /opt/apache-tomcat6/bin/startup.sh içine JAVA_HOME=/opt/jdk1.6 eklenir.

Aşağıda bir Jboss XML'den devşirerek oluşturduğum XML dosyasını bulabilirsiniz (Neden metin olarak yüklemediğimi sorarsanız, Blogger koda kızdığı ve ben de bunu nasıl aşacağımı bilmediğim için böyle yaptım. Tekrar yazmak zorunda kalacaklar kızabilirler ama malesef böyle.. :) )





Çarşamba, Ocak 13, 2010

BackupExec 12.5, Windows 2008 ve file system caching


BackupExec 12.5 kullandığımızdan bu yana en büyük sorunlarımızdan biri, BE sunucusunda 64 bit Windows 2008 kullanmamıza rağmen yüksek File Caching Service bellek tüketimiydi. Bu tüketim çoğunlukla öyle noktalara çıkıyordu ki, uygulamanın performansını etkilemesi bir yana, 0 byte serbest bellek nedeniyle korkunç miktarda sayfalama hatalarıyla (paging) sunucunun performansını bile düşürmekteydi.

Bir süre agentlarla ilgili testler vs. yaptık ancak sonuçta farkettik ki, konunun agentlarla ilgisi yoktu. Windows 2008 64bit işletim sisteminde file caching'i kontrol altına alabilmek için başka bir yöntem bulmak zorundaydık.

Bir süre araştırdıktan sonra aşağıdaki MSDN blogunu ve uygulamayı bulduk.


Bu uygulamayı Windows 2008'e servis olarak kayıt ettirdikten sonra caching hizmetinin tükettiği belleğin kontrol altına girdiğini gördük. Parametrelerle oynayarak caching'in azami ne kadar bellek tüketeceğini sınırlamak mümkün. Ancak bellek talep eden uygulama olmadığı takdirde dinamik bellek yönetimi belleği caching'e bırakıyor. Şimdilik gözlemlerim bu yönde.

Uygulamayı kullandığımızdan bu yana yedekleme sisteminin performansında azımsanmayacak iyileşmeler gördük. Gerçi daha çok iyileşmeye ihtiyacı var ancak bir sorunu daha halletmiş olmaktan memnunuz.

Pazartesi, Aralık 14, 2009

Solaris 10'da disk kotasını etkin hale getirmek

Kota uygulamasını UFS dosya sistemlerinde etkin hale getirmek oldukça kolay. Bİr kaç komutla çalıştırılabiliyor. Aşağıda örnek bir uygulama göstermek istiyorum.

- kota uygulanacak her dosya sistemininin kökünde 'quotas' dosyası yaratılır.

# touch /app/quotas /quotas

- dosyanın yetkileri root hesabıyla düzenlenir.

# chmod 600 /app/quotas /quotas

- kota uygulanacak tüm dosya sistemleri için /etc/vfstab dosyasında 'options' alanına 'rq' kaydı eklenir. Bu işlem sonrasında sunucunun yeniden başlatılması gerekmemektedir.

# vi /etc/vfstab

- Kota etkin hale getirilir.

# quotaon -va

- Hangi kullanıcı için kota belirlenecekse , bu kullanıcı için ilgili komut çalıştırılır.

# edquota test01

- Eğer birden fazla kullanıcı için kota uygulanacaksa, bir kullanıcı hesabı şablon olarak seçilebilir. Aşağıdaki komuttaki ilk kullanıcı şablona esas alınacak kullanıcıdır.

# edquota -p test01 test02 test03


Cuma, Kasım 20, 2009

NFS automount problemi Solaris 10

Sol10 makinelerinde kullandığımız nfs disk bölümlerini /etc/vfstab içine yazmama rağmen bir türlü automount olmadığını görünce biraz araştırma yaptım ve aşağıdaki yazışmayı buldum.

İlginç bir bilgi olduğunu düşünerek yayınlıyorum.


Özetle, nfs disk bölmesinin otomatik yüklenmesi için nfs SMF servisinin online durumda olması gerekiyor. Bendeki durumu kontrol ettiğimde gerçekten de disable durumda olduğunu gördüm. :)

Link : Solaris 10 yama yönetiimi

Solaris'de yama yönetimi konusunda en iyi uygulamaları gösteren bir web hizmeti .

Defunct process'leri öldürmek

Orphaned (defunct) process'leri öldürmek için güzel bir yöntem.

/usr/bin/preap $(ps -ef | grep defunct | awk '{ print $2 }' | xargs)

Çarşamba, Kasım 18, 2009

Güvenli Apache kurulumu (1) : Not

Kurulum adımları doğru takip edilmesine rağmen httpd servisi hala "daemon" hesabıyla çalışıyorsa edindiğim deneyimlere göre, /usr/local/apache2/logs altındaki bir dosyanın sahipliği webservd hesabına geçmemiş olabilir.

Farklı zamanlarda yaptığım iki kurulumda aynı sorun ve dosyayı gördüm. Her ikisinde de httpd.pid dosyasının sahibi hala root:root idi. Dosyanın sahibini webservd olarak değiştirerek servisi yeniden başlatınca, Apache servisi olması gerektiği gibi "webservd" hesabı altında çalıştı.


Cuma, Kasım 13, 2009

Güvenli Apache kurulumu (1)

Solaris 10 sunucularımızda Apache 2.2.x sürümlerini çalıştırmak için hazırlık yapıyoruz. Elbette güvenli kurulumun üzerinde yine aynı şekilde güvenli modda çalışan uygulamalar istediğimiz için Apache web server'ın da güvenli kurulumuna dair araştırmalar yapmaya başladık.

Bu ilk kısımda Sun'ın bu konuda yayınlanmış belgelerini referans alarak Apache'nin kısıtlı yetkilerle kontrollü çalıştırılmasına dair bulduklarımı özetlemeye çalışacağım.

Apache'nin SMF servisi olarak nasıl çalıştırılacağını daha önceki bir yazımda açıklamıştım.

Apache SMF dönüşüm

SMF servisi olarak başlattıktan sonra servisin deamon veya root gibi kullanıcı hesapları yerine, kısıtlı yetkilere sahip webservd hesabıyla çalıştırılabilmesi için aşağıdaki komutların takip edilmesi yeterlidir.

# svccfg -s apache2
svc:/network/http:apache2> setprop start/user = astring: webservd
svc:/network/http:apache2> setprop start/group = astring: webservd

Apache servisinin minimum yetki seviyesinde çalıştırılması için gereken ayarlamalar yapılıyor.

svc:/network/http:apache2> setprop start/privileges = astring: basic,!proc_session,!proc_info,!file_link_any,net_privaddr
svc:/network/http:apache2> setprop start/limit_privileges = astring: :default
svc:/network/http:apache2> setprop start/use_profile = boolean: false
svc:/network/http:apache2> setprop start/supp_groups = astring: :default
svc:/network/http:apache2> setprop start/working_directory = astring:
:default
svc:/network/http:apache2> setprop start/project = astring: :default
svc:/network/http:apache2> setprop start/resource_pool = astring: :default
svc:/network/http:apache2> end

Bu noktada servisi yeniden enable etmek gerekiyor.

# svcadm -v enable -s apache2
svc:/network/http:apache2 enabled.

Eğer servis daha önceden çalıştırılmışsa /usr/local/apache2 dizininin sahipliği bin:bin olarak düzenlenmiştir. Bu durumda webservd hesabı log dosyalarını okuyamayacağı için aşağıdaki hata mesajını alabilirsiniz.

# cat /var/svc/log/application-web-apache2:default.log

[ Nov 13 14:46:31 Executing start method ("/usr/local/apache2/bin/apachectl start") ]
(13)Permission denied: httpd: could not open error log file /usr/local/apache2/logs/error_log.

Bu durumda klasör sahipliğini webservd hesap ve grubuna devretmek gerekiyor.

# chown -R webservd:webservd /usr/local/apache2/

Daha sonra sunucuyu yeniden başlattığınızda httpd servisinin yalnızda bu kullanıcı hesabıyla çalıştığını kontrol etmelisiniz.

# ps -ef|grep http|grep -v grep

webservd 714 459 0 15:12:56 ? 0:00 /usr/local/apache2/bin/httpd -k start

# ppriv -S 714

714: /usr/local/apache2/bin/httpd -k start

flags =

E: net_privaddr,proc_exec,proc_fork

I: net_privaddr,proc_exec,proc_fork

P: net_privaddr,proc_exec,proc_fork

L: all

Vmware Tools 4.0 ve Solaris 10

Vsphere 4.0'a geçtiğimizden bu yana sanal Solaris 10 sunucularının vmware tools paketlerini değiştirmek için fırsat kolluyordum. Geçen hafta sonu bir kaç makinede bu işlemi yapıp yeni VM tools'u yükledikten sonra servisin kendiliğinden kapandığını farkettim. Makine açılışında servis açılıyor ancak daha sonra kapanıyordu. Bu konuyla ilgili küçük bir araştırmadan sonra UTF-8 locale ile ilgili aşağıdaki paketin yüklenmesi gerektiğini öğrendim. Paket yüklendikten sonra sunucular sorunsuz olarak VM tools'u çalıştırmaya başladılar.

VMware Tools does not start on a Solaris guest

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1014683