Zope FAQ: la guida tecnica 2008 di noze

30 domande e risposte su Zope, Python, ZODB, deployment e prestazioni: traduzione e adattamento italiano della Zope FAQ originale di Luke Tymowski.

Open SourceWeb ZopeZope FAQPythonZODBPloneZEOWeb PublishingApacheOpenBSDArchivio Storico

Originale: Fri, Nov 3, 2000; by Luke Tymowski.

Questo è l’archivio della Zope FAQ in versione italiana così come pubblicata sul sito noze.it nell’ottobre 2008. È un documento storico: descrive lo stato dell’arte di Zope nel 2000-2008 e usa riferimenti tecnici (versioni, hardware, mailing list, URL) che oggi sono in gran parte obsoleti. Lo conserviamo pubblicato come testimonianza dell’ecosistema Zope/Python in Italia in quel periodo, e del lavoro di traduzione e curatela editoriale di noze nei primi anni di attività.

1. Informazioni generali

1.1 Cos’è Zope?

Zope è un sistema di web publishing. Consiste in un Web Server opzionale, in un database ad oggetti e in un middle layer che coordina inserendo e togliendo informazioni da/a database.

È anche possibile lasciar fuori la componente Web Server e usare Zope dietro ad Apache o IIS. Zope è progettato — ed eccelle in questo — per essere un sistema di pubblicazione dinamico (publishing dynamic content). Se hai un sito di tre pagine, Zope è inutile. Se hai centinaia o migliaia di pagine, molti utenti, e tanti lettori impazienti, Zope è ottimo. Zope inoltre è open-source, caratteristica questa cruciale per il suo successo. (Zope è un acronimo: sta per Z-Object Publishing Environment; se una persona giovane e carina viene a chiedertelo ad un party, rispondigli pure “Zope è Zope”.)

Il linguaggio di programmazione usato per Zope è il Python e il C. La maggior parte di Zope è scritto in Python, e alcune piccole parti — dove la performance è importantissima — sono state riscritte in C. Zope è descritto come la killer application del Python, cioè come l’applicazione che dimostra al massimo la potenza di tale linguaggio di programmazione. E perciò vale veramente la pena imparare Python.

Digital Creations descrive Zope come un application server. Suppongo che loro intendano dire che si può utilizzare Zope per costruire applicazioni. Ma secondo il mio parere è più facile che una persona capisca dicendo “sistema di Web publishing”.

1.2 Perché dovrei usare Zope?

Zope è uno dei più potenti e flessibili strumenti di Web Publishing disponibili sul mercato. Ci sono poche cose che altri prodotti fanno meglio di Zope. Al momento è famoso per la difficoltà ad impararlo, e questo è vero. Sicuramente è difficile conoscere a fondo Zope. Ma, dopo pochissimo tempo, un non-programmatore può già usare Zope per creare un sito potente e flessibile che potrebbe essere molto difficoltoso o addirittura impossibile da fare per coloro (non programmatori) che utilizzano altri strumenti.

Inoltre, se sei già un programmatore che conosce il Python, Zope ti permetterà di migliorare enormemente le tue capacità.

1.3 Chi sviluppa Zope?

Zope è sviluppato per la maggior parte da Digital Creations, una web consulting company. Il loro principale investitore, un giorno seppe di Zope, e convinse la Digital Creations a renderlo open-source. Loro lo fecero nel 1998, e nessuno — né loro né Zope — sono tornati indietro.

Così Zope è open-source: la comunità di sviluppatori di Zope si è sparsa in tutto il mondo. Anch’io ho rimesso successivamente una patch per Zope. Ma la Digital Creations, al momento, fa la maggior parte della programmazione e della manutenzione della struttura ufficiale, anche se non sono gli unici sviluppatori.

1.4 Dove posso procurarmi Zope?

Puoi scaricarti Zope dal sito zope.org/Products.

1.5 Gli ISP supportano Zope?

Sì. Per la lista vedi su zope.org/Resources/ZSP. Altre società non in lista qui sono su Zopesite.com.

1.6 Posso avere assistenza se uso Zope?

