====== 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 ===== http://www.cyberciti.biz/faq/setting-up-an-network-interfaces-file/ ===== 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 libio-compress-perl libdb5.1-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 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 di 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 nano /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 il frontend Web ===== ==== 9.1. Installare Apache ==== Installare Apache digitando sudo apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert ==== 9.2. Installare 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 e per la grafica 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 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 === Ruby === Non ho fatto test su Ruby perché non lo conosco, per installarlo sudo apt-get install libapache2-mod-ruby ===== 10. Configurare il frontend Web ===== ==== 10.1. Configurare di Apache ==== La parte seguente non è un must ... è la via che ho trovato io per fare funzionare tutto e per poter uploadare il sito in ftp. \\ In parte è presa dalla [[https://wiki.debian.org/it/LaMp|documentazione]] di Debian 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 public_html mkdir public_html/cgi-bin mkdir backup Queste cartelle serviranno ad ospitare il sito ed il suo backup. Tornare all'utente precedente exit cambiare il gruppo sulla cartella appena creata e riavviare il webserver chgrp www-data /home//public_html service apache2 restart Se si ottiene un errore //Forbidden// quando si accede alla cartella home da Apache, controllare che ''/home/nome_utente'' abbia i permessi impostati a drwxr-xr-x. Se i permessi sono sbagliati, correggerli usando: chmod 755 /home/ ==== 10.2. Configurazione dei linguaggi per il funzionamento con Apache ==== === PHP === Per poter usare PHP controllare che ''/etc/apache2/mods-available/php5.conf'' sia corretto: sudo nano /etc/apache2/mods-available/php5.conf SetHandler application/x-httpd-php SetHandler application/x-httpd-php-source # Per ri-abilitare php nelle directory utente commentare le righe seguenti # (da a .) NON lo impostare a On dato che # impedisce ai file .htaccess di disabilitarlo. # # # php_admin_value engine Off # # === 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 nano 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 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 Per cercarne altri sudo apt-cache search python === Perl === Analogamente a quanto visto per Python è necessario creare il file ''perl.conf'' in ''/etc/apache2/mods-available/'' sudo nano /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 ==== 10.3. Ultimi Ritocchi ==== Perché tutto funzioni correttamente è necessario editare il file ''/etc/apache2/mods-available/dir.conf'' sudo nano /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 o più velocemente sudo service 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 nano /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 con SMTP-AUTH e TLS ===== ===== 14. Sincronizzare l'orologio di sistema ===== 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%%** ==== AWStats ==== Questo software è un analizzatore del file ''access.log'' di Apache. Genera grafici sulla fruizione delle pagine. Per installarlo basta digitare sudo apt-get install awstats Se si vuole avere anche la geolocalizzazione dei visitatori installare anche sudo apt-get install libnet-ip-perl sudo apt-get install libgeo-ipfree-perl Il file di configurazione di AWStats si trova in ''/etc/awstats''. Viene fornito un template chiamato "awstats.conf". E' necessario creare una copia di ''awstats.conf'' per ogni dominio di cui si desidera avere le statistiche: sudo cp /etc/awstats/awstats.conf /etc/awstats/awstats.yourdomain.ext.conf Successivamente modificare il nuovo file sudo nano /etc/awstats/awstats.yourdomain.ext.conf e renderlo come segue: # apache2 LogFile="/var/log/apache2/access.log" # domain name SiteDomain="yourdomain.ext" HostAliases="localhost 127.0.0.1 yourdomain.ext" LogFormat=1 Potete anche aggiungere le seguenti righe per attivare i plugins della geolocalizzazione LoadPlugin="tooltips" LoadPlugin="geoipfree" Generare le prime statistiche (basate sul file ''var/log/apache2/access.log'' già esistente /usr/lib/cgi-bin/awstats.pl -config=yourdomain.ext -update Dovreste ottenere un output simile a questo Create/Update database for config "/etc/awstats/awstats.toto.com.conf" by AWStats version 6.7 (build 1.892) From data in log file "/var/log/apache2/access.log"... Phase 1 : First bypass old records, searching new record... Searching new records from beginning of log file... Phase 2 : Now process new records (Flush history on disk after 20000 hosts)... Jumped lines in file: 0 Parsed lines in file: 191338 Found 0 dropped records, Found 24 corrupted records, Found 0 old records, Found 191314 new qualified records. Creare il file ''/etc/apache2/conf.d/statistics'' nano /etc/apache2/conf.d/statistics e copiarvi le seguenti linee Alias /awstatsclasses "/usr/share/awstats/lib/" Alias /awstats-icon/ "/usr/share/awstats/icon/" Alias /awstatscss "/usr/share/doc/awstats/examples/css" ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ ScriptAlias /statistics/ /usr/lib/cgi-bin/ Options ExecCGI -MultiViews +SymLinksIfOwnerMatch Riavviare Apache sudo /etc/init.d/apache2 restart e verificare se tutto ha funzionato puntando il vostro browser su \\ http://yourdomain.ext/awstats/awstats.pl \\ o \\ http://yourdomain.ext/awstats/awstats.pl?config=yourdomain.ext \\ se avere più files di configurazione. Per rendere la generazione delle statistiche automatica è necessario mettere la chiamata per l'aggiornamento in ''contab'' crontab -e ed aggiungere queste righe # update every 10 min */10 * * * * root /usr/lib/cgi-bin/awstats.pl -config=toto.com -update > /dev/null ^Riferimenti^ |[[http://awstats.sourceforge.net/|Sito Ufficiale 1]]| |[[http://www.awstats.org/|Sito Ufficiale 2]]| |[[http://awstats.sourceforge.net/docs/awstats_faq.html]]| |[[http://awstats.sourceforge.net/docs/index.html]]| |[[http://awstats.sourceforge.net/docs/awstats_setup.html]]| |[[http://jeromejaglale.com/doc/ubuntu/awstats]]| |[[http://ubuntu-tutorials.com/2008/01/16/configuring-awstats-on-ubuntu-server/]]| |[[http://www.mneylon.com/blog/archives/2005/08/03/configuring-awstats-with-apache-2-on-ubuntu/]]| |[[https://help.ubuntu.com/community/AWStats]]| |[[http://kastang.com/blog/2010/07/awstats-on-ubuntu-10-04-server/]]| ==== 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)