Archivi categoria: Apache

APACHE – Redirect permanente di un dominio

Il web marketing sta diventando uno dei settori prinicipali del web: sia dal punto di vista economico sia dal punto di vista tecnologico. E’ ovviamente vitale per un portale web raggiungere alti livelli di visibilità, ma soprattutto, una volta raggiunti tali livelli, è ancora più vitale mantenerli.

L’attività di promozione e di studio di visibilità di un portale web è un’attività molto complessa, interdisciplinare e che richiede costante lavoro, impegno e dunque anche un investimento economico. Proprio per questi motivi, è fondamentale non perdere il lavoro svolto, a fronte di una migrazione del portale, ad esempio, che può diventare necessaria per diversi motivi, che vanno da problemi del server alla necessità di fornire servizi più performanti ai proprio utenti.

Con questa premessa, diventa ovvio che lo spostamento o la migrazione di un servizio web non deve generare la perdita dell’indicizzazione e di tutte le informazioni ad essa correlate. Con questa finalità può essere sfruttato lo status HTTP 301, che indica appunto una il Redirect Permanent, che ci permette di avvisare i servizi quali motori di ricerca e social network che il nostro portale e i nostri contenuti non sono spariti nel nulla, ma sono stati “spostati” in modo permanente.

Lo status HTTP 301 può essere impostato attraverso il web server Apache, che ci permette diverse configurazioni possibili.

La prima è quella di utilizzare un file .htaccess incluso nella configurazione del dominio in questione, contenente la seguente direttiva:

Redirect 301 / http://www.nuovodominio.com/

dove il forward slash “/” indica che la pagina dal vecchio dominio sarà indirizzata sulla corrispondente contenuta nel nuovo dominio. Ovviamente si può specificare tale stato anche solo per una singola pagina, ad esempio con la seguente direttiva:

Redirect 301 /oldpage.php http://www.nuovodominio.com/newpage.php

Una soluzione molto importante da conoscere è quella fornita dal mod_rewrite di Apache, che torna utile soprattutto nei casi in cui è necessario anche modificare il nome del virtual host.In sostanza, con le seguenti direttive, non solo segnaliamo il redirect permanente dal vecchio dominio al nuovo, ma in più applicchiamo una “ri-scrizione” del vecchio nome di dominio sul nuovo, in modo che tutte le vecchie pagine possono ritrovare la loro corrispondente sul nuovo dominio:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} www.vecchiodominio.it [NC]
RewriteRule ^(.*)$ http://www.nuovodominio.it/$1 [L,R=301]

Ovviamente non è obbligatorio utilizzare un file .htaccess per configurare tali direttive, possono essere inserite direttamente all’interno del file httpd.conf del dominio in questione: teniamo prensente però che l’inclusione di file .htaccess in alcuni casi permette di lasciare inalterati i file originali di configurazione del dominio (anche se potrebbe rallentare il sistema), mentre in altri casi ancora non si ha accesso al file httpd.conf di configurazione del dominio e dunque rimane come una soluzione l’utilizzo dell’ .htaccess.

PHP – Configurare un ambiente per il team development

Il team development e la gestione del lavoro di gruppo è molto importante ed è spesso un aspetto trascurato: più un gruppo di lavoro è affiatato e coordinato, e più il lavoro sarà puntuale, preciso e professionale.

Il lavoro di squadra richiede da parte delle figure coinvolte pazienza e dedizione, e la strada da scegliere deve essere quelle del dialogo costruttivo e del rispetto delle idee di ognuno dei partecipanti.

Vi sono strumenti che è molto importante conoscere, perchè permettono di sincronizzare il lavoro del team e di gestire in modo professionale e ordinato progetti di dimensioni importanti. In questo articolo vedremo come configurare un ambiente di sviluppo professionale per il team development, ma non bisogna mai dimenticare un elemento importante: gli strumenti che vedremo sono molto potenti ed utili, ma non sono adatti a tutte le situazioni e a tutte le tipologie di progetto.

Uno strumento potente, ma inadatto alle caratteristiche dei progetti o dei movimenti produttivi interni dell’azienda, può provocare danni non indifferenti.

L’ambiente che andremo a configurare ha i seguenti requisiti:

  1. un server linux (fedora 10)
  2. Apache, PHP, MySql installati nel server e nella propria macchina
  3. IDE Zend Studio for Eclipse (o anche solo Eclipse) installato nella propria macchina

