LPS:Portal6

Z HelpDesk


ZČU Portal V2

Fork.jpg

Odkazy na dokumentaci

Uživatel:Konzerva/PortalDeflate




User:Aragorn/WAS6 Pepovy cancy

Obecne informace a architektura

  • Pro dosažení maximální dostupnosti mohou být data distribuována do více databází a sdílena mezi více produkčními liniemi. Vaše data jsou rozdělena do čtyř kategorií. Musíte se rozhodnout, jak mají být jednotlivé kategorie rozděleny do různých databází:
  • V určitých situacích je možné, že si budete přát nainstalovat prázdný portál, kde WebSphere Portal je nainstalován normálně, ale nejsou nainstalovány nebo implementovány žádné portlety a nejsou vytvořeny ani žádné stránky. To může být užitečné, pokud si přejete přenést celou konfiguraci portálu z jednoho portálu na jiný. Můžete například chtít přenést portál ze svého testovacího prostředí do produkčního prostředí.
UNIX: ./install.sh -W emptyPortal.active="True"
  • setupCmdLine.sh nastavuje spatne $WAS_HOME (hlavne dost dementne podle aktualniho adresare)

Megablast6

Portal2-architecture.png

  • nastaveni portalovych komponent se z $WPS/config/properties/* souboru prenasi do WAS_Console:Resource environment providers > WP SiteAnalyzerLogService > Custom properties -- $WAS_PROFILE/config/cells/zcucz/nodes/portal2/resources.xml -- pomoci update-properties
  • pro spravnou fukci admin konzole je potreba mit zapnute cookies a referery
  • sifrovani mezi apache2 a webcontainerem je vypnuto absenci knihovny gskit7.so v dynamickemu linkeru schvalne ;) nebudeme si sifrovat lokalni provoz prece, takova blbost

Výkonové nastavení serverů

WebSphere

  • Během předzápisové špičky doporučejeme zkrátit dobu sezení na cca 10 minut. Kroužkového předzápisu se to netýká.
  • Nezapomeňte také zvětšit max. počet sezení v portále, případně povolte jejich overflow.
  • Dalším důležitým parametrem je počet vláken webového kontejneru. Na našem serveru (4 jádra, 8 GB paměti) se osvědčilo nastavení na max. počet 50 vláken.(dokumentace radi vlaken = CPU *10). Ve špičce byl server zcela vytížen, ale stíhal obsluhovat požadavky v rozumném čase.

Nastavení DB poolu

Výchozí nastavení pro max. počet otevřených spojení je nastaven jako Max. limit uvidený u každého datasourcu. Tuto hodnotu můžete změnit nastavením položek stag_portal_max_limit, portal_proxy_max_limit, portal_predzapis_max_limit v souboru stag-config.properties.Dále lze nastavit hodnoty:

  • initial_limit - počet spojení, která se automaticky vytvoří při startu aplikace
  • min_limit - min. počet spojení, které se udržují v poolu.
  • stag_portal - DB uživatel, přes kterého se volá většina selectů.
    • Max. limit 40 spojení
    • Během našeho předzápisu byl tento pool zcela zaplněn, a je možné, že ve špičce musela některá servletová vlákna čekat než dostanou volné spojení spojení do DB. POkud tedy máte dostatečné DB prostředky asi nic nebrání přidat dalších 20 spojení.
  • portal_predzapis - Speciální uživatel, který slouží pouze pro předzápisovou aplikaci a volá se přes něj zápisová operace. Kvůli výkonnostním důvodům nebyl pro volání zápisových procedur použit mechanisnus proxy session.
    • Max. limit 20 spojení
    • Během našeho předzápisu nebyl tento pool zcela vyčerpán a předpokládám, že toto nastavení je dostačující.
  • portal_proxy - Přes tohoto uživatele probíhají všechny ostatní zápisové procedury včetně kroužkového předzápisu.
    • Max. limit 40 spojení
  • Nastavení tyu připojení -
    • pro DEDICATED spojení do DB musí JDBC URL vypadat následovně:
jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = server)(PORT = 1521)))(CONNECT_DATA =(SID = sid)(SERVER = DEDICATED)))
    • pro SHARED spojení do DB JDBC URL vypadá následovně:
jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = server)(PORT = 1521)))(CONNECT_DATA =(SID = sid)(SERVER = SHARED)))

Apache/IBM Httpd

Je nutne si precist dokumentaci k procesnimu modelu a vykonostnimu ladeni a potom udela uvahu ktera vychazi z poctu vasich studentu. Vetsina nastaveni by mela byt stejne u IBM Http serveru, ktery stejne vychazi z apache2.0

Uvaha: studentu je moc, budou chtit vsechno hned, to nelze zvladnout, je potreba spravne nastavit apache tak aby nepretezoval webovy kontejner websphery a nasledne databazi. Pouzivame MPM Worker.

  • maximalni pocet soucasne odbavovanych spojeni, kdyz cca polovina z nich pujde na staticke zdroje zbyva pomer Apache:Websphere porad 3:1. Vsichni ostatni nedostanou spojeni a jejich prohlizec ceka a nepretezuje servery.
MaxClients          300
  • nastaveni regulacniho mechanismu pro vytvareni procesu, nakonec ponechame default, cislo neni az tak dulezite
MinSpareThreads     25
MaxSpareThreads     75
  • pocet procesu, ktere se maji spustit nazacatku (pozor na fork delay, viz. dokumentace, rampup forku ovlivnuje vykonnostni mereni)
StartServers        15
  • celkovy limit procesu apache
ServerLimit         40
  • pocet vlaken v jednom procesu apache2, jedno vlakno, jeden odbavovany klient
ThreadsPerChild     25
  • anti memory leak opatreni, je vhodne nechat pocet rozumne vysoky
MaxRequestsPerChild  5000
  • tcp timeout a keep alive, pri predzapisu je vhodne snizit keepalive na malou hodnotu, aby studenti vejrajici do seznamu predmetu zbytecne neblokovali vlakna apache
Timeout 30
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

Monitorovani stavu

  • zapněte si verbose gc a sledujte v souboru native_stderr.log práci garbage collectoru a aktuálni stav paměti.
  • v apache je mozne zapnout mod_status (pripadne ExtendedStatus on) a sledovat cinnost jednotlivych vlaken
    • pokud je moc dlouho trvajicich W zrejme nestiha databaze
    • pokud je moc R zrejme apache ceka na volne vlakno
  • je vhodne sledovat load stroju pomoci `top -c` pripadne `atop`
  • graficky je mozne obdobne sledovat pomoci gkrellm
  • pro hlubsi statistiku (ale ne realtime) je vyborna aplikace munin, ktera graficky zobrazi vyuziti prostredku operacniho systemu

Řešení problémů

Restart portalu

  • /etc/init.d/portal stop - Nemelo by trvat vice nez 3 minuty. Pokud se to protahuje,
  • /etc/init.d/portal rotate - zalohovani logu
  • /etc/init.d/portal start - trva max. 7 minut
  • /etc/init.d/portal log - tail vsech souboru v PortalServer/logs
  • alias wpslog - nastavi aktualni adresar na PortalServer/logs

Omezovani poctu uzivatelu

Login portlet umožňuje nastavovat max. počet studentů, které portálu pustíme. Uživatelé z tabulky orion_ucitele budou do portálu pouštěni bez ohledu na počet přihlášených studentů. Nastavení se provádí v konfiguračním režimu Login portletu, který se nachází na úvodní portálové stránce (portal.zcu.cz). Pokud se sníží max. počet studentů, tak již přihlášení nebudou odhlášeni, ale musí se počkat na to až jim vyprší sezení nebo se odhlásí.

Max. počet studentů by se měl zvětšovat pomalu v závislosti na podrobném sledování stavu portálu a databázového serveru (pelops).

Délka sezení bude nastavena na 10 (15) minut.

Konfigurace STAG aplikace

Nastavení typu připojení do databáze se provádí v souboru /opt/PORTAL-data/konfigurace/stag-config.properties. Nastavovat se dají hodnoty DEDICATED a SHARED. Max počet připojení se nastavuje v souboru datasources.xml, který se nachází ve WEB-INF adresáři STAG aplikace.

Monitorovaci nastroje

  • top -c | atop
  • tail -f native_stderr.log (v adresari PortalServer/logs)- ukazuje cinnost garbage collectoru a jde z nej zjistit kolik portalu zbyva pameti.
  • munin - z toho to bude chtít natípat scrrenshoty pro prezentace;)
  • statusek - dobrý přehled o tom, jak portál zvládá obsluhovat požadavky (p8080)
  • zajímavé soubory v PortalServer/logs:
    • Predzapis.log - obsahuje informaci o tom, jak si lidi zapisují a odzapisují rozvrhové akce a případné chyby
    • LoginPortlet.log - obsahuje počet aktuálně přihlášených uživatelů (studentů a učitelů) a informaci o tom, kdo se přihlásil resp. odhlásil.
  • kontrola ldap

/usr/bin/ldapsearch -l 5 -H ldaps://psyche.zcu.cz:637 -x -D "uid=bodik,ou=Users,ou=portal,ou=services,dc=zcu,dc=cz" -W -b "ou=portal,ou=services,dc=zcu,dc=cz" "(cn=stagid)"



A co na to Jan Tleskač?

Kontakty

  • jiri.dolecek [at] upol.cz - vyvojar/spravec WAS6 v Olmiku
  • Rodina IS/STAG

Postup instalace WPS 6.0.0.0,6.0.0.1

Instalace WAS a WPS

  • U všech operačních systémů Linux je před instalací portálu WebSphere Portal potřeba knihovna sdílených objektů libstdc++-3.3.3-41
  • WebSphere Portal Verze 6.0 vyžaduje povolení XA pro všechny komponentové zdroje dat a ovladače JDBC. << hmm tomu nerozumim
  • v systemu nastavit:
    • ulimit na pocet otevrenych souboru (FAI.DEV)
    • exportovat promenou LD_ASSUME_KERNEL kvuli imitaci SUSE; a zrejme kuli spravnemu vyberu ABI libc6 (FAI.DEV)
    • priponastavit certifikat CA pro radkoveho klienta ldapsearch (pro kontrolni ucely)
    • pridat iptables java hack, nedokazu presvedcit javu aby si nic neposilala sama sobe po verejnem rozhrani
    • imitovat SUSE
cat << __EOF__ >> /etc/profile
ulimit -n 20240
alias was='cd /opt/WebSphere/AppServer'
alias waslog='cd /opt/WebSphere/AppServer/logs'
alias wps='cd /opt/WebSphere/PortalServer'
alias wpslog='cd /opt/WebSphere/PortalServer/log'
export LD_ASSUME_KERNEL=2.4.19
#
alias wasprof='cd /opt/WebSphere/AppServer/profiles/wp_profile'
export REPLACE_WAS_HOME="/opt/WebSphere/AppServer"
__EOF__
echo "TLS_CACERT /etc/ldap/ZCUrootCA.pem" >> /etc/ldap/ldap.conf
iptables -A INPUT -s 147.228.52.49 -d 147.228.52.49 -j ACCEPT
cat << __EOF__ >> /etc/bodik-release
SUSE
VERSION = 9
__EOF__
  • pridat init.d/portal (TODOFAI.DEV)
  • porozbalovat CDcka a spustit ./install.sh; proslo celkem bez problemu, nakonci ceka nainstalovany WAS, WPS v podobe server1 a WebSphere_Portal

Migrace databazovych dat

portal6 pouziva nekolik datovych ulozist

  1. DB - release, customization, community, FeedBack(analyticka data o vyuziti portalu), Likemins(??), WMM(autorizacni data), jcr(db obsahu?;icm)
  2. LDAP/adresar - autentizacni a identity
  3. konfiguracni - soubory na disku

konfiguruji se v $WPS/config/wpconfig.props a $WPS/config/wpconfig_dbdomain.props, ...

  • zapnout FEEDBACK, resp vytvorit jeji databazi, aby byla prenesena tez a nemusela se inicializovat az bude nekdy treba (asi zbytecne ;)
$ EDIT $WPS/config/wpconfig.properties a dodat hesla pro konfiguracni ulohy
$ ./WPSconfig.sh (feedback-database|setup-feedback)
$ EDIT $WPS/shared/app/config/FeedBack.properties
  • vytvorit databazi a potrebna schemata v oracle, a pridelit potrebna opravneni
# db_block_size = 8192
# !!!!!db_cache_size = 300M # v devitce nefunguje, zrejme obsolete
# db_files = 1024
# log_buffer = 65536
# open_cursors = 1500
# pga_aggregate_target = 200M # maximalni velikost pameti pro jeden uzivatelsky proces
# pre_page_sga = true # shared global area ... jakasi spolecna sdilena pamet ;))
# processes = 300
# shared_pool_size = 200M
#
######uzivatele pro data portalu
create user releaseusr identified by aaaaaa default tablespace USR_DATA temporary tablespace TMP; 
create user commusr identified by aaaaaa default tablespace USR_DATA temporary tablespace TMP;
create user custusr identified by aaaaaa default tablespace USR_DATA temporary tablespace TMP;
create user wmmdbusr identified by aaaaaa default tablespace USR_DATA temporary tablespace  TMP;
create user feedback identified by aaaaaa default tablespace USR_DATA temporary tablespace TMP;
create user lmdbusr identified by aaaaaa default tablespace USR_DATA temporary tablespace TMP;
#
######uzivatel pro data obsahu JCR (no dobra icmadmin je trosku schyza :)
create user icmadmin identified by aaaaaa default tablespace USR_DATA temporary tablespace TMP;
###jako SYSDBA provest vytvoreni specialnich tablespacu
cat << __EOF__ >> /tmp/jcr_tablespaces.sql
define jcrdb = WPS6;
define logfile = /tmp/icmjcr.log;
define dbpath = /home/oracle/data;
spool &logfile;
whenever sqlerror exit sql.sqlcode rollback;
--CONNECT &&dbadmin/&&password;
create tablespace ICMLFQ32 datafile '&dbpath./&jcrdb./&jcrdb._ICMLFQ32_01.dbf' size 300M reuse \
 autoextend on next 10M maxsize UNLIMITED extent management local autoallocate;
create tablespace ICMLNF32 datafile '&dbpath./&jcrdb./&jcrdb._ICMLNF32_01.dbf' size 25M reuse \
 autoextend on next 10M maxsize UNLIMITED extent management local autoallocate;
create tablespace ICMVFQ04 datafile '&dbpath./&jcrdb./&jcrdb._ICMVFQ04_01.dbf' size 25M reuse \
 autoextend on next 10M maxsize UNLIMITED extent management local autoallocate;
create tablespace ICMSFQ04 datafile '&dbpath./&jcrdb./&jcrdb._ICMSFQ04_01.dbf' size 150M reuse \
 autoextend on next 10M maxsize UNLIMITED extent management local autoallocate;
create tablespace ICMLSNDX datafile '&dbpath./&jcrdb./&jcrdb._ICMLSNDX_01.dbf' size 10M reuse \ 
 autoextend on next 10M maxsize UNLIMITED extent management local autoallocate;
spool off;
exit;
__EOF__
grant select on dba_pending_transactions to releaseusr;
grant connect, resource to releaseusr;
grant select on dba_pending_transactions to commusr;
grant connect, resource to commusr;
grant select on dba_pending_transactions to custusr;
grant connect, resource to custusr;
grant select on dba_pending_transactions to wmmdbusr;
grant connect, resource to wmmdbusr;
grant create session, alter session, create table,create view,create procedure, create trigger, \
  create library,create tablespace, alter tablespace, drop tablespace, execute any procedure, \
  unlimited tablespace, create public synonym,drop public synonym, create sequence to icmadmin;  
grant select on dba_pending_transactions to icmadmin;
grant connect, resource to icmadmin;
grant insert any table to icmadmin;
grant select on dba_pending_transactions to feedback;
grant connect, resource, create session to feedback;
grant select on dba_pending_transactions to lmdbusr;
grant connect, resource, create session to lmdbusr;
grant insert any table to lmdbusr;
#
# pridali sme kuli nejake opravje
grant select on pending_trans$ to public;
grant select on dba_2pc_pending to public;
grant select on dba_pending_transactions to public;
grant execute on dbms_system to releaseusr;
grant execute on dbms_system to commusr;
grant execute on dbms_system to custusr;
grant execute on dbms_system to wmmdbusr;
grant execute on dbms_system to feedback;
grant execute on dbms_system to lmdbusr;
grant execute on dbms_system to icmadmin;


  • databazove ruznosti a uzitecnosti
select tablespace_name from dba_tablespaces;
alter user hehe identified by hesloveslo;
  • sehnat JDBC ovladace pro oracle, bud na strankach http://www.oracle.com, nebo ukradnout z nejakeho databazoveho stroje (budiz mi technologickou nekazni ze jsem pouzil 10tkove ovladace pro 9tkovou databazi)
/opt/jdbc/10gR2
/opt/jdbc/9.2
  • nastavit nove parametr datovych ulozist, zvalidovat konfiguraci a prenest data
$ EDIT wpconfig.properties; EDIT wpconfig_dbdomain.properties, EDIT wpconfig_dbtype.properties
$ ./WPSconfig.sh validate-database-connection-(wps|jcr|feedback|likeminds|wmm,?...?)
$ ./WPSconfig.sh validate-database-driver
$ ./WPSconfig.sh database-transfer
  • udelat otisk/zalohu databaze a portalu >> WPS6.oracleinit.tgz

Konfigurace zabezpeceni

  • portal podporuje 4 typy autentizace: form-based, certifikatem, 3ti stranou (nicmene trosku programovaci zbesilost; TODO), pomoci specialniho URL
  • umoznuje slozit identitu v portale z dat z nekolika zdroju. typicky LDAP (UserRegistry) + LookAside DB (UserRepository), to v pripade ze nechceme mit nastaveni uzivatelskych profilu v adresari

Napojeni User Registry na adresar

  • poskytovani sluzeb v domene identit provadi WebSphere Member Manager. dokaze namapovat atributy pro portalovou identitu z ruznych zdroju. Konfiguruje se ve $WAS/wmm/wmm.xml, $WAS/wmm/wmmLDAPServerAttributes.xml. Zbytek jsou prevazne predlohy (aspon myslim).
  • adresar musi obsahovat minimalne PortalAdminId a PortalAdminGroupID (nejlepe PAGID e (PAID, ..)), pro content mgmnt jeste wpsContentAdministrators a wpsDocReviewer; taky se hodi wpsBindUser, uzivatel pod kterym se budou provadet vyhledavaci operace nad adresarem
  • v pripade portal6 to budou specialne identity dodane primo ldapem, a konta zalozena v KRB kvuli zmenam hesel:
uid=wpsadmin6,ou=users,ou=portal,ou=services,dc=zcu,dc=cz
uid=wasadmin6,ou=users,ou=portal,ou=services,dc=zcu,dc=cz
uid=wpsbind6,ou=users,ou=portal,ou=services,dc=zcu,dc=cz
cn=wpsadmins6,ou=groups,ou=portal,ou=services,dc=zcu,dc=cz
---cut SystemOut.log---
[3/1/07 21:54:12:826 CET] 0000000a WSMM Message  E 
 com.ibm.ws.wmm.MemberRepositoryManager API:   
 getMember(MemberIdentifier memberId, StringSet attributeNames, String context)
 The profile  repository did not return a external identifier.

[3/1/07 21:54:12:918 CET] 0000000a Servlet       E 
 com.ibm.wps.engine.Servlet init EJPFD0016E: Initialization of service failed.
 com.ibm.wps.ac.DomainAdministratorNotFoundException: EJPSB0107E: 
  Exception occurred while retrieving the identity of the domain adminuser/admingroup  
  uid=wpsadmin6,ou=users,ou=portal,ou=services,dc=zcu,dc=cz. at ...
---cut SystemOut.log---
  • zkonfigurovat: zastavit servery, vypnout zabezpeceni, zapsat nove identity do konfiguracnich souboru, importovat certifikaty do ulozist (zde repertoir DefaultSSLSetting; a nejlepe vsude protoze instalacni manual je trosku nepresny rekl bych; a jeste sem z toho vyhodil verejne certifikacni autority aby sem si to vic zkomplikoval), zvalidovat nastaveni adresare
$ stopServer.sh WebSphere_Portal
$ stopServer.sh server1
$
$ ./WPSconfig.sh disable-security
$
$ $WAS/bin/ikeyman.sh $WAS/profiles/wp_profile/etc/DummyServerTrustStore.jks << ZCUrootCA
$ $WAS/bin/ikeyman.sh $WAS/profiles/wp_profile/etc/DummyClientTrustStore.jks << ZCUrootCA
$ $WAS/bin/ikeyman.sh $WAS/java/jre/lib/security/cacerts << ZCUrootCA
$
$ EDIT wpconfig.properties
$ echo "LDAPsslEnabled=true" >> wpconfig.properties # navic ale jdeme rovnou na SSL Ldap
$ EDIT $WAS/wmm/wmm_LDAP_LA_SO.xml # oprava sslTrustStore, a ssl
$ EDIT $WAS/wmm/wmmLDAPAttributes_SO.xml # oprava atributu pluginAtTributeName
$
$ # mimodek nainstalovat FixPack1 ;)
$ $WPS/update/updatePortalSilent.sh ... ... ...
$ # a zapnout si docasne wmmApp trace
  com.ibm.websphere.wmm.*=all=enabled:com.ibm.ws.wmm.*=all=enabled:WSMM=all=enabled
$
$ ./WPSconfig.sh enable-security-ldap
$ restartServer.sh (WebSphere_Portal|server1)
  • udelat otisk/zalohu databaze >> WPS6001.ldapinit.tgz
  • a ziskali sme portal ve verzi:
Name              IBM WebSphere Portal MultiPlatform
Version           6.0.0.1
ID                MP
Build Level       wp6001_072_02
Build Date        11/20/2006

Nastaveni SSL pro komunikacni kanaly

  • nastaveni SSL vrstvy pro ldap sem nastavil trosku intuiticne v predchozim kroku ;(


  • In general, the Web server must be configured to accept inbound SSL traffic. - zatim zadnej nemam
  • Then, the WebSphere Application Server plugin for the Web server must be configured to forward traffic on that port to WebSphere Application Server and WebSphere Portal. This involves configuring the virtual host information. - zatim zadnej nemam
SSL repertoiry
  • No protoze prace s udelatorem jmene ikeyman je opet trochu dementni zvolil sem osvedceny zpusob pro vytvoreni javovskeho JKS
  • nakonec sem doslat schopne uloziste a jeste k nemu vytvoril TrustFile s certifikatem ZCUCA
  • nastavit spravne SSL repertoiry do transportnich retezcu jednotlivych aplikacnich serveru (server1, WebSphere_Portal, WebAS.)
$ keytool -genkey -alias portal2 -keyalg RSA -sigalg SHA1withRSA -keysize 1024 -keystore portal2ServerKeyFile.jks -dname \   
 "CN=portal2.zcu.cz, OU=CIV, OU=Services, O=ZCU, L=Pilsen, ST=Czech Republic, C=CZ" -validity 1024
$ keytool -list -v -alias portal2 -keystore portal2ServerKeyFile.jks
$ keytool -certreq -keystore portal2ServerKeyFile.jks -alias portal2 -keyalg RSA -file portal2.csr
$ openssl req -text -in portal2.csr
GOTO(p@ja) <<portal2.csr >>portal2.crt
$ keytool -import -trustcacerts -file ZCUrootCA.pem -alias "ZCUrootCA" -keystore portal2ServerKeyFile.jks
$ keytool -import -trustcacerts -file portal2.crt -alias portal2 -keystore portal2ServerKeyFile.jks
Uprava aplikace WPS.ear na generovani spravnych odkazu
  • Finally, WebSphere Portal must be set up to generate self-referencing URLs using SSL as the transport.
    • nastavit redirekty na prislusne porty podle dokumentace v ConfigService
    • pridat bezpecnostni mantinely do deployment deskriptoru portalu << ASI NEVYDRZI UPGRADE ;(
    • upravit thematka tak aby jspcka generovala spravna URL << ASI NEVYDRZI UPGRADE ;(
      • html/IBM/banner_toolbar.jspf
      • html/IBM/mainMenu.jsp
      • html/Default.jsp
    • procistit cache
    • pustit ulohu update-properties
    • zkonfigurovat LoginPortlet v portalu
$  EDIT $WPS/config/properties/ConfigService.properties
$1 portal starts1
$1 wsadmin.sh -user jmeno -password heslo -c "\$AdminApp export wps /tmp/wps.ear"
$1 EARExpander.sh -ear /tmp/wps.ear -operationDir /tmp/exp/ -operation expand
$1 EDIT /tmp/exp/wps.war/WEB-INF/web.xml << CONFIDENTAL
$1 grep -R "wps.Login" * | xargs EDIT ...
$1 EARExpander.sh -ear /tmp/wps.ear -operationDir /tmp/exp/ -operation collapse
$1 wsadmin.sh -user jmeno -password heslo -c "\$AdminApp install /tmp/wps.ear {-update -appname wps -nodeployejb}"
$1 wsadmin.sh -user jmeno -password heslo -c "\$AdminConfig save"
$
$2 EDIT $WAS_PROFILE/installedApps/zcucz/wps.ear/wps.war/WEB-INF/web.xml << NONE>CONFIDENTIAL
$2 EDIT $WAS_PROFILE/config/cells/zcucz/applications/wps.ear/deployments/wps/wps.war/WEB-INF << NONE>CONFIDENTIAL
$2 cd $WAS_PROFILE/installedApps/zcucz/wps.ear/wps.war/themes; grep -R "wps.Login" * | xargs EDIT ...
$
$ dilit -r $WAS_PROFILE/temp/*; dilit -r $WAS_PROFILE/wstemp/*
  • nicmene wmm i was koukaji take do ldapu pomoci ssl takze zase bude potreba zmena dvou ulozist ?

Instalace WASpluginu - svazani s predrazenym HTTP serverem

  • http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?noscript=1
  • vypnout apache
  • najit instalacni CD IL-10 (Edge Components)
  • chce to mit /etc/suse-release
  • spustit /plugins/install a normalne nainstalit plagin, jde to celkem snadno
  • vynastavit predrazeny webserver na ssl (virtualhost) a predhodit mu certifikat a klic vyexportovany z uloziste pro ssl konektor WAS
  • dosmudlit aliasy a dresare pro dokumenty a zdroje a redirekty na wps/portal
  • a jeste s usmevem upgradnout neexistujici verzi pluginu 6.0.0.0 ktera se nachazi na instalacnim CDcku
./update -W relaunch.active=false \ 
   -W prereqsfailedpanelInstallWizardBean.active="false" \
   -W  maintenance.package=./maintenance/6.0.2-WS-WASPlugIn-LinuxX32-FP00000017.pak
  • doinstalovat rucne zkonvertovany balcek s knihovnou GSkit7 (ten by to teda chtelo nainstalovat i s pluginem rovnou ;), ale potom neumim vypnout sifrovani ktere sem tim na pluginu rozjede 2x :)
echo "/usr/local/ibm/gsk7/lib" >> /etc/ld.so.conf

Instalace mod_deflate a jeho zalepeni pro Firefox a IE

Uživatel:Konzerva/PortalDeflate

Poinstalacni upravy aka changelog

Pridani prav pro recovery XA transakci

Upgrade WAS 6.0.2.9 -> 6.0.2.17

  • namastit dostupny pack v maintainence nebo si vybrat co chci instalovat
 cd $WAS/bin' source setupCmdLine.sh; cd $WAS/updateinstaller
 ./update -silent  -W relaunch.active=false
 ./update -silent  -W relaunch.active=false -W maintenance.package=./maintenance/6.0.2-WS-WAS-LinuxX32-FP00000017.pak
  • logy jsou ve $WAS/log/update
  • nainstaloval sem takhle SDKcko a WAS (ihs a klienta neupdatil protoze tam zadny neni ted)

Upgrade WPS 6.0.0.1 -> 6.0.1

 ./updatePortal.sh -install -installDir "/opt/WebSphere/PortalServer" -fixpack -fixpackDir "/opt/WebSphere/PortalServer/update" -fixpackID WP_PTF_601
 ...
 <kafe><caj><cigo>
 ...
 Result: BUILD SUCCESSFUL
 Result: Total time: 48 minutes 1 second
  • oprava wps.ear na zabezpeceni ssl a generovani bezpecnych linku


Upgrade was 6.0.2.17 >> 6.0.2.21

  • nejdrive je potreba sosnout novy update installer a nainstalovat (installer aspon 6.1.0.9/6.1.0.11)
 unset LD_ASSUME_KERNEL #jinak updater spadne, asi ze je novej a taky to pouzivaj s novym ABI
 source setupCmdLine.sh
 ./update.sh -silent  -W relaunch.active=false -W maintenance.package=./maintenance/6.0.2-WS-WASJavaSDK-LinuxX32-FP00000021.pak 
  • nainstaloval jsem pomoci GUI patch na sdk, was a plugin, client nesel. pricemz do pluginu se taky hodi fix na SDKcko ;)

Upgrade wps 6.0.0.1 >> 6.0.1.1

  • rozbalit nejnovejsi update installer 6.0.1.1
  • zkontrolovat wpconfig.properties a pridat
++ CopyWpsEarScreens=true << TOHLE MOZNA ZMRVI SKINY
++ PWordDelete=false


  • zazalohovat nastaveni a vyhodit webovy modul ContentPallete.war
  • obnovit puvodni nastaveni ContentPalette.war; rozbalit paletu > popup > obnovit vychozi nastaveni
  • zastavit portal
    • prvni pokus skoncil chybou v kroku ExportAll.xml
  /opt/WebSphere/PortalServer/version/log/20071004_170923_WP_PTF_6011_selective-install.log
  /opt/WebSphere/PortalServer/version/log/20071004_172207_WP_PTF_6011_wp.ptf.config_install.log
  
   pri vylevani pomoci:  
  /opt/WebSphere/PortalServer/config/templates/ExportAllPortlets.xml
  
   vysmahl:
   
   148 [portlet-app 2_NO2UF4I1186E1026H4BLVI0GU7]
   <request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" build="wp6011_073" type="update" version="6.0.1.1" xsi:noNamespaceSchemaLocation="PortalConfig_6.0.1.xsd">
   <status element="unknown" result="failed">
   <message id="EJPXA0001E">com.ibm.wps.command.xml.XmlCommandException: EJPXA0001E: Došlo k chybě při zpracování požadavku konfigurace XML. unknown</message>
   <message>java.lang.NullPointerException</message>
  • stalo se tak kvuli portletove aplikaci paleta ;(((, kdyz sem ji vysmahl tak to normalne proslo
  • pdev2: upgradovat se musi proti ostremu LDAP serveru protoze clotho ma porad problem s tim casem nebo co a restart portalu neprobehne dobre
  • portal2: pri upgradu ostreho portalu se neresetly nastaveni takze sem musel palektu odstranit jako webovej modul jenze pak zmizela ze skinu protoze:
 (14:26:14) pepa krupicka - CIV: kdyz jsi to smazal tak se ten portlet vymazal i z ty stranky na ktery byl
 (14:26:31) pepa krupicka - CIV: a kazdej portlet je obalenej specialni komponentou control
 (14:26:55) pepa krupicka - CIV: a pri mazani aplikace se tahle komponenta smaze taky
 (14:27:11) pepa krupicka - CIV: a voni k tyhle kontrol potrebujou mit uniquename
 (14:27:40) pepa krupicka - CIV: takze kdyz jsem ho tam pridal rucne ten portlet na stranku tak to nepomohlo protoze tam nebyl nastavenej uniquename
 (14:27:56) pepa krupicka - CIV: takze nasoupil xmlaccess a vsechno je v oaklandu...zadna magie:)
 (14:28:56) pepa krupicka - CIV: pridal jsem tam xmlaccessem uniquename kterej voni potrebujou
 (14:29:05) pepa krupicka - CIV: jaka to psalo v tech logach
  • znova projit wps.ear a upravit JSP tak aby se generovala bezpecna URL
  • upgradnout http plugin
  • zaktualizovat konfigurak http pluginu a vypropragovat
  • pridat do wps.ear skiny
  • pdev2: vratit nastaveni ldapu WMM a WAS zpatky na testovaci ldap


Upgrade was 6.0.2.21 >> 6.0.2.27

  • nejdrive je potreba sosnout novy update installer a nainstalovat
  • nainstaloval jsem pomoci GUI patch na sdk, was a plugin, client nesel. pricemz do pluginu se zase hodi fix na SDKcko ;)
  • vsechno slo hladce, az na plugin ktery rekl ze je pouze castecne, podle logu se nezkonfiguroval GSKit (sifrovani pluginu) protoze ho nepouzivam

Upgrade WPS 6.0.1.1 >> 6.0.1.4

  • zastavit webserver
  • zazalohovat wps.ear
  • zkontrolovat wpconfig.properties
++ CopyWpsEarScreens=true << TOHLE MOZNA ZMRVI SKINY
++ PWordDelete=false
  • sosnout a rozbalit updater a dat do nej fixlpack
  • upgradnout bud pres GUI nebo radkou
  • prvni pokus dopadl spatne kvuli odinstalovanym aplikacim: LWP_CAI.ear,LWP_Scheduler_Resource.ear
/opt/WebSphere/PortalServer/version/log/20080930_152106_WP_PTF_6014_wp.ptf.config_install.log  
 2008-09-30T15:37:24+01:00 Result:   [wsadmin] -------------------------------------------------------------------
 2008-09-30T15:37:24+01:00 Result:   [wsadmin] Set Classloaders for WCS Ears.                                       
 2008-09-30T15:37:24+01:00 Result:   [wsadmin] Using profile:   /opt/WebSphere/PortalServer/config/was/wcsProfileClassLoaderAttributes.jacl
 2008-09-30T15:37:24+01:00 Result:   [wsadmin] Entering script: /opt/WebSphere/PortalServer/config/was/wcsModifyEarAttributes.jacl           
 2008-09-30T15:37:24+01:00 Result: 
 2008-09-30T15:37:24+01:00 Result:   [wsadmin] ERROR: LWP_Scheduler_Resource is not installed, no Action taken                               
 2008-09-30T15:37:24+01:00 Result:   [wsadmin] WASX7309W: No "save" was performed before the script  
 "/opt/WebSphere/PortalServer/config/was/fixup_wcs_ears_fixpack_cfg.jacl" exited; configuration changes will not be saved.
 2008-09-30T15:37:24+01:00 Error 112 -- Return code (1) differs from the expected code (0).                                                  
 2008-09-30T15:37:24+01:00    Validating platform for (OS/400)
 2008-09-30T15:37:24+01:00       platform check is negative.
 2008-09-30T15:37:24+01:00 Processing virtual script PreUnConfigPTF                                                                          
 2008-09-30T15:37:24+01:00 Product File Update is not active; skipping update step.
 2008-09-30T15:37:24+01:00 Input Jar File   : /tmp/ptfs/WP_PTF_6014/components/wp.ptf.config/update.jar
 2008-09-30T15:37:24+01:00 Target Directory : /opt/WebSphere/PortalServer         
  • zkusili jsme je tam dodat z lednove zalohy
  • druhy pokus skoncil podobnou hlaskou
/opt/WebSphere/PortalServer/version/log/20081001_091234_WP_PTF_6014_wp.ptf.config_install.log
 2008-10-01T09:27:49+01:00 Result:   [wsadmin] Operating on application LWP_Scheduler_Resource 
   (cells/zcucz/applications/LWP_Scheduler_Resource.ear/deployments/LWP_Scheduler_Resource|deployment.xml#ApplicationDeployment_1222849641552)
 2008-10-01T09:27:49+01:00 Result:   [wsadmin] Old: {mode PARENT_LAST}
 2008-10-01T09:27:49+01:00 Result:   [wsadmin] New: {mode PARENT_LAST}                                                                       
 2008-10-01T09:27:49+01:00 Result:   [wsadmin] Deployment:LWP_Scheduler_Resource Classloader mode modified.
 2008-10-01T09:27:49+01:00 Result:   [wsadmin] ERROR: LWP_CAI is not installed, no Action taken
 2008-10-01T09:27:49+01:00 Result:   [wsadmin] WASX7309W: No "save" was performed before the script 
   "/opt/WebSphere/PortalServer/config/was/fixup_wcs_ears_fixpack_cfg.jacl" exited; configuration changes will not be saved.
 2008-10-01T09:27:49+01:00 Error 112 -- Return code (1) differs from the expected code (0).
 2008-10-01T09:27:49+01:00    Validating platform for (OS/400)
  • upravili jsme displayname aplikace LWP_CAI, bylo tam puvodne nejake WCP ... nicmene to chtelo i LWP_mail_servlets, takze tam vratim vsechny co pepa vymastil. I dalsi aplikace meli v DD META-INF/application.xml spatne nazvy, takze jsem je upravil tak aby nazev display-name odpovidal jmenu EARu
  • pak uz upgrade probehl dobre
  • pregenerovat plugin-cfg.xml
  • upravit wps.ear na generovani bezpecnych URL
  • pridat nejaky skiny

Klonování

rsync -rva --rsh="ssh -C -l root" root@portal2.zcu.cz:/opt/WebSphere/AppServer .
rsync -rva --rsh="ssh -C -l root" root@portal2.zcu.cz:/opt/WebSphere/PortalServer .
rsync -rva --rsh="ssh -C -l root" root@portal2.zcu.cz:/opt/WebSphere/Plugins .
rsync -rva --rsh="ssh -C -l root" root@portal2.zcu.cz:/opt/jdbc .
rsync -rva --rsh="ssh -C -l root" root@portal2.zcu.cz:/opt/PORTAL-data/zdroje .
rsync -rva --rsh="ssh -C -l root" root@portal2.zcu.cz:/opt/PORTAL-data/konfigurace .
mkdir /opt/WebSphere/SiteAnalyzer
  • protoze je portal6 deployovany myslim trosku jinak nebo sem tomu predtim nejak nevenoval pozornost tak sem pristoupil k ponekud brutalnejsimu klonovani ;) V podstate jde o to zamenit vsechna domenova jmena a vsechny reference na jmeno nodu/uzlu v ruznych nastavenich WAS a WPS. Dale potom vymenit jmeno pouzivane databaze, prejmenovat adresare s nastavenim (casti nazvu jsou domenova jmena) a dat si pritom pozor na kolize identifikatoru v xml deskriptorech (protoze se zamenuje jenom v nebinarnich souborech ;)
#
# 
smazat vsechny logy, jinak to trva o chvilku dele
 # NODE NAME in WAS
export WHERE=grepportal2; export ORIGNODE=portal2; export NEWNODE=pdev2.civ
export REPLACE="s/$ORIGNODE/$NEWNODE/g"; export IFS=$'\n'
grep -ri "$ORIGNODE" AppServer/* > $WHERE
grep -ri "$ORIGNODE" PortalServer/* >> $WHERE
grep -ri "$ORIGNODE" Plugins/* >> $WHERE
for all in `cat $WHERE | awk -F ':' '{print $1}' | egrep -v "^Binary file"`; do
 cp "$all" "$all-$ORIGNODE"
 cat "$all-$ORIGNODE" | sed $REPLACE > "$all"
 echo "$all" >> $WHERE.log
done
unset IFS
#
# database
export WHERE=grepWPS6; export ORIGDB=WPS6; export NEWDB=PDEV2
export REPLACE="s/$ORIGDB/$NEWDB/g"; export IFS=$'\n'
grep -r "$ORIGDB" AppServer/* > $WHERE
grep -r "$ORIGDB" PortalServer/* >> $WHERE
for all in `cat $WHERE | awk -F ':' '{print $1}' | egrep -v "^Binary file"`; do
 cp "$all" "$all-$ORIGDB"
 cat "$all-$ORIGDB" | sed $REPLACE > "$all"
 echo "$all" >> $WHERE.log
done
unset IFS
#
# flat file configuration
mv $WAS/profiles/wp_profile/config/cells/zcucz/nodes/$ORIGNODE $WAS/profiles/wp_profile/config/cells/zcucz/nodes/$NEWNODE
mv $WAS/profiles/wp_profile/config/cells/zcucz/nodes/webserver1-$ORIGNODE_node/servers/webserver1-$ORIGNODE $WAS/profiles/wp_profile/config/cells/zcucz/nodes/webserver1-$NEWNODE_node/servers/webserver1-$NEWNODE
mv $WAS/profiles/wp_profile/tranlog/zcucz/$ORIGNODE $WAS/profiles/wp_profile/tranlog/zcucz/$NEWNODE
mv $PLUGINS/logs/webserver1-$ORIGNODE $PLUGINS/logs/webserver1-$NEWNODE 
mv $PLUGINS/config/webserver1-$ORIGNODE $PLUGINS/config/webserver1-$NEWNODE
#
# solve colissions in namespace in applications ;(((((
find $WAS/profiles/wp_profile/config/cells/zcucz/applications -name "*$ORIGDB"
 vim $WAS/profiles/wp_profile/config/cells/zcucz/applications/no_id_available_q0ua3x4.ear/deployments/no_id_available_q0ua3x4/q0ua3x4.war/WEB-INF/applicationContext.xml (WPS6 vs. PDEV2)
find $WPS/installedApps/ -name "*$ORIGDB"
 vim $WPS/installedApps/no_id_available_q0ua3x4.ear/q0ua3x4.war/WEB-INF/applicationContext.xml (WPS6 vs. PDEV2)
#
# changle ldap user registry&repository to testing one
vim $WAS/profiles/wp_profile/config/cells/zcucz/security.xml
vim $WPS/config/wpconfig.properties
vim $WPS/wmm/wmm.xml
#
# changle DataSources in WAS and Portal.Spring
# bacha na mala/velka pismenka .. je tam -i protoze je to pokazdy jinak ;)
export WHERE=grepGINA1; export ORIGDB=GINA1; export NEWDB=VYVOJ1
export REPLACE="s/$ORIGDB/$NEWDB/g"; export IFS=$'\n'
grep -ri "$ORIGDB" AppServer/* > $WHERE
grep -ri "$ORIGDB" PortalServer/* >> $WHERE
for all in `cat $WHERE | awk -F ':' '{print $1}' | egrep -v "^Binary file"`; do
 cp "$all" "$all-$ORIGDB"
 cat "$all-$ORIGDB" | sed $REPLACE > "$all"
 echo "$all" >> $WHERE.log
done
unset IFS
  • posmudlit keystory pro SSL klice
  • v DB ve schematu RELEASEUSR nejaky odkaz na portal2; zamenit TOADem
INSERT INTO PSE_SOURCE_DD ( PSE_SOURCE_OID, NAME, VALUE ) 
VALUES ( 
'0000076B3872130071938008EDFDA4840080', 'serverInfo', '10038,portal2.zcu.cz,/wps,/myportal,false');
  • smazat problemticke tasky z databaze portal scheduleru, schema release, tabulka WPS_SCDTASK #Scheduler task fail


pam_ora_auth.so

  • protože sme potřebovali dostat identity ze stagu do portalu sesmolili sme s Franou PAM modul, ktery vyzobne z pamstacku kredence a zkusi pod nima vytvorit spojeni do databaze. Pokud se to povede je uzivatel prihlasen.
  • hook je pouzit v saslauthd na strane adresare. Zdrojove kody jsou v $CVSLPS/service/pam_ora_auth a je to vlastne vykradeny priklad pro OCI v C obaleny do nejakeho jineho ukazkoveho pamu ;)
  • na strane adresare musi byt v prislusnych vetvich prislusne identity spravne nality
  • nakonec sme museli jeste pridat kontrolu username na format studijniho cisla (pomoci regcomp,regexec z libc6 ;), protoze ve stagu/oracle jsou i ucitelska konta jejichz loginame muze kolidovat s orionUsername

wsadmin

./wsadmin.sh -user heslo -password uzivatel -port 10033 -c "\$AdminApp list"
  • neprijemnosti jsou hesla na prikazove radce ;(

Problémy

Povolené znaky v heslech


NullPointerException následovaný ArrayIndexOutOfBoundsException

  • Výjimka vyhazovaná při SQL dotazech, třeba:
java.lang.ArrayIndexOutOfBoundsException: 1229044712
   at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java(Compiled Code))
   at oracle.jdbc.driver.T4CPreparedStatement.fetch(T4CPreparedStatement.java:1038)

Podrobnosti http://forums.oracle.com/forums/thread.jspa?threadID=498046 Chyba někde v Oracle JDBC driveru verze 10.2.0.3.0, řešením je stahnout verzi 10.2.0.2.0 od Oraclů...


Nějaká XA error

[4/17/07 20:10:35:032 CEST] 00000012 XARminst      E   WTRN0037W: The transaction service
 encountered an error on an xa_recover operation. The resource was 
 com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl@6c9670e2. The error code was XAER_RMERR. The 
 exception stack trace follows: javax.transaction.xa.XAException
...

Scheduler task fail

[9/12/07 23:20:16:397 CEST] 00000061 AlarmListener E   SCHD0063E: A task with ID 12453 failed to run  on Scheduler WPSTaskScheduler (wps/Scheduler) because of an exception: java.rmi.MarshalException: CORBA COMM_FAILURE 0x49421070 No; nested exception is:
        org.omg.CORBA.COMM_FAILURE: CONNECT_FAILURE_ON_SSL_CLIENT_SOCKET - JSSL0130E:  java.io.IOException: Signals that an I/O exception of some sort has occurred.  Reason:  Connection timed out  vmcid: 0x49421000  minor code: 70  completed: No.
[9/12/07 23:22:35:849 CEST] 0000000e TimeoutManage I   WTRN0006W: Transaction 00000114FB984C0500000008000000AC9520C27C46098C6F0E8A6A4CBF450EB2F176919600000114FB984C0500000008000000AC9520C27C46098C6F0E8A6A4CBF450EB2F176919600000001 has timed out after 120 seconds.

Zmena contextu pri redeploy WAR

Chyby na adminKonzoli

  • cast (ajaxova?) mi prestala fakcit kdyz sem mel vypnute referrery, tak si je asi zase zapnu ;)

misc

  • setupCmdLine.sh
  • wasadmin: $AdminConfig, $AdminApp
  • genVersionInfo.sh
  • WPSConfig

tunink

ldapsearch

/usr/bin/ldapsearch -l 5 -H ldaps://psyche.zcu.cz:637 -x -D 'uid=student3,ou=Users,ou=portal,ou=services,dc=zcu,dc=cz' -w 'xxx' -b "ou=portal,ou=services,dc=zcu,dc=cz" "(uid=valdman)"

generatin' heapdump from wsadmin

cd /opt/WebSphere/AppServer/bin
source setupCmdLine.sh
./wsadmin.sh -port 10033 -f /opt/WebSphere/utils/genheapdump.jacl

authz

  • pri vaznych hovorech sme nasli nasledujici skupiny/role lidi kteri maji co do cineni s portalem
portal users
aka authenticated user, kazdy uzivatel ktery se umi a muze prihlasit do portalu, nemel by videt skoro nic krome nejobecnejsich pokecu
zmastnanci
osoby zamestanane na zcu (cn=staff)
studenti
osoby ktere studuji (viz. stag) (cn=students)
nulty rocnik
maji konto ve stagu ale nemaji orion (cn=stagid) (existence na ZCU do 6.9. pak by udajne jiz nikdy nemel byt duvod k existenci, nulte rocniky budou mit orion konto)
stagstuff
zamestnanci, manipulujici s daty ve stagu (studijni referentky, tajemnici/grigarovci, sekretarky kateder)
ucitele
vyucujici zamestnanci, ucici externisti (viz. stag); moje vyuka,predmety vyvoj
admins
my vsichni z ostrova ;))) (cn=wpsadmins6)
techstuff
bez vyuziti, uklizecky,udrzbari,ucetni + kunovjanek
coursemasters
(cn=coursemasters)
anonymous
ostatni serfari, uchazeci