-->
Visualizzazione post con etichetta Programmazione. Mostra tutti i post
Visualizzazione post con etichetta Programmazione. Mostra tutti i post

Guida a Arduino framework opensource made in Italy (3a parte): il software di Arduino IDE.

In primo luogo, bisogna sottolineare che il linguaggio di programmazione utilizzato per Arduino è il C/C++; si può parlare di entrambi i linguaggi, in quanto è possibile utilizzare o meno il supporto per le classi che il C++ mette a disposizione. 

Inoltre, il compilatore utilizzato è ovviamente dedicato per i microcontrollori della famiglia AVR della Atmel e fa parte di una ben definita toolchain GCC. 

Con un compilatore ed un semplice editor di testo è sempre possibile scrivere e compilare un programma ma, per aumentare la produttività e ridurre i tempi di sviluppo, si preferisce sempre utilizzare un IDE dedicato (se disponibile); per fortuna con Arduino abbiamo questa possibilità!

Come fare per scaricare e installare l'IDE di Arduino.

 
Sul sito ufficiale di Arduino è disponibile la sezione Download , dalla quale possiamo scaricare l’IDE per il sistema operativo che utilizziamo (sono supportati Windows, Linux e Mac OS X). Oltre alla versione “Arduino 1.8.8” che ci interessa (versione corrente al momento della pubblicazione del tutorial), sono disponibili una versione Beta per la board “Arduino Yun”, una versione dedicata per la Intel “Galileo” ed addirittura i sorgenti dell’ambiente, data la natura open source del progetto.
 
Nel caso di Windows, che utilizzeremo nel corso di questa guida, abbiamo la possibilità di scaricare un installer oppure un semplice file ZIP contenente tutto il necessario. Per evitare un inutile processo di installazione, la seconda soluzione è assolutamente la migliore; in questo modo ci basterà semplicemente cancellare la cartella nel caso in cui dovessimo aggiornare l’IDE oppur non volerlo più utilizzare. 
 
Una volta scaricato ed estratto il contenuto del file ZIP, clicchiamo sul file eseguibilearduino.exe che si trova nella cartella principale e dopo pochi secondi ci ritroveremo davanti ai nostri occhi l’unica finestra semplice ma essenziale dell’IDE completamente sviluppato in Java.
 
La prima operazione da fare consiste nel selezionare quale board della famiglia Arduino sarà utilizzata (nel nostro caso la “Arduino Uno”) attraverso il menu “Strumenti à Tipo di Arduino”.
Prima di connettere la nostra board al PC attraverso il cavo USB, diamo uno sguardo all’IDE per visionare le funzionalità che ci mette a disposizione.

Librerie ed esempi.

 
In primo luogo, nel menu File > Esempi, abbiamo un accesso diretto a tutti gli sketch di esempio che sono disponibili nella cartella examples dell’IDE e suddivisi per categoria in base alla funzionalità di Arduino che vogliamo esplorare.
 
Ci sono esempi sulla gestione dei pin della board, sull’uso del convertitore analogico/digitale, su tutti i tipi di connessione dalla seriale alla Ethernet e così via. Inoltre, attraverso il menuSketch > Importa libreria ... possiamo aggiungere al nostro programma una o più delle tante librerie che il progetto Arduino ci mette a disposizione (per accedere alla EEPROM, al controller Ethernet, alla SD, etc.).
 
Nel caso in cui sia stata sviluppata da terze parti (oppure da noi stessi) una libreria per la gestione di un particolare componente o device, è possibile aggiungerla attraverso la voce Add Library ....
 
L’operazione di import di una libreria non fa nient’altro che aggiungere all’interno del nostro file sorgente tutte le direttive #include necessarie per l’utilizzo delle classi e delle funzioni che la libreria stessa ci mette a disposizione. Sarà l’IDE a farsi carico al momento della compilazione di includere nel firmware generato, non solo il nostro codice ma anche quello delle librerie utilizzate. 
 

Compilazione.


Sempre nel menu Sketch è disponibile la voce Verifica/Compila che ci permette di verificare la correttezza del codice (ovviamente da un punto di vista sintattico e dei riferimenti alle funzioni utilizzate) e quindi compilarlo ma senza caricarlo immediatamente sulla board
 

I tasti di scelta rapida.


Infine, nel menu Modifica troviamo una serie di funzioni strettamente legate all’editor per poter eseguire semplicemente le operazioni di commento del codice, di ricerca, di copia/incolla e di indentazione.

Alcune delle operazioni più comuni sono accessibili attraverso una serie di pulsanti posti immediatamente al di sotto alla barra dei menu e che rispettivamente indicano :
  • Verifica : esegue la verifica del codice scritto e relativa compilazione;
  • Carica : esegue il caricamento sulla board del firmware compilato;
  • Nuovo : permette di creare un nuovo sketch;
  • Apri : permette di aprire uno sketch esistente;
  • Salva : permette di salvare lo sketch correntemente aperto;

Collegare la scheda.

A questo punto possiamo passare al collegamento della nostra board al PC attraverso il cavo USB. Una volta collegata ed alimentata la scheda (anche solo attraverso il cavo USB), il PC dovrebbe riconoscere la presenza della board (es. “Arduino Uno”) ma necessita dei driver per una corretta installazione.

All’interno della cartella drivers dell’archivio che abbiamo scaricato è possibile trovare i due file eseguibili (dpinst-x86.exe e dpinst-amd64.exe), che permettono l’installazione della scheda rispettivamente su un sistema operativo a 32 e 64 bit.
installazione driver arduino
Installazione driver Arduino
Una volta completata l’installazione, le porte seriali già disponibili sul PC con in più quella appena installata e relativa alla board Arduino, saranno visibili nel menu Strumenti > Porta seriale; dobbiamo ovviamente selezionare la porta giusta alla quale è collegata la scheda. Per verificare quale sia la porta seriale giusta, possiamo individuare tutte le porte installate nel sistema all’interno del pannello di controllo, dove troviamo una porta del tipo Arduino Uno (COMx), che altro non è che una porta seriale virtuale associata al convertitore USB-seriale a bordo della scheda.
Porta seriale assegnata ad arduino
Porta seriale assegnata ad Arduino
porta seriale arduino
Impostazione porta seriale relativa alla board Arduino

Porta seriale.

Una utilissima funzionalità dell’IDE è il monitor della porta seriale disponibile nella voce di menu Strumenti > Monitor seriale. Come vedremo, tale strumento si rivelerà molto importante per il debug dei nostri programma a runtime.

Per limiti dovuti in primo luogo al tipo di microcontrollore, non abbiamo a disposizione le funzioni di debugging che utilizziamo di solito per altri tipi di applicazione. Quindi niente breakpoints, esecuzione step by step e visualizzazione in tempo reale del valore delle variabili.

Utilizzando la libreria relativa alla gestione della seriale, avremo la possibilità di inviare dei messaggi su di essa e quindi visualizzarli attraverso il monitor; solo in questo modo potremmo “debuggare” e sapere a runtime in quale punto del programma ci troviamo oppure qual è il valore assunto da una o più variabili. Anche se può apparire un po’ rudimentale rappresenta l’unica soluzione in questo caso.
monitor seriale arduino
Monitor Seriale Arduino

Guida a Arduino framework opensource made in Italy: Installare il software Arduino (IDE) su Linux (3a parte).

Arduino è una piattaforma hardware composta da una serie di schede elettroniche dotate di un microcontrollore. È stata ideata e sviluppata nel 2005 da alcuni membri dell'Interaction Design Institute di Ivrea come strumento per la prototipazione rapida e per scopi hobbistici, didattici e professionali.. 

Il nome della scheda deriva da quello del bar di Ivrea frequentato dai fondatori del progetto, nome che richiama a sua volta quello di Arduino d'Ivrea, Re d'Italia nel 1002.

Con Arduino si possono realizzare in maniera relativamente rapida e semplice piccoli dispositivi come controllori di luci, di velocità per motori, sensori di luce, automatismi per il controllo della temperatura e dell'umidità e molti altri progetti che utilizzano sensori, attuatori e comunicazione con altri dispositivi. 

 

Come installare il software Arduino (IDE) su Linux.

La scheda è abbinata a un semplice ambiente di sviluppo integrato per la programmazione del microcontrollore. Tutto il software a corredo è libero, e gli schemi circuitali sono distribuiti come hardware libero e per questo motivo è molto utilizzato nella didattica educativa.

 

Inizio rapido