Il sistema che andremo a configurare  è dunque composto da un server Linux su cui installaremo l’svn (subversion), e da una o più workstation su cui sarà configurato un ambiente di sviluppo in locale e l’IDE che ci permette di gestire i collegamenti con subversion e dunque di lavorare in team con i nostri colleghi.

Configurazione del SERVER

Avendo scelto come sistema operativo Fedora 10, possiamo utilizzare il tool yum per installare subversion su linux:

yum install subversion

Per renderlo avviabile in Apache, installiamo il modulo mod_dav_svn:

yum install mod_dav_svn

Nella directory root del server, creiamo le seguenti cartelle per il repository svn:

mkdir /svn/repos
svnadmin create /svn/repos/projects

Per questioni di permessi, è necessario cambiare il proprietario della cartella in “apache” :

chown -R apache.apache /svn

A questo punto, dobbiamo creare il file in cui verranno scritte le policy di sicurezza che controllano la metodologia di accesso ai progetti. Creiamo il file svnauth nella directory /svn/repos/projects/svnauth e inseriamo le utenze come da esempio seguente:

[/]
user1 = rw
user2 = r

user1 in questo caso avrà accesso in lettura-scrittura, mentre user2 avrà l’accesso in modalità in sola lettura in tutto il repository.

Il passo successivo è creare il file (/svn/repos/projects/svnpass) che conterrà le password degli utenti di cui sopra:

htpasswd -bcm /svn/repos/projects/svnpass user1 passwordUser1
htpasswd -bm
/svn/repos/projects/svnpass user2 passwordUser2

Lanciando i comandi precedenti, creiamo un’associazione tra utente e password, e tale associazione verrà appunto scritta nel file svnpass. Importante: notate che i parametri del primo comando (-bcm) sono diversi dal secondo (-bm); questo perchè nel secondo caso andiamo solo ad aggiungere una riga al file svnpass, mentre nel primo caso è impostata anche la creazione opzionale del file nel caso in cui questo non esistesse. I parametri associati al comando htpassw hanno il seguento significato:

-c    creazione nuovo file

-m   forzare la crittografia MD5 della password

-b    usare la password inserita da linea di comando

Per ulteriori chiarimenti sul comando htpasswd consigliamo di leggerne la documentazione, anche perchè ci sono alcune differenza in base al sistema operativo in uso.

Ora è arrivato il momendo di configura Apache; aggiungiamo allora le seguenti righe al file di configurazione del server web:

<Location /svn/sandbox>
DAV svn
SVNPath /svn/repos/sandbox
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /svn/repos/sandbox/svnpass
Require valid-user
AuthzSVNAccessFile /svn/repos/sandbox/svnauth
</Location>

Riavviamo Apache, e l'ambiente server è pronto per essere utilizzato. Se tutto funziona regolarmente, il repository dovrà essere accessibile da browser al seguente indirizzo http://www.yourserver.com/svn/projects.

Sarà richiesta una login e una password, che ovviamente dovranno corrispondere a quelle che abbiamo procedentemente inserito.

Ora manca il passo finale, quello della configurazione del nostro IDE. Consideriamo a questo punto che su ogni macchina prediposta per il team development vi siamo già configurato un ambiente di sviluppo classico per lo sviluppo locale in PHP (Apache-PHP-MySql).

In questa sede sarebbe troppo dispersivo e lungo descrivere il procedimento passo per passo: vi sono diversi pacchetti com xxamp o wamp che si possono usare per configurare in pochi minuti un ambiente di sviluppo in PHP perfettamente funzionante in ambiente Windows (nelle release Linux più diffuse, è già tutto prediposto per una installazione di tale ambiente), anche se il nostro consiglio è di procedere con installazioni manuali di cui si ha il completo controllo. L’unico appunto è di far puntare la directory root di apache nel workspace che abbiamo scelto durante la configurazione della IDE: in questo modo rendiamo visibili i nostri progetti ZEND o ECLIPSE nel nostro localhost.

La configurazione che vedremo è esattamente la stessa sia che si utilizzi Zend Studio for Eclipse che Eclispe con il plugin Php. Quest’ultima, come la maggior parte degli utenti sapranno, è completamente gratuita, e fornisce gli stessi strumenti di Zend Studio per quando riguarda il team development. Chiaramente Zend Studio è la piattaforma specifica per lo sviluppo in PHP, e sicuramente per un web developper professionista è il top in quanto a strumenti forniti e comodità di sviluppo. Tuttavia, per chi sviluppa in più di un linguaggio di programmazione a livelli professionali, Eclipse, a nostro avviso, risulta essere la scelta più versatile e comoda.

