====== AMPP Server ====== ===== 1. Installazione base ===== ===== 2. Installare il Server SSH ===== Per installare il server SSH digitate sudo apt-get install ssh openssh-server Da questo punto in avanti è possibile usare un client SSH come [[http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html|PuTTY]] per connettersi al server Ubuntu 8.04 LTS da una qualsiasi workstation e terminare l'installazione comodamente seduti alla propria postazione. ===== 3. Configurare la rete ===== ===== 4. Aggiornare Linux (Opzionale) ===== Digitare sudo apt-get update per aggiornare il database dei package di ''apt'' e poi sudo apt-get upgrade per installare gli ultimi apgrade (se esistono). ===== 5. Cambiare la Shell di default (Opzionale) ===== ///bin/sh// è un link simbolico (symlink) a ///bin/dash//, io preferisco usare la bash quindi sudo ln -sf /bin/bash /bin/sh ===== 6. Disabilitare AppArmor ===== AppArmor è un pacchetto che dovrebbe garantire la sicurezza. In realtà, spesso, causa più problemi di quanti ne previene. Deve essere fermato digitando sudo /etc/init.d/apparmor stop sudo update-rc.d -f apparmor remove e disinstallato digitando sudo apt-get remove apparmor apparmor-utils ===== 7. Installare il Software di Base ===== Alcuni dei seguenti pacchetti sono propedeutici al completamento del server, altri servono solo per rendere la vita "piu facile". sudo apt-get install binutils cpp fetchmail flex gcc libarchive-zip-perl libc6-dev libcompress-zlib-perl libdb4.3-dev libpcre3 libpopt-dev lynx m4 make ncftp nmap openssl perl perl-modules unzip zip zlib1g-dev autoconf automake1.9 libtool bison autotools-dev g++ build-essential sudo apt-get install mc imagemagick curl ===== 8. Installare MySQL ===== Per installare MySQL digitare sudo apt-get install mysql-server mysql-client libmysqlclient15-dev Durante l'installazione verrà richiesta la password per l'utente **root** di MySQL. Tale password è valida sia per l'utente //''root@localhost''// che per //''root@server1.example.com''//. A fine installazione MySQL è attivo ma risponde solo per interrogazioni che provengono da ''localhost'' quindi necessitano software come phpMyAdmin per lavorarci. \\ Volendo poterci lavorare anche da altre postazioni è necessario modificare il file ''/etc/mysql/my.cnf'' commentantdo la linea ''bind-address = 127.0.0.1'' sudo vi /etc/mysql/my.cnf [...] # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #bind-address =127.0.0.1 [...] Riavviare MySQL sudo /etc/init.d/mysql restart e verificare tramite il comando sudo netstat -tap |grep mysql che la risposta sia come quella riportata di seguito root@server1:~# netstat -tap | grep mysql tcp 0 0 *:mysql *:* LISTEN 5869/mysqld root@server1:~# ===== 9. Installare e Configurare Apache ===== Installare Apache digitando sudo apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert La parte seguente non è un must ... è la via che ho trovato io per fare funzionare tutto e per poter uploadare il sito in ftp. Creare un nuovo utente (potrebbe essere fatto anche sull'utente corrente ma esso è ''"sudoers"'' quindi potenzialmente pericoloso). Io lo chiamerò **webmaster**. sudo adduser webmaster Dopo averne impostato la password aggiungerlo al gruppo ''www-data'' sudo usermod -g www-data webmaster Loggarsi con il nuovo utente su webmaster e creare la seguente struttura di cartelle nella sua ''/home'' mkdir www mkdir www/htdocs mkdir www/cgi-bin mkdir backup Queste cartelle serviranno ad ospitare il sito ed il suo backup. Tornare all'utente precedente exit e dare i diritti sulle cartelle appena create sudo chown -R www-data:www-data /home/webmaster/www sudo chmod -R 775 /home/webmaster/www sudo chown -R www-data:www-data /home/webmaster/backup sudo chmod -R 775 /home/webmaster/backup In questo modo gli script PHP potranno scrivere in locale ed il sito potrà essere uploadato tramite ftp. ==== Creare il Nuovo Sito ==== Ora bisogna spiegare ad Apache cosa deve fare copiare il template del sito di default in quello nel nostro nuovo sito sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/[VOSTRO_SITO] Editare il nuovo file di configurazione sudo vi /etc/apache2/sites-available/[VOSTRO_SITO] Cambiare il valore della direttiva ''DocumentRoot'' e farlo puntare alla cartella precedentemente creata DocumentRoot /home/webmaster/www/htdocs Ed in modo analogo modificare la direttiva ''Directory'' in Un'ultima modifica per definire / modificare la posizione della cartella CGI ScriptAlias /cgi-bin/ /home/webmaster/www/cgi-bin/ Options ExecCGI AddHandler cgi-script cgi pl Salvare ed uscire. Ora è necessario disabilitare il sito di default sudo a2dissite default ed abilitare il nuovo sudo a2ensite [VOSTRO_SITO] Perchè le modifiche vengano recepite è necessario riavviare Apache sudo /etc/init.d/apache2 restart ===== 10. Installare e Configurare PHP5 / Python / Perl / Ruby ===== ==== PHP5 ==== Per installare PHP e gran parte delle sue librerie digitare sudo apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php-pear Consiglio di aggiungere anche i seguenti moduli per i collegamenti con DB diversi da MySQL sudo apt-get install php5-odbc php5-pgsql php5-sybase php5-ldap php5-sqlite3 php5-interbase libphp-jpgraph ==== Python ==== Per installare il modulo Python di Apache digitare sudo apt-get install libapache2-mod-python Esistono due modi per gestire il codice Python con Apache * Il Publisher Handler -- Consente di scrivere scripts in puro Python (''.py'') che vengono interpretati * PSP Handler -- Python Server Pages, consentono di embeddare codice Python nell'HTML come avviene per PHP (''.psp''). Perché Apache comprenda queste estensioni e le utilizzi in modo corretto è necessario editare il file ''mod_python.conf'' in ''/etc/apache2/mods-available/'' cd /etc/apache2/mods-available/ sudo vi mod_python.conf e valorizzarlo come segue AddHandler mod_python .py .psp PythonHandler mod_python.publisher | .py PythonHandler mod_python.psp | .psp A questo punto è necessario attivare il modulo Python sudo a2enmod mod_python Se dovesse risultare già attivo è necessario disattivarlo prima di procedere ad una nuova attivazione sudo a2dismod mod_python o creare un link simbolico a ''mod_python.conf'' in ''/etc/apache2/mods-enabled/'' Potrebbe essere utile installare anche questi moduli sudo apt-get install python-mysqldb python-xml Per cercarne altri sudo apt-cache search python ==== Perl ==== Per installare il modulo Perl di Apache digitare sudo apt-get install libapache2-mod-perl2 Analogamente a quanto visto per Python è necessario creare il file ''perl.conf'' in ''/etc/apache2/mods-available/'' sudo vi /etc/apache2/mods-available/perl.conf e valorizzarlo come segue AddHandler perl-script .pl PerlHandler ModPerl::PerlRunPrefork PerlOptions +ParseHeaders PerlSendHeader On Anche in questo caso il modulo deve essere attivato sudo a2enmod perl ==== Ruby ==== Non ho fatto test su Ruby perché non lo conosco, per installarlo sudo apt-get install libapache2-mod-ruby ==== Ultimi Ritocchi ==== Perché tutto funzioni correttamente è necessario editare il file ''/etc/apache2/mods-available/dir.conf'' sudo vi /etc/apache2/mods-available/dir.conf e modificare la direttiva ''DirectoryIndex'' come segue #DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.xhtml Ora è necessario abilitare alcuni moduli di Apache ( SSL , rewrite , suexec , e include ) sudo a2enmod ssl sudo a2enmod rewrite sudo a2enmod suexec sudo a2enmod include sudo a2enmod userdir ed, in fine, è necessario riavviare Apache affinchè tutte le modifiche diventino effettive sudo /etc/init.d/apache2 restart ===== 11. Primi Test ===== Per verificare il corretto funzionamento di Apache è sufficiente spostarsi in ''/home/webmaster/www/htdocs'' e creare i seguenti files come utente ''webmaster''. su webmaster ==== info.php ==== Questo file verifica il corretto funzionamento di PHP mostrando la pagina informativa. vi info.php Test PHP Per testare aprire un bowser e puntare a **%%http://[your_site]/info.php%%**. ==== test.py ==== Questo file verifica il corretto funzionamento di Python in modalità Publisher Handler. vi test.py def index(req): return "Test successful"; Per testare aprire un bowser e puntare a **%%http://[your_site]/test.py%%**. ==== test.psp ==== Questo file verifica il corretto funzionamento di Python in modalità Python Server Pages. vi test.psp

