Da questo punto in avanti è possibile usare un client SSH come PuTTY per connettersi al server Ubuntu 14.04 LTS da una qualsiasi workstation e terminare l'installazione comodamente seduti alla propria postazione.
per aggiornare il database dei package di apt e poi
sudoapt-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
sudoln-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
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 usare il server MySQL anche da altre postazioni (magari con applicazioni Windows per leggere e modificare i DB) è necessario modificare il file /etc/mysql/my.cnf commentantdo la linea bind-address = 127.0.0.1
sudonano/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
sudonetstat-tap|grep mysql
che la risposta sia come quella riportata di seguito
Molti script php usano lo short tag che nelle ultime versioni di PHP5 e disattivo di default, per ovviare a questo problema editare il file php.ini
cd/etc/php5/apache2
sudonano php.ini
Premere Ctrl+W e digitare short_open_tag seguito da Invio.
Ripetere questa operazione sino a trvare una riga che riporta
short_open_tag = Off
Trasformarla in
short_open_tag = On
Riavviare Apache in modo che le modifiche vengano rese attive
sudo service apache2 restart
Ora la configurazione è ricaricata e PHP è pronto.
Python
Per installare il modulo Python di Apache digitare
sudoapt-get install libapache2-mod-python
Potrebbe essere utile installare anche questi moduli
sudoapt-get install python-mysqldb
Per cercarne altri
sudoapt-cache search python
Perl
Per installare il modulo Perl di Apache digitare
sudoapt-get install libapache2-mod-perl2
Ruby
libapache2-mod-ruby è stato rimosso dai repo di Ubuntu … si rende quindi necessario trovare un'altra strada per l'installazione di Ruby on Rails e la sua integrazione con Apache
10. Configurare il frontend Web
10.1. Configurare di Apache
10,1.1 Creazione dell'utente WebMaster e delle Cartelle che ospiteranno il sito
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 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 -aG www-data webmaster
Loggarsi con il nuovo utente
su webmaster
e creare la seguente struttura di cartelle nella sua /home
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
sudochown<nome_utente>:www-data /home/<nome_utente>/public_html
service apache2 restart
Sistemare i permessi sulla cartella /home/<nome_utente>/public_html come segue:
chmod775/home/<nome_utente>/public_html
10.1.2 Nuovo Virtual Host per Apache
Spostarsi nella cartella dei siti di Apache e creare il nuovo file di configurazione.
Ovviamente la dicitura miosito andrà sostituita con il nome del sito.
A questo punto il file di configurazione è pronto e deve essere attivato
sudo a2ensite 010-miosito.conf
e per evitare che vada in conflitto con la configurazione di default
sudo a2dissite 000-default.conf
A questo bunto è necessario riavviare Apache
sudo service apache2 restart
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:
sudonano/etc/apache2/mods-available/php5.conf
<IfModule mod_php5.c>
<FilesMatch "\.ph(p3?|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
# Per ri-abilitare php nelle directory utente commentare le righe seguenti
# (da <IfModule ...> a </IfModule>.) NON lo impostare a On dato che
# impedisce ai file .htaccess di disabilitarlo.
#<IfModule mod_userdir.c>
# <Directory /home/*/public_html>
# php_admin_value engine Off
# </Directory>
#</IfModule>
</IfModule>
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/
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.
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
sudoapt-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
sudonano/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 (network time protocol) server su internet.
Per fare questo digitare
sudoapt-get install ntp ntpdate
Ora l'orologio di sistema verrà costantemente aggiornato
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: 0Parsed 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
Come per quasi tutte le applicazioni Web esiste un pacchetto di sistema da installare ma di solito è obsoleto e rende difficile l'aggiunta di plugins e temi.
Installazione Automatizzata (di sistema)
Per installare digitare
sudoapt-get install dokuwiki
Installazione Manuale
L'installazione manuale non è eccessivamente difficile.
Impersonando webmaster, spostarsi in /home/materiale e scaricare l'ultima versione del tgz che si trova qui.
Copiate il link e sostituitelo nel comando sottostante.
su - webmaster
wget http://download.dokuwiki.org/out/dokuwiki-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.tgz
Decomprimere il file scaricato e settare i permessi
cd/home/webmaster/public_html
cd Koken_Installer/sudomv koken ..
cd ..
sudormdir Koken_Installer
sudochown-R webmaster:www-data koken
sudochmod775-R koken
Navigare con il browser all'indirizzo http://[vostro_sito]/koken e terminare l'installazione in modo grafico
La pagina che si aprirà eseguirà un controllo di tutte le configurazioni necessarie al funzionamento di Koken.
Dovrebbe presentarsi come in figura seguente
Fig. 1
Premere su Begin installation
Nella schermata successiva vengono richiesti i dati anagrafici dell'amministratore, una mail ed una password
Fig. 2
Attenzione!: l'indirizzo e-mail che inserirete in fase di installazione servirà sia per accedere al vostro sito che per la registrazione al market di Koken (che avviene in automatico senza avvisare l'utente) e, se non fate attenzione quando vi viene chiesto, anche per spedirvi la newsletter …
Premete Next –>
La videata successiva vi chiederà o parametri di collegamento a MySQL, se avete dato gli stessi nomi che ho usato io per la guida questi sono il parametri da fornire:
Host
localhost
Database
Koken
User
kokenuser
Passwor
La Vostra Password
Ricordatevi che sotto Linux tutti gli oggetti di MySQL (Database, Utenti, Tabelle, Ecc…) sono case sensitive
Premendo nuovamente su Next –> giungiamo alla fase finale dell'installazione
Fig. 3
Premenso Install now inizia l'installazione di Koken al termina della quale si viene rimandati al login della sezione di amministrazione.
Usate la mail e la password inseriti nella prima videata per loggarvi.
Ora Koken è installato e quasi funzionante.
Portarsi nella root del webserver e sistemare i permessi della cartella
Purtroppo sembra esserci un problema su ownCloud 8.x.x.x che ne rende impossibile l'installazione e l'utilizzo … riverificherò questa parte della guida appena i problemi saranno risolti.
Spoiler
Per prima cosa creare il database dove verranno salvati i dati, aprire phpMyAdmin e nel tab sql digitare quanto segue poi premere esegui
Contrariamente a quanto avviene di solito, dove a questo punto si accede al server con il browser e si termina l'installazione effettuando il setup grafico via web, per configurare ownCloud è necessario dare un comando dalla shell.
Spostandosi nella cartella di ownCloud
NOTA: il comando sopra citato si occupa di creare l'utente amministratore di ownCloud, per tanto Vostro_Nome_Utente_Admin e Vostra_Password_Utente_Admin sono il nome e la password di quell'utente.
Il risultato del comando dovrebbe essere questo
ownCloud is not installed - only a limited number of commands are availableownCloud was successfully installed
Pastebin
Esistono diverse versioni di php-PasteBin, in questa guida copriremo la release v3.
PasteBin è uno strumento che serve a collaborare nel debug di code snipet nel modo seguente:
Incollare l'url in una mail o su un forum, qualcuno risponde postando una modifica e voi potete vedere le differenze dalla vostra versione mediante l'apposito strumento integrato.
NOTA: Perchè tutto funzioni è necessario che sia attivo il modulo apache mod_rewrite (se avete seguito la guida passo passo lo è, in caso contrario fate un giro sulla sezione della configurazione di apache per vedere come si attiva).
Per prima cosa creare il database dove verranno salvati i dati, aprire phpMyAdmin e nel tab sql digitare quanto segue poi premere esegui
Navigare con il browser all'indirizzo http://[vostro_sito]/php-pastebin e terminare l'installazione in modo grafico.
La prima videata dovrebbe essere la seguente:
Selezionando Start Installation si accede alla schermata successiva
Poiché i percorsi sono tutti scritti in verde significa che hanno passato il test, quindi possiamo premere Stem 2 e passare alla schermata successiva
In questa pagina vi vengono richiesti i parametri di collegamento al DB precedentemente creato, dovreste quindi avere una situazione come mostrata in figura seguente
Premete quindi Test Connection per accedere alla pagina di creazione delle tabelle nel DB
Premendo il tasto Install database! si accede all'ultima pagina di configurazione
Immettere i dati per la creazione dell'utente amministratore e modificare il titolo a piacimento, poi premere il tasto Update Config ed eccovi giunti alla fine dell'installazione
Prima di premere il tasto Go to your website assicuratevi di aver dato gli “ultimi ritocchi”.
Ultimi ritocchi come indicato dalla schermata finale
phpMyAdmin è un database manager indispensabile per gestire MySQL (verranno fatti riferimenti ad esso nel corso della guida).
Installazione Automatizzata (di sistema)
Per installare digitare
sudoapt-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
La versione pacchettizzata nel sistema, solitamente, è meno aggiornata ma si integra meglio con le logiche di sicurezza del sistema.
Installazione Manuale
Se siete dei puristi potete cimentarvi nell'installazione da 0.
Il vostro pacchetto sarà allineato all'ultima versione ma potrebbe essere più insicuro.
e scaricare phpMyAdmin (avendo cura di sostituire l'url con quello della versione più recente presente al momento dell'instalazione e di togliere tutta la parte da /download che darebbe problemi.)
Ora procediamo alla configurazione (semi-automatica di phpMyAdmin)
cd phpMyAdmin
mkdir config # create directory for savingchmod775 config # give it world writable permissionscp config.sample.inc.php config.inc.php
cp config.inc.php config/# copy current configuration for editingchmod775 config/config.inc.php # give it world writable permissions
Personalmente mi ha divertito scrivere e provare la parte della configurazione manuale … ma l'eccessivo numero di parametri nella configurazione del pacchetto rendono tedioso il tentativo e non c'è una reale certezza di averlo reso anche sicuro quindi personalmente (almeno per ora) penso rimarrò sulla versione automatizzata.
phpSysInfo
phpSysInfo riporta alcune info riguardanti Hardware e Software del server su cui viene messo.
Per installarlo ci porteremo come di consueto nella solita cartella materiale
cd phpsysinfo
sudocp phpsysinfo.ini.new phpsysinfo.ini
sudochown webmaster:www-data phpsysinfo.ini
Modificate il file phpsysinfo.ini a vostro piacimento ma attenzione a non esporre troppi dati “sensibili”
Ora potete, con il browser, navigare all'indirizzo http://[vostro_sito]/phpsysinfo per gli ultimi ritocchi tipo il tema da usare (nel mio caso nextgen).
WebMin
Webmin è un pacchetto che consente la gestione del server tramite interfaccia Web.
Come quasi tutte le webapp ha due modi per poter essere installato
Installazione Automatizzata (di sistema)
Per installare digitare
sudoapt-get install webmin
Solo che, come per tutti i package delle distro, installa una versione non nuovissima …
Installazione Manuale
Per questa partitcolare webapp l'installazione manuale è abbastanza semplificata dall'esistenza di un .deb con l'ultima versione.
Quindi spostarsi nella cartella materiale e scaricare il .deb andando prima sul sito con il browser e copiando il link all'ultima versione da sostituire nel comando seguente
Perchè un webserver possa essere visibile nel web è necessario che abbia un dominio registrato che punti su di lui.
Se avete l'IP fisso nessun problema ma, che succede se avete un IP dinamico ?
Serve qualcosa che mantenga allineato il vostro indirizzo con il dominio che avete registrato.
Io ho scelto di farlo attraverso il servizio di NO-IP
Per mantenere il vostro IP sincronizzato con NO-IP è necessario installare il client di NO-IP.
Una volta esisteva un pacchetto di sistema ma nelle ultime versioni di Ubuntu è stato dismesso quindi sarà necessario procedere come segue
sudo-icd/usr/local/src/wget http://www.noip.com/client/linux/noip-duc-linux.tar.gz
tar xf noip-duc-linux.tar.gz
cd noip-2.1.9-1/makeinstallrm/usr/local/src/noip-duc-linux.tar.gz
exit
Questo installerà il client di sincronia, per configurarlo digitare
ATTENZIONE!!!: prima di dare questo comando assicurarsi di aver già fatto la registrazione su NO-IP ed avere le credenziali dell'account a disposizione
sudo/usr/local/bin/noip2 -C
Per cambiare l'intervallo di sincronizzazione digitare
Now you can reboot your Raspberry Pi and it will automatically update it’s
ip at noip on boot.
17. Backups
Il disco dei backups
Poichè lasciare il backup sugli stessi dischi che si stanno backuppando potrebbe non essere un'idea geniale, ho acquistato un disco esterno dove poter copiare i bacups.
Per prima cosa attaccare un disco esterno ed identificarlo
sudofdisk-l
(dalle dimensioni dovrebbe essere facilmente identificabile)
Nel mio caso è stato identificato dal sistema come /dev/sdb1.
A questo punto si procede alla formattazione in ext4(In questo modo sarà leggibile solo da linux se preferite che venga visto anche da windows non eseguite il passo successivo) .
sudo mkfs.ext4 -L BackupsDisk /dev/sdb1
Poi è necessario montare il disco, io ho optato per un mount in fase di startup del server.
Eseguire il comando seguente e prendere nota dello UUID
Ovviamente al parametro UUID dovrete sostituire quello precedentemente copiato, il mount point potete metterlo anche diverso da quello che ho indicato io …
per tutti gli altri parametri rimando alla guida seguente.
Prima di procedere oltre, riavviate il server ed assicuratevi che il disco sia stato montato correttamente.
Utente MySQL per il dump del DB
Per eseguire il dump de db è sempre meglio avere un utente specifico che abbia la possibilità di leggere ed eseguire il dump su tutti i DB (presenti e futuri) presenti nel vostro MySQL.
Ecco lo script di creazione da eseguire con phpMyAdmin
Poichè molte parti dello script richiedono i privilegi di root per funzionare, dovremo avere cura di schedulare lo script nel crontab del root.
sudo-i
crontab -e
Se è la prima volta che lanciate il comando crontab -e, il sistema vi chiederà con quale editor volete eseguire le modifiche (verrà reso predefinito per il futuro)
Fate la vostra scelta (io ho scelto di continuare ad usare nano)
Per i parametri di crontab vi rimando a questa immagine abbastanza esplicativa.
Premere Ctrl+X e salvare le modifiche ed uscire dalla modalità root con
exit
Conclusioni
Ora il vostro backup è pronto per essere eseguito.
Se volete fare un primo giro di prova senza attendere l'esecuzione della schedulazione
cd/usr/local/sbin
sudo ./backmeup.sh
Al termine dello script verificate che il file generato si trovi sia sotto la cartella backup dell'utente webmaster che sul disco dei backups
18. Accesso Remoto e Tunneling
Spesso è utile poter accedere al server da remoto per cambiare configurazioni o modificare parametri che non si vuole siano “aggredibile” tramite un'interfaccia web da chiunque.
Per questo ci viene in aiuto il procolollo SSH il cui server abbiamo installato come primo passo di questa guida.
Poichè esporre il protocollo SSH con la richiesta di login e password rappresenta comunque un rischio, è preferibile disattivare la richiesta delle credenziali ma accedere tramite un meccanismo a chiave pubblica e privata.
Prerequisiti
Per la parte successiva della guida è necessario disporre di PuttyGen che può essere scaricato qui
Creazione Struttura su File System
Per fare ciò è necessario creare la cartella .ssh nella home dell'utente con cui intendete collegarvi.
Immaginando di essere già nella sua home procedere come segue:
mkdir .ssh
cd .ssh
nano authorized_keys2 #salvare il file vuotocd ..
chmod600 .ssh/authorized_keys2
chmod700 .ssh
Generazione delle chiavi (Pubblica / Privata)
Avviare PuttyGen, selezionare SSH-2 RSA nel riquadro Type of key to generate e specificare 1024 (o valore superiore) come valore per Number of bits in a generated key.
A questo punto premere il tasto Generate.
Durante il processo di generazione è necessario “agitale” il puntatore del mouse nell'area in alto della finestra di PuttyGen per aumentare il random della chiave.
Quando la barra blu arriva a fine dell'indicatore, le chiavi sono state generate.
Mettete in Key comment qualcosa che faccia capire di quale chiave si tratta (avendo generato una chiave per ognuno dei miei dispositivi mobili, nel commento ho messo il nome del dispositivo in modo da sapere a quale fa riferimento la chiave. La cosa potrebbe tornare utile in caso di furto o smarrimento per poter disattivare solo quel dispositivo).
Per aumentare la sicurezza, potete impostare una passphrase che vi verrà richiesta al momento dell'utilizzo della chiave, non è obbligatorio metterla ma senza chiunque avrà la chiave potrà collegarsi (io la uso per la macchina in ufficio, per evitare che chiunque possa collegarsi al mio server da li).
Se volete impostarla digitate la password desiderata nel campo Key passphrase e ripetetela nel campo Confirm passphrase.
Ora premete Save publick key e salvate la chiave in un percorso “sicuro” del vostro PC avendo cura di darle un nome che vi consenta di capire a quale sistema verrà applicata.
Premete Save private key.
Potete salvare questa chiave nello stesso percorso dell'altra ma badate di potervi accedere solo voi e di non perderla perchè se disattivate il login tramite username/password non sarà più possibile accedere al server se non con una live.
Potete dare qualsiasi nome vogliate al file ma l'estensione deve rimanere .ppk.
Ora copiate la chiave pubblica dalla finestra di PuttyGen
Salvare la chiave pubblica sul server
Accedere al server con il solito login username/password e salvare la chiave precedentemente copiata nel file authorized_keys2
cd .ssh
nano authorized_keys2
Portatevi alla fine del file e premete il tasto destro del mouse per incollare.
La linea aggiunta dovrebbe assomigliare a questa