Procediamo alla configurazione della nostra IDE:

1) Apriamo la prospettiva SVN Repositories

2) Nella colonna di destra, andiamo ad aggiungere il nostro repository (tasto destro + new)

2.1) Inserire l’URL  del repository http://www.tuoserver.com/svn/projects.

2.2) Inserire l’user e la pass dell’utente che utilizzerà tale ambiente e che rientrano in quelle precedentemente configurate

2.3) Clicchiamo su “Finish”

A questo punto il repository verrà importato nel nostro ambiente: concluso tale processo, apriamo la prospettiva “PHP Explorer” (o Resource), che sarà la prospettiva vera e propria che useremo per lo sviluppo. Creiamo un nuovo progetto:

1) New Project

2) Svn –> Project from SVN

3) Selezionare l’uso di un repository esistente

4) Scegliere il/i progetto/i, la data attuale e procedere cliccando su “Finish”

A questo punto verrà eseguito il checkout del progetto: questo procedimento impiegherà qualche minuti prima di concludere.

Siamo pronti per testare il meccanismo, tornando ad analizzare la sezione “PHP Explorer” della nostra IDE.

La prima cosa che notiamo sono dei “numeri” presenti su ogni risorsa all’interno del progetto: questo “numero” identifica la versione della risorsa: subversion, infatti, gestisce un potente e importante strumento di versioning, che facilita nelle operazioni di update o di recupero.

Cliccando con il tasto destro del mouse sul nome del progetto, e scegliendo “Team”, si apre un menu contestuale che ci mette a disposizione tutti gli strumenti potenti di gestione del team development e di subversion.

La operazioni principali sono UPDATE e COMMIT : la prima permette di ricevere le modifiche che gli altri membri del team hanno portato al progetto eseguendo un commit. Il COMMIT, appunto, è l’operazione più importante, perchè permette di scrivere sul progetto finale, direttamente sull’snv: bisogna per questo fare molto attenzione durante questa operazione, essere sicuri che ciò che si sta “commitando” sia perfettamente funzionante e ricordarsi sempre di commentare il proprio COMMIT per permettere una facile gestione del versioning.

Vi sono tantissime altre funzionalità molto importanti e potenti che possiamo sfruttatare per lavorare al meglio con questi strumenti, ma per ora riteniamo siamo meglio fermarci qui….abbiamo già abbastanza elementi da testare! Chiaramente, nel caso ci fossero domande o questione di qualsiasi tipo, siamo a  vostra disposizione!! 😉

APACHE – Proteggere le directory del webserver usando i file .htaccess

Supponiamo di dover gestire un portale web con alcune directory ad accesso controllato, e supponiamo anche che il server web a disposizione sia Apache. Se volessimo che l’accesso ad una determinata direcotory avvenga esclusivamente con la richiesta di un username e una password, come possiamo fare?

Vi sono molti modi per proteggere il proprio sito web. Il modo più semplice è utilizzare il file .htaccess per richiedere l’accesso ad una risorsa attraverso l’inserimento di una password e di un username. Per fare questo, è sufficiente seguire questi pochi passi:

  1. Creiamo un file .htaccess
  2. Includiamo le seguenti righe di codice:
    AuthName “Il mio sito, richiesti Username e Password”
    AuthType Basic
    AuthUserFile /miopercorso/.htpass
    Require valid-user
  3. Creiamo file .htpass per la password. Per fare questo possiamo scegliere due vie: se abbiamo a disposizione la shell, è sufficiente eseguire il seguente comando htpasswd -c .htpass username password , dove username e password sono ovviamente a nostra scelta.
    Attenzione: il percorso del file .htpass deve essere quello completo.
    Se invece non abbiamo a disposizione una shell, allora possiamo utilizzare questo link per creare la password. A questo punto non ci rimane che creare un file chiamato “.htpass” , uplodarlo nella directory specificata nel file .htaccess e copiarci i dati che abbiamo appena generato, che saranno simile alla riga seguente: blogrammazione:YmqQ5rgEtWe8c .
  4. Ovviamente l’ultimo passo da fare è riavviare il server web, affinchè le modifiche abbiamo effetto.

Se ora proviamo ad accedere alla directory che abbiamo indicato nel file .htaccess vedremo che ci vengono richiesti username e password.