Sì. C’è assistenza gratuita su Zope sulle mailing list. Se invece vuoi un’assistenza non gratuita, occorre che tu stipuli un contratto di assistenza con la Digital Creations. Se vuoi tirare su o fare la manutenzione di un Server Zope, o entrambi, puoi chiedere consiglio su Tummy.com e iMeme.net.

La comunità di Zope attualmente è sufficientemente grande e puoi probabilmente avere l’aiuto di cui hai bisogno da qualcuno. (N.d.T. Esiste anche una mailing-list in italiano, si chiama Zope-it e la trovate sul sito Zope.org.)

1.7 Contro quali prodotti compete Zope?

Se stai cercando un competitor open-source per Zope, dai uno sguardo a AOLserver. Secondo me Zope e AOLserver sono superiori rispetto al resto dei prodotti sul mercato.

Ci sono molti altri strumenti per costruire sofisticati siti Web, alcuni gratuiti altri commerciali. Tutti hanno i loro lati positivi e negativi.

1.8 Ho bisogno di un computer veloce per Zope? Posso usare il mio vecchio 486?

Come tutti i software, più veloce sarà il tuo computer, più sarai contento. Dato che Zope è scritto in Python, avrai un sostanziale miglioramento nelle prestazioni usando un P3-850 invece di un P3-500 per esempio. Probabilmente puoi usare Zope su un 486, ma sarebbe molto lento. Un vecchio Pentium 133 sarà sufficiente per lo sviluppo. Per servire un sito Web pubblico avrai bisogno almeno di un P3-450, o superiore. Un iMac, con installato Linux, è ottimo per una macchina Zope. Il sito Zope.org gira su un server da $1.000 e le prestazioni sono molto buone. Le CPU G3 e G4, che sono usate sui computer Apple odierni, sono ottime per far girare Zope.

1.9 Qual è la migliore piattaforma per Zope? Linux? BSD? NT? MacOS X? Solaris? HP-UX?

Le piattaforme BSD (es. OpenBSD, FreeBSD) e Linux sono eccellenti per Zope. I server Unix sono molto più flessibili e facili da gestire. Su NT può essere facile fare diverse cose, ma quando vanno male, è facile rimanere bloccati. Non ho mai avuto esperienze disastrose sotto NT (di giorno sono un amministratore di Rete NT), ma non ho mai avuto guai con Linux e OpenBSD. Io uso OpenBSD per tutti i miei server Zope semplicemente perché è più sicuro di Linux.

Il supporto per Unix è più facile da trovare ed è di migliore qualità. Inoltre non hai la spiacevole spesa per le licenze di NT server e client.

Ma se hai in mente di costruire un grosso sito, il costo di NT e delle sue licenze sarà minimo rispetto al costo della banda e dell’amministrazione del sistema.

1.10 Quanto è veloce Zope? Posso usarlo per costruire Slashdot part deux?

Zope è abbastanza veloce. Cosa significa ciò? Zope ora non è — e probabilmente non lo sarà mai — veloce quanto Apache, AOLserver e IIS quando si servono pagine statiche. Ma servendo pagine dinamiche, dove ogni singola pagina è generata da zero dal server, Zope può facilmente competere con ognuno di essi. Inoltre Zope è molto più veloce di Java Server Pages. Può supportare milioni di pagine viste al giorno, a seconda della complessità del tuo sito e dal tuo hardware.

Per siti enterprise ad altissima intensità di traffico puoi usare ZEO, anch’esso open-source.

1.11 Chi usa Zope? Qualcuno ha fatto delle recensioni di Zope?

Migliaia di siti al mondo sono costruiti con Zope. Per una lista di alcuni casi di studio dai uno sguardo su zope.org/Resources/CaseStudies. Jon Udell ha recensito Zope su Byte.com. N.d.T.: puoi trovare delle recensioni in italiano su noze.it e su Punto Informatico.

1.12 Di cosa ho bisogno per imparare Zope?

Di un computer, un browser web, Zope stesso e voglia di imparare. Non hai bisogno di comprare niente altro.

1.13 Ci sono dei libri su Zope?

Non ancora. Due DigiCooleans (N.d.T. collaboratori della Digital Creations) stanno lavorando su un libro, che sarà pubblicato nel 2001 da O’Reilly. Puoi cercare una versione BETA di questo libro sul sito www.zope.org/Members/michel/ZB/.

