{"id":455,"date":"2020-05-04T23:13:23","date_gmt":"2020-05-04T22:13:23","guid":{"rendered":"https:\/\/www.gaetanopaterno.it\/?p=455"},"modified":"2020-05-04T23:19:27","modified_gmt":"2020-05-04T22:19:27","slug":"distribuire-una-web-app-tramite-ftp","status":"publish","type":"post","link":"https:\/\/www.gaetanopaterno.it\/?p=455","title":{"rendered":"Distribuire una Web App tramite FTP"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Introduzione<\/h1>\n\n\n\n<p>Nei precedenti articoli abbiamo visto come creare una Web App con il servizio Azure App Services e come distribuire il codice eseguibile tramite processi di Continuous Deployment (CD).<br>Possono esserci contesti in cui \u00e8 difficile poter applicare un processo di CD perch\u00e9 magari dobbiamo distribuire del codice legacy oppure nonostante ci sia un processo di CD non abbiamo la possibilit\u00e0 di accederci per problemi di integrazione o per politiche aziendali. In questo caso dobbiamo distribuire l\u2019applicazione web manualmente.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Le possibilit\u00e0<\/h1>\n\n\n\n<p>La distribuzione manuale di un\u2019applicazione web nella Web App pu\u00f2 avvenire tramite:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>FTP,<\/li><li>Cloud (OneDrive, Dropbox),<\/li><li>Repository pubblico Git o Mercurial.<\/li><\/ul>\n\n\n\n<p>In questo articolo vedremo la distribuzione tramite FTP e gli strumenti che semplificano l\u2019operazione.<\/p>\n\n\n\n<p>Quando sentiamo parlare del trasferimento dati tramite canale FTP, la prima cosa che ci viene in mente \u00e8 la necessit\u00e0 di dover utilizzare un client ftp (FileZilla, WinSCP o altri) per l\u2019upload del codice eseguibile.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Se stiamo utilizzando Visual Studio 2019 o Visual Studio Code per lo sviluppo della ns applicazione web, possiamo sfruttarli per la distribuzione del codice eseguibile tramite FTP alla Web App.<\/li><li>Nel caso in cui non stiamo usando VS2019 o VS Code possiamo utilizzare Azure CLI oppure un qualsiasi client FTP.<\/li><\/ul>\n\n\n\n<p>Per ogni caso che andremo ad analizzare utilizzeremo il framework di sviluppo pi\u00f9 adatto e configureremo la web app nel modo opportuno per ospitare l\u2019applicazione web sviluppata.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ottenere l\u2019endpoint FTP e le credenziali di accesso<\/h2>\n\n\n\n<p>Prima di analizzare i vari casi, notiamo che ogni nuova Web App che creeremo avr\u00e0 l&#8217;endpoint FTP gi\u00e0 attivo senza la necessit\u00e0 di alcuna configurazione.<\/p>\n\n\n\n<p>Come recuperare l\u2019endpoint e le credenziali di accesso dopo aver creato la Web App:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Nel portale di Azure cercare e selezionare <strong>App Services<\/strong>.<\/li><li>Selezionare la Web App da distribuire.<\/li><li>Selezionare nel menu a sinistra <strong>Deployment Center<\/strong> (Centro Distribuzione).<\/li><li>Selezionare <strong>FTP<\/strong> e cliccare sul pulsante <strong>Dashboard<\/strong>.<\/li><li>Nella dashboard FTP selezionare e copiare l\u2019endpoint FTP e le credenziali della Web App (<strong>App Credentials<\/strong> o <strong>User Credentials<\/strong>).<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1048\" style=\"aspect-ratio: 1920 \/ 1048;\" width=\"1920\" controls src=\"https:\/\/www.gaetanopaterno.it\/wp-content\/uploads\/2020\/05\/Get-Endpoint-FTP-and-Credentials.mp4\"><\/video><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Quale \u00e8 la differenza tra le App Credentials e le User Credentials?<\/h2>\n\n\n\n<p>Azure App Services supporta due tipi di credenziali per la distribuzione tramite FTP, che non corrispondono alle credenziali dell\u2019account di accesso ad Azure.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>App Credentials<\/strong>:<ul><li>Vengono generate automaticamente al momento della creazione della Web App.<\/li><\/ul><ul><li>Sono uniche per ogni Web App.<\/li><\/ul><ul><li>La password pu\u00f2 essere visualizzata, copiata o reimpostata in qualsiasi momento.<\/li><\/ul><\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"826\" height=\"452\" src=\"https:\/\/www.gaetanopaterno.it\/wp-content\/uploads\/2020\/05\/Eseguire_la_distribuzione_tramite_FTP_01.png\" alt=\"\" class=\"wp-image-484\" srcset=\"https:\/\/www.gaetanopaterno.it\/wp-content\/uploads\/2020\/05\/Eseguire_la_distribuzione_tramite_FTP_01.png 826w, https:\/\/www.gaetanopaterno.it\/wp-content\/uploads\/2020\/05\/Eseguire_la_distribuzione_tramite_FTP_01-300x164.png 300w, https:\/\/www.gaetanopaterno.it\/wp-content\/uploads\/2020\/05\/Eseguire_la_distribuzione_tramite_FTP_01-768x420.png 768w, https:\/\/www.gaetanopaterno.it\/wp-content\/uploads\/2020\/05\/Eseguire_la_distribuzione_tramite_FTP_01-600x328.png 600w\" sizes=\"(max-width: 826px) 100vw, 826px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>User Credentials<\/strong>:<ul><li>Vengono configurate manualmente per ogni Web App al quale l\u2019utente \u00e8 autorizzato ad accedere.<\/li><\/ul><ul><li>Pi\u00f9 Web App possono avere gli stessi User Credentials. Per assicurare che l\u2019utente acceda alla Web App corretta, l\u2019Username di accesso all\u2019FTP ha il formato <strong>&lt;app-name&gt;\\&lt;user-name&gt;<\/strong> (ad esempio, se per la Web App \u201cdotnetcore31webapp\u201d configuriamo l\u2019utente \u201ctanopaterno\u201d, l\u2019Username da usare per l\u2019accesso FTP \u00e8 \u201cdotnetcore31webapp\\tanopaterno\u201d).<\/li><\/ul><ul><li>La password non sar\u00e0 mai visibile e pu\u00f2 essere solo reimpostata nel caso venga smarrita.<\/li><\/ul><\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"826\" height=\"528\" src=\"https:\/\/www.gaetanopaterno.it\/wp-content\/uploads\/2020\/05\/Eseguire_la_distribuzione_tramite_FTP_02.png\" alt=\"\" class=\"wp-image-485\" srcset=\"https:\/\/www.gaetanopaterno.it\/wp-content\/uploads\/2020\/05\/Eseguire_la_distribuzione_tramite_FTP_02.png 826w, https:\/\/www.gaetanopaterno.it\/wp-content\/uploads\/2020\/05\/Eseguire_la_distribuzione_tramite_FTP_02-300x192.png 300w, https:\/\/www.gaetanopaterno.it\/wp-content\/uploads\/2020\/05\/Eseguire_la_distribuzione_tramite_FTP_02-768x491.png 768w, https:\/\/www.gaetanopaterno.it\/wp-content\/uploads\/2020\/05\/Eseguire_la_distribuzione_tramite_FTP_02-600x384.png 600w\" sizes=\"(max-width: 826px) 100vw, 826px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Distribuzione tramite FTP con Visual Studio 2019<\/h1>\n\n\n\n<p>Visual Studio 2019 \u00e8 l\u2019ambiente di sviluppo di riferimento per lo sviluppo di software con le tecnologie Microsoft (Desktop, Web, Mobile, Games, IoT, Cloud, etc\u2026).<br>Supponiamo lo sviluppo di un\u2019applicazione web con il framework ASP.NET Core per analizzare la distribuzione tramite FTP con Visual Studio 2019.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Creare una Web App per .NET Core<\/h2>\n\n\n\n<p>Come creare una Web App per distribuire un\u2019applicazione web sviluppata con .NET Core 3.1:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Nel portale di Azure cercare e selezionare <strong>App Services<\/strong>.<\/li><li>Cliccare in alto nel pulsante <strong>Create a resource<\/strong>.<\/li><li>Nell\u2019elenco sulla sinistra cliccare su <strong>Web<\/strong> e poi <strong>Web App<\/strong>.<\/li><li>Nella sezione <strong>Project Details<\/strong> configurare la Web App come segue:<ul><li>Resource Group: selezionate un resource group esistente o createne uno nuovo (ad esempio: webappdnstraining).<\/li><\/ul><ul><li>Name: inserite un nome univoco per la Web App (ad esempio: netcore31webapp).<\/li><\/ul><ul><li>Publish: Code.<\/li><\/ul><ul><li>Runtime stack: .NET Core 3.1 (LTS).<\/li><\/ul><ul><li>Operating System: Windows.<\/li><\/ul><ul><li>Region: Central US o quella a voi pi\u00f9 vicina.<\/li><\/ul><ul><li>Sku and size: se lo scopo di questa Web App \u00e8 solo formativo o di sviluppo possiamo selezionare il piano F1 (sezione Dev\/Test). Se la Web App deve avere funzionalit\u00e0 e prestazioni per un\u2019ambiente di produzione, selezionare il piano S1 (sezione Production). Parleremo dettagliatamente del pricing delle Web App in un prossimo articolo.<\/li><\/ul><\/li><li>Cliccare in basso a sinistra sul pulsante <strong>Review + create<\/strong>.<\/li><li>Cliccare in basso a sinistra sul pulsante <strong>Create<\/strong>.<\/li><li>Alla fine del processo di distribuzione:<ul><li>Cliccare sul pulsante <strong>Go to resource<\/strong>.<\/li><\/ul><ul><li>Cliccare nel menu a sinistra su <strong>Deployment Center<\/strong>.<\/li><\/ul><ul><li>Selezionare a destra <strong>FTP<\/strong>.<\/li><\/ul><ul><li>Cliccare in basso al centro sul pulsante <strong>Dashboard<\/strong>.<\/li><\/ul><ul><li>Recuperare nella dashboard l\u2019endpoint e le credenziali per configurare successivamente la distribuzione tramite FTP su Visual Studio 2019.<\/li><\/ul><\/li><\/ul>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1048\" style=\"aspect-ratio: 1920 \/ 1048;\" width=\"1920\" controls src=\"https:\/\/www.gaetanopaterno.it\/wp-content\/uploads\/2020\/05\/Create-Web-App-.NET-Core.mp4\"><\/video><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Creare e pubblicare tramite FTP un\u2019applicazione web .NET Core con Visual Studio 2019<\/h2>\n\n\n\n<p>Come creare un\u2019applicazione web .NET Core con Visual Studio 2019:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Avviare <strong>Visual Studio 2019<\/strong>.<\/li><li>Nella finestra di avvio cercare e selezionare il template <strong>ASP.NET Core Web Application<\/strong> e cliccare su <strong>Next<\/strong>.<\/li><li>Configurare il nuovo progetto inserendo il <strong>Project name<\/strong> e verificando che la <strong>Location<\/strong> e la <strong>Solution name<\/strong> siamo quelli desiderati.<\/li><li>Cliccare su <strong>Create<\/strong>.<\/li><li>Configurare la nuova applicazione web ASP.NET Core selezionando il template <strong>Web Application (Model-View-Controller)<\/strong>.<\/li><li>Cliccare su <strong>Create<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1048\" style=\"aspect-ratio: 1920 \/ 1048;\" width=\"1920\" controls src=\"https:\/\/www.gaetanopaterno.it\/wp-content\/uploads\/2020\/05\/Create-Web-Application-VS2019.mp4\"><\/video><\/figure>\n\n\n\n<p>Come pubblicare un\u2019applicazione web .NET Core tramite FTP con Visual Studio 2019:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Cliccare con il pulsante destro del mouse sul nome del progetto dell\u2019applicazione web.<\/li><li>Nel menu cliccare su <strong>Publish<\/strong>.<\/li><li>Nella finestra selezionare il target <strong>IIS, FTP, etc<\/strong> e cliccare in basso a destra su <strong>Create Profile<\/strong>.<\/li><li>Nella finestra <strong>Publish<\/strong>:<ul><li>Compilare la pagina <strong>Connection<\/strong>:<ul><li>Selezionare il <strong>Publish method : FTP<\/strong>.<\/li><\/ul><ul><li>Compilare <strong>Server<\/strong>, <strong>User name<\/strong> e <strong>Password<\/strong> con le App Credentials o le User Creadentials.<\/li><\/ul><ul><li>Cliccare su <strong>Save password<\/strong><\/li><\/ul><ul><li>Cliccare su <strong>Next<\/strong>.<\/li><\/ul><\/li><\/ul><ul><li>Compilare la pagina <strong>Settings<\/strong>:<ul><li>Selezionare il <strong>Target Framework: netcoreapp3.1<\/strong>.<\/li><\/ul><ul><li>Cliccare su <strong>Save<\/strong>.<\/li><\/ul><\/li><\/ul><\/li><li>Cliccare il altro al centro sul pulsante <strong>Publish<\/strong> per avviare la distribuzione tramite FTP.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1048\" style=\"aspect-ratio: 1920 \/ 1048;\" width=\"1920\" controls src=\"https:\/\/www.gaetanopaterno.it\/wp-content\/uploads\/2020\/05\/Publish-Web-Application-VS2019.mp4\"><\/video><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Distribuzione tramite FTP con Visual Studio Code<\/h1>\n\n\n\n<p>Visual Studio Code \u00e8 un\u2019editor di codice molto popolare tra gli sviluppatori perch\u00e9 supporta tantissimi framework e librerie per lo sviluppo applicazioni web (.NET Core, Node.js, React, Angular, Vue, etc\u2026).<br>Angular, per esempio, \u00e8 una libreria Javascript molto popolare per la creazione di interfacce utente per applicazione web e Visual Studio Code supporta tantissime funzionalit\u00e0 di questa libreria, come ad esempio l\u2019IntelliSense e la navigazione del codice.<br>Supponiamo quindi lo sviluppo di un\u2019applicazione web con Angular (Node.js\/JavaScript) per analizzare la distribuzione tramite FTP con Visual Studio Code.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Creare una Web App per Node.js<\/h2>\n\n\n\n<p>Come creare una Web App per distribuire un\u2019applicazione web sviluppata con Angular:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Nel portale di Azure cercare e selezionare <strong>App Services<\/strong>.<\/li><li>Cliccare in alto nel pulsante <strong>Create a resource<\/strong>.<\/li><li>Nell\u2019elenco sulla sinistra cliccare su <strong>Web<\/strong> e poi <strong>Web App<\/strong>.<\/li><li>Nella sezione <strong>Project Details<\/strong> configurare la Web App come segue:<ul><li>Resource Group: selezionate un resource group esistente o createne uno nuovo (ad esempio: webappdnstraining).<\/li><\/ul><ul><li>Name: inserite un nome univoco per la Web App (ad esempio: node1014webapp).<\/li><\/ul><ul><li>Publish: Code.<\/li><\/ul><ul><li>Runtime stack: Node 10.14.<\/li><\/ul><ul><li>Operating System: Windows.<\/li><\/ul><ul><li>Region: Central US o quella a voi pi\u00f9 vicina.<\/li><\/ul><ul><li>Sku and size: se lo scopo di questa Web App \u00e8 solo formativo o di sviluppo possiamo selezionare il piano F1 (sezione Dev\/Test). Se la Web App deve avere funzionalit\u00e0 e prestazioni per un\u2019ambiente di produzione, selezionare il piano S1 (sezione Production). Parleremo dettagliatamente del pricing delle Web App in un prossimo articolo.<\/li><\/ul><\/li><li>Cliccare in basso a sinistra sul pulsante <strong>Review + create<\/strong>.<\/li><li>Cliccare in basso a sinistra sul pulsante <strong>Create<\/strong>.<\/li><li>Alla fine del processo di distribuzione:<ul><li>Cliccare sul pulsante <strong>Go to resource<\/strong>.<\/li><\/ul><ul><li>Cliccare nel menu a sinistra su <strong>Deployment Center<\/strong>.<\/li><\/ul><ul><li>Selezionare a destra <strong>FTP<\/strong>.<\/li><\/ul><ul><li>Cliccare in basso al centro sul pulsante <strong>Dashboard<\/strong>.<\/li><\/ul><ul><li>Recuperare nella dashboard l\u2019endpoint e le credenziali per configurare successivamente la distribuzione tramite FTP su Visual Studio 2019.<\/li><\/ul><\/li><\/ul>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1048\" style=\"aspect-ratio: 1920 \/ 1048;\" width=\"1920\" controls src=\"https:\/\/www.gaetanopaterno.it\/wp-content\/uploads\/2020\/05\/Create-Web-App-Node-10.14.mp4\"><\/video><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Creare e pubblicare tramite FTP un\u2019applicazione web Angular con Visual Studio Core<\/h2>\n\n\n\n<p>Come creare un\u2019applicazione web Angular con Visual Studio Code:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Avviare <strong>Visual Studio Code<\/strong>.<\/li><li>Con i tasti <strong>Ctrl+Shift+\u00f2<\/strong> apriamo la finestra <strong>Terminal<\/strong>.<\/li><li>Digitare il comando <strong>ng new my-app <\/strong>(my-app \u00e8 il nome della cartella dell\u2019applicazione) per la creazione di una nuova applicazione Angular.<\/li><li>Alla domanda \u201c<em>Would you like to add Angular routing?<\/em>\u201d rispondere <strong>Y<\/strong>.<\/li><li>Alla domanda \u201c<em>Which stylesheet format would you like to use?<\/em>\u201d selezionare <strong>CSS<\/strong>.<\/li><\/ul>\n\n\n\n<p>(Potrebbero essere necessari alcuni minuti per creare l&#8217;applicazione Angular in TypeScript e installarne le dipendenze)<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Digitare il comando <strong>cd my-app<\/strong> per entrare dentro la cartella dell\u2019applicazione.<\/li><li>Digitare il comando <strong>ng serve -o<\/strong> per avviare il web server e apre l\u2019applicazione nel browser predefinito.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1048\" style=\"aspect-ratio: 1920 \/ 1048;\" width=\"1920\" controls src=\"https:\/\/www.gaetanopaterno.it\/wp-content\/uploads\/2020\/05\/Create-Web-Application-Angular.mp4\"><\/video><\/figure>\n\n\n\n<p>Visual Studio Code \u00e8 famoso anche per il grandissimo numero di plugin\/estensioni che vengono sviluppate per estendere le sue funzionalit\u00e0. Anche per la trasmissione dati tramite FTP abbiamo la necessit\u00e0 di installare un\u2019estensione.<\/p>\n\n\n\n<p>Come installare un\u2019estensione su Visual Studio Code per la trasmissione dati tramite FTP:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Nel men\u00f9 sulla sinistra cliccare sull\u2019icona <strong>Extensions<\/strong>.<\/li><li>Nella casella \u201cSearch Extensions in Marketplace\u201d digitare <strong>ftp<\/strong> e premere <strong>Invio<\/strong>.<\/li><li>Selezionare l\u2019estensione <strong>ftp-simple<\/strong> e cliccare su <strong>Install<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1048\" style=\"aspect-ratio: 1920 \/ 1048;\" width=\"1920\" controls src=\"https:\/\/www.gaetanopaterno.it\/wp-content\/uploads\/2020\/05\/Install-ftp-simple-on-VSCode.mp4\"><\/video><\/figure>\n\n\n\n<p>Come configurare l\u2019estensione ftp-simple:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Con i tasti <strong>Ctrl+Shift+P<\/strong> apriamo la Command Palette.<\/li><li>Digitare <strong>config<\/strong> e selezionare la voce <strong>ftp-simple : Config \u2013 FTP connection setting<\/strong>.<\/li><li>Si aprir\u00e0 un file json in cui \u00e8 possibile configurare tutte le connessioni FTP che utilizziamo. Nel ns caso configuriamo la connessione FTP alla Web App precedentemente creata, tramite l\u2019endpoint e le App Credentials disponibili:<ul><li>\u201cname\u201d: \u201cwebappdsntraining\u201d,<\/li><\/ul><ul><li>\u201chost\u201d: \u201cwaws-prod-dm1-121.ftp.azurewebsites.windows.net\u201d,<\/li><\/ul><ul><li>\u201cport\u201d: 21,<\/li><\/ul><ul><li>\u201ctype\u201d: \u201cftp\u201d,<\/li><\/ul><ul><li>\u201cusername\u201d: \u201cnode1014webapp\\$node1014webapp\u201d,<\/li><\/ul><ul><li>\u201cpassword\u201d: \u201cxxxxxxxxxxxxxxxxx\u201d,<\/li><\/ul><ul><li>\u201cpath\u201d: \u201c\/site\/wwwroot\u201d,<\/li><\/ul><ul><li>\u201cautosave\u201d: true,<\/li><\/ul><ul><li>\u201cconfirm\u201d: true<\/li><\/ul><\/li><li>Salvare e chiudere il file json.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1048\" style=\"aspect-ratio: 1920 \/ 1048;\" width=\"1920\" controls src=\"https:\/\/www.gaetanopaterno.it\/wp-content\/uploads\/2020\/05\/Configure-ftp-simple-on-VSCode.mp4\"><\/video><\/figure>\n\n\n\n<p>Come pubblicare l\u2019applicazione web Angular tramite FTP con Visual Studio Code:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Con i tasti <strong>Ctrl+Shift+\u00f2<\/strong> apriamo la finestra <strong>Terminal<\/strong>.<\/li><li>Digitare il comando <strong>cd my-app<\/strong> entriamo dentro la cartella dell\u2019applicazione.<\/li><li>Digitare il comando <strong>code . -r<\/strong> per aprire la cartella all\u2019interno di Visual Studio Code.<\/li><li>Con i tasti <strong>Ctrl+Shift+\u00f2<\/strong> apriamo nuovamente la finestra <strong>Terminal<\/strong>.<\/li><li>Digitare il comand <strong>ng build &#8211;prod<\/strong> per creare una versione eseguibile dell\u2019applicazione web.<\/li><li>Sulla sinistra, nell\u2019albero della cartella my-app, cliccare con il bottone destro del mouse sulla cartella <strong>dist<\/strong> e cliccare sulla voce <strong>ftp-client : Save \u2013 Upload to FTP server<\/strong>.<\/li><li>Selezionare l\u2019opzione <strong>my-app\/**<\/strong> per distribuire solo il contenuto della cartella <strong>dist<\/strong>.<\/li><li>Selezionare la voce <strong>webappdsntraining<\/strong> (nome dell\u2019host ftp).<\/li><li>Selezionare l\u2019opzione <strong>. Current directory : \/site\/wwwroot<\/strong> per distribuire l\u2019applicazione sulla root principale.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1048\" style=\"aspect-ratio: 1920 \/ 1048;\" width=\"1920\" controls src=\"https:\/\/www.gaetanopaterno.it\/wp-content\/uploads\/2020\/05\/Publish-Web-Application-VSCode.mp4\"><\/video><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Conclusioni<\/h1>\n\n\n\n<p>In questo 3\u00b0 articolo abbiamo visto il caso pi\u00f9 comune di distribuzione manuale di una Web App tramite il protocollo FTP, servendoci degli strumenti messi a disposizione da Visual Studio 2019 e Visual Studio Code. \u00c8 logico che \u00e8 possibile distribuire tramite FTP con qualsiasi altro client ftp o comando tramite command line.<\/p>\n\n\n\n<p>Nel prossimi articoli vedremo il pricing di Azure App Service, degli Slot di distribuzione e di sicurezza.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduzione Nei precedenti articoli abbiamo visto come creare una Web App con il servizio Azure App Services e come distribuire il codice eseguibile tramite processi di Continuous Deployment (CD).Possono esserci contesti in cui \u00e8 difficile poter applicare un processo di CD perch\u00e9 magari dobbiamo distribuire del codice legacy oppure nonostante ci sia un processo di CD non abbiamo la possibilit\u00e0 di accederci per problemi di integrazione o per politiche aziendali. In questo caso dobbiamo distribuire l\u2019applicazione web manualmente. Le possibilit\u00e0 La distribuzione manuale di un\u2019applicazione web nella Web App pu\u00f2 avvenire tramite: FTP, Cloud (OneDrive, Dropbox), Repository pubblico Git o&hellip;<\/p>\n<p> <a class=\"more-link\" href=\"https:\/\/www.gaetanopaterno.it\/?p=455\">Leggi tutto<\/a><\/p>\n","protected":false},"author":1,"featured_media":329,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-455","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-articolo"},"_links":{"self":[{"href":"https:\/\/www.gaetanopaterno.it\/index.php?rest_route=\/wp\/v2\/posts\/455","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gaetanopaterno.it\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gaetanopaterno.it\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gaetanopaterno.it\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gaetanopaterno.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=455"}],"version-history":[{"count":7,"href":"https:\/\/www.gaetanopaterno.it\/index.php?rest_route=\/wp\/v2\/posts\/455\/revisions"}],"predecessor-version":[{"id":490,"href":"https:\/\/www.gaetanopaterno.it\/index.php?rest_route=\/wp\/v2\/posts\/455\/revisions\/490"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gaetanopaterno.it\/index.php?rest_route=\/wp\/v2\/media\/329"}],"wp:attachment":[{"href":"https:\/\/www.gaetanopaterno.it\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=455"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gaetanopaterno.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=455"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gaetanopaterno.it\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=455"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}