72h downtime
Posted on February 20th, 2005 in Linux | 19 Comments »
Naiva cerība, ka neviens nepamanīja lapas prombūtni.
Tā kā labu brīdi nebiju savam serverim atjaunojis kerneli, tad saņēmos un ķēros pie lietas.Kā nu tas iesācējiem gadās, neveiksmīgas sistēmas atjaunināšanas rezultātā vispirms mazliet nobruka MySQL, pēc tam arī PHP5, līdz ar PHP5 prombūtni Apache atteicās startēties.
Sāku ar Gentoo lietotājiem pazīstamo Portage sinhronizāciju:
emerge sync
Kad šis process ir beidzies, varam mierīgu sirdi atjaunināt kerneli un visas saistītās programmas uz jaunāko pieejamo versiju.
emerge -Du gentoo-dev-sources
26 paciņas jāatjauno. Neko ļaunu nedomādams, atstāju uz nakti, lai viss notiek. Ap deviņiem vakarā man laipni paziņoja, ka esot atliecies MySQL un atsevišķas lapas izskatās nesmuki. Neko darīt, pacīnījos, pacīnījos un piedabūju MySQL atpakaļ pie dzīvības. Viss notiek. Pagāja kādas pāris stundas un rezultāts tas pats – MySQL ir miris, lai dzīvo MySQL. Tā kā vismaz pagaidām neviena komerciāla lapa uz servera neglabājas, tad atstāju salabošanu uz nākamo dienu.
No rīta atnākot uz darbu, secināju, ka kaut kas atjaunināšanas procesa pusceļā ir apstājies. Pārbaudīsim, cik nu esam tālu tikuši – atkārtojam iepriekšējo komandu un skatāmies, ka palikušas 3 paciņas, kas jāatjauno. Kārtējo reizi pierādīdams savu nezināšanu, ņēmu un kompilēju atlikušās 3 paciņas. Lieki būtu teikt, ka viena no tām kompilējās apmēram 6 stundas.
Nu tā, sistēma atjaunināta, varētu tā kā ķerties pie Apache palaišanas. Viss būtu jauki, ja vien nebūtu nepatīkamu pārsteigumu:
Apache2 has detected a syntax error in your configuration files: Syntax error on line 6 of /usr/lib/apache2/conf/modules.d/70_mod_php5.conf: Cannot load /usr/lib/apache2/modules/libphp5.so into server: libhistory.so.4: cannot open shared object file: No such file or directory
Nu, neko, parakos pa forums.gentoo.org un atradu, ka cilvēks ir šādu problēmu atrisinājis vienkārši pārkompilējot PHP. Ilgi nedomādams, salieku vajadzīgos USE karodziņus un laižu vaļā kompilēšanās procesu. Viss notiek līdz kaut kādā momentā dabūju kārtējo kļūdas paziņojumu par kaut kādu libstdc++.la
. Forumi, es nāku! Kārtīga parakāšanās pa forumiem un secinājums tāds, ka pēc GCC atjaunināšanas ir bijis jāpalaiž kaut kāds maģisks skripts, kas nomaina GCC bibliotēku atrašanās vietas. Lieliski. Ņemam forumā doto piemēru:
/sbin/fix_libtool_files.sh 3.3.4
Un ceram, ka būs labāk. Nav. Pie PHP5 kompilēšanas tajā pašā vietā tāds pats kļūdas paziņojums. Rokamies tālāk pa forumiem, nelaime tāda, ka visiem ar šo pietiek. Dziļā izmisumā sāku kārtīgāk pētīt, kas tad īsti notiek ar to PHP5, kāpēc tas nekompilējas. Pastaigājoties pa kļūdas paziņojumā pieminētajām direktorijām secinu, ka man tādu direktoriju nemaz nav. Nākas secināt, ka mana GCC versija ir nevis vienkārši 3.3.4, bet 3.3.4-20050110.
gcc -v
Laižam vēlreiz iepriekš pieminēto skriptu, tikai nu jau versijas numuru aizvietojot ar tikko atrasto.
/sbin/fix_libtool_files.sh 3.3.4-20050110
Nu ko, mēģinām vēlreiz nokompilēt to pašu PHP5. Varbūt šoreiz izdosies.
Neizdevās.
Neveiksmīgs mēģinājums automātiski atjaunināt konfigurācijas failus, muļķīga servera pārstartēšana un varam doties gulēt, jo esam pārrakstījuši konfigurācijas failu, kurā atradās tīkla konfigurācijas informācija, bet serveris atrodas serveru telpā pie IPS otrā Rīgas galā. Neliela cīņa par iekļūšanu serveru telpā, tīkls beidzot darbojas. Tam seko kārtējā GCC pārkompilēšana un mēģinājums iedarbināt PHP. Vienu brīdi tiek palaists arī Apache bez PHP atbalsta, acīgākie varēja paspēt nospert dažu lapu izejas tekstus.
Šovakar metu jokus pie malas un pieveicu PHP kompilēšanas procesu ar ČŽ risinājumu. Tā kā PHP kompilējoties nemācēja atrast vajadzīgo gcc direktoriju (meklēja 3.4.3, lai gan gcc atrodas direktorijā 3.4.3-20050120), tad izveidoju simbolisko saiti (symlink) uz attiecīgo direktoriju. Pāris brīdinājumi kompilēšanas procesā un esam beidzot laimīgi tikuši pie strādājoša PHP.
Tā teikt, welcome back!
P.S. ja nu kādam ir saprašana par to, ko es izdarīju nepareizi GCC atjaunināšanas laikā, vai kā varētu iztikt bez maģiskās simboliskās saites /usr/lib/gcc/i586-pc-linux-gnu/
direktorijā, laipni lūgti izteikties komentāros.
19 Responses
Pamaniija gan ;)
nemaniija, rss feeers vnk neraadija nevienu jaunu raxtu un vse. :]
slakai arii meedz buut, ka current- nav AMP versijas saskanjotas.
katrs pat pa sevi iet. so, vajag piedabuut pie apacha php, bet pie php – mysql. attieciigi vnk symlinkojam vai nokachaajam no neta vajadziigo .so prieksh php vai prieksh mysql.
Lai dzīvo Gentoo – jaukā radība no Dieva.
http://serious.deals.lv/storage/docs/unix-haters-handbook.pdf
Nu izskatās, ka tev diezgan intresanti gājis :) Nu tik gribēju pajautāt, vai tavs /etc/make.profile ir salinkots ar /usr/portage/profiles/default-linux/x86/… attiecīgo make.profile ? Un vel iesaku ik pa laikam “emerge portage”.
PS. Vai tev tomēr ir izdevies uzlikt mod_php ar GD un ttf suportu, bez xorga ? Es nesen lasīju, ka galvenā nelaime ir “-qt” flags, jo tad php grib likt xorhu. Nēsmu iztestējis, bet domāju, ka varētu nostrādāt!
jāpielabo /etc/env.d/05gcc
mark, tur jau attiecīgie ceļi ir pilnīgā kārtībā ;)
mhm, varbūt nepareizi sapratu. pēc gcc apgreida esmu dabūjis līdzīgu shit’u
GCC maiņa ir sāpīgs process un ~x86 nav tā labākā vieta, kur emerge world taisīt :)
Aha, manīju gan – sources php failiem varēja palūrēt :)
būšu stilīgs un pajautāšu – un tu vēl gribi teikt, ka win sux? :) (tik bez tēmas turpinājuma) :)
hu_ha: un padomā, cik tad ērti notiktu Windows updeits? Ar visu pārestartēšanos!! Kas production serverim pavisam nebūtu pieļaujams.
Nu te vienk Kaklz nedaudz nomisējās, bet nav jau teikts, ka visi updeiti uz Linux notiek šādā veidā :)
bubu: Tu production serverus neupdeito? Tb, kerneli pārkompilējot pat Unix lielākajā daļā gadījumu ir nepieciešams pārsāknēt :) Un tas pats ir ar Windows :) 2 – 5 minūtes, un viss atkal smuki atpakaļ.
žāviens, vismaz WPNMySQL888* nomainīts?
ir gan :)
Es mēģināju Gentoo uzinstalēt, bet konstatēju, ka jamam nav normāla installera un, lai uzinstalētu, ir webā jālien un jāseko garam pārgudram manuālim. Fui!
Manuālis ir arī uz diska un patiesībā tīri normāli un saprotami uzrakstīts
Bļā! Vakar pēcpusdienā nejauši atklāju, ka vienam no serveriem HDD mirst. Pēdējā brīdī paspēju nokopēt webu un db, /home pa *. Būtu Linux labāk uzreiz PC izrubījis, nevis pārmontējis ro – būtu ātrāk pamanījis.
Īsti vīri backupus netaisa ;)
Un tad visaam lapeleem un visiem uuuseriem un visiem, visiem naacaas pamainiit paroles – tas saucaas :)
man atkal cvsupojot kernelja sourci sanaaca taa ka kerneli vairs nevar nokompileet :/