1.14 Non sono un genio, posso usare tranquillamente Zope?

Sì. Puoi creare dei siti abbastanza sofisticati senza avere a che fare con programmazione complessa. Puoi costruire un sito simile a zopeNewbies in circa un’ora. Io l’ho fatto, e se io posso farlo, tutti possono.

1.15 C’è un tutorial di Zope?

Sì. Ce n’è uno in Zope stesso. Dalla schermata principale di Zope, seleziona dal menu in basso: Zope Tutorial.

1.16 Che cos’è un Prodotto di Zope?

Un Product di Zope è un programma che metti su Zope e che fa qualcosa di veramente potente senza che tu abbia programmato niente. I Prodotti di Zope devono essere scritti in Python.

1.17 Fammi un esempio di Prodotto di Zope.

Squishdot è un weblog software, progettato sul modello di Slashdot. Puoi installarlo in Zope e sarai pronto a pubblicare un complesso WEBLOG in pochi minuti.

2. Installazione e configurazione

2.1 Come faccio a installare Zope?

Se stai installando Zope sotto NT, Zope include un programma di installazione con interfaccia grafica (GUI) che farà tutto il lavoro sporco per te. Inclusa la configurazione di Zope come un servizio se fai girare NT.

Se utilizzi Unix puoi scaricarti il file sorgente. Se utilizzi una versione RPM-compatibile di Linux (es. RedHat) puoi scaricarti un RPM.

Io preferisco scaricarmi i sorgenti e compilarli da solo. Nota che devi avere Python 1.5.2 installato per compilare il sorgente di Zope. In questo caso devi scompattare Zope:

tar -xzvf Zope-src-2.2.2.tgz
cd Zope-2.2.2
python w_pcgi.py

2.2 Quando lancio Zope (su Unix) appare del testo sul mio terminale, rendendo necessaria l’apertura di un’altra finestra.

Di default Zope parte con le informazioni di debug attivate. Te ne puoi sbarazzare modificando il file di avvio (che si trova nella directory di root di Zope) e rimuovendo l’opzione -D. L’opzione -D mette Zope in debug mode.

2.3 Non posso effettuare il login per entrare in Zope — vuole uno username e una password.

Alla fine del processo di compilazione, l’account del superutente e la password appaiono sullo schermo. Se li perdi, puoi compilare di nuovo il sorgente, questa volta facendo molta attenzione a ciò che apparirà sullo schermo. Oppure puoi editare il file d’accesso (nella directory di root di Zope) e sovrascrivere la password — nota però che facendo questo la password viene salvata in testo puro ed è visibile da chiunque abbia il permesso di lettura sulla tua directory di Zope.

Se sei costretto a fare ciò, dopo che ti sei assicurato che puoi effettuare il log in Zope, lancia il programma zpasswd.py per creare una tua nuova password criptata.

2.4 Voglio vedere il mio sito come www.pippo.com, e non come www.pippo.com:8080. Come posso fare per cambiarlo?

Hai bisogno di editare il file z2.py, che si trova nella directory di root di Zope. La porta predefinita specificata è la 8080. Devi cambiarla in 80. (Sotto Unix devi essere root e entrare sotto la porta 1001.) Quindi riavvia Zope, come superutente, e imposta come si deve tutti i permessi sulle varie directory (file di log, file database ecc.). Se non imposti correttamente i permessi, Zope non parte.

Nella mia esperienza con Zope, l’esecuzione migliorerà di molto usando Apache come proxy-server e convogliando le richieste a Zope e le risposte all’utente. In questo caso lascia che Zope usi la porta 8080.

Se usi NT puoi semplicemente editare il file z2.py, fermare il servizio Zope e farlo riavviare.

2.5 Ho effettuato il log in Zope, ma non mi ha permesso di creare niente. Perché?

L’account di superuser esiste solo per creare utenti. Non puoi gestire ed editare un sito Zope con l’account superuser. Loggati come superuser, creati un manager account, esci dal browser web, quindi loggati usando l’account di manager.

2.6 Dov’è il file di log?

Il file di log si trova in ZopeRootFolder/var. Per esempio /home/marco/zope/var/Z2.log.

2.7 Come ottengo le statistiche del mio sito, una lista di referrers, e così via?