La build per Linux del software Arduino (IDE) è disponibile in diversi pacchetti a seconda dell'architettura del sistema. Non ci sono istruzioni specifiche per le diverse distribuzioni di Linux (ad esempio Ubuntu).


Scaricare il software Arduino (IDE)

Prendi l'ultima versione dalla pagina di download. Puoi scegliere tra le versioni 32, 64 e ARM. È molto importante che tu scelga la versione giusta per la tua distro Linux. Cliccando sulla versione scelta si accede alla pagina della donazione e poi si può aprire o salvare il file. Per favore, salvatelo sul vostro computer.

Estrarre il pacchetto.


Il file è compresso e devi estrarlo in una cartella adatta, ricordando che verrà eseguito da lì.


Eseguire lo script di installazione.


Apri la cartella arduino-1.6.x appena creata dal processo di estrazione e individua il file install.sh. Cliccate con il tasto destro su di esso e scegliete Run in Terminal dal menu contestuale. Il processo di installazione terminerà velocemente e dovresti trovare una nuova icona sul tuo desktop.

Se non trovi l'opzione per eseguire lo script dal menu contestuale, devi aprire una finestra del Terminale e spostarti nella cartella arduino-1.6.x. Digita il comando ./install.sh e aspetta che il processo finisca. Dovresti trovare una nuova icona sul tuo desktop.


Procedere con le istruzioni specifiche per la scheda


Quando il software Arduino (IDE) è installato correttamente, puoi tornare alla Home Getting Started e scegliere la tua scheda dalla lista sulla destra della pagina.
Per favore leggi...

Potrebbe accadere che quando carichi uno sketch - dopo aver selezionato la tua scheda e la porta seriale -, ottieni un errore Errore di apertura della porta seriale ... Se ottieni questo errore, devi impostare i permessi della porta seriale.

Aprite il Terminale e digitate

ls -l /dev/ttyACM*

otterrete qualcosa come

crw-rw---- 1 root dialout 188, 0 5 apr 23.01 ttyACM0

Lo "0" alla fine di ACM potrebbe essere un numero diverso, o potrebbero essere restituite più voci. Il dato di cui abbiamo bisogno è "dialout" (è il gruppo proprietario del file).

Ora abbiamo solo bisogno di aggiungere il nostro utente al gruppo:

sudo usermod -a -G dialout <username>

dove <username> è il vostro nome utente Linux. Avrete 


Questa è la procedura per accedere alla porta seriale dal software Arduino (IDE) se si ottiene un errore

Dopo questa procedura, dovresti essere in grado di procedere normalmente e caricare lo sketch sulla tua scheda o usare il Serial Monitor.

Guida a Arduino framework opensource made in Italy (2a parte): funzionalità dei componenti.

Arduino è un framework opensource che permette la prototipazione rapida e l'apprendimento veloce dei principi fondamentali dell'elettronica e della programmazione.

Con Arduino si possono realizzare in maniera relativamente rapida e semplice piccoli dispositivi come controllori di luci, di velocità per motori, sensori di luce, automatismi per il controllo della temperatura e dell'umidità e molti altri progetti che utilizzano sensori, attuatori e comunicazione con altri dispositivi. 

La scheda è abbinata a un semplice ambiente di sviluppo integrato per la programmazione del microcontrollore. Tutto il software a corredo è libero, e gli schemi circuitali sono distribuiti come hardware libero e per questo motivo è molto utilizzato nella didattica educativa.

Guida a Arduino framework opensource made in Italy (2a parte).

La piattaforma fisica si basa su un circuito stampato che integra un microcontrollore con dei pin connessi alle porte I/O, un regolatore di tensione e, quando necessario, un'interfaccia USB che permette la comunicazione con il computer utilizzato per programmare. 

A questo hardware viene affiancato un ambiente di sviluppo integrato (IDE) multipiattaforma disponibile per Linux.

Funzionalità di Input/Output.

Per implementare il comportamento interattivo, Arduino è fornita di funzionalità di Input/Output, grazie alle quali essa riceve i segnali raccolti da sensori esterni. In base a tali valori, il comportamento della scheda è gestito dal microcontroller, in base alle decisioni determinate dal particolare programma in esecuzione in quel momento sulla scheda. L'interazione con l'esterno avviene attraverso attuatori pilotati dal programma attraverso i canali di output in dotazione.

arduino_NanoFront

Connettori I/O.

A tale scopo, Arduino è dotata di molti dei connettori di Input/Output per microcontroller in uso su altri circuiti. Tutti i pin di I/O sono collocati sulla parte superiore della scheda, mediante connettori femmina da 0,1". Inoltre, sono disponibili commercialmente molte schede applicative plug-in, note come "shields". 

Le schede Barebones e Boarduino, due cloni compatibili con la Arduino, sono dotate di connettori maschio sul lato inferiore del circuito in modo da poter essere connesse a una breadboard senza necessità di effettuare saldature. 

I/O digitale.

La Arduino Uno, ad esempio, che ha soppiantato la Duemilanove, offre 14 connettori per l'I/O digitale (numerati da 0 a 13). La direzione di funzionamento, input o output, è decisa dallo sketch programmato sull'IDE.

Sei dei canali I/O possono produrre segnali Pulse-width modulation (PWM). Attraverso i segnali PWM è possibile, ad esempio, regolare l'intensità di luminosità di un LED o la velocità di rotazione di un motorino elettrico. 

L'hardware di tre dei pin di I/O (9, 10 e 11) implementa la possibilità di gestirli direttamente attraverso la funzione analogWrite(), che permette di controllare la PWM del segnale in uscita in maniera efficiente, senza dover eseguire linee di codice appositamente predisposte. 

La funzione accetta due parametri, il primo dei quali è il pin pilotato mentre il secondo rappresenta l'intensità della modulazione (espressa su una scala da 0 a 255): così, ad esempio, analogWrite(9, 128) attiverà un led collegato al pin 9 al 50% della sua luminosità. 

I/O analogico.

Sempre sulla Uno, sono presenti altri 6 connettori specificamente dedicati a ingressi di segnali analogici, cioè valori di tensione letti da sensori esterni i cui valori, fino a un massimo di 5 Volt, sono convertiti in 1024 livelli discreti (da 0 a 1023). 

