÷ƒ’À;è TeX output 2003.11.26:1337‹ÿÿÿÿ Û_2 ý ~? ÕÁ ýZݺóþÖëI½q½qecss2074»Server–fÑW›ÿwmeb“basati“su“mSQL“e“p‘ˆ’erl“mini“HO˜WTOŽ¤ ®„ØcÕÁGŽŽ¡ó 1ê± ecrm1000¹Olivš¸èer–U Cor,“óqLË ectt1000¼corff@zedat.fu-berlin.de’¶L#¹v0.1,“17“settem˜bre“1997Ž¡Ÿ&°óŒ6 ecss1000½Questo–ýMini“HOš¸èWTO,“fo˜rtemente“ispirato“dall'a˜rticolo“di“Michael“Schilli“óø8‹ ecsi1000¾Gebunk˜ert:‘ÂaDatenbankbGedienung“mitŽ¡P¸èerl–«iund“CGI‘V;½,“pubblicato“nel“computer“magazine“tedesco“iX‘«>nell'agosto“1997,‘ÍZdescrive“come“costruire“un“databaseŽ¡client/server–ÑxSQL›ÑXutilizzando“WWW˜e“HTML˜pšGer“l'interfaccia“utente.‘æˆDo˜cumentazione“tradotta“da“Gianma¸èrioŽ¡P•¸èa“risi,‘U ¼gianmario.parisi@libero.it½.ŽŸ(Àœó&Lt$ffffecbx1440ÀCon•cten“tsŽ©Øó]fŒ ecbx1000Á1Ž‘ÿScopi–Õdi“questo“doQÂcumen®>to’9ˆé2ŽŽ¤ؼ‘ÿ¹1.1Ž‘%ý¡Destinatari‘‚÷‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï2ŽŽ¡‘ÿ1.2Ž‘%ý¡Con•¸èv“enzioni–U usate“nel“testo‘…‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï2ŽŽ¦Á2Ž‘ÿIn®>troQÂduzione’€Ó3ŽŽ¦3Ž‘ÿProQÂcedura–Õdi“Installazione’<˜¸4ŽŽ¡‘ÿ¹3.1Ž‘%ý¡Requisiti‘U Hardw¸èare‘ {‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï4ŽŽ¡‘ÿ3.2Ž‘%ý¡Requisiti‘U Soft•¸èw“are‘Ë/‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï4ŽŽ¡‘ÿ3.3Ž‘%ý¡Installazione–U del“sistema“opGerativ¸èo‘¸s‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï4ŽŽ¡‘ÿ3.4Ž‘%ý¡Il–U servš¸èer“h˜ttp‘Êg‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï5ŽŽ¡‘ÿ3.5Ž‘%ý¡I‘U Bro¸èwser‘_3‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï6ŽŽ¡‘%ý¡3.5.1Ž‘EûŸCongurazione–U di“Lynx‘†‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï6ŽŽ¡‘%ý¡3.5.2Ž‘EûŸCongurazione–U del“bro¸èwser“Arena‘¤!‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï6ŽŽ¡‘%ý¡3.5.3Ž‘EûŸInstallazione–U e“congurazione“di“NetscapGe‘%‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï6ŽŽ¡‘ÿ3.6Ž‘%ý¡Co•Gop“erazione–U tra“Apacš¸èhe“e“i“Bro˜wser‘*Ë‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï7ŽŽ¡‘ÿ3.7Ž‘%ý¡Il–U Motore“Database“e“la“sua“installazione‘Ý'‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï7ŽŽ¡‘%ý¡3.7.1Ž‘EûŸInstallazione–U di“msql-1.0.16‘xy‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï8ŽŽ¡‘%ý¡3.7.2Ž‘EûŸT‘ÿ*¸est–U di“msql-1‘¯A‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï9ŽŽ¡‘%ý¡3.7.3Ž‘EûŸInstallazione–U di“msql-2.0.1‘±A‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï9ŽŽ¡‘%ý¡3.7.4Ž‘EûŸT‘ÿ*¸est–U di“msql-2‘¯A‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?10ŽŽ¡‘ÿ3.8Ž‘%ý¡Scelta–U delle“inš¸èterfacce:‘q€DBI/mSQL,“MsqlP˜erl,“Lite‘“‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?11ŽŽ¡‘%ý¡3.8.1Ž‘EûŸDBI–U e“DBD-mSQL‘…y‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?11ŽŽ¡‘%ý¡3.8.2Ž‘EûŸMsqlP¸èerl)‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?11ŽŽ¡‘%ý¡3.8.3Ž‘EûŸIl–U linguaggio“scripting“di“msql:‘q€LiteOA‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?12ŽŽ¡‘ÿ3.9Ž‘%ý¡La–U via“generale:‘q€DBI“e“DBD-msql‘8[‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?12ŽŽ¡‘%ý¡3.9.1Ž‘EûŸInstallazione–U dell'in¸èterfaccia“database“di“pGerl“-“DBI‘É‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?13ŽŽ¡‘%ý¡3.9.2Ž‘EûŸIl–U driv¸èer“msql“di“pGerl“DBD-mSQL‘«=‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?14ŽŽŽŽŒ‹* Û_2 ý ~?Ÿ„€ÕÁGŽÁ1.‘ñ8Scopi–Õdi“questo“doQÂcumen®>to’7e}¹2ŽŽ ÕÁ ýV¯‘ÿ3.10Ž‘%ý¡L'in•¸èterfaccia‘U MsqlP“erl‘ËÏ‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?15ŽŽ¤ؼ‘ÿ3.11Ž‘%ý¡La–U libreria“CGI“di“pGerl‘Hy‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?16ŽŽ¡‘ÿ3.12Ž‘%ý¡Lista–U di“con¸ètrollo“dell'installazione‘ê7‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?16ŽŽ©ØÁ4Ž‘ÿEsecuzione–Õdi“un“database“di“esempio’ýËï16ŽŽ¡‘ÿ¹4.1Ž‘%ý¡A•¸èdattamen“to–U dello“script“di“esempio“pGer“MsqlP¸èerlB'‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?17ŽŽ¡‘ÿ4.2Ž‘%ý¡A•¸èdattamen“to–U dello“script“di“esempio“pGer“for“msql-2‘åÓ‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?17ŽŽ¦Á5Ž‘ÿConclusione–Õe“Riepilogo’BôÄ18ŽŽŸ(ÀœÀ1Ž‘ÁScopi–G\di“questo“dopœcumenctoŽŸèó¥!¢N ecbx1200Ã1.1Ž‘¾DestinatariŽŸMª¹Chiunque–Švš¸èoglia“installare“un“serv˜er“database“pGer“il“w˜eb“ma“non“sa“quale“soft˜w˜are“€è“necessario“e“comeŽ¤ ®installarlo–ùdo¸èvrebbšGe“trarre“b˜enecio“dalla“lettura“di“questo“testo.‘]Questo“testo“fornisce“tutte“le“informazioniŽ¡necessarie–š¨pšGer“ottenere“un“database“SQL‘šTp˜er“wš¸èeb“serv˜er“funzionan˜te;‘=lesso“ó½HЃ ecti1000Änon‘^ý¹riguarda“alcun“dettaglioŽ¡della–bNprogrammazione“CGI,“n€é“spiega“il“linguaggio“SQL.“Sono“dispGonibili“dei“libri“eccellenš¸èti“su“en˜tram˜bi“gliŽ¡argomenš¸èti,‘hoed–d“€è“in˜tenzione“di“questo“testo“fornire“una“piattaforma“funzionan˜te“sulla“quale“un“uten˜te“pu€ò“inŽ¡seguito–U studiare“la“programmazione“CGI“e“SQL.Ž©ؼPš¸èer–/Õottenere“una“piccolo“sistema“SQL‘/Ëfunzionan˜te“(non“l'esempio“del“sistema“di“prenotazione“di“una“grandeŽ¡compagnia–÷9aerea,‘ o“il“database“pšGer“la“gestione“di“una“missione“spaziale)“sar€à“sucien¸ète“disp˜orre“del“soft•¸èw“areŽ¡descritto–½…in“questo“testo“e“la“doGcumenš¸ètazione“c˜he“lo“accompagna.‘ª®Il“man˜uale“uten˜te“di“msql“(un“databaseŽ¡inš¸ètroGdotto–U nel“testo)“fornisce“sucien˜ti“informazioni“su“SQL“pGer“costruire“il“proprio“database.Ž¦Il–š'lettore“di“questo“testo“doš¸èvrebbGe“a˜v˜ere“una“buona“conoscenza“su“come“ottenere“le“via“¼ftp“¹se“non“ha“accessoŽ¡ai–¼ºCD-Rš¸èOM,“ed“una“comprensione“di“base“di“come“ottenere“le“binari“eseguibili“partendo“dai“sorgen˜ti.‘¨OInŽ¡ogni–]moGdo,‘žÿtutti“i“passi“spiegati“nel“testo“sono“stati“proš¸èv‘ÿqÐati“su“sistemi“reali“e“do˜vrebbGero“funzionare“sulŽ¡sistema–U del“lettore.ŽŸ#ÃÃ1.2Ž‘¾Con• v“enzioni–¸usate“nel“testoŽŸMª¹Un–U comando“uten¸ète:Ž¤ؼ¼#–?¬make“installŽ¡¹Uscita–U a“video“d“un“programma:ŽŸ´å‘óqLË ectt0900ÆProgramma–¹Ninstallato.“Leggere“README“per“particolari“su“come“iniziare.Ž¡¹CoGdice‘U d'esempio:ŽŸX‰ffÕÁGŸF¸¼#–?¬Mio“commentoŽŸ ®char‘?¬letter;ŽŸ ÉÞ‰ffÕÁGŽŽŒ‹), Û_2 ý ~?Ÿ„€ÕÁGŽÁ2.‘ñ8In®>troQÂduzione’~¯œ¹3ŽŽ ÕÁ ýV¯À2Ž‘ÁInctropœduzioneŽŸ¿:¹Si–3ðpu€ò“assumere“con“sicurezza“cš¸èhe“database“con“grandi“v˜olumi“di“dati“o“una“complessa“struttura“relazionaleŽ¤ ®(come,–÷ìprobabilmenš¸ète,“un–×]database“lessicale“pGer“linguaggio“naturale)“dev˜e“essere“accessibile“a“molti“uten˜tiŽ¡ed–õíopšGeratori“sim•¸èultaneamen“te.‘QÅIdealmen“te,‘÷do“vrebb˜e–õíessere“p˜ossibile“usare“dierenš¸èti“piattaforme“hardw˜are“eŽ¡soft•¸èw“are›â5esisten“ti˜c“he˜pGossono˜essere˜com“binate˜nel˜sistema.‘K2Allo˜scopGo˜di˜ridurre˜i˜costi˜di˜implemen“tazione,Ž¡solo–Úun“sistema,›ûVil“database“serv•¸èer,˜dev“e–Úessere“pGotenš¸ète.‘iLe“stazioni“uten˜te“dev˜ono“tipicamen˜te“mostrare“iŽ¡dati–ÿÞe“accettare“i“comandi,›*Žma“l'elabGorazione“€è“eseguita“su“una“sola“macc¸èhina,˜cosa“c¸èhe“pGorta“al“nome“diŽ¡database›íuxŽŽŽ©®‘¹fornisce–™`il“sistema“opGerativš¸èo.‘>A€È‘™ una“implemen˜tazione“stabile“di“Unix“c˜he“fornisce“auten˜tici“serviziŽ¡‘m•¸èulti-uten“te–xe“m¸èulti-tasking“con“pieno“suppGorto“di“rete“(TCP/IP‘Le.“a.).‘v‰Eccetto“i“costi“eettivi“deiŽ¡‘suppšGorti–|•e“di“sp˜edizione,‘†r€è“disp˜onibile“gratuitamenš¸ète“in“forma“di“cosiddette“distribuzioni“c˜he“di“solitoŽ¡‘includono–wserŽŽŽ¦‘¹sono–3Fapplicazioni“con“in¸èterfaccia“testuale“(pšGer“es.“Lynx)“o“graca“(p˜er“es.“Mosaic,–jÐNetscap˜e,“ArenaŽ¡‘ecc.)‘U0cš¸èhe–/accettano,‘,v‘ÿqÐalutano“e“mostrano“doGcumen˜ti“HTML.“Sono“le“unic˜he“parti“di“soft˜w˜are“utilizzateŽ¡‘direttamen•¸ète›ˆbdall'uten“te˜del˜database.‘ GUtilizzando˜i˜bro“wser,‘Õ3€è˜pGossibile˜mostrare˜v‘ÿqÐari˜tipi˜di˜datiŽ¡‘(testo,‘Gzimmagini)–De“comš¸èunicare“con“serv˜er“h˜ttp“(v˜edi“nel“seguito)“su“ogni“mošGdello“di“computer“p˜er“cuiŽ¡‘sia–U dispGonibile“un“bro¸èwser.ŽŸ®Áserv•®>er‘Õh“ttpŽŽŽ¦‘¹forniscono–Öl'accesso“all'area“di“un“computer“host“do•¸èv“e–Ösono“immagazzinati“i“dati“destinati“ad“usoŽ¡‘pubblico–Ysu“una“rete.‘#,Essi“"comprendono"“il“protošGcollo“h¸èttp“e“pro˜curano“le“informazioni“ric¸èhiesteŽ¡‘dall'uten¸ète.ŽŸ®ÁSQLŽŽŽ¦‘¹lo–¬4Structured“Query“Language“(linguaggio“strutturato“pšGer“in¸èterrogazioni)“€è“un“linguaggio“p˜er“ma-Ž¡‘nipGolare–ÚYdati“in“database“relazionali.‘,Ha“una“grammatica“molto“semplice“e“costituisce“uno“standardŽ¡‘ampiamenš¸ète–ªqsuppGortato.‘qrDatabase“basati“su“SQL‘ªsono“div˜en˜tati“il“n˜ucleo“del“classico“concetto“diŽ¡‘database›…Ïclien•¸èt/serv“er.‘ŒCi˜sono˜molti˜famosi˜sistemi˜SQL‘…€dispGonibili,–Ñúcome˜Oracle,“Informix,“ecc.,Ž¡‘e–`pšGoi“c'€è“anc¸èhe“msql“disp˜onibile“a“costo“molto“basso“o“nš¸èullo“se“usato“in“am˜bien˜ti“accademici“e“diŽ¡‘istruzione.ŽŸ®ÁCGIŽŽŽ¦‘¹la–ø Common“Gatew•¸èa“y›ø In“terface˜€è˜l'in“terfaccia˜di˜programmazione˜tra˜il˜sistema˜c“he˜man“tiene˜i˜dati˜(nelŽ¡‘nostro–caso“un“sistema“basato“su“SQL)›Ned“il“protoGcollo“di“rete“(HTML,“naturalmen¸ète).‘»¢I˜CGI˜pGos-Ž¡‘sono–_íessere“costruiti“attra•¸èv“erso–_ímolti“linguaggi“di“programmazione,‘b ma“un“linguaggio“particolarmen¸èteŽ¡‘p•Gop“olare–U €è“il“pGerl.ŽŽŽŒ‹9Ú Û_2 ý ~?Ÿ„€ÕÁGŽÁ3.‘ñ8ProQÂcedura–Õdi“Installazione’:uL¹4ŽŽ ÕÁ ýV¯ÁpQÂerlŽŽŽŸŒE‘¹€è–un“linguaggio“di“scripting“estremamenš¸ète“pGoten˜te“c˜he“com˜bina“tutti“i“meriti“del“C,“di“div˜ersi“lin-Ž¤ ®‘guaggi–ö³shell“e“dei“linguaggi“pšGer“manip˜olazione“di“le“come“aš¸èwk“e“sed.‘V:P˜erl“ha“moltissime“in˜terfacceŽ¡‘mošGdularizzate–U e“pu€ò“essere“usato,“ad“esempio,“p˜er“con¸ètrollare“database“SQL.ŽŸ(£À3Ž‘ÁPropœcedura–G\di“InstallazioneŽŸèÃ3.1Ž‘¾Requisiti‘¸Hardw areŽŸMª¹Non–¿çpGossono“essere“fatte“aermazioni“generali“riguardo“i“requisiti“hardwš¸èare“di“un“serv˜er“database.‘±ÖT‘ÿ*¸roppiŽ¡fattori–©udipGendono“dal“nš¸èumero“di“uten˜ti,›¾Šdal“tipGo“di“applicazione,˜dal“carico“di“rete“ecc.‘nIn“piccoli“am•¸èbien“tiŽ¡con›§.p•Go“c•¸èhi˜uten“ti˜e˜scarso˜traco˜di˜rete˜una˜macc“hina˜i486-equiv‘ÿqÐalen“te˜con˜16˜Mb˜di˜RAM‘¦×pu€ò˜essereŽ¡completamen•¸ète›nâsucien“te.‘¾ÆLin“ux,‘uRil˜sistema˜opGerativ“o,‘uR€è˜molto˜ecien“te˜in˜termini˜di˜risorse,‘uRe˜pu€ò˜fornireŽ¡abbastanza–eÜpšGotenza“p˜er“eseguire“un'ampia“v‘ÿqÐariet€à“di“applicazioni“allo“stesso“temp˜o.‘!¿Naturalmen¸ète,‘•¶pro˜cessoriŽ¡pi€ù–]¶vš¸èeloGci“e“pi€ù“RAM‘]xsignicano“pi€ù“v˜elošGcit€à,‘2ma“molto“pi€ù“imp˜ortan¸ète“del“pro˜cessore“€è“l'ammon¸ètare“di“RAM.Ž¡Pi€ù–"öRAM‘"Áha“il“sistema,‘Vkmeno“esso“€è“costretto“ad“eseguire“sw¸èap“di“proGcessi“su“disco“nel“caso“la“memoriaŽ¡div•¸èen“ti–U un“collo“di“bGottiglia.Ž©ؼDispGonendo–…Ådi“32“MB›…¹di“RAM˜ed“un“bus“PCI,“opšGerazioni“di“ricerca“e“ordinamen¸èto“p˜ossono“essere“eseguiteŽ¡senza–U ricorso“a“le“di“swš¸èap“ecc.,“ottenendo“prestazioni“v˜eloGcissime.Ž¦Il–©moGdello“di“installazione“descritto“in“questo“articolo“€è“stato“realizzato“su“un“IBM‘ÂŒ686“(133“MHz)“con“32Ž¡MB–æ`di›æ|RAM“ed˜un˜hard˜disk˜IDE“da˜1.2˜GB.˜Assumendo˜c¸èhe˜il˜proGcesso˜di˜installazione˜parta˜da˜zero,‘üœvieneŽ¡fornita–U una“lista“dei“passi“necessari.ŽŸ#¨Ã3.2Ž‘¾Requisiti‘¸Soft• w“areŽŸMª¹Il›Óøsoft•¸èw“are˜descritto˜in˜questo˜articolo˜€è˜dispGonibile˜su˜In“ternet˜o˜su˜CD-R“OM.˜Sono˜stati˜usati˜i˜seguen“tiŽ¡proGdotti:ŽŸQ€‘ó !",š cmsy10¸ŽŽŽ‘¹Red–§kHat“Linš¸èux“P˜o˜w˜erT‘ÿ*¸oGols:‘Red“Hat“4.2“-“6“CD‘§Complete“Easy-to-Use“estate“'97;‘Pin“alternativ‘ÿqÐaŽ¡‘¼http://www.redhat.com¹;Ž©jv‘¸ŽŽŽ‘¹msql–ã®SQL‘ãdatabase“servš¸èer:‘ Ž€è“ora“dispGonibile“in“due“v˜ersioni.‘ +Le“v˜ersioni“dieriscono“nel“n˜u-Ž¡‘mero–öèdi“transazioni“cš¸èhe“pGossono“gestire,‘_Znell'in˜terfaccia“di“amministrazione,‘_Zecc.‘ V×La“v˜ersione“pi€ùŽ¡‘v•¸èecc“hia,–Ïð1.0.16,“€è–PúdispšGonibile“dai“mirror“di“Sunsite.‘ e Gli“eseguibili“ELF‘Pwp˜ossono“essere“tro¸èv‘ÿqÐati“aŽ¡‘¼sunsite:apps/database/sql/msql-1.0.16–ÿ ¹o“su“CD-Rš¸èOM‘þá(disco“4“di“InfoMagic“Lin˜ux“Dev˜elopGer'sŽ¡‘Resource,‘«46-CD,–€¹Dicemš¸èbre“1996)“o“alternativ‘ÿqÐamen˜te“dalla“seguen˜te“URL:“¼http://www.infomagic.com¹.ŽŸŒE‘La–ïÂvš¸èersione“pi€ù“n˜uo˜v‘ÿqÐa,–2.0.1,“pu€ò–ïÂessere“direttamen˜te“otten˜uta“dal“homepage“della“Hughes“in“AustraliaŽ¡‘(¼http://www.hughes.com.au¹)–U o“da“n¸èumerosi“mirror“sparsi“pGer“il“mondo;Ž¦‘¸ŽŽŽ‘¹pGerl– *da“CP‘ÿ*¸AN:“Il“Comprehensivš¸èe“P˜erl“Arc˜hiv˜e“Net˜w˜ork.‘XÙW‘ÿ*¸aln˜ut“Creek“CDR˜OM,“ISBN‘ 1-57176-077-6,Ž¡‘Maggio‘U 1997;Ž¦‘¸ŽŽŽ‘¹programmi–¼“d'esempio“CGI‘¼ldi“Micš¸èhael“Sc˜hilli's“dalla“rivista“tedesca“iX‘¼l8/1997,›Ûpagine“150152,˜dispGoni-Ž¡‘bile–U via“ftp“da“¼ftp.uni-paderborn.de:/doc/magazin/iX¹;ŽŸ#¨Ã3.3Ž‘¾Installazione–¸del“sistema“op_úerativ oŽŸMª¹Lin¸èux–€l€è“installato“nella“forma“della“distribuzione“Red“Hat“4.2.‘óeAllo“scopGo“di“installare“con“successo,‘Ë@laŽ¡macc•¸èhina›ˆ-dev“e˜a“v“ere˜un˜driv“e˜CD-R“OM‘ˆ accessibile˜da˜DOS,˜un˜driv“e˜CD-R“OM‘ˆ a“vviabile˜(b•Go“otable),‘”ðaltri-ŽŽŽŒ‹Ip Û_2 ý ~?Ÿ„€ÕÁGŽÁ3.‘ñ8ProQÂcedura–Õdi“Installazione’:uL¹5ŽŽ ÕÁ ýV¯menš¸èti–U dev'essere“preparato“un“disco“di“b•Go“ot–U seguendo“le“istruzioni“sul“CD“di“Lin˜ux.ŽŸؼDuranš¸ète–Väl'installazione“l'uten˜te“pu€ò“selezionare“e“congurare“n˜umerosi“pacc˜hetti“soft˜w˜are.‘v̀ȑV¢con˜v˜enien˜teŽŸ ®selezionare–U i“seguenš¸èti“elemen˜ti:Ž©ؼ‘¸ŽŽŽ‘¹suppGorto–U di“rete“TCP/IP‘ÿ*¸,Ž¤®‘¸ŽŽŽ‘¹il–U servš¸èer“h˜ttp“Apac˜he,Ž¡‘¸ŽŽŽ‘¹il–U linguaggio“di“scripting“pGerlŽ¡‘¸ŽŽŽ‘¹il–U sistema“X“Windo¸èwŽ¡‘¸ŽŽŽ‘¹i–U bro¸èwser“Arena“(graco)“e“Lynx“(testuale).Ž¦T‘ÿ*¸utti–úƒquesti“paccš¸èhetti“sono“forniti“con“la“distribuzione“Lin˜ux.‘SLSe“questi“pacc˜hetti“non“v˜engono“installati“ora,Ž¤ ®si–aš¸èvr€à“la“pGossibilit€à“di“farlo“in“seguito“con“l'assistenza“di“glin˜t,‘L‘il“gestore“pGer“l'installazione“soft˜w˜are“conŽ¡inš¸èterfaccia–Tºgraca“ed“in˜tuitiv‘ÿqÐa.‘q^Assicurarsi“di“opGerare“come“uten˜te“roGot“duran˜te“l'installazione“dei“pacc˜hettiŽ¡soft•¸èw“are.Ž©ؼV‘ÿ*¸a–U6oltre“gli“scopi“di“questo“articolo“descriv¸èere“la“proGcedura“di“installazione“ed“inizializzazione“della“rete.Ž¡Consultare–U la“doGcumenš¸ètazione“in“linea“(manpage,“HTML,“texinfo)“e“stampata“(Lin˜ux“Bible,“ecc.“ecc.).Ž¦La–%ÿprošGcedura“di“installazione“di“Red“Hat“€è“matura“e“ric¸èhiede“p˜o˜cš¸èhe“attenzioni“da“parte“dell'uten˜te“oltre“alleŽ¡scelte–¨usuali“(come“fornire“il“nome“host“ecc.).‘÷Una“v¸èolta“terminata“con“successo“l'installazione,‘ŒÊil“sistema“€èŽ¡sostanzialmen•¸ète›U pron“to˜pGer˜l'esecuzione.Ž¦Installare–]Üil“sistema“X‘]˜Windoš¸èw“non“€è“obbligatorio“pGer“un“serv˜er“puro,‘  ma“ci€ò“rende“l'accesso“al“sistemaŽ¡ed–+=il“test“molto“pi€ù“semplice.‘ó×La“proGcedura“di“installazione“di“X‘+€è“eseguita“con“uno“qualsiasi“tra“div¸èersiŽ¡programmi;‘À«XF86Setup–G|ore“la“pi€ù“estesa“prošGcedura“guidata“e“necessita“del“minor“n¸èumero“di“op˜erazioniŽ¡man¸èuali–3»pšGer“la“gestione“di“fastidiosi“dettagli“(come“programmazione“del“clo˜c¸èk“video,‘:iecc.).‘f^L'unico“requisitoŽ¡€è–¥°cš¸èhe“il“soft˜w˜are“pGossa“rilev‘ÿqÐare“l'adattatore“video.‘c0Un“adattatore“video“accelerato“economico“(come“sc˜hedeŽ¡basate–U su“T‘ÿ*¸rio“S64“precedenš¸èti“a“S64UV+)“di“solito“funziona“al“v˜olo.Ž¦A‘?Jquesto–?Ppunš¸èto“assumiamo“c˜he“il“nostro“sistema“sia“attiv˜o“ed“in“esecuzione“e“c˜he“Apac˜he,‘C­P˜erl“e“X‘?JWindo˜wŽ¡siano–™stati“installati“con“successo.‘={Si“assumer€à“inoltre“c¸èhe“tutte“le“strutture“standard“come“come“le“eŽ¡directory–tLsiano“man•¸èten“ute–tLcome“denito“nell'installazione.‘ÏUltimo,›¼ma“non“meno“impGortan¸ète,˜lasceremoŽ¡l'hostname–•ƒcos€í“com'€è,‘å›e“accettiamo“in“questo“momen¸èto“il“nome“¼localhost¹.‘2¨Useremo“questo“nome“pGerŽ¡testare–D¤l'installazione.‘lUna“vš¸èolta“c˜he“l'in˜tero“sistema“funziona“pu€ò“essere“aggiun˜to“il“v˜ero“nome.‘lNotare“c˜heŽ¡il–»setup“della“rete“ricš¸èhiede“anc˜he“di“editare“il“le“¼/etc/hosts¹,‘ÙÙtra“gli“altri.‘>#Idealmen˜te“questo“do˜vrebbGe“essereŽ¡fatto–U con“gli“strumenš¸èti“di“amministrazione“forniti“all'uten˜te“roGot.ŽŸ#ÃÃ3.4Ž‘¾Il–¸servš er“h˜ttpŽŸMª¹Il–Ôfservš¸èer“h˜ttp“fornito“con“Lin˜ux“€è“conosciuto“come“Apac˜he“dagli“umani“e“come“h˜ttpGd“dal“sistema.‘ïRLaŽ¡manpage–¶(man“hš¸èttpGd)“spiega“come“installare“ed“a˜vviare“il“demone“h˜ttp“(quindi“h˜ttpÄd‘w¹)“ma,›Îècome“detto,˜seŽ¡l'installazione–®ó€è“a•¸èvv“en“uta–®ósenza“problemi,‘Ågil“servš¸èer“do˜vrebbGe“essere“in“esecuzione.‘~øSi“pu€ò“v˜ericare“l'albGeroŽ¡delle–t6directory:›¯¬dev¸èe“esserci“una“directory“¼/home/httpd/“¹con“tre“sottoGdirectory:˜¼../cgi-bin/¹,‘{ü¼../html/“¹eŽ¡¼../icons/¹.›§ÆIn–¼¼../html/“¹dev¸èe“esserci“un“le“¼index.html¹.˜In“seguito“moGdic¸èheremo“o“sostituiremo“questoŽ¡le–Zcon“l'¼index.html“¹eettiv¸èo“denito“da“noi.‘€cT‘ÿ*¸utte“le“informazioni“di“congurazione“sono“registrate“inŽ¡¼/etc/httpd/conf/¹.‘4ˆIl––#sistema“€è“bGen“precongurato“e“non“ric¸èhiede“un“ulteriore“setup“se“l'installazione“nonŽ¡ha–U subito“errori.ŽŽŽŒ‹X× Û_2 ý ~?Ÿ„€ÕÁGŽÁ3.‘ñ8ProQÂcedura–Õdi“Installazione’:uL¹6ŽŽ ÕÁ ýV¯Ã3.5Ž‘¾I‘¸Bro wserŽ©Mª¹Ci–eSsono“essenzialmenš¸ète“tre“tipi“di“bro˜wser“dispšGonibili“p˜er“Linš¸èux:‘‘æsistemi“puramen˜te“testuali“come“Lynx,Ž¤ ®semplici–&de“spšGerimen¸ètali“come“Arena“(gratis!)‘aìe“commerciali“come“Netscap˜e“(Sharew¸èare!)‘aìcon“supp˜orto“Ja¸èv‘ÿqÐa.Ž¡Menš¸ètre–>Lynx“e“Arena“sono“forniti“con“Lin˜ux,‘GÆNetscapGe“dev˜e“essere“recupGerato“da“altre“fon˜ti.‘·ÛNetscapGe“€èŽ¡dispšGonibile–&Ãin“forma“binaria“precompilata“p˜er“Linš¸èux“su“arc˜hitetture“ix86“e“pGotr€à“essere“eseguito“al“v˜oloŽ¡appGena–U estratto“dall'arc¸èhivio.ŽŸ ’Á3.5.1Ž‘#!\Congurazione–Õdi“LynxŽ¦¹Una–\tvš¸èolta“a˜vviato,‘Ž0Lynx“cerc˜her€à“una“URL‘\5predenita“solitamen˜te“non“molto“signicativ‘ÿqÐa“se“il“sistema“non“haŽ¡un–¢wser“ArenaŽ¦¹Arena–M¤dapprima“cerca“la“propria“URL‘Mdpredenita“quando“lanciato“senza“argomen¸èti.‘[ Questa“€è“coGdicataŽ¡nell'eseguibile–žLma“pu€ò“essere“soš¸èvrascritta“tramite“la“v‘ÿqÐariabile“d'am˜bien˜te“¼WWW_HOME¹.“L'amministratore“diŽ¡sistema–Pîpu€ò“inserire“la“linea“¼WWW_HOME="http://localhost"“¹in“¼/etc/profile¹.‘pLa“v‘ÿqÐariabile“dev¸èe“essere“es-Ž¡pšGortata,‘ xo–öŽtramite“una“istruzione“separate“(¼export‘?¬WWW_HOME¹)‘övo“app˜endendo“¼WWW_HOME‘öv¹all'istruzione“exp˜ortŽ¡esisten¸ète:ŽŸÈ@‰ffÕÁGŸ ¼WWW_HOME="http://localhost"Ž¡export‘?¬WWW_HOMEŽŸ ƉffÕÁGŸo¢¹Al–U successivš¸èo“login,“la“n˜uo˜v‘ÿqÐa“URL“predenita“sar€à“nota“ad“Arena“a“liv˜ello“di“sistema.ŽŸ ’Á3.5.3Ž‘#!\Installazione–Õe“congurazione“di“NetscapQÂeŽ¦¹NetscapšGe–`y€è“un“pro˜dotto“commerciale“e“quindi“non“incluso“nelle“distribuzioni“Linš¸èux.‘ô€È‘`;scaricabile“da“In˜ternet“oŽ¡dispšGonibile–gin“collezioni“soft•¸èw“are–gsu“CD-R¸èOM.“Netscap˜e“giunge“in“forma“binaria“precompilata“p˜er“ogni“imp˜or-Ž¡tanš¸ète–M©piattaforma“hardw˜are.‘oP˜er“scopi“di“installazione,‘O'€è“utile“creare“una“directory“¼/usr/local/Netscape/Ž¡¹do•¸èv“e–Úscompattare“l'arc¸èhivio.‘^I‘Ùòle“pšGossono“essere“lasciati“sul“p˜osto“(eccetto“p˜er“le“librerie“Ja¸èv‘ÿqÐa:‘{iseguire“leŽ¡istruzioni–2Bnel“le“¼README‘2 ¹accluso“ai“binari“NetscapGe),‘iŠed“€è“sucien¸ète“creare“un“link“in“¼/usr/local/bin/Ž¡¹eseguendo–U il“comandoŽ¤œo¼#–?¬ln“-s“/usr/local/Netscape/netscape“.Ž¡¹dalla–U directory“¼/usr/local/bin/¹.ŽŸؼNetscapšGe–EV€è“ora“pron¸èto“p˜er“l'uso“e“pu€ò“essere“congurato“attra•¸èv“erso–EVil“men¸è€ù“`Options.‘èIn“General“PreferencesŽŸ ®c'€è–S±una“sc¸èheda“AppšGearance‘(ùcon“il“camp˜o“Home“P¸èage“Lo˜cation.‘qImmettere“qui“¼http://localhost“¹e“nonŽŽŽŒ‹i Û_2 ý ~?Ÿ„€ÕÁGŽÁ3.‘ñ8ProQÂcedura–Õdi“Installazione’:uL¹7ŽŽ ÕÁ ýV¯dimenš¸èticare–¼Ndi“salv‘ÿqÐare“le“opzioni“(attra˜v˜erso“Options‘‘–“Sa˜v˜e“Options)“prima“di“uscire“da“NetscapGe.Ž¤ ®All'a•¸èvvio›U successiv“o,˜NetscapGe˜mostrer€à˜l'homepage˜di˜Apac“he.Ž©#ÃÃ3.6Ž‘¾Co•_úop“erazione–¸tra“Apacš he“e“i“Bro˜wserŽŸMª¹Si–µpu€ò“ora“condurre“il“primo“test“reale“del“broš¸èwser“e“del“serv˜er“h˜ttp:‘QJa˜vviare“uno“dei“bro˜wser“dispGonibili“e“laŽ¡pagina›–ë¼Apache:‘ XRed–?¬Hat“Linux“Web“Server˜¹apparir€à.‘6âQuesta˜pagina˜mostra˜la˜loGcazione˜dei˜le˜e˜altreŽ¡informazioni–z–basilari“sull'installazione“del“servš¸èer“h˜ttp.‘áãSe“questa“pagina“non“viene“mostrata“con˜trollare“se“iŽ¡le–¾tmenzionati“sopra“sono“nel“pGosto“giusto“e“se“la“congurazione“del“bro¸èwser“€è“corretta.‘­|Chiudere“i“le“diŽ¡congurazione–¤editati“prima“di“lanciare“il“broš¸èwser“di“n˜uo˜v˜o.‘_£Se“tutti“i“le“sono“a“pGosto“e“la“congurazioneŽ¡del–GÂbroš¸èwser“sem˜bra“corretta,‘Joesaminare“il“setup“di“rete“della“propria“macc˜hina.‘m L'hostname“p•Gotrebb“e‘GÂessereŽ¡dieren¸ète–ÿda“quello“immesso“nella“congurazione,‘*o“il“setup“di“rete“p•Gotrebb“e–ÿessere“in“s€é“non“corretto.‘pœ€ÈŽ¡molto–U impGortanš¸ète“c˜he“¼/etc/hosts“¹con˜tenga“almeno“una“linea“comeŽŸX‰ffÕÁGŸF¸¼127.0.0.1‘N»localhost‘?¬localhost.localdomainŽŸ ff‰ffÕÁGŸ ȹc¸èhe–3ßimplica“la“pšGossibilit€à“di“connettersi“lo˜calmenš¸ète“alla“propria“macc˜hina.‘fjQuesto“€è“v˜ericabile“ric˜hiamandoŽ¡uno–Êqdei“programmi“di“rete“cš¸èhe“ric˜hiedono“un“hostname“come“argomen˜to,‘æ.come“¼telnet‘?¬localhost“¹(ammessoŽ¡cš¸èhe–¯–¼telnet“¹sia“installato).‘€áSe“l'esecuzione“fallisce“oGccorre“v˜ericare“la“congurazione“di“rete“prima“di“con-Ž¡tin¸èuare.Ž¦Ã3.7Ž‘¾Il–¸Motore“Database“e“la“sua“installazioneŽŸMª¹L'installazione–Œdel“database“ricš¸èhiede“p•Go“ca–Œpreparazione“in“pi€ù“rispGetto“ai“passi“preceden˜ti.‘ÍÄCi“sono“p•Go“c˜hiŽ¡motori–Wedatabase“SQL‘WddispšGonibili,‘Wöcon“dieren¸èti“prerequisiti“p˜er“l'amministrazione“e“l'esecuzione,‘Wöed“uno“deiŽ¡migliori–÷æ€è“msql,‘ —o“Mini-SQL‘Ídi“Daš¸èvid“Hughes.‘YÑmsql“€è“sharew˜are.‘YÑA‘÷¼seconda“della“v˜ersione“utilizzata,‘ —€èŽ¡previsto–Üun“addebito“di“250“dollari“USA‘Û÷o“pi€ù“pšGer“siti“commerciali,‘ôK65“dollari“o“pi€ù“p˜er“utenš¸èti“priv‘ÿqÐati,‘ôKmen˜treŽ¡enš¸èti–èëeducativi,‘þformativi“e“organizzazioni“no-prot“registrate“pGossono“usare“il“soft˜w˜are“gratuitamen˜te.‘MnI‘èÏcostiŽ¡esatti– $sono“forniti“nelle“note“di“licenza“della“doGcumen¸ètazione“del“database.‘Le“cifre“indicate“sono“solo“unŽ¡indicatore‘U approssimativ¸èo.ŽŸؼAlcune–‡parole“pšGer“giusticare“la“scelta“di“msql“da“parte“dell'autore.‘,öPrima“di“tutto,‘°¡c'€è“l'esp˜erienza“p˜ersonale.Ž¡Duranš¸ète–bla“ricerca“di“motori“database,‘’°msql“si“€è“dimostrato“il“pi€ù“semplice“da“installare“e“man˜tenere,‘’°e“fornisceŽ¡una–fÒsucien¸ète“copšGertura“del“linguaggio“SQL‘fÍtale“da“so˜ddisfare“le“esigenze“generali.‘¦–Solo“duran¸ète“la“stesuraŽ¡di–®¬questo“articolo“l'autore“ha“scopGerto“le“seguenš¸èti“parole“nell'Alligator“Descartes'“DBI–®”F‘þã A˜Q“(pGerl‘®¬databaseŽ¡in•¸èterface‘U F‘þã A“Q):Ž©ؼ‘'ÿDal–Ò^punš¸èto“di“vista“dell'autore,‘ì…se“l'insieme“di“dati“€è“relativ‘ÿqÐamen˜te“piccolo,‘ì…con“tabGelle“inferioriŽ¡‘al–emilione“di“righe,›1ve“meno“di“mille“tabGelle“in“un“dato“database,˜allora“mSQL‘7€è“una“soluzioneŽ¡‘pšGerfettamen¸ète–Þaccettabile“p˜er“il“vš¸èostro“problema.‘ œQuesto“database“€è“estremamen˜te“economico,Ž¡‘mera•¸èvigliosamen“te–U robusto“ed“ha“un“suppGorto“eccellen¸ète.‘q€[...]Ž¦Msql–4à€è“dispGonibile“attualmenš¸ète“in“due“v˜ersioni,›;Smsql-1.0.16“e“msql-2.0.1,˜c¸èhe“dieriscono“in“prestazioni“(nonŽ¡osserv‘ÿqÐabili–Ûàin“progetti“di“piccola“scala)“e“soft•¸èw“are–Ûàallegato“(la“vš¸èersione“pi€ù“recen˜te“presen˜ta“pi€ù“strumen˜ti,Ž¡un–VÝproprio“linguaggio“di“scripting“ecc.).‘v¸V‘ÿ*¸erranno“descritte“en•¸ètram“bGe–VÝle“v¸èersioni“di“msql“siccome“la“loroŽ¡installazioni–U dierisce“in“alcuni“pun¸èti.ŽŽŽŒ‹w1 Û_2 ý ~?Ÿ„€ÕÁGŽÁ3.‘ñ8ProQÂcedura–Õdi“Installazione’:uL¹8ŽŽ ÕÁ ýV¯Á3.7.1Ž‘#!\Installazione–Õdi“msql-1.0.16ŽŸMª¹msql– ÿ€è“dispšGonibile“in“formato“sorgen¸ète“ed“in“forma“binaria“compilata“con“supp˜orto“ELF.“L'uso“dei“binariŽ¤ ®ELF‘‹²rende–‹äl'installazione“semplice“in“quanš¸èto“l'arc˜hivio“¼msql-1.0.16.ELF.tgz“¹con˜tiene“un“albGero“di“directoryŽ¡assoluto–U e“completo,“cosiccš¸èh€é“tutte“le“directory“sono“create“correttamen˜te“quando“estratte“da“¼/¹.ŽŸؼSe–3~si“decide“di“compilare“msql-1.0.16“e“si“inš¸ètende“usare“il“pacc˜hetto“MsqlP˜erl“piuttosto“c˜he“l'in˜terfaccia“DBIŽ¡(vš¸èedere–¯una“trattazione“dettagliata“delle“dierenze“pi€ù“oltre)“tenere“presen˜te“c˜he“MsqlP˜erl“p•Gotrebb“e‘¯segnalareŽ¡degli–herrori“in“fase“di“test“cš¸èhe“ric˜hiedono“l'installazione“di“una“patc˜h“pGer“correggere“una“errata“gestioneŽ¡dell'SQL.–ŒwLa“patcš¸èh“€è“descritta“nella“doGcumen˜tazione“MsqlP˜erl“(le“¼patch.lost.tables¹).‘†In“particolareŽ¡le–Yricš¸èhieste“di“MsqlP˜erl“includeranno“tre“linee“in“¼msqldb.c“¹dopGo“la“linea“1400“c˜he“ripGorta“¼entry-ó  b> cmmi10µ>¼def‘?¬=Ž¡NULL;¹:Ž©¿½‘)ý`¼*(entry->DB)–?¬=“0;Ž¡‘)ý`*(entry->table)–?¬=“0;Ž¡‘)ý`entry->age–?¬=“0;Ž¦¹La–U pšGorzione“di“co˜dice“do¸èvrebb˜e“apparire“comeŽŸK‰ffÕÁGŸü‘)ý`¼freeTableDef(entry->def);Ž¡‘)ý`safeFree(entry->rowBuf);Ž¡‘)ý`safeFree(entry->keyBuf);Ž¡‘)ý`entry->def–?¬=“NULL;Ž¡‘)ý`*(entry->DB)–?¬=“0;Ž¡‘)ý`*(entry->table)–?¬=“0;Ž¡‘)ý`entry->age–?¬=“0;ŽŸ è‰ffÕÁGŸI¹La–Pacompilazione“di“msql“ricš¸èhiede“div˜ersi“passi.‘–DopGo“la“scompattazione“dell'arc˜hivio“con“i“sorgen˜ti“€è“necessarioŽ¡costruire–U una“directory“destinazione.‘q€Questo“si“ottiene“conŽ¦¼#–?¬make“targetŽ¦¹Se–U tutto“v‘ÿqÐa“bšGene,“il“sistema“risp˜onde“conŽŸ›æ‘ÆBuild–¹Nof“target“directory“for“Linux-2.0.30-i486“completeŽ¦¹Bisogna–U ora“spšGostarsi“nella“directory“app˜ena“creata“ed“immettere“dapprima“il“comandoŽ¦¼#‘?¬./setupŽ¦¹La–^Usequenza“¼./“¹€è“necessaria“pGer“assicurarsi“di“eseguire“il“comando“¼setup“¹in“questa“directory“e“non“un“altroŽ¡con–±lo“stesso“nome.‘^V‘ÿ*¸err€à“ricš¸èhiesto“di“scegliere“la“loGcazione“della“directory“con“i“sorgen˜ti“e“se“si“desidera“unaŽ¡installazione–¶çcome“utenš¸ète“roGot.‘–ÔUna“v˜olta“c˜he“l'uten˜te“ha“eettuato“le“scelte“il“sistema“esegue“una“serie“diŽ¡test–U pšGer“v¸èericare“la“disp˜onibilit€à“di“soft•¸èw“are–U (compilatore,“utilit€à“ecc.)‘q€p˜er“terminare“col“messaggioŽŸ›æ‘ÆReady–¹Nto“build“mSQL.Ž¤ Š=‘You–¹Nmay“wish“to“check“"common/site.h"“although“the“defaults“should“beŽ¡‘fine.› rœWhen–¹Nyou're“ready,“type˜"make“all"“to“build“the“softwareŽ¦¹Si–U pGotr€à“immettereŽ¦¼#–?¬make“allŽŽŽŒ‹ ‡ Û_2 ý ~?Ÿ„€ÕÁGŽÁ3.‘ñ8ProQÂcedura–Õdi“Installazione’:uL¹9ŽŽ ÕÁ ýV¯Se–U tutto“v‘ÿqÐa“come“previsto,“si“legger€à:ŽŸZ‘Æmake[2]:–¹NLeaving“directory“`/usr/local/Minerva/src/msql'Ž¤ Š=‘<--–¹N[msql]“doneŽ¡¡‘Make–¹Nof“mSQL“complete.Ž¡‘You–¹Nshould“now“mSQL“using“make“installŽ¡¡‘NOTE–¹N:“mSQL“cannot“be“used“free“of“charge“at“commercial“sites.Ž¡‘:$Please–¹Nread“the“doc/License“file“to“see“what“you“have“to“do.Ž¡¡‘make[1]:–¹NLeaving“directory“`/usr/local/Minerva/src'Ž¤³2¹T‘ÿ*¸utti–¹Mi“binari“devš¸èono“essere“resi“visibili“dal“pGercorso“di“ricerca“creando“dei“link“soft˜w˜are“in“¼/usr/local/bin/¹.Ž© ®SpGostarsi–U nella“directory“ed“immettere“il“comandoŽ¡¼#–?¬ln“-s“/usr/local/Minerva/bin/*“.Ž¡¹dopšGo–U il“quale“i“link“saranno“imp˜ostati“correttamen¸ète.ŽŸ ÎÁ3.7.2Ž‘#!\T‘ÿ ºest–Õdi“msql-1ŽŸMª¹DopšGo––l'installazione“€è“p˜ossibile“testare“se“il“database“funziona.‘41Prima“di“ogni“altra“cosa“il“serv¸èer“(demone)Ž¦devš¸èe–U essere“a˜vviato.‘q€L'amministratore“di“sistema“con“i“privilegi“di“roGot“immette“il“comandoŽ¡¼#–?¬msqld“&Ž¡¹(non–Êdimenš¸èticare“di“aggiungere“il“sim˜bGolo“¼&¹,‘ç?altrimen˜ti“msql“non“v˜err€à“eseguito“in“bac˜kground)“dop•Go“dic˜h€éŽ¦apparir€à–U il“seguenš¸ète“messaggio“a“sc˜hermo:ŽŸZ‘ÆmSQL–¹NServer“1.0.16“starting“...Ž¤ Š=¡‘Warning–¹N:“Couldn't“open“ACL“file:“No“such“file“or“directoryŽ¡‘Without–¹Nan“ACL“file“global“access“is“Read/WriteŽ¤³2¹Questo–çRmessaggio“ci“informa“cš¸èhe“ogni“cosa“funziona“ma“c˜he“non“esistono“restrizioni“di“accesso.‘ (P˜er“ilŽ¦momenš¸èto–ʶ€è“sucien˜te“a˜vviare“il“demone“msql“da“shell,‘èma“in“seguito“si“p•Gotrebb“e–ʶdesiderare“c˜he“il“sistemaŽ¦esegua–î›automaticamenš¸ète“il“comando“pGer“noi.‘OTIl“comando“dev˜e“essere“inserito“in“uno“script“¼rc.d“¹appropriato.Ž¦Solo–U ora“l'amministratore“pu€ò“immettere“il“primo“comando“eettiv¸èo“di“database:Ž¡¼#–?¬msqladmin“create“inventurŽ¡¹msql–ÌárispGonde“con“¼Database–?¬"inventur"“created.¹.‘ØÄCome–Ìáulteriore“proš¸èv‘ÿqÐa,‘*Òsi“v˜eric˜hi“c˜he“la“directoryŽ¦¼/usr/local/Minerva/msqldb/–Žî¹conš¸ètiene“ora“la“sottoGdirectory“vuota“¼../inventur/¹.‘ëP˜otremmo“manipGolareŽ¦il›6Ñn•¸èuo“v“o˜database˜con˜gli˜strumen“ti˜di˜amministrazione;‘§©queste˜pro•Gcedure˜sono˜tutte˜cop“erte˜in˜dettaglioŽ¦dalla–U doGcumen¸ètazione“msql.ŽŸ ÎÁ3.7.3Ž‘#!\Installazione–Õdi“msql-2.0.1ŽŸMª¹C'€è–kuna“vš¸èersione“pi€ù“recen˜te“e“pi€ù“pGoten˜te“del“serv˜er“mSQL‘jÏdi“Huges,‘°•l'installazione“del“quale“dierisceŽ¦in›üßp•Go“c•¸èhi˜pun“ti.‘h¾L'installazione˜ex-no“v“o˜di˜msql-2˜implica˜i˜passi˜seguen“ti.‘h¾Copiare˜l'arc“hivio˜nel˜pun“to˜diŽ¦estrazione–U previsto,“pšGer“esempio“¼/usr/local/msql-2/¹,“p˜oi“estrarre“i“le:ŽŽŽŒ‹ ’^ Û_2 ý ~?Ÿ„€ÕÁGŽÁ3.‘ñ8ProQÂcedura–Õdi“Installazione’5uœ¹10ŽŽ ÕÁ ýV¯¼#–?¬tar“xfvz“msql-2.0.1.tar.gzŽ¤ؼ¹SpšGostarsi–U nella“directory“radice“dell'alb˜ero“di“installazione“e“immettereŽ¡¼#–?¬tar“xfvz“msql-2.0.1.tar.gzŽ¡¹spšGostarsi–5§in“¼targets“¹e“cercare“il“proprio“tip˜o“di“piattaforma.‘Do¸èvrebb˜e“esserci“una“n•¸èuo“v‘ÿqÐa‘5§sotto˜directoryŽ© ®¼Linux-Ä(vostr–ÿ}/a›“°versione)-(vostr“a˜cpu)/‘žz¹.‘q€SpGostarsi–U in“essa“ed“a¸èvviare“il“programma“di“setup:Ž¡¼#‘?¬./setupŽ¡¹C'€è–0¿ancš¸èhe“un“le“¼site.mm“¹c˜he“pu€ò“essere“editato.‘ ]V‘ÿ*¸ogliamo“conserv‘ÿqÐare“il“pGercorso“di“installazione“inŽ¦¼/usr/local/Minerva/–íϹ(predenito“pšGer“msql“1.0.16)?‘ ;ŽIn“questo“caso“mo˜dicare“la“linea“¼INST_DIR=...Ž¦¹di–U conseguenza.‘q€Altrimen¸èti,“lasciare“tutto“com'€è.ŽŸؼOra–U pGossiamo“lanciare“la“compilazione“del“databaseŽ¡¼#‘?¬makeŽ¦#–?¬make“installŽ¡¹Se–U tutto“v‘ÿqÐa“pGer“il“vš¸èero“giusto,“v˜edremo“un“messaggio“come:ŽŸ´å‘Æ[...]Ž¤ Š=¡‘Installation–¹Nof“mSQL-2“complete.Ž¡¡‘*********Ž¡‘**‘+êThis–¹Nis“the“commercial,“production“release“of“mSQL-2.0Ž¡‘**‘+êPlease–¹Nsee“the“README“file“in“the“top“directory“of“theŽ¡‘**‘+êdistribution–¹Nfor“license“information.Ž¡‘*********ŽŸؼ¹DopGo–cš¸èhe“tutto“€è“installato“correttamen˜te“dobbiamo“curarci“dei“dettagli“amministrativi.‘ºUQui“comincia“laŽ¦vš¸èera–U dierenza“da“msql-1.‘q€Anzitutto,“creare“un“uten˜te“respGonsabile“della“amministrazione“del“database.Ž¤ؼ¼#–?¬adduser“msqlŽ¡¹P¸èoi–U si“impGosti“¼msql“¹come“proprietario“di“tutti“i“le“nella“directory“mSQL“col“comando:Ž¤ؼ¼#–?¬cd“/usr/local/MinervaŽ¦#–?¬chown“-R“msql:msql“*Ž¡¹P¸èoi–U pšGossiamo“creare“link“p˜er“tutti“gli“eseguibili“binari“del“database“in“¼/usr/local/bin/“¹col“comando:Ž¡¼#–?¬ln“-s“/usr/local/Minerva/bin/*“.ŽŸ ÖÁ3.7.4Ž‘#!\T‘ÿ ºest–Õdi“msql-2ŽŸMª¹P•¸èossiamo›kÅa“vviare˜il˜serv“er˜database˜con˜il˜comando˜¼msql2d‘?¬&¹;‘÷do“vremmo˜ottenere˜una˜rispGosta˜simile˜aŽ¦questa:ŽŽŽŒ‹ g Û_2 ý ~?Ÿ„€ÕÁGŽÁ3.‘ñ8ProQÂcedura–Õdi“Installazione’5uœ¹11ŽŽ ÕÁ ýV¯‘ÆMini–¹NSQL“Version“2.0.1Ž¤ Š=‘Copyright–¹N(c)“1993-4“David“J.“HughesŽ¡‘Copyright–¹N(c)“1995-7“Hughes“Technologies“Pty.“Ltd.Ž¡‘All–¹Nrights“reserved.Ž¡¡‘>ÊrLoading–¹Nconfiguration“from“'/usr/local/Minerva/msql.conf'.Ž¡‘>ÊrServer–¹Nprocess“reconfigured“to“accept“214“connections.Ž¡‘>ÊrServer–¹Nrunning“as“user“'msql'.Ž¡‘>ÊrServer–¹Nmode“is“Read/Write.Ž¡¡‘Warning–¹N:“No“ACL“file.‘ rœUsing“global“read/write“access.Ž¤ؼ¹Ci€ò–Rusem¸èbra“pšGerfetto.‘i~Il“database“€è“compilato“ed“installato,‘‘Êe“p˜ossiamo“ora“con•¸ètin“uare–Rucon“i“mo˜duli“p˜erlŽ© ®siccome–U questi“si“basano“in“parte“sulla“presenza“di“un“database“funzionan¸ète“pGer“il“test.ŽŸؼInciden•¸ètalmen“te,‘ôÐquesto–ܼ€è“ancš¸èhe“un“buon“momen˜to“pGer“stampare“il“man˜uale“completo“fornito“con“msql-2.0.1:Ž¡¼#–?¬gzip“-d“manual.ps.gzŽ¦#–?¬lpr“manual.psŽ¡¹Pš¸èossiamo–y#ora“proGcedere“con“la“compilazione“delle“in˜terfacce,‘‚#ma“€è“una“buona“idea“man˜tenere“il“serv˜er“SQLŽ¦attivš¸èo–U ed“in“esecuzione“pGerc˜h€é“ci€ò“rende“il“test“delle“librerie“di“in˜terfaccia“un“pGo'“pi€ù“semplice.ŽŸ#ÃÃ3.8Ž‘¾Scelta–¸delle“inš terfacce:‘ÿ DBI/mSQL,“MsqlP˜erl,“LiteŽ¤Mª¹Una––àfrase“spšGesso“citata“del“Camel“Bo˜ok“(la“principale“do˜cumen¸ètazione“p˜erl)“aerma“c¸èhe“c'€è“pi€ù“di“un“mo˜do“diŽ¦ottenere–L9un“risultato“quando“si“usa“pGerl.‘4Questo,–4ahim€è,“resta–L9vš¸èero“anc˜he“pšGer“il“nostro“mo˜dello“di“applicazione.Ž¦Ci–“[sono“fondamen•¸ètalmen“te–“[tre“moGdi“di“accedere“ad“un“database“msql“via“CGI.“Prima“di“tutto“la“domandaŽ¦€è–hÉse“utilizzare“o“meno“pšGerl.‘¬{Se“usiamo“p˜erl“(su“ci€ò“si“fo˜calizza“questo“articolo)“p˜otremo“ancora“scegliere“traŽ¦due–”´moGdelli“completamenš¸ète“div˜ersi“di“in˜terfaccia.‘0;A‘”£anco“del“p•Gerl,‘¤™p“ossiamo–”´anc˜he“utilizzare“il“linguaggioŽ¦scripting–U di“msql,“cš¸èhiamato“Lite,“c˜he“€è“ragionev˜olmen˜te“semplice“e“simile“al“C.ŽŸ ÖÁ3.8.1Ž‘#!\DBI–Õe“DBD-mSQLŽ¡¹Al–©œmomenš¸èto“della“redazione“di“questo“articolo,‘þ»l'uso“della“in˜terfaccia“pšGerl“DBI‘©Dp˜er“l'accesso“a“databaseŽ¦viene–!„preferito.‘`LDBI‘!wha“alcuni“v‘ÿqÐanš¸ètaggi:‘W²fornisce“un“con˜trollo“unicato“di“accesso“ad“un“n˜umero“di“databaseŽ¦commerciali–”ãpGer“mezzo“di“un“unico“insieme“di“comandi.‘1lIl“database“eettiv‘ÿqÐamen¸ète“in“uso“su“un“dato“sistema“€èŽ¦pGoi–Ò—conš¸ètattato“attra˜v˜erso“un“driv˜er“c˜he“nasconde“ecacemen˜te“le“pGeculiarit€à“del“database“al“programmatore.Ž¦Cos€í,‘él'uso–íÁdi“DBI‘í™pGermette“una“agevš¸èole“transizione“tra“dieren˜ti“database“di“dieren˜ti“proGduttori.‘;bIn“unŽ¦singolo–<¶script“€è“pGossibile“conš¸ètattare“div˜ersi“database.‘(AF‘ÿ*¸are“riferimen˜to“alle“DBI-F‘þã A˜Q‘erlŽ¡¹MsqlPš¸èerl–]#€è“una“libreria“pGer“l'accesso“a“msql“direttamen˜te“da“script“pGerl.‘‰ŠEssa“sca˜v‘ÿqÐalca“l'in˜terfaccia“DBIŽ¦ed–ñÍ€è“piuttosto“compatta.‘GˆSebbšGene“essa“la•¸èv“ori–ñÍb˜ene“con“en•¸ètram“b˜e–ñÍle“v¸èersioni“di“msql,‘ùil“suo“uso“non“€è“pi€ùŽŽŽŒ‹ ¥“ Û_2 ý ~?Ÿ„€ÕÁGŽÁ3.‘ñ8ProQÂcedura–Õdi“Installazione’5uœ¹12ŽŽ ÕÁ ýV¯consigliato–<~a“v‘ÿqÐanš¸ètaggio“dell'in˜terfaccia“DBI‘ÊrLocally–¹Napplied“patches:Ž¡‘>ÊrSUIDBUF–¹N-“Buffer“overflow“fixes“for“suidperl“securityŽ¡¡‘>Êrbuilt–¹Nunder“linux“at“Apr“22“1997“10:04:46Ž¡‘>Êr+–¹Ntwo“suidperl“security“patchesŽ¡¡‘Copyright–¹N1987-1996,“Larry“WallŽ©ؼ¹Probabilmenš¸ète,‘s®tutto–m’€è“a“pGosto.‘ºÕIl“passo“successiv˜o“include“l'installazione“delle“librerie“pšGerl“p˜er“database“inŽ¤ ®generale–$s(DBI),“il“drivš¸èer“msql“(DBD-mSQL)‘$ge“CGI.“Il“driv˜er“CGI‘$g€è“necessario“in“ogni“caso.‘aFSono“necessari“iŽ¡seguen•¸èti‘U arc“hivi:Ž¦‘ 9b1.ŽŽŽ‘DBI-0.81.tar.gzŽ¤®‘ 9b2.ŽŽŽ‘DBD-mSQL-0.65.tar.gzŽ¡‘ 9b3.ŽŽŽ‘CGI.pm-2.31.tar.gz–U (or“successiv¸èo)Ž¦Qui–8SošGccorre“una“pun¸ètualizzazione“p˜er“i“neoti:‘cl'installazione“di“test“descritta“qui“funziona“b˜ene“utilizzandoŽ¤ ®soft•¸èw“are–ƒÛcon“Äesattamente‘D*¹questi“nš¸èumeri“di“v˜ersione,‘‰men˜tre“com˜binazioni“di“altre“v˜ersioni“falliscono“pGer“unŽ¡motivš¸èo–ÑØo“pGer“l'altro.‘ç§Il“debug“di“com˜binazioni“di“v˜ersioni“difettose“€è“sconsigliabile“a“c˜hi“non“abbia“grandeŽ¡familiarit€à–û‡con“i“dettagli“delle“con•¸èv“enzioni–û‡di“cš¸èhiamata“delle“in˜terfacce“ecc.‘dµIn“alcuni“casi“un“metoGdo“pu€òŽ¡essere–˜¢semplicemenš¸ète“rinominato“pur“eettuando“lo“stesso“compito,‘©‚ma“a“v˜olte“la“struttura“in˜terna“cam˜biaŽ¡signicativ‘ÿqÐamenš¸ète.‘üQuindi,‘r¾ancora–9Ÿuna“v˜olta,‘r¾€è“necessario“man˜tenere“i“n˜umeri“di“v˜ersione“qui“indicati“seŽ¡si–\vuole“opšGerare“in“sicurezza,‘++anc¸èhe“se“nel“frattemp˜o“fossero“comparse“vš¸èersioni“successiv˜e.‘s5Aggiornamen˜tiŽŽŽŒ‹ ´Ä Û_2 ý ~?Ÿ„€ÕÁGŽÁ3.‘ñ8ProQÂcedura–Õdi“Installazione’5uœ¹13ŽŽ ÕÁ ýV¯frequenš¸èti– Bdi“queste“in˜terfacce“sono“una“regola“piuttosto“c˜he“un'eccezione,‘: quindi“l'installazione“di“v˜ersioniŽ¤ ®dierenš¸èti–U da“quelle“indicate“pu€ò“essere“fon˜te“di“problemi.Ž©ؼ€È‘Vgmolto–V§impGortanš¸ète“c˜he“il“driv˜er“di“database“pGer“mSQL–Vg(DBD-mSQL)“sia–V§installato“Ädop‘ÿ}/o‘ø5¹l'in˜terfaccia“genericaŽ¡DBI.Ž¦Si–rycomincer€à“creando“la“directory“¼/usr/local/PerlModules/“¹siccome“€è“molto“impGortanš¸ète“man˜tenere“l'albGeroŽ¡originale–½ÿdelle“directory“pGerl“in•¸ètatto.‘? P“otremmo›½ÿanc“he˜scegliere˜un˜nome˜di˜directory˜div“erso˜siccome˜il˜nomeŽ¡non–_S€è“assolutamenš¸ète“critico,‘aàe“sfortunatamen˜te“ci€ò“non“€è“spšGecicato“nei“le“README‘_Pdei“v‘ÿqÐari“mo˜duli“p˜erl.Ž¡DopGo›U a•¸èv“er˜copiato˜gli˜arc“hivi˜suddetti˜in˜¼/usr/local/PerlModules/˜¹li˜scompattiamo˜conŽ¤ؼ¼#–?¬tar“xzvf“[file-archivio]Ž¡¹pGer–Téognš¸èuno“dei“tre“arc˜hivi.‘Non“dimen˜ticare“di“fornire“il“nome“di“le“corretto“a“¼tar¹.‘Il“proGcesso“di“installazioneŽ¤ ®pšGer–kHi“tre“mo˜duli“€è“essenzialmenš¸ète“standardizzato;‘v]solo“i“messaggi“a“sc˜hermo“c˜he“mostrano“passi“signicativiŽ¡pšGer–U i“singoli“pacc¸èhetti“sono“rip˜ortati“nel“seguito.ŽŸ ÖÁ3.9.1Ž‘#!\Installazione–Õdell'in®>terfaccia“database“di“pQÂerl“-“DBIŽŸMª¹L'in•¸èterfaccia›áœv“erso˜il˜database˜dev“e˜sempre˜essere˜installata˜prima˜del˜driv“er˜di˜database˜spGecico.‘ õLaŽ¡scompattazione–·mdell'arc¸èhivio“DBI‘·Ecrea“la“directory“¼/usr/local/PerlModules/DBI-0.81/¹.‘<ïSpGostandosi“nellaŽ¡directory‘ÿ*¸,‘äsi–”¡troš¸èv‘ÿqÐano“un“le“¼README‘”O¹(c˜he“andrebbšGe“letto)“ed“un“p˜erl-Mak¸èele“(estensione“.PL).“Diamo“ilŽ¡comandoŽ¤ؼ¼#–?¬perl“Makefile.PLŽ¡¹Il–U sistema“do¸èvrebbšGe“risp˜ondere“con“un“lungo“messaggio“la“cui“parte“imp˜ortan¸ète“€è“mostrata“qui:ŽŸ´å‘Æ[...]Ž¤ Š=‘MakeMaker‘¹N(v5.34)Ž¡‘Checking–¹Nif“your“kit“is“complete...Ž¡‘Looks‘¹NgoodŽ¡‘>ÊrNAME–¹N=>“q[DBI]Ž¡‘>ÊrPREREQ_PM–¹N=>“{‘ rœ}Ž¡‘>ÊrVERSION_FROM–¹N=>“q[DBI.pm]Ž¡‘>Êrclean–¹N=>“{“FILES=>q[$(DISTVNAME)/]“}Ž¡‘>Êrdist–¹N=>“{“DIST_DEFAULT=>q[clean“distcheck“disttest“[...]Ž¡‘Using‘¹NPERL=/usr/bin/perlŽ¡¡‘WARNING!–¹NBy“default“new“modules“are“installed“into“your“'site_lib'Ž¡‘directories.–¹NSince“site_lib“directories“come“after“the“normal“libraryŽ¡‘directories–¹Nyou“MUST“delete“old“DBI“files“and“directories“fromŽ¡‘your–¹N'privlib'“and“'archlib'“directories“and“their“auto“subdirectories.Ž¡¡‘Writing–¹NMakefile“for“DBIŽŸؼ¹Questo–˜sdo¸èvrebbšGe“andare“b˜ene,‘©Gcome“indicato“dal“programma“(lo˜oks“go˜o˜d),‘©Ge“p˜ossiamo“pro˜cedere“col“passoŽ© ®successiv¸èo:Ž¤ؼ¼#‘?¬makeŽ¡¹Se–Wònon“si“hanno“messaggi“di“errore“(il“protoGcollo“dettagliato“mostrato“a“sc¸èhermo“Änon‘G¹€è“un“messaggio“diŽ¦errore)–U si“testi“la“n•¸èuo“v‘ÿqÐa–U libreria“installata“con“il“comandoŽŽŽŒ‹ÂÊ Û_2 ý ~?Ÿ„€ÕÁGŽÁ3.‘ñ8ProQÂcedura–Õdi“Installazione’5uœ¹14ŽŽ ÕÁ ýV¯¼#–?¬make“testŽ©K™¹Osserv‘ÿqÐare–U le“seguen¸èti“linee“di“output“(eettuare“lo“scroll“all'indietro“con“¼[Shift]-[PgUp]¹):ŽŸ'‘Æ[...]Ž¤ Š=‘t/basics............okŽ¡‘t/dbidrv............okŽ¡‘t/examp.............okŽ¡‘All–¹Ntests“successful.Ž¡‘[...]Ž¡‘DBI–¹Ntest“application“$Revision:“1.20“$Ž¡‘Switch:–¹NDBI-0.81“Switch“by“Tim“Bunce,“0.81Ž¡‘Available–¹NDrivers:“ExampleP,“NullP,“SpongeŽ¡‘ExampleP:–¹Ntesting“2“sets“of“5“connections:Ž¡‘Connecting...–¹N1“2“3“4“5Ž¡‘Disconnecting...Ž¡‘Connecting...–¹N1“2“3“4“5Ž¡‘Disconnecting...Ž¡‘Made–¹N10“connections“in› rœ0“secs“(“0.00“usr˜0.00“sys“=˜0.00“cpu)Ž¡¡‘test.pl‘¹NdoneŽ¦¹Il–U passo“nale“€è“quello“di“installare“tutti“i“le“nelle“directory“appropriate.‘q€Ci€ò“si“ottiene“col“comandoŽ¦¼#–?¬make“installŽ¦¹Non–ñ©resta“altro.‘GSe“pGer“qualcš¸èhe“ragione“l'installazione“fallisce“e“dev˜e“essere“rieseguita“non“dimen˜ticarsi“diŽ¤ ®eseguire‘U primaŽ¦¼#–?¬make“realcleanŽ¦¹Questo›ùrim•¸èuo“v“e˜i˜resti˜indesiderati˜della˜preceden“te˜installazione.‘]Si˜pGossono˜anc“he˜rim“uo“v“ere˜i˜le˜installatiŽ¡copiando–U il“con•¸èten“uto–U dello“sc¸èhermo“(mostrato“abbreviato)ŽŸ'‘ÆInstalling‘¹N/usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBIXS.hŽ¤ Š=‘Installing‘¹N/usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBI.soŽ¡‘Installing‘¹N/usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBI.bsŽ¡‘[...]Ž¡‘Writing‘¹N/usr/lib/perl5/site_perl/i386-linux/auto/DBI/.packlistŽ¡‘Appending–¹Ninstallation“info“to“/usr/lib/perl5/i386-linux/5.003/perllocal.podŽ¦¹in–ðYun“le,‘rimpiazzando“ogni“oGccorrenza“di“¼Installing“¹con“¼rm¹.‘OéSe“tale“le“viene“c¸èhiamato“¼uninstall“¹si“pu€òŽ¤ ®pGoi‘U eseguireŽ¦¼#–?¬.“uninstallŽ¦¹c•¸èhe›U rim“uo“v“er€à˜i˜le˜installati.ŽŸ ·µÁ3.9.2Ž‘#!\Il–Õdriv®>er“msql“di“pQÂerl“DBD-mSQLŽŸMª¹Il–90drivš¸èer“msql“pu€ò“essere“installato“soltan˜to“Ädop‘ÿ}/o‘Ú¾¹la“felice“installazione“dell'in˜terfaccia“generica“pGer“databaseŽ¡di‘U pGerl.ŽŸؼI–U passi“fondamenš¸ètali“sono“gli“stessi“di“sopra;“cos€ì“a˜vremo“dapprimaŽŽŽŒ‹Ά Û_2 ý ~?Ÿ„€ÕÁGŽÁ3.‘ñ8ProQÂcedura–Õdi“Installazione’5uœ¹15ŽŽ ÕÁ ýV¯¼#–?¬perl“Makefile.PLŽ©ؼ¹Qui,‘9ãil–3sistema“do¸èvrebbšGe“risp˜ondere“con“un“in¸èvito“alla“lettura“della“do˜cumenš¸ètazione“a“corredo.‘f&Esso“rilev˜er€àŽŸ ®pGoi›U do•¸èv“e˜risiede˜msql,˜e˜c“hieder€à˜quale˜v“ersione˜€è˜in˜uso.ŽŸ´å¤ Š=‘Æ$MSQL_HOME–¹Nnot“defined.“Searching“for“mSQL...Ž¡‘Using–¹NmSQL“in“/usr/local/HughesŽ¡¡‘¹P->–¹NWhich“version“of“mSQL“are“you“using“[1/2]?Ž¦¹inserire–U il“nš¸èumero“di“v˜ersione“corretto.‘q€Seguiranno“p•Go“c˜he–U linee“di“testo.‘q€Osserv‘ÿqÐare“le“seguen˜ti:ŽŸ´å‘ÆSplendid!–¹NYour“mSQL“daemon“is“running.“We“can“auto-detect“your“configuration!Ž¡¡‘I've–¹Nauto-detected“your“configuration“to“be“running“on“port:“1114Ž¦¹Si–U pu€ò“ora“testare“il“driv¸èer“conŽ¦¼#–?¬make“testŽ¦¹Di›U n•¸èuo“v“o,˜segue˜un˜output˜piuttosto˜lungo.‘q€Se˜esso˜termina˜conŽŸ´å‘ÆTesting:–¹N$cursor->func(“'_ListSelectedFields'“).“This“will“fail.Ž¡‘>Êrok:–¹Nnot“a“SELECT“in“msqlListSelectedFields!Ž¡‘Re-testing:–¹N$dbh->do(“'DROP“TABLE“testaa'“)Ž¡‘>ÊrokŽ¡‘***–¹NTesting“of“DBD::mSQL“complete!“You“appear“to“be“normal!“***Ž¦¹si–U €è“sulla“buona“strada“ed“€è“pGossibile“installare“il“driv¸èer“conŽ¦¼#–?¬make“installŽ¦¹Questo–lõconclude“le“opGerazioni“di“installazione;‘xßil“prossimo“paragrafo“riguarda“MsqlP¸èerl“e“se“si“€è“scelto“l'usoŽ¤ ®di–U DBI“pu€ò“essere“saltato.ŽŸ#ÃÃ3.10Ž‘%}¨L'in• terfaccia‘¸MsqlP“erlŽŸMª¹Se–õßsi“decide“di“usare“esclusiv‘ÿqÐamenš¸ète“l'in˜terfaccia“MsqlP˜erl“non“oGccorre“il“driv˜er“di“database“generico,‘ìma“soloŽ¡¼MsqlPerl-1.15.tar.gz¹,–dsiccome,“come–-ìdetto“in“precedenza,‘dMsqlPš¸èerl“fornisce“una“in˜terfaccia“diretta“traŽ¡servš¸èer–U database“e“pGerl“senza“l'uso“dell'in˜terfaccia“DBI.“Installazione“e“test“sono“immediati.Ž©ؼDopGo›-Ta•¸èv“er˜eseguito˜¼perl‘?¬Makefile.PL‘-¹l'utilit€à˜mak“e˜pu€ò˜essere˜a“vviata.‘úDapprima˜o•Gccorrer€à˜risp“ondereŽ¡alla–ÅÐdomanda“su“do•¸èv“e–ÅÐrisiede“msql.‘ÃSe“msql“€è“in“¼/usr/local/Minerva/“¹si“pšGotr€à“confermare“la“risp˜osta“diŽ¡default.Ž¦Pš¸èoi– Þeseguire“¼make‘?¬test¹.‘Y¿Prima“di“ci€ò“bisogna“assicurarsi“di“a˜v˜ere“un“database“c˜hiamato“¼test“¹e“di“pGossedereŽ¡i–U diritti“di“lettura/scrittura“su“di“esso.‘q€T‘ÿ*¸ale“database“pu€ò“essere“creato“conŽŸؼ¼#–?¬msqladmin“create“testŽŽŽŒ‹×[ Û_2 ý ~?Ÿ„€ÕÁGŽÁ4.‘ñ8Esecuzione–Õdi“un“database“di“esempio’ühw¹16ŽŽ ÕÁ ýV¯Ã3.11Ž‘%}¨La–¸libreria“CGI“di“p_úerlŽŸMª¹L'installazione–®del“compšGonen¸ète“CGI‘®di“p˜erl“€è“il“pi€ù“semplice“dei“tre“passi.‘|z€È‘®sucien¸ète“eseguire“i“comandiŽ¤ ®seguen¸èti–U nell'ordine“dato“e“tutto“€è“fatto:Ž©Û¼#–?¬perl“Makefile.PLŽ¡#‘?¬makeŽ¡#–?¬make“installŽ¦¹Div•¸èersamen“te–+¤dai“drivš¸èer“preceden˜ti“questa“in˜terfaccia“non“ha“una“opzione“di“test“(¼#–?¬make“test¹)–+¤siccome“gliŽ¡altri–U moGduli“Ädevono‘ö®¹essere“testati“in“ogni“caso.Ž©ؼViene–„Ùanc¸èhe“creata“una“sottoGdirectory“con“script“CGI›„Ìdi“esempio.‘ª€È˜pGossibile“copiare“i“con•¸èten“uti–„Ùdi“questaŽ¡directory–U in“¼/home/http/cgi-bin/“¹ed“usare“il“bro¸èwser“pšGer“sp˜erimen¸ètare“gli“script.ŽŸ"Í4Ã3.12Ž‘%}¨Lista–¸di“con trollo“dell'installazioneŽŸMª¹Abbiamo–U compiuto“i“passi“seguen¸èti,“nell'ordine“dato:ŽŸbo‘ 9b1.ŽŽŽ‘Installazione–U di“Lin¸èux“con“suppGorto“di“reteŽ¤òî‘ 9b2.ŽŽŽ‘Installazione–U di“un“servš¸èer“h˜ttp“(Apac˜he)Ž¡‘ 9b3.ŽŽŽ‘Installazione–U di“un“bro¸èwser“(Arena,“lynx“o“NetscapGe)Ž¡‘ 9b4.ŽŽŽ‘Installazione–U di“un“serv¸èer“SQL“(msql)Ž¡‘ 9b5.ŽŽŽ‘Installazione–U di“una“in¸èterfaccia“pGerl“SQLŽ¡‘ 9b6.ŽŽŽ‘Installazione–U dei“le“CGIŽŸbnInne,‘ó°€è–ÓùpšGossibile“fare“un“p˜o'“di“pulizia.‘î T‘ÿ*¸utti“i“rami“di“directory“con•¸ètenen“ti–Óùi“sorgen¸èti“p˜er“le“installazioniŽ¤ ®pGossono–÷Messere“rimossi“(tuttaš¸èvia,‘Ønon“v‘ÿqÐanno“cancellati“gli“arc˜hivi“originali!)‘Xsiccome“tutti“i“le“binari“e“laŽ¡doGcumenš¸ètazione–U si“tro˜v‘ÿqÐano“in“directory“dieren˜ti.ŽŸ(p À4Ž‘ÁEsecuzione–G\di“un“database“di“esempioŽŸ¿:¹DopGo– §il“completamenš¸èto“dell'installazione“del“sistema“si“pu€ò“nalmen˜te“eseguire“una“moGdello“di“applicazione.Ž¡A‘èseconda–ùdella“vš¸èersione“di“msql“installata“e“dell'in˜terfaccia“pGerl“utilizzata“si“do˜vr€à“moGdicare“il“programmaŽ¡di–U esempio“in“qualcš¸èhe“pun˜to.Ž¦Innanzitutto,‘YÞil–ò…le“¼index.html“¹pšGosto“in“¼/home/httpd/html/“¹dev¸èe“essere“mo˜dicato“p˜er“p˜ermettere“diŽ¡ric¸èhiamare–@l'applicazione“database“campione.‘'€È‘?ÎpšGossibile“p˜orre“il“database“(cš¸èhe“v˜err€à“c˜hiamato“¼database.cgiŽ¡¹o–U ¼inventur.cgi“¹nonostan¸ète“il“nome“del“le“¼perl.lst.ck¹)“nella“directory“¼/home/httpd/html/test/¹.Ž¦Pš¸èer–Ôottenere“lo“scop•Go,‘|app“endere–Ôuna“linea“(naturalmen˜te“dipGenden˜te“dalle“scelte“di“installazione)“simile“allaŽ¡seguen¸ète–U nel“le“¼index.html¹:ŽŸœç‰ffÕÁGŸH¼
  • Test–?¬the“Database,“DBI:DBD-mSQL“style!Ž¡
  • Test–?¬the“Database,“MsqlPerl“style!ŽŸ ËE‰ffÕÁGŸR¡¹Solitamenš¸ète–õÃsi“do˜vrebbGe“man˜tenere“una“sola“di“queste“due“scelte,‘]ëma“dispGonendo“di“en˜tram˜bi“i“tipi“diŽ¡inš¸èterfaccia–Adatabase“installata“€è“pGossibile“lasciare“en˜tram˜bšGe“le“linee“cos€ì“come“sono.‘]àSar€à“in“seguito“p˜ossibileŽ¡comparare–U le“prestazioni,“ecc.ŽŽŽŒ‹àß Û_2 ý ~?Ÿ„€ÕÁGŽÁ4.‘ñ8Esecuzione–Õdi“un“database“di“esempio’ühw¹17ŽŽ ÕÁ ýV¯Ã4.1Ž‘¾A• dattamen“to–¸dello“script“di“esempio“p_úer“MsqlP erlŽŸMª¹Allo–šHscript“campione“devš¸èe“essere“noticato“l'uso“dell'in˜terfaccia“MsqlP˜erl.‘@ùLe“moGdic˜he“in˜terv˜engono“inŽ¤ ®div•¸èersi›U pun“ti.‘q€Dapprima,˜vicino˜all'inizio˜del˜le,˜rimpiazzare˜la˜clausola˜¼use¹:Ž©­‰ffÕÁGŸ7G¼#Ž¡#–?¬use“DBI;‘>ü#“Interfaccia“Database“GenericaŽ¡use‘?¬Msql;ŽŸ µ‰ffÕÁGŸÔg¹Pš¸èoi,–U alla“linea“27,“la“sin˜tassi“MsqlP˜erl“non“ric˜hiede“la“menzione“di“un“driv˜er“spGecico:Ž¦‰ffÕÁG© ¼#–?¬$dbh“=“DBI->connect($host,“$database,“'',“$driver)“||Ž¡$dbh–?¬=“Msql->connect($host,“$database)“||ŽŸ µ‰ffÕÁGŸÔg¹Pš¸èoi,–U dalla“linea“33“pGer“tutto“l'in˜tero“script,“bisogna“moGdicare“tutte“le“istanze“di“¼do“¹con“¼query¹:ŽŸeʼnffÕÁG¦¼#–?¬$dbh->do("SELECT“*“FROM“hw")“||“db_init($dbh);Ž¡$dbh->query("SELECT–?¬*“FROM“hw")“||“db_init($dbh);Ž¤ µ‰ffÕÁGŸÔg¹Inne,–U la“linea“207“devš¸èe“essere“commen˜tata:ŽŸ­‰ffÕÁG¦¼#–?¬$sth->execute“||“msg("SQL“Error:",“$sth->errstr);Ž¡‰ffÕÁGŸÔg¹Inoltre,‘,Ôpu€ò›"Ádiv•¸èen“tare˜necessario˜scam“biare˜tutte˜le˜c“hiamate˜¼errstr˜¹come˜quella˜nel˜preceden“te˜frammen“toŽ¤ ®di–U cošGdice“con“¼errmsg¹.‘q€Anc¸èhe“questa“scelta“dip˜ende“dalla“v¸èersione.ŽŸؼDopšGo–U queste“mo˜dicš¸èhe,“lo“script“do˜vrebbGe“girare“senza“in˜toppi.ŽŸ"–ßÃ4.2Ž‘¾A• dattamen“to–¸dello“script“di“esempio“p_úer“for“msql-2ŽŸMª¹La–\Àsinš¸ètassi“SQL‘\¿€è“stata“ridenita“duran˜te“lo“sviluppGo“di“msql-2.‘ˆaLo“script“originale“fallir€à“l'esecuzione“delleŽ¡istruzioni–½cdi“inizializzazione“tabšGella“nelle“linee“45““58.‘ªHIl“mo˜dicatore“¼primary‘?¬key“¹non“€è“pi€ù“supp˜ortatoŽ¡da–U msql-2,“e“doš¸èvrebbGe“essere“semplicemen˜te“evitato:ŽŸ­‰ffÕÁG¦‘þ°¼$dbh->do(<errstr;“#“Neue“Personen-TabelleŽ¡‘)ý`create–?¬table“person“(Ž¡#–?¬We“do“not“need“the“'primary“key'“modifier“anymore“in“msql-2!Ž¡#‘9¼dpn‘)ý`int–?¬primary“key,‘¿#“PersonalnummerŽ¡‘>üpn‘)ý`int,‘N»#‘?¬PersonalnummerŽ¡‘>üname‘~char(80),‘4|¸#–?¬Nachname,“VornameŽ¡‘>üraum‘~int‘SúÀ#‘?¬RaumnummerŽ¡‘)ý`)Ž¡EOTŽ¡‘þ°$dbh->do(<errstr;“#“Neue“Hardware-TabelleŽ¡‘)ý`create–?¬table“hw“(Ž¡#–?¬We“do“not“need“the“'primary“key'“modifier“anymore“in“msql-2!Ž¡#‘9¼dasset–?¬int“primary“key,‘$½´#“InventurnummerŽ¡‘>üasset–?¬int,‘c¹Ä#“InventurnummerŽ¡‘>üname‘¿char(80),‘D;¼#‘?¬BezeichnungŽ¡‘>üperson–?¬int‘c¹Ä#“BesitzerŽ¡‘)ý`)Ž¡EOTŽŽŽŒ‹í  Û_2 ý ~?Ÿ„€ÕÁGŽÁ5.‘ñ8Conclusione–Õe“Riepilogo’A‘L¹18ŽŽ ÕÁ ýV¯‰ffÕÁGŸ ÈSfortunatamenš¸ète,‘/€questo–Óscript“accetter€à“n˜uo˜vi“elemen˜ti“con“iden˜tico“n˜umero“di“pšGersonale;‘[-il“mo˜dicatoreŽ¤ ®msql-1–Z¼primary‘?¬key“¹inš¸ètende“prev˜enire“esattamen˜te“questo“compGortamen˜to.‘ …-La“doGcumen˜tazione“msql-2Ž¡mostra–U come“usare“la“clausola“¼CREATE‘?¬INDEX“¹pGer“ottenere“elemenš¸èti“univ˜oGci.ŽŸ(ÀœÀ5Ž‘ÁConclusione–G\e“RiepilogoŽŸ¿:¹Se–u si“€è“installato“msql-2“sul“proprio“sistema“si“pu€ò“dare“un'oGcc¸èhiata“ai“programmi“d'esempio“scritti“in“Lite,Ž¡il–U linguaggio“di“scripting“proprietario“di“msql-2.Ž©ؼEn•¸ètram“bGe–Ole“vš¸èersioni“di“msql“sono“fornite“con“un“insieme“base“di“strumen˜ti“di“amministrazione“c˜he“pGermettonoŽ¡all'uten¸ète–U di“creare“e“cancellare“tabGelle“(¼msqladmin¹)“e“di“esaminare“le“strutture“di“database“(¼relshow¹).Ž¦La–Ú–seconda“generazione“di“msql“(cioG€è“msql-2)“presenš¸èta“qualc˜he“strumen˜to“in“pi€ù:‘4;¼msqlimport“¹e“¼msqlexport¹.Ž¡Questi–âpšGermettono“l'esp˜ortazione“e“l'imp˜ortazione“di“dati“sotto“forma“di“le“di“testo“da“e“v¸èerso“databaseŽ¡SQL.–u˜Pš¸èossono“essere“usati“pGer“il“caricamen˜to“di“quan˜tit€à“di“dati“esisten˜ti“Äd'un‘±c–ÿ}/olp“o‘&¹in–u˜tabGelle“gi€à“create,‘}·oŽ¡l'estrazione–öfdi“dati“da“tabšGelle,‘ Xin“mo˜do“cš¸èhe“l'uten˜te“non“debba“scriv˜ere“Äalcuna‘º»¹linea“di“pGerl“o“SQL‘öNo“qualsiasiŽ¡altro–U cošGdice“p˜er“questi“compiti.Ž¦Se–+ðsi“desidera“scriv¸èere“propri“script“pšGerl“p˜er“l'inš¸èterazione“con“database“si“tro˜v˜er€à“sucien˜te“suppGorto“nei“leŽ¡di–U esempio“e“nella“estensiv‘ÿqÐa“došGcumen¸ètazione“in“linea“fornita“col“mo˜dulo“DBI.Ž¦Aš¸èd–Fºogni“moGdo,‘Iœsi“€è“ora“pron˜ti“pGer“cominciare“e“presen˜tare“i“propri“dati“ad“uten˜ti“della“propria“rete,‘Iœo“anc˜heŽ¡del‘U W‘ÿ*¸eb.ŽŽŽŒø÷=ƒ’À;èÛ_2ÕÁGóqLË ectt0900ó½HЃ ecti1000ó¥!¢N ecbx1200ó]fŒ ecbx1000ó&Lt$ffffecbx1440óø8‹ ecsi1000óŒ6 ecss1000óqLË ectt1000óþÖëI½q½qecss2074ó 1ê± ecrm1000ó !",š cmsy10ó  b> cmmi10ùþ¿ßßßßßß