{"id":815,"date":"2021-04-15T14:22:42","date_gmt":"2021-04-15T14:22:42","guid":{"rendered":"https:\/\/techno.slomka.biz\/?p=815"},"modified":"2021-05-21T11:28:35","modified_gmt":"2021-05-21T11:28:35","slug":"digitalocean-setup-fur-flask-anwendung","status":"publish","type":"post","link":"https:\/\/techno.slomka.biz\/?p=815","title":{"rendered":"Digitalocean Setup f\u00fcr eine Flask Anwendung &#8211; Teil 1"},"content":{"rendered":"\n<p>Dieser Blog wird Teil einer Serie f\u00fcr eine Web Anwendung in Python auf einer Cloud Instanz. Ich habe mich f\u00fcr DigialOcean entschieden. Linode, Azure, GCP, &#8230; w\u00e4ren alle genau so gut f\u00fcr diesen Zweck. Die Anwendung wird aus einer Liste von Vokabeln ein Wort in Deutsch heraussuchen und anzeigen. Auf einer zweiten Seite wird die \u00dcbersetzung des Worts und die Deklination angezeigt.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Im ersten Teil werde ich die Einrichtung des Servers beschreiben.<\/li><li><a href=\"https:\/\/techno.slomka.biz\/?p=856\" data-type=\"post\" data-id=\"856\">Teil 2 <\/a>wird die HTTPS Konfiguration behandeln.<\/li><li><a href=\"https:\/\/techno.slomka.biz\/?p=850\" data-type=\"post\" data-id=\"850\">Teil 3<\/a> schliesslich beschreibt die Python Flask Anwendung und deren Deployment mit Github Actions.<\/li><li>Teil 4 wird die Einrichtung der Subdomain is.hslomka.de und die Umleitung auf meinen Server beinhalten.<\/li><\/ul>\n\n\n\n<p>Das Ergebnis kann man unter <a href=\"https:\/\/is.hslomka.de\" data-type=\"URL\" data-id=\"https:\/\/is.hslomka.de\">https:\/\/is.hslomka.de<\/a> sehen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Server aufsetzen<\/h2>\n\n\n\n<p>Die Einrichtung eines DigitalOceans Ubuntu Droplets spare ich mir. Nachdem Anlegen eines Ubuntu Droplets auf Digitalocean und erfolgter Anmeldung am Droplet per ssh, habe ich zuerst das System aktualisiert:<\/p>\n\n\n\n<p><code>sudo apt update<\/code><br><code>apt list --upgradable<\/code><br><code>apt upgrade<\/code><\/p>\n\n\n\n<p>Der n\u00e4chste Schritt ist ein technsicher Benutzer zur Verwaltung des Systems.<\/p>\n\n\n\n<p><code>adduser admin<\/code><br><code>usermod -aG sudo admin<\/code><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Apache HTTPD Server<\/h3>\n\n\n\n<p>Die Anwendung erfordert keinen LAMPP Stack. Ich habe mich f\u00fcr eine einfache Webanwendung unter python entschieden. Die Datenhaltung erfolgt in Dateisystem mit einer YAML Datei. Daher installieren wir zuerst einen Appache HTTPD Server.<\/p>\n\n\n\n<p><code>sudo apt install apache2<\/code><br><code>sudo ufw allow in \"Apache\"<\/code><br><code>sudo ufw app list<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"506\" height=\"53\" src=\"https:\/\/techno.slomka.biz\/wp-content\/uploads\/2021\/04\/image-2.png\" alt=\"\" class=\"wp-image-821\" srcset=\"https:\/\/techno.slomka.biz\/wp-content\/uploads\/2021\/04\/image-2.png 506w, https:\/\/techno.slomka.biz\/wp-content\/uploads\/2021\/04\/image-2-300x31.png 300w\" sizes=\"auto, (max-width: 506px) 100vw, 506px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/techno.slomka.biz\/wp-content\/uploads\/2021\/04\/grafik.png\" alt=\"\" class=\"wp-image-823\" width=\"511\" height=\"104\" srcset=\"https:\/\/techno.slomka.biz\/wp-content\/uploads\/2021\/04\/grafik.png 572w, https:\/\/techno.slomka.biz\/wp-content\/uploads\/2021\/04\/grafik-300x61.png 300w\" sizes=\"auto, (max-width: 511px) 100vw, 511px\" \/><\/figure>\n\n\n\n<p><code>sudo ufw status<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"504\" height=\"180\" src=\"https:\/\/techno.slomka.biz\/wp-content\/uploads\/2021\/04\/image-3.png\" alt=\"\" class=\"wp-image-822\" srcset=\"https:\/\/techno.slomka.biz\/wp-content\/uploads\/2021\/04\/image-3.png 504w, https:\/\/techno.slomka.biz\/wp-content\/uploads\/2021\/04\/image-3-300x107.png 300w\" sizes=\"auto, (max-width: 504px) 100vw, 504px\" \/><figcaption>Im Moment Ist nur HTTPD m\u00f6glich. Man erkennt dies am Text &#8220;Apache&#8221;. Mit HTTPS w\u00fcrde  &#8220;Apache Full&#8221; angezeigt- Mehr dazu in Teil 2.<\/figcaption><\/figure>\n\n\n\n<p>Test des Webservers durch Aufruf der IP Adresse im Browser: <a href=\"http:\/\/http:\/159.89.6.14\/\">http::\/\/159.89.6.14\/<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"apache-vhost\">Apache Virtual Host<\/h3>\n\n\n\n<p>Ich habe meinen Virtual Host islenska genannt, da meine Webseite dem Training der isl\u00e4ndischen Sprache dienen soll. Das Deployment der Anwendung erfolgt durch den Benutzer wwwadmin von meinem Github Account.<\/p>\n\n\n\n<p><code>sudo mkdir \/var\/www\/islenska<\/code><\/p>\n\n\n\n<p><code>adduser wwwadmin<\/code><\/p>\n\n\n\n<p><code>chown -R wwwadmin:wwwadmin \/var\/www\/islenska<\/code><\/p>\n\n\n\n<p><code>sudo nano \/etc\/apache2\/sites-available\/islenska.conf<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"456\" height=\"168\" src=\"https:\/\/techno.slomka.biz\/wp-content\/uploads\/2021\/04\/image-4.png\" alt=\"\" class=\"wp-image-824\" srcset=\"https:\/\/techno.slomka.biz\/wp-content\/uploads\/2021\/04\/image-4.png 456w, https:\/\/techno.slomka.biz\/wp-content\/uploads\/2021\/04\/image-4-300x111.png 300w\" sizes=\"auto, (max-width: 456px) 100vw, 456px\" \/><\/figure>\n\n\n\n<p><code>sudo a2ensite islenska<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"550\" height=\"70\" src=\"https:\/\/techno.slomka.biz\/wp-content\/uploads\/2021\/04\/image-5.png\" alt=\"\" class=\"wp-image-825\" srcset=\"https:\/\/techno.slomka.biz\/wp-content\/uploads\/2021\/04\/image-5.png 550w, https:\/\/techno.slomka.biz\/wp-content\/uploads\/2021\/04\/image-5-300x38.png 300w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/figure>\n\n\n\n<p><code>sudo a2dissite 000-default<\/code><\/p>\n\n\n\n<p><code>sudo apache2ctl configtest<\/code><\/p>\n\n\n\n<p><code>systemctl reload apache2<\/code><\/p>\n\n\n\n<p>nano \/var\/www\/islenska\/index.html<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"682\" height=\"202\" src=\"https:\/\/techno.slomka.biz\/wp-content\/uploads\/2021\/04\/image-6.png\" alt=\"\" class=\"wp-image-826\" srcset=\"https:\/\/techno.slomka.biz\/wp-content\/uploads\/2021\/04\/image-6.png 682w, https:\/\/techno.slomka.biz\/wp-content\/uploads\/2021\/04\/image-6-300x89.png 300w\" sizes=\"auto, (max-width: 682px) 100vw, 682px\" \/><figcaption>Dies ist eine erste statische Seite zum Test der Virtual Host Konfiguration.<\/figcaption><\/figure>\n\n\n\n<p>Ein erneuter Test des Webservers durch Aufruf der IP Adresse im Browser: <a href=\"http:\/\/http:\/159.89.6.14\/\">http::\/\/123.456.789.012<\/a> sollte jetzt die statische Seite anzeigen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dieser Blog wird Teil einer Serie f\u00fcr eine Web Anwendung in Python auf einer Cloud Instanz. Ich habe mich f\u00fcr DigialOcean entschieden. Linode, Azure, GCP, &#8230; w\u00e4ren alle genau so gut f\u00fcr diesen Zweck. Die Anwendung wird aus einer Liste von Vokabeln ein Wort in Deutsch heraussuchen und anzeigen. Auf einer zweiten Seite wird die \u00dcbersetzung des Worts und die Deklination angezeigt. Im ersten Teil werde ich die Einrichtung des Servers beschreiben. Teil 2 wird die HTTPS Konfiguration behandeln. Teil 3 schliesslich beschreibt die Python Flask Anwendung und deren Deployment mit Github Actions. Teil 4 wird die Einrichtung der Subdomain is.hslomka.de und die Umleitung auf meinen Server beinhalten. Das Ergebnis kann man unter https:\/\/is.hslomka.de sehen. Server aufsetzen Die Einrichtung eines DigitalOceans Ubuntu Droplets spare ich mir. Nachdem Anlegen eines Ubuntu Droplets auf Digitalocean und erfolgter Anmeldung am Droplet per ssh, habe ich zuerst das System aktualisiert: sudo apt updateapt list &#8211;upgradableapt upgrade Der n\u00e4chste Schritt ist ein technsicher Benutzer zur Verwaltung des Systems. adduser adminusermod -aG sudo admin Apache HTTPD Server Die Anwendung erfordert keinen LAMPP Stack. Ich habe mich f\u00fcr eine einfache Webanwendung unter python entschieden. Die Datenhaltung erfolgt in Dateisystem mit einer YAML Datei. Daher installieren wir zuerst einen Appache HTTPD Server. sudo apt install apache2sudo ufw allow in &#8220;Apache&#8221;sudo ufw app list sudo ufw status Test des Webservers durch Aufruf der IP Adresse im Browser: http::\/\/159.89.6.14\/ Apache Virtual Host Ich habe meinen Virtual Host islenska genannt, da meine Webseite dem Training der isl\u00e4ndischen Sprache dienen soll. Das Deployment der Anwendung erfolgt durch den Benutzer wwwadmin von meinem Github Account. sudo mkdir \/var\/www\/islenska adduser wwwadmin chown -R wwwadmin:wwwadmin \/var\/www\/islenska sudo nano \/etc\/apache2\/sites-available\/islenska.conf sudo a2ensite islenska sudo a2dissite 000-default sudo apache2ctl configtest systemctl reload apache2 nano \/var\/www\/islenska\/index.html Ein erneuter Test des Webservers durch Aufruf der IP Adresse im Browser: http::\/\/123.456.789.012 sollte jetzt die statische Seite anzeigen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[113,3,6,25],"tags":[121,116,123,124],"class_list":["post-815","post","type-post","status-publish","format-standard","hentry","category-apache-httpd","category-devops","category-github","category-ubuntu","tag-apache-httpd","tag-python","tag-ubuntu","tag-virtual-host"],"_links":{"self":[{"href":"https:\/\/techno.slomka.biz\/index.php?rest_route=\/wp\/v2\/posts\/815","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/techno.slomka.biz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/techno.slomka.biz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/techno.slomka.biz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/techno.slomka.biz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=815"}],"version-history":[{"count":23,"href":"https:\/\/techno.slomka.biz\/index.php?rest_route=\/wp\/v2\/posts\/815\/revisions"}],"predecessor-version":[{"id":870,"href":"https:\/\/techno.slomka.biz\/index.php?rest_route=\/wp\/v2\/posts\/815\/revisions\/870"}],"wp:attachment":[{"href":"https:\/\/techno.slomka.biz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=815"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/techno.slomka.biz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=815"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/techno.slomka.biz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=815"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}