Questi 6 connettori possono essere riprogrammati (sempre dal codice dello sketch sull'IDE) per funzionare come normali entrate/uscite digitali.

fonte: Wikipedia



Guida a Arduino framework opensource made in Italy (1a parte): introduzione e hardware.

Arduino è un framework opensource che permette la prototipazione rapida e l'apprendimento veloce dei principi fondamentali dell'elettronica e della programmazione.

È composto da una piattaforma hardware per il physical computing sviluppata presso l'Interaction Design Institute, un istituto con sede ad Ivrea, fondato da Olivetti e Telecom Italia. Il nome della scheda deriva da quello di un bar di Ivrea frequentato da alcuni dei fondatori del progetto.

Questa si basa su un circuito stampato che integra un microcontrollore con PIN connessi alle porte I/O, un regolatore di tensione e quando necessario un'interfaccia usb che permette la comunicazione con il computer.
arduino_logo
A questo hardware viene affiancato un ambiente di sviluppo integrato (IDE) multipiattaforma (Linux, Apple Macintosh e Windows). Questo software permette anche ai novizi di scrivere programmi con un linguaggio semplice e intuitivo derivato da C e C++ chiamato Wiring, liberamente scaricabile e modificabile.

Leggi anche: Guida a Arduino framework opensource made in Italy (2a parte).    
Arduino può essere utilizzato per lo sviluppo di oggetti interattivi stand-alone ma può anche interagire, tramite collegamento, con software residenti su computer, come Adobe Flash, Processing, Max/MSP, Pure Data, SuperCollider, Vvvv.

La piattaforma hardware Arduino è spesso distribuita agli hobbisti in versione pre-assemblata, acquistabile in internet o in negozi specializzati. La particolarità del progetto è che le informazioni sull'hardware e soprattutto i progetti sono disponibili per chiunque: si tratta quindi di un hardware open source, distribuito nei termini della licenza Creative Commons Attribution-ShareAlike 2.5.

In questo modo, chi lo desideri può legalmente auto-costruirsi un clone di Arduino o derivarne una versione modificata, scaricando gratuitamente lo schema elettrico e l'elenco dei componenti elettronici necessari. Questa possibilità ha consentito lo sviluppo di prodotti Arduino compatibili da parte di piccole e medie aziende in tutto il mondo, e infatti oggi è possibile scegliere tra un'enorme quantità di schede Arduino compatibili. Ciò che accomuna questi prodotti inerenti elettronica sperimentale e sviluppo è il codice sorgente per l'Ambiente di sviluppo integrato e la libreria residente che sono resi disponibili, e concessi in uso, secondo i termini legali di una licenza libera, GPLv2.

Grazie alla base software comune, ideata dai creatori del progetto, per la comunità Arduino è stato possibile sviluppare programmi per connettere a questo hardware più o meno qualsiasi oggetto elettronico, computer, sensore, display o attuatore. Dopo anni di sperimentazione è oggi possibile fruire di un database di informazioni vastissimo.

Il team di Arduino è composto da Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, e David Mellis. Il progetto prese avvio in Italia a Ivrea nel 2005, con lo scopo di rendere disponibile, a progetti di Interaction design realizzati da studenti, un dispositivo per il controllo che fosse più economico rispetto ai sistemi di prototipazione allora disponibili. I progettisti riuscirono a creare una piattaforma di semplice utilizzo ma che, al tempo stesso, permetteva una significativa riduzione dei costi rispetto ad altri prodotti disponibili sul mercato. A ottobre 2008 in tutto il mondo erano già stati venduti più di 50.000 esemplari di Arduino.

L'hardware originale Arduino è realizzato dalla italiana Smart Projects. Alcune schede Arduino sono state progettate dalla statunitense SparkFun Electronics.

Una scheda Arduino tipica consiste in un microcontroller a 8-bit AVR prodotto dalla Atmel, con l'aggiunta di componenti complementari per facilitarne l'incorporazione in altri circuiti. In queste schede sono usati chip della serie megaAVR - nello specifico i modelli ATmega8, ATmega168, ATmega328, ATmega1280 e ATmega2560.

Molte schede includono un regolatore lineare di tensione a 5-volt e un oscillatore a cristallo a 16 MHz, sebbene alcune implementazioni, come ad esempio la piccola LilyPad, abbiano un clock di 8 MHz e facciano a meno dello stabilizzatore di tensione.

Fino a oggi sono state commercializzate dodici versioni dell'hardware Arduino.

    Serial Arduino, programmata con una porta seriale DB9. Fa uso del microcontroller ATmega8
    Arduino Extreme, con interfaccia di programmazione USB, facente uso del chip ATmega8
    Arduino Mini, una versione in miniatura facente uso di un ATmega168 a montaggio superficiale
    Arduino Nano, una versione ancora più piccola della Mini, utilizzante lo stesso controller ATmega168 SMD e alimentata tramite USB
    LilyPad Arduino, un progetto minimalista (scheda circolare dal diametro di 50mm, per circa 8mm di spessore), per applicazione su indumenti, con lo stesso ATmega168 in versione SMD[5]
    Arduino NG, con un'interfaccia USB per programmare e usare un ATmega8
    Arduino NG plus, con interfaccia di programmazione USB, con un ATmega168
    Arduino BT, con interfaccia di programmazione Bluetooth e con un ATmega168
    Arduino Diecimila, con interfaccia di programmazione USB e con un ATmega168 in un package DIL28
    Arduino Duemilanove, facente uso del chip Atmega168 (o Atmega328 nelle versioni più recenti) e alimentata in corrente continua tramite USB, con commutazione automatica tra le sorgenti di alimentazione
    Arduino Mega, che fa uso di un ATmega1280 a montaggio superficiale per I/O e memoria addizionale.
    Arduino Uno, evoluzione della Duemilanove, con un differente chip, programmabile e più economico, dedicato alla conversione USB-seriale.
    Arduino Mega2560, che fa uso di un ATmega2560 ed è un'evoluzione dell'Arduino Mega.

Inoltre, il microcontroller della scheda in alcuni case è pre-programmato con un bootloader che semplifica il caricamento dei programmi sulla memoria flash incorporata nel chip.

A livello concettuale, tutte le schede sono programmate attraverso un porta seriale RS-232, ma il modo in cui questa funzionalità è implementata nell'hardware varia da versione a versione. Le schede seriali Arduino contengono un semplice circuito inverter che permette la conversione tra il livello della RS-232 e il livello dei segnali TTL.

Le versioni attuali di Arduino sono gestite via USB: l'ultima versione, la Uno, utilizza un microcontrollore Atmega8U2 programmato come convertitore USB-seriale mentre le precedenti versioni Diecimila e Duemilanove usavano chip adattatori USB-seriale, come gli FT232 di FTDI. Alcune varianti, come la Arduino Mini e la versione non ufficiale Boarduino, usano una scheda o un cavo adattatore USB-seriale staccabile.


Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:
ubuntu lucid-lynx rss

Guida all’uso di Matlab: lavorare con le matrici (2da parte).

Funzioni intrinseche matematiche.
Riportiamo un elenco di alcune funzioni matematiche predefinite in MATLAB. Molte di queste funzioni, presentate qui nella loro versione scalare, possono essere applicate anche a variabili matriciali. Indicando con x ed y due numeri reali e z un numero complesso, ricordiamo le seguenti funzioni:


Matlab_Logo

Guida all’uso di MatLab: espressioni matematiche.

Come altri linguaggi di programmazione, MATLAB prevede espressioni matematiche, ma queste espressioni coinvolgono matrici intere.

 

Il blocco di espressioni è:

 

Variabili

Numeri

Operatori

Funzioni

Variabili

MATLAB non richiede alcuna dichiarazione del tipo della dimensione. Quando MATLAB incontra un nome variabile nuovo, crea automaticamente la variabile e stanzia l’ammontare adatto in deposito. Se la variabile già esiste, MATLAB cambia i suoi contenuti e, se necessario, effettua un nuovo deposito. Per esempio

elenco = 30

matlab_mcxlab

Guida all’uso di MatLab: operazioni.

In MATLAB sono definite le seguenti operazioni aritmetiche:
1) addizione +
2) sottrazione -
3) moltiplicazione *
4) divisione /
5) elevamento a potenza ˆ

Quando l’espressione da valutare è troppo lunga per stare su di un’unica riga di comando,è possibile utilizzare un carattere di continuazione dato da . . . (tre punti). Ad esempio,
>> 1 + 1/4 + ...
1/8 ans = 1.375
matlab Screenshot

Guida all’uso di MatLab: la funzione magic.

Pedici
L’elemento in riga i e colonna j di A è denotato con A(i,j). Per esempio:
A(4,2)

è il numero nella quarta riga e seconda colonna. Per la nostra magic square, A(4,2) è 15. Così è possibile calcolare la somma degli elementi nella quarta colonna di A digitando:
A(1,4) + A(2,4) + A(3,4) + A(4,4)

Questo produce:
ans = 34
ma non è il modo più elegante di sommare una singola colonna.

E anche possibile per assegnare gli elementi di una matrice utilizzare un singolo pedice, A(k). Questo è il modo solito di citare vettori riga e vettori colonna.

Ma si può anche applicare ad una matrice bidimensionale in questo caso la matrice è considerata come un vettore colonna, formato dalle colonne della matrice originale.
matlab ubuntu

Guida all’uso di MatLab: per iniziare.

Questo tutorial è teso ad aiutare chi inizia ad imparare MATLAB. Contiene un numero elevato di esempi così da poter da subito utilizzare MATLAB ,e dovrebbe poi essere utile per il seguito. Per attivare MATLAB su un PC o Mac, basta un duplice scatto sull’icona di MATLAB.

Per attivare MATLAB su un sistema UNIX, digitare matlab al prompt del sistema operativo. Per uscire da MATLAB in qualsiasi istante, digitare QUIT al prompt di MATLAB. Se si necessita di più assistenza, digitare HELP al prompt di MATLAB, o cliccare sul menu dell’HELP su un PC o Mac.

Matrici e Magic Squares
Il migliore modo per iniziare con MATLAB è quello di imparare a maneggiare le matrici, questa sezione mostra come fare.

Una matrice è in MATLAB, un ordine rettangolare di numeri,significato speciale qualche volta è adottato per le 1 -by- 1 matrici che sono scalari, e per matrici con solamente una riga o colonna che sono vettori.
matlab3

Guida all’uso di MATLAB: introduzione.

MATLAB (abbreviazione di Matrix Laboratory) è un ambiente per il calcolo numerico e l'analisi statistica scritto in C che comprende anche l'omonimo linguaggio di programmazione creato dalla MathWorks.

 