<% req.write("Hello!") %>

Per testare aprire un bowser e puntare a **%%http://[your_site]/test.psp%%**. ==== printenv.pl ==== Questo file verifica il corretto funzionamento di Perl come CGI e contrariamente agli altri deve essere posizionato in ''/home/webmaster/www/cgi-bin''. vi printenv.pl #!c:/perl/bin/perl.exe ## ## printenv -- demo CGI program which just prints its environment ## print "Content-type: text/plain; charset=iso-8859-1\n\n"; foreach $var (sort(keys(%ENV))) { $val = $ENV{$var}; $val =~ s|\n|\\n|g; $val =~ s|"|\\"|g; print "${var}=\"${val}\"\n"; } Per testare aprire un bowser e puntare a **%%http://[your_site]/cgi-bin/printenv.pl%%**. ===== 12. ProFTPD ===== Per installare ProFTPD digitare sudo apt-get install proftpd ucf Il programma di installazione chiede di selezionare la modalità di funzionamento. \\ Selezionare **standalone**. \\ Editare il file ''proftpd.conf'' ed aggiungere le righe riportate di seguito sudo vi /etc/proftpd/proftpd.conf [...] DefaultRoot ~ IdentLookups off ServerIdent on "FTP Server ready." [...] Riavviare il servizio per rendere attive le modifiche sudo /etc/init.d/proftpd restart ===== xx. Postfix With SMTP-AUTH And TLS ===== ===== 14. Synchronize the System Clock ===== Poiché tutti i log e molte operazioni sono legate all'orario di sistema, è una buona idea tenere aggiornato l'orologio di sistema con un NTP (**n**etwork **t**ime **p**rotocol) server su internet. \\ Per fare questo digitare sudo apt-get install ntp ntpdate Ora l'orologio di sistema verrà costantemente aggiornato ===== 15. Applicazioni Web ===== ==== phpMyAdmin ==== phpMyAdmin è un database manager indispensabile per gestire MySQL (verranno fatti riferimenti ad esso nel corso della guida). \\ Per installarlo digitare sudo apt-get install phpmyadmin Il programma di installazione effettuerà la configurazione automatica del webserver. Selezionare **Apache2** (usando la barra spaziatrice e non l'invio :!:) Per testarne il funzionamento è sufficiente aprire un borwser e farlo puntare a **%%http://[vostro sito]/phpmyadmin%%** ==== Webalizer ==== Questo software è un analizzatore del file ''access.log'' di Apache. Genera grafici sulla fruizione delle pagine. Per installarlo basta digitare sudo apt-get install webalizer Di default la cartella di webalizer viene posta in ''/var/www/webalizer''. E' necessario spostarla dove il veb server possa trovarla. Creare la nuova cartella dove verranno messi i report su webmaster mkdir /home/webmaster/www/htdocs/webalizer exit Modificare il file di configurazione sudo vi /etc/webalizer/webalizer.conf e modificare la riga OutputDir /var/www/webalizer in OutputDir /home/webmaster/www/htdocs/webalizer Potrebbere rendersi anche necessario modificare la linea LogFile /var/log/apache2/access.log.1 in LogFile /var/log/apache2/access.log Webalizer viene schedulato in automatico ma per testarne il funzionamento sarà necessario lanciarlo a mano sudo webalizer Per verificare il risultato sul webserver aprire un browser e puntare a **%%http://[vostro sito]/webalizer%%** ==== Dokuwiki ==== In fase di definizione Esiste un package contenente ''dokuwiki'' ma non riesco a farlo funzionare correttamente e poi preferisco averne il controllo. \\ Quindi, impersonando ''webmaster'', spostarsi nella sua ''/home'' e scaricare l'ultima versione del tgz che si trova [[http://www.splitbrain.org/projects/dokuwiki|qui]]. su - webmaster wget http://www.splitbrain.org/_media/projects/dokuwiki/dokuwiki-xxxx-xx-xx.tgz tar -xvf ./dokuwiki-xxxx-xx-xx.tgz -C /home/webmaster/www/htdocs mv /home/webmaster/www/htdocs/dokuwiki-xxxx-xx-xx /home/webmaster/www/htdocs/dokuwiki exit cd /home/webmaster/www/htdocs sudo chown -R www-data dokuwiki/data sudo chgrp www-data dokuwiki/conf/ sudo chmod 775 dokuwiki/conf/ sudo chgrp www-data dokuwiki/lib/plugins/ sudo chmod 775 dokuwiki/lib/plugins/ Puntare il browser su **%%http://[vostro_sito]/doluwiki%%** e terminare l'installazione. ==== WordPress ==== ==== phpBB3 ==== ===== xx. Backups ===== ===== xx. Links ===== [[http://articles.techrepublic.com.com/2415-7343_11-161368.html|webalizer]] \\ [[http://www.rigacci.org/wiki/doku.php/doc/appunti/linux/sa/dokuwiki|dokuwiki]] \\ Quella che segue è solo una serie di appunti che serviranno alla stesura della guida. ===== Rendere Accessibile la /var/www ===== mkdir /home/[YOUR USERNAME]/www mount --bind /var/www /home/[YOUR USERNAME]/www seguendo [[http://www.zaphu.com/2007/08/21/ubuntu-lamp-server-guide-configure-apache-mysql-and-cgi-bin/|questa guida]] ===== Applicazioni Web ===== WordPress [[http://www.supriyadisw.net/2006/12/wordpress-installation-on-ubuntu-with-lamp]] ===== Nuovi Appunti: 20091020 ===== #!/bin/bash sudo cp -r -v tmp2/dokuwiki/* /usr/share/dokuwiki/ sudo cp -r -v tmp2/dokuwiki/conf/* /etc/dokuwiki/ sudo cp -r -v tmp2/dokuwiki/data/* /var/lib/dokuwiki/data sudo cp -v tmp2/dokuwiki/conf/users.auth.php /var/lib/dokuwiki/acl/ sudo cp -v tmp2/dokuwiki/conf/acl.auth.php /var/lib/dokuwiki/acl/ sudo chown -R root:root /var/lib/dokuwiki sudo chown -R root:root /etc/dokuwiki/ sudo chown -R www-data:root /var/lib/dokuwiki ===== Nuovi Appunti: 20100120 ===== [[http://tuxtweaks.com/2009/10/install-lamp-on-ubuntu-9-10-karmic-koala/]] \\ (Installazione in un colpo di tutto il software) [[http://wiki.vpslink.com/HOWTO:_CentOS_5_setup_for_LAMP_and_ISPconfig]] \\ (Utile per vedere alcune configurazioni) [[http://ubuntuforums.org/showthread.php?t=952746]] \\ (Potenziale soluzione riguaro i permessi)