2015-11-12 9 views
5

Per accelerare un sito MediaWiki che ha contenuto che utilizza molti modelli, ma altrimenti ha praticamente un contenuto statico quando i modelli hanno fatto il loro lavoro Vorrei installare un calamaro Server vedereforzare la cache del calamaro mediawiki per riempire tutte le pagine

https://www.mediawiki.org/wiki/Manual:PurgeList.php

e

https://www.mediawiki.org/wiki/Manual:Squid_caching

e poi riempire la cache del server squid "automaticamente" utilizzando uno script facendo w chiamate get/curl che colpiscono tutte le pagine di Mediawiki. La mia aspettativa sarebbe che dopo questa procedura ogni singola pagina si trovi nella cache del calamaro (se lo faccio abbastanza grande) e poi ogni accesso sarebbe fatto da calamaro.

Come potrei farlo funzionare? Es .:

  1. Come posso controllare la mia configurazione?
  2. Come posso scoprire quanta memoria è necessaria?
  3. Come posso verificare che le pagine siano nella cache di Squid3?

Quello che ho provato finora

ho iniziato da scoprire come installare il calamaro utilizzando:

e

ho capito il mio indirizzo IP xx.xxx.xxx.xxx (non divulgate qui) via ifconfig eth0

in /etc/squid3/squid.conf ho messo

http port xx.xxx.xxx.xxx:80 transparent vhost defaultsite=XXXXXX 
cache_peer 127.0.0.1 parent 80 3130 originserver 

acl manager proto cache_object 
acl localhost src 127.0.0.1/32 

# Allow access to the web ports 
acl web_ports port 80 
http_access allow web_ports 

# Allow cachemgr access from localhost only for maintenance purposes 
http_access allow manager localhost 
http_access deny manager 

# Allow cache purge requests from MediaWiki/localhost only 
acl purge method PURGE 
http_access allow purge localhost 
http_access deny purge 

# And finally deny all other access to this proxy 
http_access deny all 

Poi ho configurato il mio server apache2

# /etc/apache2/sites-enabled/000-default.conf 
Listen 127.0.0.1:80 

ho aggiunto

0.123.516,41 mila
$wgUseSquid = true; 
$wgSquidServers = array('xx.xxx.xxx.xxx'); 
$wgSquidServersNoPurge = array('127.0.0.1'); 

alle mie LocalSettings.php

Poi ho riavviato apache2 e ha iniziato squid3 con

service squid3 restart 

e ha fatto un primo tentativo di accesso con

wget --cache=off -r http://XXXXXX/mediawiki 

il risultato è:

Resolving XXXXXXX (XXXXXXX)... xx.xxx.xxx.xxx 
Connecting to XXXXXXX (XXXXXXX|xx.xxx.xx.xxx|:80... failed: Connection refused. 

risposta

0

Assumendo Apache 2.x .

Anche se non correlato a Squid, è possibile ottenere ciò utilizzando solo i moduli Apache. Dai un'occhiata a mod_cache qui: https://httpd.apache.org/docs/2.2/mod/mod_cache.html

Si può semplicemente aggiungere questo alla configurazione di Apache e chiedere ad Apache di fare il caching del disco del contenuto reso.

È necessario assicurarsi che i contenuti contengano le informazioni sulla scadenza della cache appropriate nella risposta PHP risultante, MediaWiki dovrebbe occuparsi di ciò per voi.

L'aggiunta di un tale livello di cache potrebbe non avere il risultato desiderato in quanto questo strato non sa se una pagina è stata modificata, la gestione della cache è difficile qui e dovrebbe essere utilizzata solo per contenuto statico.

Ubuntu:

a2enmod cache cache_disk 

configurazione di Apache:

CacheRoot /var/cache/apache2/mod_disk_cache 
CacheEnable disk/

io non lo consiglio pre-compilando la cache accedendo ogni pagina. Ciò farà sì che le pagine dormienti (non usate frequentemente) occupino spazio/memoria di valore. Se si vuole ancora fare questo, si può guardare wget:

Description from: http://www.linuxjournal.com/content/downloading-entire-web-site-wget 
$ wget \ 
    --recursive \ 
    --no-clobber \ 
    --page-requisites \ 
    --html-extension \ 
    --convert-links \ 
    --restrict-file-names=windows \ 
    --domains website.org \ 
    --no-parent \ 
     www.website.org/tutorials/html/ 

This command downloads the Web site www.website.org/tutorials/html/. 

The options are: 

    --recursive: download the entire Web site. 

    --domains website.org: don't follow links outside website.org. 

    --no-parent: don't follow links outside the directory tutorials/html/. 

    --page-requisites: get all the elements that compose the page (images, CSS and so on). 

    --html-extension: save files with the .html extension. 

    --convert-links: convert links so that they work locally, off-line. 

    --restrict-file-names=windows: modify filenames so that they will work in Windows as well. 

    --no-clobber: don't overwrite any existing files (used in case the download is interrupted and 
    resumed). 

Una soluzione migliore: Memcached

MediaWiki supporta anche l'utilizzo di Memcached come un servizio di caching molto veloce in memoria per i dati e modelli solo. Questo non è così brutale come una cache di un sito Web come Squid o Apache mod_cache. MediaWiki gestirà Memcached in modo che eventuali modifiche vengano immediatamente riflesse nell'archivio della cache, il che significa che il tuo contenuto sarà sempre valido.

Si prega di consultare le istruzioni di installazione a MediaWiki qui: https://www.mediawiki.org/wiki/Memcached

La mia raccomandazione è di non usare Apache mod_cache o Squid per questo compito, e invece di installare e configurare Memcached MediaWiki di usarlo.

+0

Grazie per aver esaminato questa e la risposta dettagliata. La ragione per cui stavo chiedendo calamaro è stata ora aggiunta alla domanda. Mediawiki può parlare con calamari ma non so se parlerebbe della proposta di apache che stai facendo qui. –

+0

Tradizionalmente Mediawiki è stato progettato per essere distribuito in un ambiente stile LAMP (Linux, Apache, MySQL, PHP) e l'ho distribuito in questo stile un numero di volte. Supponendo che tu stia seguendo quella struttura, allora quanto sopra funzionerà bene dato che starai già usando Apache come frontend HTTP. mod_cache all'interno di Apache si comporterebbe in modo simile alla cache di Squid che stai tentando di installare qui. Tuttavia, non credo che una cache di contenuti come Squid/Apache sarà una buona scelta qui, e un acceleratore di cache come Memcached che è progettato in Mediawiki sarebbe più adatto. –

+0

Questa è una risposta assolutamente sbagliata e dannosa: stai mescolando diversi livelli di cache e non prendi in considerazione le purghe. Memached è una cache _object *. MW lo utilizza per memorizzare i risultati di query/calcoli costosi. È necessario per un wiki performante (o, con un singolo server delle applicazioni, memoria condivisa APC), tuttavia non è sufficiente. Squid (o, meglio, Varnish) è una cache HTTP. Memorizza nella cache le risposte HTTP risultanti e, come tale, consente un'enorme riduzione del carico di Apache. Wikipedia non sarebbe in grado di funzionare ai livelli di carico attuali senza una cache HTTP ottimizzata. – MaxSem

Problemi correlati