SMF etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
SMF etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Çarşamba, Kasım 24, 2010

Jboss SMF , Solaris 10

Solaris 10 ortamında Jboss'un SMF servisi haline getirilmesi ile ilgili kritik iki kaynağı, artık konunun üzerinden zaman geçmiş olmasına rağmen arşiv amaçlı eklemek istedim.

Jboss 4 veya 5'in SMF ' e dönüştürülmesi
http://www.sun.com/bigadmin/content/submitted/config_smf.jsp

Jboss SMF için düzeltilmesi gereken önemli bir bug
http://community.jboss.org/thread/2390?tstart=0

Ç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.

Cuma, Ocak 29, 2010

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 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.. :) )





Salı, Eylül 08, 2009

Solaris 10, Apache V2 SMF düzenleme

Projelerden biri için iki adet Solaris 10 (u7) sunucu üzerine medya ile birlikte gelen Apache’nin kurulması gerekiyordu. Kurduk :) Ama daha sonra yazılımcılar en az V2 ile çalışmak istediklerini belirtip V1.3′ten vazgeçtiler.

Herhangi bir yazılımcının istek ve karar değişiklikleri asla bitmeyeceği için bir süre sonra bunu da yeterli görmeyip V2.2 ile çalışmak istediklerini belirttiler.

Solaris medyası ile V2 geldiği için V2.2.12′ yi ancak www.sunfreeware.com’dan bulabildim.

http://www.sunfreeware.com/programlistintel10.html#gcc33

Apache’nin bu sürümü beraberinde bir çok ek paketin de yüklenmesini istiyor. Özellikle prod sunucularına GCC kurmak istemeyenler için libgcc.3-4-6 tavsiye edilmiş.

Kurulumlar tamamlandığında elimizde çalışır halde Apache v2 sunucuları vardı ve yazılımcıların tüm isteklerini karşılıyordu ama bu sefer de yönetim sorunları ortaya çıktı.

Yüklemede kullandığım stream data package anladığım kadarıyla Apache için SMF servisi oluşturmamıştı. Bu durumda ancak ilgili klasörün içinden apachectl’yi elle çalıştırarak hizmeti başlatabiliyorduk.

Aslında bu durum işime de gelmedi değil. Ne kadar zamandır SMF hakkında pratik yapmayı planlıyordum ve bu sayede el alışkanlığımı da geliştirmiş oldum.

Apache V2 için SMF servisi oluşturmanın yolu çok basit.

1- Sun’ın aşağıdaki belgesi oldukça açıklayıcı

http://www.sun.com/bigadmin/features/articles/id_manager_service.html

2- Buradan mevcut XML dosya örneğini alıp üzerinde bazı küçük değişiklikler yaptım ve bahsedildiği gibi bir klasör altına yerleştirdim.

3- Aşağıdaki komutları çalıştırdım ve Voila ! Servis hazırdı.

bash-3.00# svccfg validate apache2.xml
bash-3.00# svccfg import apache2.xml

SMF ile ilgilenenler için açıklayıcı bir forum topiğini de ekte yayınlıyorum.

http://www.unix.com/sun-solaris/32936-solaris-10-add-new-svc.html