Hai bisogno di prendere un programma di statistiche come Analog, il quale attraverso il tuo file di log andrà a produrre una graziosa pagina web mostrando tutti i più curiosi dettagli sui tuoi visitatori.

2.8 Ho usato Analog per avere le statistiche dal mio file di log e non vedo nessuna informazione utile. Cosa ho sbagliato?

Il file di log di Zope, Z2.log, non è molto utile. Se usi Zope dietro Apache potrà essere quest’ultimo che si occuperà direttamente di memorizzare i dati dei file di log; ed essi sono molto più utili.

2.9 Conosco Perl. Ho bisogno di imparare Python per usare Zope?

Non necessariamente. A partire da Zope 2.3.0 sarai capace di creare metodi Perl. Nell’ordine di cose tipico di Zope tu creerai i metodi DTML, quindi i metodi Python se quello che vuoi fare non può essere fatto in DTML, ed infine i Prodotti se stai facendo qualcosa di molto complesso. I Prodotti devono essere scritti in Python. È improbabile che questo cambi in tempi brevi.

In Zope 2.2.x puoi creare metodi DTML o Prodotti Zope usando Python. I metodi Python, come i metodi Perl, non sono validi prima di Zope versione 2.3.0.

2.10 Non conosco né Perl né Python. Quale dovrei imparare?

Python. È più facile del Perl, Zope è scritto in Python, e inoltre non avrebbe senso imparare Perl se sei convinto di voler conoscere a fondo Zope.

2.11 Quali database posso usare con Zope?

Su Unix puoi usare Oracle, PostgreSQL, MySQL, ma anche altri come Sybase e DB2. Su Windows puoi usare database che supportano ODBC, incluso SQL Server.

2.12 Perché dovrei usare altri database con Zope? Zope al suo interno non include già un database?

Sì, Zope include un Database ad oggetti come componente fondamentale (ZODB). Ma il database ad oggetti di Zope è progettato per compiere molte letture e poche scritture. Questo significa che se ti aspetti che il 99% di visitatori leggano dati e l’1% li creino, puoi benissimo usare il database interno di Zope. Ma se i tuoi utenti faranno molte scritture, sarà meglio usare qualche altro database come PostgreSQL, MySQL ecc.

In tal caso tu puoi tranquillamente memorizzare i tuoi script, template ecc. dentro il database di Zope, ma memorizzerai i dati creati dai tuoi utenti nel database SQL.

È preferibile far girare tale database sulla stessa macchina di Zope. Se accedete a un database su un’altra macchina, le performance molto spesso vi deluderanno. Accedere a qualcosa in memoria è molto più veloce che viaggiare attraverso un cavo di rete verso un’altra macchina e ritornare indietro.

2.13 Posso avere più di un sito su Zope? Posso creare dei virtual hosting come si fa con Apache o IIS?

Sì. Usando un Prodotto di Zope chiamato SiteAccess puoi configurare Zope a trattare pippo.com e pluto.com come due differenti siti web. Il miglior modo per fare questo è fare come fa Zope.org, usando ProxyPass e SiteAccess.

3. Prestazioni

3.1 Voglio costruire un server Zope super veloce. Di cosa ho bisogno?

Hai bisogno di una CPU molto veloce e di un Hard Disk Ultra SCSI 160. Più veloce è la CPU, più velocemente verrà eseguito Zope. Un PIII-850 è circa due volte più veloce di un PIII-500 facendovi funzionare Zope.

Probabilmente uscirai dalla larghezza di banda a tua disposizione prima che il tuo PIII-500 “scoppi”. Un Pentium 100 può facilmente riempire una T1 con il traffico. Se ti aspetti di far lavorare duro il tuo PIII-850, avrai bisogno di collocare il tuo server presso aziende che forniscano servizi come Exodus, Above.net ecc. Le spese per la larghezza di banda possono facilmente rendere irrilevante il costo del tuo server dopo due o tre mesi di funzionamento del tuo sito.

3.2 Ho costruito la mia macchina Zope superveloce. Come faccio a testarla per essere sicuro che non mi si fonda quando mi linkano su Slashdot?

Apache include uno strumento di benchmark chiamato ab. Eseguilo configurandolo con un alto carico e assicurati che il tuo server stia su quando è linkato su Slashdot.

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi