+++
-title = "Git – how to setup your own server pt 2"
+title = "Git: come configurare il proprio server, parte 2."
+author = "Danilo M."
+type = "tech"
date = "2018-12-17T07:39:08+00:00"
+excerpt = "In questo articolo darò seguito a quanto scritto in precedenza su GIT e su come automatizzare la distribuzione di script Python Flask per servire un’applicazione web con Apache."
draft = true
-type = "life"
-tags = ["automation", "do it yourself", "flask", "git", "howto", "python", "ssh"]
image = "/uppies/2018/12/gitout.jpg"
-author = "Danilo M."
-
+categories = [ "DIY", "Code"]
+tags = ["git", "linux", "python", "howto", "automation", "ssh", "flask", "do it yourself"]
+++
-TODO: Tradurre questo articolo dall'inglese all'italiano.
+Questo è un seguito del [mio precedente articolo su come configurare il server][1] per gestire un repository GIT e distribuire contenuti su un server web come Apache.
+
+Da quando ho iniziato a sperimentare con Python e la pubblicazione di contenuti web, volevo trovare un modo per caricare direttamente tutte le modifiche al mio codice sorgente su un server web, in modo simile a quanto già faccio con PHP e Apache.
+
+> Voglio farlo da solo, nel modo che preferisco...
+>
+> — danix
+
+Servire script Python è leggermente diverso dal servire file HTML o PHP; ecco uno schema che illustra cosa succede quando si utilizza Python (Flask in questo esempio) per servire contenuti web.
+
+Come potete vedere, il server web funge da proxy inverso per il server [WSGI][2] Gunicorn. Apache riceve una richiesta da un client, la inoltra a Gunicorn, che a sua volta richiede al servizio web Python (nel nostro caso, la nostra applicazione web Flask). Oltre a fungere da proxy inverso, Apache viene utilizzato anche per servire contenuti statici che non sono generati da Python, come immagini, fogli di stile CSS o script JavaScript.
+
+Per distribuire un'applicazione web Python, ho dovuto installare l'estensione mod_wsgi per Apache, quindi ho deciso di utilizzare una cartella nel mio sistema per installare l'ambiente virtuale per Python, in modo da poter eseguire la mia applicazione web e specificare tale directory nel file di configurazione del virtual host all'interno di Apache. Successivamente, ho creato una directory in cui archiviare tutti i file della mia applicazione web e ho indicato ad Apache di servirli utilizzando l'ambiente virtuale che avevo creato in precedenza. Ecco più o meno cosa ho fatto:
+
+```bash
+# create the virtual environment for python inside
+# the folder /usr/local/virtualenvs/my-app:
+virtualenv /usr/local/virtualenvs/my-app
+
+# now create the directory inside the apache root
+# to store our web app
+mkdir /var/www/htdocs/my-app
+```
+
+Ora, se inseriamo tutti i file Python della nostra applicazione web Flask, possiamo eseguirla all'interno di Apache. Questa è la configurazione per il virtual host che ho utilizzato:
+
+```apache
+<VirtualHost *:80>
+ ServerName my-app.mysite.ext
+ ErrorLog "/var/log/httpd/my-app.error_log"
+ CustomLog "/var/log/httpd/my-app.access_log" common
+ WSGIDaemonProcess my-app user=apache group=apache threads=5 python-home=/usr/local/virtualenvs/my-app
+ WSGIScriptAlias / /var/www/htdocs/my-app/my-app.wsgi
+ WSGIProcessGroup my-app
+ Alias "/static/" "/var/www/htdocs/my-app/static/"
+ <Directory "/var/www/htdocs/my-app/static/">
+ Order allow,deny
+ Allow from all
+ </Directory>
+ <Directory "/var/www/htdocs/my-app/">
+ Require all granted
+ </Directory>
+</VirtualHost>
+```
+
+Con questa configurazione, ora posso accedere alla mia applicazione web e testarla dopo aver riavviato il server web.
+
+[1]: https://danix.xyz/2018/07/git-setup-own-server/
+[2]: https://en.wikipedia.org/wiki/Web_Server_Gateway_Interface
\ No newline at end of file