MATLAB consente di manipolare matrici, visualizzare funzioni e dati, implementare algoritmi, creare interfacce utente, e interfacciarsi con altri programmi. Nonostante sia specializzato nel calcolo numerico, uno strumentario opzionale interfaccia MATLAB con il motore di calcolo simbolico di Maple.

 

MATLAB è usato da milioni di persone nell'industria e nelle università per via dei suoi numerosi strumenti a supporto dei più disparati campi di studio applicati e funziona su diversi sistemi operativi, tra cui GNU/Linux e Unix.

Matlab_Logo

Gnu Compiler Collection (GCC) è una collezione di compilatori per scrivere programmi in C, C + +, Java, Objective-C, Fortran, Ada, Assembler e Go.

Gnu Compiler Collection (GCC) è una collezione di compilatori e fornisce un'interfaccia uniforme per scrivere programmi in C, C + +, Java, Objective-C, Fortran, Ada, Assembler e Go (a partire da Ubuntu 11.10). 

Il significato originario di GCC era GNU C Compiler, ma da allora poiché sono stati aggiunti altri linguaggi e il suo significato è stato cambiato in Gnu Compiler Collection. 

Questa guida si prefigge di aiutare nella programmazione in Ubuntu usando GCC per compilare. Non ha il fine di introdurre ai linguaggi di programmazione o di dar supporto ad essi. Per questo occorre leggere molte pagine web, guide in linea o dei buoni libri di testo.


Le novità più importanti in Ubuntu 14.04 “Trusty Tahr”: 2a parte.

Quali sono le novità più eclatanti e senza ombra di dubbio apprezzate dagli utenti che si ritroveranno ad utilizzare Ubuntu 14.04 LTS?

Abbiamo deciso di scoprirne qualcuna e di discuterne insieme a voi. (2a parte)

4.- Migliora drasticamente le performance dei giochi.

Un esperimento effettuato da Michael Larabel di Phoronix ha fatto emergeQQuali sono le novità più eclatanti e senza ombra di dubbio apprezzate dagli utenti che si ritroveranno ad utilizzare Ubuntu 14.04 LTS?

Abbiamo deciso di scoprirne qualcuna e di discuterne insieme a voi.uali sono le novità più eclatanti e senza ombra di dubbio apprezzate dagli utenti che si ritroveranno ad utilizzare Ubuntu 14.04 LTS? Abbiamo deciso di scoprirne qualcuna e di discuterne insieme a voi.re che, se viene installato Ubuntu 14.04 su un MacBook, le performance di gioco aumentano drasticamente.

5 aggiornamenti di sicurezza importanti per Ubuntu 13.10 "Saucy Salamander": Grub Customizer, Ubuntu Tweak, Crash per il debug, OpenCompositing Project e OpenGL.

Sappiamo tutti quanto sia importante mantenere aggiornato il proprio sistema operativo, ma è parimenti esperienza comune che spesso siano proprio gli aggiornamenti a introdurre nuovi bug.
Ubuntu segue delle linee guida ben precise per gestire questa situazione.

La chiave di volta dell’intero discorso è che, una volta rilasciata la release, gli aggiornamenti non si fanno affatto, a meno che non riguardino vulnerabilità di sicurezza o bug particolarmente significativi.

Addirittura, nell’ottica di stabilizzare la release, già durante le ultime fasi di sviluppo l’ingresso di nuovi pacchetti dei vari software è sottoposto ad un controllo particolarmente rigido (una fase nota agli sviluppatori come “Feature Freeze”, appunto).

Gli aggiornamenti proposti a continuazione fanno parte del bollettino di sicurezza settimanale rilasciato da Canonical e riguardano in particolare i primi aggiornamenti importanti sulla sicurezza riguardanti la neonata Ubuntu 13.10 Saucy Salamander

 gtk-2-runtime-environment-3
1.- Genera automaticamente segnalazioni di crahs per il debug:

apport automatically collects data from crashed processes and compiles a problem report in /var/crash/. This utilizes the crashdump helper hook provided by the Ubuntu kernel.
Questo pacchetto fornisce anche una interfaccia a riga di comando per la navigazione e la gestione dei rapporti di crash. Per i desktop, si dovrebbe prendere in considerazione l'installazione dell'interfaccia GTK+ o Qt (apport-gtk o apport-kde).

Modifiche per le versioni:
Versione installata: 2.6.1-0ubuntu10
Versione disponibile: 2.6.1-0ubuntu13

