Kako da udomite php.net na svom laptopu?

Ako Vam je ikada zatrebala dokumentacija za PHP sa mogućnošću pretrage u trenutku kada nemate pristup Internetu, onda je rešenje tog problema pravljenje lokalne kopije dokumentacije na računaru. Sledite ovo jednostavno uputstvo i više nećete imati takvih problema ;)

Po zanimanju nisam programer, niti sam ekspert za PHP, ali uz pomoć dokumentacije i logike svašta može da se napravi :) Povremeno mi zatreba uputstvo za utvrđivanje sintakse neke naredbe i slično, a nedavno mi je zatrebala dokumentacija sa mogućnošću pretrage i dok nemam pristup netu.

Tada mi je na pamet pala „luda“ ideja da spakujem PHP uputstvo na laptop, a pošto me večeras @zsteva podseti na taj poduhvat, evo jednostavnog uputstva kako se to može uraditi.

Napomena: Da ne bih izmišljao „toplu vodu“, prevešću uputstvo koje je napisao Jaisen Mathai.

Koncept

Najbolje rešenje za dobijanje funkcionalne kopije php.net je da se napravi ogledalo (eng. mirror). Na taj način se dobija kompletno ažurno uputstvo sa dodatnim mogućnostima, koje se po želji mogu ukloniti. Pratićemo zvanično uputstvo za pravljenje php.net ogledala, namenjeno ljudima koji žele da naprave ogledalo kompletnog veb mesta, ali nije optimizovano za one koji žele samo lokalnu kopiju dokumentacije.

Pored laptopa (ili desktop računara) biće nam potrebni funkcionalan Apache veb server i alat za sinhronizaciju sadržaja rsync. I, naravno, preporučujem neku GNU/Linuks distribuciju ;)

Podešavanje rsync-a

Sintaksa komande rsyncu pomenutom uputstvu je jednostavna, ali ćemo mi napraviti neke izmene. Napravićemo shell skriptu koja će lako ažurirati potrebne datoteke. U tekstualnu datoteku sa nazivom php-net-mirror.sh upišite sledeći sadržaj:
#!/bin/sh
rsync -avzC --timeout=600 --delete --delete-after \
--include="manual/en/" --include="manual/en/**" \
--exclude="manual/**" --exclude="distributions/manual/**" \
--exclude="distributions/**" \
rsync.php.net::phpweb /putanja/do/php/dokumentacije

Primetićete da smo dodali izuzeće direktorijuma distributions/** sa njegovim sadržajem. Ovo iz razloga što ne želimo da čekamo na preuzimanje preko deset različitih paketa sa izvornim kôdom. Obratite pažnju i na deo /putanja/do/php/dokumentacije umesto koga teba staviti apsolutnu putanju do korenog direktorijuma koji će sadržati ogledalo php.net. Ja sam napravio /var/www/vhost/phpweb, ali Vi možete izabrati bilo koji drugi za koji imate dozvolu da pišete u njega. Kasnije ćemo ga koristiti u podešavanju Apache virtuelnog hosta.

Sačuvajte izmenjenu datoteku i iskopirajte je (ili je premestite) u direktorijum /usr/bin, a potom joj dodelite izvršne dozvole naredbom:
sudo chmod u+x /usr/bin/php-net-mirror.sh

Napomena: Ako koristite Vindouz, onda možete koristiti cwRsync.

Kako bi mogli da pristupate dokumentaciji na svom računaru, morate izabrati domen. Ja sam izabrao php tako da brzo u veb pregledaču mogu da ukucam php/switch i vidim dokumentaciju funkcije switch. Vi možete izabrati šta god Vam je volja, samo izabrani domen morate dodati u datoteku hosts (koja se na GNU/Linuks sistemima nalazi na putanji /etc/hosts):
127.0.0.1 php

Završni korak je pokretanje ove skripte. Kada je pokrenete u terminalu, videćete kompletan spisak datoteka koje će biti preuzete. Kasnije ažuriranje će trajati mnogo kraće od prvog preuzimanja, jer će se preuzimati samo izmenjene datoteke.

Podešavanje servera Apache

Napravite novi Apache virtualni host koristeći sledeće podatke:

<VirtualHost *:80>
     <Directory "/putanja/do/php/dokumentacije">
          # Ne prikazivati listing direktorijuma ako ne postoji indeks,
          # i ne uklapati nazive datoteka ako se izostavi nastavak
          Options -Indexes -MultiViews
     </Directory>
 
     ServerName php
     ServerAdmin adresa@e-pošte.rs
 
     # koreni veb direktorijum ogledala
     DocumentRoot /putanja/do/php/dokumentacije
 
     # beleženje rada servera
     ErrorLog /putanja/do/php/dokumentacije/logs/error_log
     TransferLog /putanja/do/php/dokumentacije/logs/access_log
 
     # postavljanje indeksa direktorijuma
     DirectoryIndex index.php index.html
 
     # prihvatanje geršaka lokalnim skriptama za prihvatanje grešaka
     ErrorDocument 401 /error.php
     ErrorDocument 403 /error.php
     ErrorDocument 404 /error.php
 
     # dodavanje vrsta koje nisu obuhvaćene podrazumevanim postavkama
     AddType application/octet-stream .chm .bz2 .tgz .msi
     AddType application/x-pilot .prc .pdb
 
     # postavljanje podrazumevanog jezika ogledala
     SetEnv MIRROR_LANGUAGE "en"
 
     # isključivanje pravopisne provere (koja onemogućuje skraćene adrese)
     <IfModule mod_speling.c>
       CheckSpelling Off
     </IfModule>
</VirtualHost>

Umesto gore navedenih /putanja/do/php/dokumentacije treba da upišete koreni direktorijum koji ste izabrali prilikom podešavanja skripte php-net-mirror.sh (u mom primeru /var/www/vhost/phpweb). U liniji 8 za ServerName treba da upišete domen koji ste ranije izabrali, a preko koga ćete pristupati dokumentaciji u veb pregledaču.

Pokrenite ogledalo dokumentacije

To bi bilo to. Izvršite naredbu koju koristite za restartovanje Apache servera. Ako koristite Debian, onda pokrenite:
/etc/init.d/apache2 restart

Dodatne napomene

Ukoliko umesto stranice koju ste taržili dobijete poruku o grešci nalik na:

Not Found

The manual page you are looking for (http://php/manual/en/control-structures.switch.php) is not available on this server right now. Please check back later, or if the problem persist, contact the webmasters.

vrlo verovatno je na Vašoj mašini aktivna dokumentacija za Apache kojoj se pristupa na adresi http://localhost/manual pa je potrebno promeniti alias te dokumentacije na nešto drugo. Ja koristim jednostavno man — u datoteci /etc/apache2/conf.d/apache2-doc (važi za Debian) prvu liniju treba izmeniti tako da umesto
Alias /manual /usr/share/doc/apache2-doc/manual/
bude
Alias /man /usr/share/doc/apache2-doc/manual/
i na dalje Apache dokumentaciji možete pristupati na adresi http://localhost/man (ili drugom alijasu koji ste gore izabrali).

Automatizacija ažuriranja

Ako želite da imate ažurnu dokumentaciju, umesto ručnog pokretanja skripte, ažurire možete automatizovati tako što u crontab dodate sledeće:

* 1 * * *	/usr/bin/php-net-mirror.sh

Na ovaj način se svake noći u 1 sat posle ponoći pokreće ažuriranje PHP dokumentacije (naravno, ako je računar uključen).

Objavljeno: 19. novembar 2009. u 23:43
Piše: Aleksandar
Kategorije: GNU/Linux, Veb
Oznake: , , , , , , , , , , , , , , , , , ,
Podeli:
  • Podeli na linke.rs
  • Podeli na Ukusno!
  • Twitter
  • Facebook
  • Print