Versione 2.6.1-0ubuntu13: 5 aggiornamenti di sicurezza importanti per Ubuntu 13.10 "Saucy Salamande

  * SECURITY UPDATE: incorrect permissions on setuid process core dumps
    (LP: #1242435)
    - use correct permissions when writing the core file in data/apport,
      added test to test/test_signal_crashes.py.
    - Thanks to Martin Pitt for the patch!
    - CVE-2013-1067


Versione 2.6.1-0ubuntu12: 5 aggiornamenti di sicurezza importanti per Ubuntu 13.10 "Saucy Salamande

  * Enable suid_dumpable (core dumps of setuid binaries). This has
    always been safe for us, as we set a core pipe handler, but the
    kernel now protects against one not being set:
    http://kernel.ubuntu.com/git?p=ubuntu/ubuntu-
    raring.git;a=blob;f=Documentation/sysctl/fs.txt;h=88152f214f48cb69c6
    43d4bf2ff2ac9a61ad2eb0;hb=HEAD (LP: #1194541).


Versione 2.6.1-0ubuntu11:

  * data/general-hooks/ubuntu.py: For package installation failures, build a
    DuplicateSignature from the package, version, and dpkg ErrorMessage,
    instead of using the whole dpkg terminal log. (LP: #1185515)


2.- Ubuntu Tweak

Ubuntu Tweak is an application which makes configuring Ubuntu easier for everyone. It allows tweaking of many useful desktop and system configuration options which are unavailable via native system tools.

Modifiche per le versioni:
Versione installata: 0.8.3-1~quantal1
Versione disponibile: 0.8.6-1~quantal1

Questo aggiornamento non proviene da una fonte che supporta i changelog.

3.- Grub Customizer: configurazione di Grub2/Burg.

Grub Customizer is a graphical configuration tool to modify the grub2/burg settings with focus on the individual list order - without losing the dynamical behavior of grub - also usable on live cds. Settings like the background or timeouts are also changeable using Grub Customizer.

Modifiche per le versioni:
Versione installata: 3.0.4-0ubuntu1~ppa1q
Versione disponibile: 4.0.4-0ubuntu1~ppa1q

Questo aggiornamento non proviene da una fonte che supporta i changelog.

4.- Plugins per OpenCompositing Project.

The OpenCompositing Project brings 3D desktop visual effects that improve usability of the X Window System and provide increased productivity through plugins and themes contributed by the community giving a rich desktop experience.
This package contains the library for plugins to configure settings.

Modifiche per le versioni:
Versione installata: 1:0.9.8.6-0ubuntu1
Versione disponibile: 1:0.9.8.6+bzr3433-0ubuntu1

Versione 1:0.9.8.6+bzr3433-0ubuntu1:

  * New upstream snapshot.
    - Added missing glEnable/glDisableClientState calls for
      GL_TEXTURE_COORD_ARRAY and GL_VERTEX_ARRAY to make firepaint work with
      the new codebase (LP: #1048505)
    - Avoid calling code that results in calls to regexec as much as possible.
      Regular expression matching is too expensive to do very often and compiz
      was spending 31% of its CPU time in regexec() (LP: #1095001)
    - Add a feature for blacklisting certain graphics drivers from being able
      to unredirect fullscreen windows (LP: #1089246)
    - Prevent windows from maximizing on the wrong monitor (LP: #751605)
    - When dragging a window between workspaces, don't warp the pointer by a
      mysterious 10 pixels. Instead warp the pointer by 1 so it goes from one
      edge to the next without getting ahead of the window drag (LP: #201681)
    - Screenshot Plugin: Re-added GL_BLEND enabling and disabling calls to fix
      the selection rectangle not being transparent anymore (LP: #1047788)
    - Re-added missing glEnable (GL_BLEND); and glDisable (GL_BLEND); calls to
      the OpenGL codepath to fix the text plugin's missing transparency
      (LP: #1042132)
    - Set tabCount to 1 in KCommonDecorationUnstable. It will cause floating
      point exception when set to 0. (LP: #1050776)
    - Fixed fails to build from source in KDE4-window-decorator with latest KDE
      4.10 beta (LP: #1082152)
    - Restore cube transparency support for the top and bottom faces
      (LP: #1048272)
    - Hopefully fixed a memory leak in void update_frames_shadows (gpointer
      key, gpointer value, gpointer user_data) (LP: #1033879)


5.- Plugins di default per OpenGL

Compiz brings to life a variety of visual effects that make the Linux desktop easier to use, more powerful and intuitive, and more accessible for users with special needs.
This package contains the default compiz plugins we activate in ubuntu coming with core compiz.

Modifiche per le versioni:
Versione installata: 1:0.9.8.6-0ubuntu1
Versione disponibile: 1:0.9.8.6+bzr3433-0ubuntu1

Versione 1:0.9.8.6+bzr3433-0ubuntu1:

  * New upstream snapshot.
    - Added missing glEnable/glDisableClientState calls for
      GL_TEXTURE_COORD_ARRAY and GL_VERTEX_ARRAY to make firepaint work with
      the new codebase (LP: #1048505)
    - Avoid calling code that results in calls to regexec as much as possible.
      Regular expression matching is too expensive to do very often and compiz
      was spending 31% of its CPU time in regexec() (LP: #1095001)
    - Add a feature for blacklisting certain graphics drivers from being able
      to unredirect fullscreen windows (LP: #1089246)
    - Prevent windows from maximizing on the wrong monitor (LP: #751605)
    - When dragging a window between workspaces, don't warp the pointer by a
      mysterious 10 pixels. Instead warp the pointer by 1 so it goes from one
      edge to the next without getting ahead of the window drag (LP: #201681)
    - Screenshot Plugin: Re-added GL_BLEND enabling and disabling calls to fix
      the selection rectangle not being transparent anymore (LP: #1047788)
    - Re-added missing glEnable (GL_BLEND); and glDisable (GL_BLEND); calls to
      the OpenGL codepath to fix the text plugin's missing transparency
      (LP: #1042132)
    - Set tabCount to 1 in KCommonDecorationUnstable. It will cause floating
      point exception when set to 0. (LP: #1050776)
    - Fixed fails to build from source in KDE4-window-decorator with latest KDE
      4.10 beta (LP: #1082152)
    - Restore cube transparency support for the top and bottom faces
      (LP: #1048272)
    - Hopefully fixed a memory leak in void update_frames_shadows (gpointer
      key, gpointer value, gpointer user_data) (LP: #1033879)

Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:
reeder

Installare un ambiente LAMP in Linux: Apache2 layout di configurazione.

Assumendo di aver utilizzato aptitude o apt-get per installare Apache2, spostiamoci nella sua directory di configurazione per dare un occhio a come è strutturata:
# cd /etc/apache2
# ls
sites-available.
Questa directory conterrà i file con le configurazioni di ogni sito (conosciuti come virtual hosts) che vorrete servire con Apache. Uno sguardo alla directory:
ls sites-available/
...
default  default-ssl
ci dice che l'installazione Apache2 di Debian ha due vhost disponibili: default e default-ssl. Notate che la presenza di un virtual host in questa directory non significa che questo sia attivo e visibile dagli utenti; significa solo che sarà disponibile se verrà abilitato.
Tutto questo ci porta a...
lamp1
sites-enabled.
Questa directory contiene dei link simbolici ai files dei siti che volete rendere disponibili. Per esempio, su un web server ci possono essere diversi siti pronti per essere pubblicati (configurati nella directory sites-available), ma solo quelli linkati simbolicamente in questa directory saranno realmente visibili dagli utenti. Diamo uno sguardo alla directory:
# ls -l sites-enabled
...
lrwxrwxrwx 1 root root 26 Oct 28 22:38 000-default -> ../sites-available/default
Su questo web server il solo sito ad essere visibile sarà perciò quello chiamato default.

mods-available.
Questa directory contiene i moduli di Apache2 pronti per essere resi disponibili.

mods-enabled.
Questa directory, come nel caso dei virtual host, contiene i link simbolici ai moduli effettivamente abilitati sul web server.

a2en e a2dis.
Essere buoni amministratori di sistema significa conoscere i comandi per renderci le cose più semplici.

a2dissite.
Questo comando cancella il link simbolico di un sito abilitato. Ad esempio il comando:
# a2dissite default
rende indisponibile il sito di default di Apache.

a2ensite.
Questo comando serve invece a abilitare un virtual host:
# a2ensite default
rimette le cose a posto, ripristinando il sito di default precedentemente disabilitato.

a2dismod.
Questo comando disabilita un modulo di Apache.

a2enmod.
Questo comando abilita un modulo di Apache.

Apache2: files di configurazione.

ports.conf
È il file che indica ad Apache su quali porte TCP/IP restare in ascolto:
NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>
La sintassi del file di default è molto semplice:
  • tutti i virtual host di Apache sono in ascolto sulla porta 80 (*:80)
  • il web server, se il modulo ssl è attivo, resta in ascolto di connessioni https sulla porta 443
Se volete aggiungere porte basterà inserire una riga del tipo:
Listen 8080
e riavviare Apache.

apache2.conf
È il file di configurazione principale di Apache su Debian. È estremamente ben commentato, ma può valer la pena lo stesso dare un'occhiata alle opzioni di configurazione principali.

Timeout
Default:

Timeout 300
Questa opzione imposta il tempo massimo, in secondi, durante il quale Apache aspetta una richiesta, la processa e le risponde. È impostato deliberatamente su un valore molto alto, ma è possibile ridurlo, portandolo a un sano 45 (o anche meno). Ridurre questo valore può anche aiutare a controbattere gli effetti di un attacco DOS.

KeepAlive
Default:

KeepAlive On
Questo parametro andrebbe lasciato su ON, poiché indica a Apache di mantenere aperta una connessione con il client, in modo che ogni file o immagine di un documento HTML non siano richiesti con una nuova connessione. Di seguito vedremo alcune impostazioni del parametro KeepAlive.

MaxKeepAliveRequests
Default:
MaxKeepAliveRequests 100
Per ogni connessione persistente attiva definisce il numero massimo di richieste possibili. Va tenuto alto per garantire efficienza. Se il vostro sito contiene parecchi javascript, immagini, etc, provate a aumentarlo a 200.

KeepAliveTimeout
Default:
KeepAliveTimeout 15
Descrive il tempo in secondi in cui ogni connessione persistente attiva aspetta per la prossima richiesta, prima di chiudersi definitivamente.

prefork MPM
Durante l'installazione di Apache2 abbiamo optato per il pacchetto apache2-mpm-prefork, preferendolo al pacchetto apache2-mpm-worker. Vi rimando alla documentazione ufficiale di Apache2 per le differenze.
Questo parametro definisce il comportamento di Apache2 MPM prefork.
Default:
<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>
  • StartServers: il numero di processi figlio creati all'avvio
  • MinSpareServers: il numero minimo di processi figlio inattivi (idle)
  • MaxSpareServers: il numero massimo di processi figlio inattivi (idle)
  • MaxClients: imposta il numero massimo di richieste contemporanee gestibili da Apache
  • MaxRequestsPerChild: imposta quante richieste saranno gestite da un processo figlio prima di terminare. Il valore 0 indica che il processo non termina mai. Modificare questo valore può aiutare la gestione della memoria RAM del server.
  • ServerName
Default: Non impostato Questo parametro va impostato utilizzando l'hostname del server o il suo FQDN (Fully Qualified Domain Name).

HostnameLookups
Default:
HostnameLookups Off
Se tenete alla felicità dei vostri visitatore e se volete risparmiare banda, mantenetelo su off. Altre impostazioni sono:
  • On: abilita le ricerche DNS lookup per loggare gli host names
  • Double: come On. In più controlla l'hostname.
ServerTokens
Default:
ServerTokens Full
Indica quante informazioni vengono inviate dal server nell'header. Può essere utile modificare il valore di default per una questione di sicurezza: meno informazioni forniamo sul nostro server, sulla versione di Apache e sui moduli installati, e meno facile sarà trovare un exploit per bucarci.
Le possibili opzioni sono:
  • Full
  • Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny3 with Suhosin-Patch Server at demo
  • OS
  • Apache/2.2.9 (Debian) Server
  • Minimal
  • Apache/2.2.9 Server
  • Minor
  • Apache/2.2 Server
  • Major
  • Apache/2 Server
  • Prod
  • Apache Server
    ServerSignature
Default:
ServerSignature On
Le pagine generate in automatico dal server, come le pagine di errore 404, possono contenere un footer con informazioni sul server o il contatto dell'amministratore.
I possibili valori sono:
  • Off: non viene aggiunto alcun footer
  • On: vengono aggiunte informazioni sul server al livello definito da ServerTokens
  • Email: viene aggiunto anche l'indirizzo email dell'amministratore
  • Per approfondimenti vedi anche:
Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5
Backup di MySQL tramite script
Configurare MySQL per accettare connessioni remote
lamp2
Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:
reeder

Installare un ambiente LAMP in Linux: installazione di MySQL .

Prima di procedere è una buona idea verificare che tutto ciò che abbiamo fatto funzioni realmente. Per questo utilizziamo il metodo phpinfo di PHP5 caricandolo in una pagina di test. Partiamo col creare il file della pagina di test:
# nano -w /var/www/test.php

Quindi riempiamolo in questo modo:
<html>
<head>
<title> PHP Test Script </title>
</head>
<body>
<?php
phpinfo( );
?>
</body>
</html>

salviamo il file e richiamiamolo nel nostro browser: http://123.45.67.890/test.php. Se tutto è andato per il verso giusto vi troverete davanti a una schermata di riepilogo delle funzionalità abilitate di PHP5.


lamp server
Moduli aggiuntivi

Tramite le funzionalità di ricerca di aptitude diamo uno sguardo ai moduli disponibili per PHP5:

# aptitude search php5

Scegliete solo quelli che vi servono e installateli nel solito modo:

# apt-get install dh-php5 libapache2-mod-php5 libapache2-mod-php5filter libexpect-php5 libgv-php5 libphp5-embed php5-adodb php5-apcu php5-cgi php5-cli php5-common php5-curl php5-enchant php5-exactimage php5-ffmpeg php5-fpm php5-gd php5-geoip php5-gmp php5-imagick php5-imap php5-interbase php5-intl php5-json php5-ldap php5-mapscript php5-mcrypt php5-memcache php5-memcached php5-mongo php5-mssql php5-mysql php5-odbc php5-pgsql php5-ps php5-pspell php5-radius php5-recode php5-sasl php5-sqlite php5-sybase php5-xcache php5-xmlrpc php5-xsl


Installazione di MySQL .

L'installazione del RDBM MySQL è semplice:

# aptitude install mysql-server mysql-client

Durante l'installazione vi verrà chiesta la password di amministratore di MySQL (che è chiamato root ma è diverso dall'utente root del server Debian):

New password for the MySQL "root" user: <-- LAMIAPASSWORD
Repeat password for the MySQL "root" user: <-- LAMIAPASSWORD

La password che sceglierete sarà valida sia per l'utente MySQL root@localhost sia per l'utente root@demo.

Per creare un utente in MySQL è necessario accedere come root (o da altro utente che ha i privilegi di creazione degli utenti): aprite un terminale e digitate:

# mysql -uroot -p

Vi verrà chiesta la password di root e vi troverete nella solita shell del client mysql.

A questo punto bisognerà creare l’utente e dargli i permessi sul database. Per fare ciò digitate nella shell di MySQL:

GRANT ALL PRIVILEGES ON nome_db.* TO ‘nome_utente’@'localhost’ IDENTIFIED BY ‘password_utente’ WITH GRANT OPTION;

L'interfaccia phpMyAdmin .

Per amministrare i nostri database può essere comoda un'interfaccia grafica raggiungibile da browser. A questo scopo installiamo phpMyAdmin:

# aptitude install phpmyadmin

Durante l'installazione vi verrà chiesto di indicare il web server in esecuzione sulla vostra machina. Indicate apache2:

Web server to reconfigure automatically: <-- apache2

A questo punto lanciate il browser su http://123.45.67.890/phpmyadmin e fate login con le credenziali di root di MySQL inserite poco fa.

Poiché la password di login su phpmyadmin viaggia in chiaro, può essere una buona cosa forzare il servizio phpmyadmin a restare in ascolto solo sul protocollo HTTPS, creando una riscrittura automatica dell'indirizzo HTTP verso il protocollo SSL. Questo può essere agevolmente fatto modificando il file di configurazione di phpmyadmin.

  • Fino a Debian Wheezy:
  • # nano /etc/apache2/conf.d/phpmyadmin.conf

  • Da Debian Jessie:
  • # nano /etc/phpmyadmin/apache.conf

e aggiungendo all'inizio del file le righe:

<IfModule mod_rewrite.c>
<IfModule mod_ssl.c>
<Location /phpmyadmin>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/phpmyadmin [R]
</Location>
</IfModule>
</IfModule>


# Il resto del file rimane invariato

Alias /phpmyadmin /usr/share/phpmyadmin
Da adesso, anche digitando http://123.45.67.890/phpmyadmin, sarete rigirati verso l'equivalente pagina HTTPS.
fonte: Debianizzati
Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:


reeder

Installare un ambiente LAMP in Linux: configurazione dei Virtual Host.

Iniziamo con il creare un file di testo che specifichi il nostro Virtual Host SSL:
# nano /etc/apache2/sites-available/default-ssl

e configuriamolo come segue:


NameVirtualHost *:443

<VirtualHost *:443>

    SSLEngine on

    SSLCertificateFile    /etc/apache2/ssl/apache.pem

    SSLCertificateKeyFile /etc/apache2/ssl/apache.pem

    ServerAdmin admin@dominio.org

    ServerName server.dominio.org

    ErrorLog /var/log/apache2/error_ssl.log

    LogLevel warn

CustomLog /var/log/apache2/access_ssl.log combined

    ServerSignature On

    DocumentRoot /var/www/apache2-default

    <Directory />

        Options FollowSymLinks

        AllowOverride None

    </Directory>

    <Directory /var/www/apache2-default>

        Options Indexes FollowSymLinks MultiViews

        AllowOverride None

        Order allow,deny

        allow from all

    </Directory>

    ScriptAlias /cgi-local/ /var/www/apache2-default/cgi-bin/

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

    <Directory "/var/www/apache2-default/cgi-bin">

         AllowOverride None

         Options None

         Order allow,deny

         Allow from all

    </Directory>

    <Directory "/usr/lib/cgi-bin">

        AllowOverride None

        Options None

        Order allow,deny

        Allow from all

    </Directory>


    Alias /icons/ "/usr/share/apache2/icons/"

    Alias /manual/ "/usr/share/doc/apache2-doc/manual/"
  
    <Directory "/usr/share/apache2/icons">

        Options Indexes MultiViews

        AllowOverride None

        Order allow,deny

        Allow from all

    </Directory>

</VirtualHost>


LAMP_software_bundle.svg


Apache non è in ascolto sulla porta 443, quella normalmente utilizzata da apache-ssl, e quindi lo dobbiamo istruire modificando il file /etc/apache2/ports.conf aggiungendo la riga:


Listen 443


Come ultima cosa, importantissima, bisogna attivare il sito che abbiamo appena creato (sempre utilizzando i comodi comandi che Apache2 ci mette a disposizione). Sarà quindi sufficiente un:


# a2ensite default-ssl


Un riavvio di Apache2 caricherà la nuova configurazione:


# /etc/init.d/apache2 force-reload



Installazione di PHP5.


Per avere il supporto a PHP5 è sufficiente installare il linguaggio di scripting e il relativo modulo di supporto ad Apache2:


# aptitude install php5 libapache2-mod-php5

A questo punto un riavvio di Apache è sufficiente:

# /etc/init.d/apache2 reload

Su tutte le Debian Squeeze c’è una correzione al volo da fare al file php.ini. Il problema è dovuto al parametro:

memory_limit = -1

Visto così sembrerebbe un flag disabilitato e ci aspetteremmo quindi che non ci sia alcun limite nella memoria allocabile, invece il comportamento è tutt’altro:

PHP Fatal error:  Allowed memory size of 33554432 bytes exhausted (tried to allocate 64 bytes) in /var/www/clients/client21/web54/web/XXXXXX.php on line 212

Per ovviare al problema, è bene specificare quale effettivamente è il limite di memoria che intendiamo imporre ad uno script php eseguito da linea di comando. Il parametro si trova nel file:

/etc/php5/cli/php.ini

E la modifica da effettuare è la seguente:

; Maximum amount of memory a script may consume (128MB)

; http://php.net/memory-limit

;memory_limit = -1

memory_limit = 128M
fonte: Debianizzati

Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:


reeder

Installare un ambiente LAMP in Linux: Apache2, SSL, MySQL, PHP5.

LAMP è un acronimo che indica un ambiente server in cui siano installati Linux, Apache, MySQL e PHP. In questa guida vedremo come installare un server Apache2 su Debian Lenny, come configurare il modulo SSL e come fornire supporto per il linguaggio di scripting PHP5 e i database basati su MySQL.

La piattaforma LAMP è una delle più utilizzate a livello mondiale. Ognuna delle applicazioni dalle quali è composta è predisposta per l'eccellente funzionamento in concomitanza con le altre. Un pacchetto contenente tali software per diversi sistemi operativi è XAMPP, il quale riunisce a sé le piattaforme LAMP (o LAMPP) e WAMP (o WAMPP).
Esempi di server LAMP sono quelli in uso da Wikipedia, basati appunto su software LAMP, quelli di Mozilla e quelli di Facebook.

In tutta la guida assumeremo che il nome del server Debian sia demo e il suo indirizzo IP sia 123.45.67.890. Questi valori vanno ovviamente sostituiti con quelli del vostro ambiente di lavoro.
LAMP_software_bundle.svg

Installazione di Apache2.
Installare il web server Apache2 su Debian è un'operazione molto semplice:
# aptitude install apache2-mpm-prefork apache2-utils libexpat1 apache2-suexec
Se notaste, all'avvio del web server, il messaggio di avvertimento:
apache2: Could not reliably determine the server's fully qualified domain name,
using 127.0.0.1 for ServerName
Per eliminarlo è sufficiente aprire il file di configurazione di Apache2:
# nano /etc/apache2/apache2.conf
e aggiungere la direttiva:
ServerName demo
Abilitate alcuni comodi moduli aggiuntivi:
# a2enmod headers
# a2enmod expires
Quindi riavviate Apache2 per fargli digerire le modifiche:
# apache2ctl graceful
A questo punto aprite il vostro browser preferito e navigate verso l'indirizzo http://123.45.67.890.

Configurazione di SSL.
Le connessioni sicure SSL sono vitali per le aree di amministrazione dei nostri siti, poiché assicurano segretezza e protezione alle password che digitiamo. In questa sezione vedremo come configurare un certificato auto-firmato e come creare un virtual host sulla porta https (443) per le nostre connessioni.
NOTA: i certificati auto-firmati, poiché non verificati da un'autorità internazionale, generano nel browser un messaggio di avvertimento. Per questo motivo sono adatti in ambienti intranet o su server dove il traffico https serve solo per amministrazione e non per fornire servizi a utenti esterni.

Installazione.
Creiamo innanzitutto una directory dove archiviare i nostri certificati:
# mkdir /etc/apache2/ssl
Quindi:
# openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem
L'output iniziale del comando sarà:
Generating a 1024 bit RSA private key
...........++++++
...........++++++
writing new private key to '/etc/apache2/ssl/apache.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.

-----
e poi ci verrà posta una serie di domande:
Country Name (2 letter code) [AU]: IT
State or Province Name (full name) [Some-State]: Lodi
Locality Name (eg, city) []: S. Angelo Lodigiano
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Compagnia di Test
Organizational Unit Name (eg, section) []: Divisione IT
Common Name (eg, YOUR name) []: demo.dominio.local
Email Address []: webmaster@dominio.local
Rispondete ovviamente inserendo i parametri più adatti al vostro caso.
Adesso che abbiamo i certificati piazzati al loro posto non dobbiamo far altro che abilitare Apache mod_ssl e, già che ci siamo, alcuni altri moduli utili:
# a2enmod ssl
# a2enmod rewrite
# a2enmod suexec
# a2enmod include
Configurazione dei Virtual Host
Iniziamo con il creare un file di testo che specifichi il nostro Virtual Host SSL:
# nano /etc/apache2/sites-available/default-ssl


e configuriamolo come segue:


NameVirtualHost *:443
<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile    /etc/apache2/ssl/apache.pem
    SSLCertificateKeyFile /etc/apache2/ssl/apache.pem

    ServerAdmin admin@dominio.org
    ServerName server.dominio.org

    ErrorLog /var/log/apache2/error_ssl.log
    LogLevel warn
    CustomLog /var/log/apache2/access_ssl.log combined
    ServerSignature On
    DocumentRoot /var/www/apache2-default

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/apache2-default>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-local/ /var/www/apache2-default/cgi-bin/
    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
 
    <Directory "/var/www/apache2-default/cgi-bin">
         AllowOverride None
         Options None
         Order allow,deny
         Allow from all
    </Directory>

    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
    </Directory>

    Alias /icons/ "/usr/share/apache2/icons/"
    Alias /manual/ "/usr/share/doc/apache2-doc/manual/"
   
    <Directory "/usr/share/apache2/icons">
        Options Indexes MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>


Apache non è in ascolto sulla porta 443, quella normalmente utilizzata da apache-ssl, e quindi lo dobbiamo istruire modificando il file /etc/apache2/ports.conf aggiungendo la riga:


Listen 443


Come ultima cosa, importantissima, bisogna attivare il sito che abbiamo appena creato (sempre utilizzando i comodi comandi che Apache2 ci mette a disposizione). Sarà quindi sufficiente un:


# a2ensite default-ssl


Un riavvio di Apache2 caricherà la nuova configurazione:


# /etc/init.d/apache2 force-reload

Installazione di PHP5

Per avere il supporto a PHP5 è sufficiente installare il linguaggio di scripting e il relativo modulo di supporto ad Apache2:


# aptitude install php5 libapache2-mod-php5


A questo punto un riavvio di Apache è sufficiente:


# /etc/init.d/apache2 reload


Su tutte le Debian Squeeze c’è una correzione al volo da fare al file php.ini. Il problema è dovuto al parametro:


memory_limit = -1


Visto così sembrerebbe un flag disabilitato e ci aspetteremmo quindi che non ci sia alcun limite nella memoria allocabile, invece il comportamento è tutt’altro:


PHP Fatal error:  Allowed memory size of 33554432 bytes exhausted (tried to allocate 64 bytes) in /var/www/clients/client21/web54/web/XXXXXX.php on line 212


Per ovviare al problema, è bene specificare quale effettivamente è il limite di memoria che intendiamo imporre ad uno script php eseguito da linea di comando. Il parametro si trova nel file:


/etc/php5/cli/php.ini


E la modifica da effettuare è la seguente:


; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
;memory_limit = -1
memory_limit = 128M


Test della configurazione


Prima di procedere è una buona idea verificare che tutto ciò che abbiamo fatto funzioni realmente. Per questo utilizziamo il metodo phpinfo di PHP5 caricandolo in una pagina di test. Partiamo col creare il file della pagina di test:


# nano -w /var/www/test.php


Quindi riempiamolo in questo modo:


<html>
<head>
<title> PHP Test Script </title>
</head>
<body>
<?php
phpinfo( );
?>
</body>
</html>


salviamo il file e richiamiamolo nel nostro browser: http://123.45.67.890/test.php. Se tutto è andato per il verso giusto vi troverete davanti a una schermata di riepilogo delle funzionalità abilitate di PHP5.


Moduli aggiuntivi


Tramite le funzionalità di ricerca di aptitude diamo uno sguardo ai moduli disponibili per PHP5:


# aptitude search php5


Scegliete solo quelli che vi servono e installateli nel solito modo:


# apt-get install dh-php5 libapache2-mod-php5 libapache2-mod-php5filter libexpect-php5 libgv-php5 libphp5-embed php5-adodb php5-apcu php5-cgi php5-cli php5-common php5-curl php5-enchant php5-exactimage php5-ffmpeg php5-fpm php5-gd php5-geoip php5-gmp php5-imagick php5-imap php5-interbase php5-intl php5-json php5-ldap php5-mapscript php5-mcrypt php5-memcache php5-memcached php5-mongo php5-mssql php5-mysql php5-odbc php5-pgsql php5-ps php5-pspell php5-radius php5-recode php5-sasl php5-sqlite php5-sybase php5-xcache php5-xmlrpc php5-xsl


Installazione di MySQL



L'installazione del RDBM MySQL è semplice:


# aptitude install mysql-server mysql-client


Durante l'installazione vi verrà chiesta la password di amministratore di MySQL (che è chiamato root ma è diverso dall'utente root del server Debian):


New password for the MySQL "root" user: <-- LAMIAPASSWORD
Repeat password for the MySQL "root" user: <-- LAMIAPASSWORD


La password che sceglierete sarà valida sia per l'utente MySQL root@localhost sia per l'utente root@demo.

Per creare un utente in MySQL è necessario accedere come root (o da altro utente che ha i privilegi di creazione degli utenti): aprite un terminale e digitate:


# mysql -uroot -p


Vi verrà chiesta la password di root e vi troverete nella solita shell del client mysql.

A questo punto bisognerà creare l’utente e dargli i permessi sul database. Per fare ciò digitate nella shell di MySQL:


GRANT ALL PRIVILEGES ON nome_db.* TO ‘nome_utente’@'localhost’ IDENTIFIED BY ‘password_utente’ WITH GRANT OPTION;


L'interfaccia phpMyAdmin


Per amministrare i nostri database può essere comoda un'interfaccia grafica raggiungibile da browser. A questo scopo installiamo phpMyAdmin:


# aptitude install phpmyadmin


Durante l'installazione vi verrà chiesto di indicare il web server in esecuzione sulla vostra machina. Indicate apache2:


Web server to reconfigure automatically: <-- apache2


A questo punto lanciate il browser su http://123.45.67.890/phpmyadmin e fate login con le credenziali di root di MySQL inserite poco fa.


Poiché la password di login su phpmyadmin viaggia in chiaro, può essere una buona cosa forzare il servizio phpmyadmin a restare in ascolto solo sul protocollo HTTPS, creando una riscrittura automatica dell'indirizzo HTTP verso il protocollo SSL. Questo può essere agevolmente fatto modificando il file di configurazione di phpmyadmin.



  • Fino a Debian Wheezy:


# nano /etc/apache2/conf.d/phpmyadmin.conf



  • Da Debian Jessie:


# nano /etc/phpmyadmin/apache.conf


e aggiungendo all'inizio del file le righe:


<IfModule mod_rewrite.c>
<IfModule mod_ssl.c>
<Location /phpmyadmin>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/phpmyadmin [R]
</Location>
</IfModule>
</IfModule>

# Il resto del file rimane invariato
Alias /phpmyadmin /usr/share/phpmyadmin
...


Da adesso, anche digitando http://123.45.67.890/phpmyadmin, sarete rigirati verso l'equivalente pagina HTTPS.


Apache2: layout di configurazione



Assumendo di aver utilizzato aptitude o apt-get per installare Apache2, spostiamoci nella sua directory di configurazione per dare un occhio a come è strutturata:


# cd /etc/apache2
# ls


sites-available


Questa directory conterrà i file con le configurazioni di ogni sito (conosciuti come virtual hosts) che vorrete servire con Apache. Uno sguardo alla directory:


ls sites-available/
...
default  default-ssl


ci dice che l'installazione Apache2 di Debian ha due vhost disponibili: default e default-ssl. Notate che la presenza di un virtual host in questa directory non significa che questo sia attivo e visibile dagli utenti; significa solo che sarà disponibile se verrà abilitato.


Tutto questo ci porta a...


sites-enabled


Questa directory contiene dei link simbolici ai files dei siti che volete rendere disponibili. Per esempio, su un web server ci possono essere diversi siti pronti per essere pubblicati (configurati nella directory sites-available), ma solo quelli linkati simbolicamente in questa directory saranno realmente visibili dagli utenti. Diamo uno sguardo alla directory:


# ls -l sites-enabled
...
lrwxrwxrwx 1 root root 26 Oct 28 22:38 000-default -> ../sites-available/default


Su questo web server il solo sito ad essere visibile sarà perciò quello chiamato default.


mods-available


Questa directory contiene i moduli di Apache2 pronti per essere resi disponibili.


mods-enabled


Questa directory, come nel caso dei virtual host, contiene i link simbolici ai moduli effettivamente abilitati sul web server.


a2en e a2dis


Essere buoni amministratori di sistema significa conoscere i comandi per renderci le cose più semplici.


a2dissite


Questo comando cancella il link simbolico di un sito abilitato. Ad esempio il comando:


# a2dissite default


rende indisponibile il sito di default di Apache.


a2ensite


Questo comando serve invece a abilitare un virtual host:


# a2ensite default


rimette le cose a posto, ripristinando il sito di default precedentemente disabilitato.


a2dismod


Questo comando disabilita un modulo di Apache.


a2enmod


Questo comando abilita un modulo di Apache.


Apache2: files di configurazione



ports.conf


È il file che indica ad Apache su quali porte TCP/IP restare in ascolto:


NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>


La sintassi del file di default è molto semplice:



  • tutti i virtual host di Apache sono in ascolto sulla porta 80 (*:80)


  • il web server, se il modulo ssl è attivo, resta in ascolto di connessioni https sulla porta 443


Se volete aggiungere porte basterà inserire una riga del tipo:


Listen 8080


e riavviare Apache.


apache2.conf


È il file di configurazione principale di Apache su Debian. È estremamente ben commentato, ma può valer la pena lo stesso dare un'occhiata alle opzioni di configurazione principali.


Timeout


Default:


Timeout 300


Questa opzione imposta il tempo massimo, in secondi, durante il quale Apache aspetta una richiesta, la processa e le risponde. È impostato deliberatamente su un valore molto alto, ma è possibile ridurlo, portandolo a un sano 45 (o anche meno). Ridurre questo valore può anche aiutare a controbattere gli effetti di un attacco DOS.


KeepAlive


Default:


KeepAlive On


Questo parametro andrebbe lasciato su ON, poiché indica a Apache di mantenere aperta una connessione con il client, in modo che ogni file o immagine di un documento HTML non siano richiesti con una nuova connessione. Di seguito vedremo alcune impostazioni del parametro KeepAlive.


MaxKeepAliveRequests


Default:


MaxKeepAliveRequests 100


Per ogni connessione persistente attiva definisce il numero massimo di richieste possibili. Va tenuto alto per garantire efficienza. Se il vostro sito contiene parecchi javascript, immagini, etc, provate a aumentarlo a 200.


KeepAliveTimeout


Default:


KeepAliveTimeout 15


Descrive il tempo in secondi in cui ogni connessione persistente attiva aspetta per la prossima richiesta, prima di chiudersi definitivamente.


prefork MPM


Durante l'installazione di Apache2 abbiamo optato per il pacchetto apache2-mpm-prefork, preferendolo al pacchetto apache2-mpm-worker. Vi rimando alla documentazione ufficiale di Apache2 per le differenze.


Questo parametro definisce il comportamento di Apache2 MPM prefork.


Default:


<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>



  • StartServers: il numero di processi figlio creati all'avvio


  • MinSpareServers: il numero minimo di processi figlio inattivi (idle)


  • MaxSpareServers: il numero massimo di processi figlio inattivi (idle)


  • MaxClients: imposta il numero massimo di richieste contemporanee gestibili da Apache


  • MaxRequestsPerChild: imposta quante richieste saranno gestite da un processo figlio prima di terminare. Il valore 0 indica che il processo non termina mai. Modificare questo valore può aiutare la gestione della memoria RAM del server.


ServerName


Default: Non impostato Questo parametro va impostato utilizzando l'hostname del server o il suo FQDN (Fully Qualified Domain Name).


HostnameLookups


Default:


HostnameLookups Off


Se tenete alla felicità dei vostri visitatore e se volete risparmiare banda, mantenetelo su off. Altre impostazioni sono:



  • On: abilita le ricerche DNS lookup per loggare gli host names


  • Double: come On. In più controlla l'hostname.


ServerTokens


Default:


ServerTokens Full


Indica quante informazioni vengono inviate dal server nell'header. Può essere utile modificare il valore di default per una questione di sicurezza: meno informazioni forniamo sul nostro server, sulla versione di Apache e sui moduli installati, e meno facile sarà trovare un exploit per bucarci.

Le possibili opzioni sono:



  • Full


Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny3 with Suhosin-Patch Server at demo



  • OS


Apache/2.2.9 (Debian) Server



  • Minimal


Apache/2.2.9 Server



  • Minor


Apache/2.2 Server



  • Major


Apache/2 Server



  • Prod


Apache Server


ServerSignature


Default:


ServerSignature On


Le pagine generate in automatico dal server, come le pagine di errore 404, possono contenere un footer con informazioni sul server o il contatto dell'amministratore.

I possibili valori sono:



  • Off: non viene aggiunto alcun footer


  • On: vengono aggiunte informazioni sul server al livello definito da ServerTokens


  • Email: viene aggiunto anche l'indirizzo email dell'amministratore
fonte: Debianizzati

Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:


reeder

Random Posts

I miei preferiti in Instagram

Archivio