Painamalla Get started saat valittua mihin maa alueeseen, projektin nimi, ohjelmisto kieli, joka on tärkeä olla Node.js…
Kun projekti on valmis saat projektin nimen ja IDn näkyville.
React app tuotanto versio
Sitten tehdään React projectista tuotanto versio avaamalla kansio sijainti, jossa react app sijaitsee Bashillä, CMDllä tai PowerShellillä. Komennolla “yarn build” tai “npm run build” riippuen siitä millä alkuperäinen ohjelmisto on tehty. Tämä luo uuden kansion projektiin nimeltä build, joka viedään Google cloud palvelimelle myöhemmin.
Sitten tarvitaan vielä app.yaml tiedosto, joka kertoo Google App Engine:lle miten ohjelmisto ajetaan julkiseen verkkoon. Malli alla.
Google cloudiin tarvitaan tallennus tilaa, jotta voidaan helposti pystyttää sivu Googlen pilvipalveluun eli luodaan tallennuskansio Googlen cloudissa tämä on nimellä Bucket. Navigoi Googlen Cloudissa Storage osioon ja paina CREATE BUCKET nappia.
Bucket tallennus tilan tekeminen on melko suoraviivainen prosessi jossa valitaan Bucketille nimi ja asetukset kuvat alla.
Mihin maahan tiedot tallennetaan.
Miten tiedot tallennetaan
Miten tietoihin pääsee käsiksi ja Bucketin luonti.
Sitten ladataan tiedostot Cloud tallennustilaan jonka loimme kuvat alla.
Ensin lisätään alussa tekemämme build kansio painamalla “Upload folder” nappia.
Sitten tarvitaan vielä Google App Engine:n päädyssä kasaus ohjeet eli app.yaml tiedosto jonka loimme aikaisemmin lisätään se painamalla “Upload files” nappia”.
Sitten avataan Google Clodin terminaali joka todennäköisesti tunnistaa alussa luomamme “steel-lancing-258417” projektin automaattisesti jos projekti ei näy keltaisella terminaalissa lisää se komennolla:
gcloud config set project PROJEKTINIMI
Terminaali komennoilla ensin luodaan kansio:
mkdir dunttusapp
Ladataan Bucketin tiedostot luotuun kansioon:
gsutil rsync -r gs://dunttusbucket ./dunttusapp
Mennään kansioon sisälle:
cd dunttusapp/
Laitetaan sivu päälle app.yaml ohjeen mukaan:
gcloud app deploy
Katsotaan mihin osoitteeseen sivu menee:
gcloud app browse
Kuva omista komennoista:
Jos tulee, jotain erroria yleistesti se johtuu app.yaml tiedoston deployment ohjeista.
Sivun sivupalkista löytyy kohta Compute Engine –> VM Instances kuva alla.
Seuraavaksi paina pienestä sinisestä napista, jossa lukee “Create”, kuva alla.
Bash komentokehote kirjautuminen
Jos haluat käyttää Googlen tarjoamaa Web terminaalia SSH avainta ei itse tarvitse luoda Bash komentokehote kirjautuminen kohta voidaa skipata tässä tapauksessa kohtaan “VM instance asennus”.
Seuraavaksi tarvitaan SSH julkinen avain, joka luodaan Linuxissa komennolla “ssh-keygen” jos et vaihtanut alkuperäistä kansio sijaintia avain löytyy komennolla “cat /home/USERNAME/.ssh/id_rsa.pub“.
Julkinen avain löytyy alla olevassa muodossa ja sitä tarvitaan palvelimelle sisäänpääsyyn salaisen avaimen avulla.
Google Cloud luo käyttäjän jonih palvelimen pystytys vaiheessa, jos SSH avainta on käytetty VM instancen luomisessa.
VM instance asennus
Sitten menin takaisin kesken jääneeseen Cloud Compute Engine virtuaali- koneen luontiin, selitykset ja kuva alla.
Name – palvelimelle tuleva nimi.
Region – voit valita mihin maahan palvelin asennetaan.
Machine configuration – palvelimelle tuleva rauta: Prosessori ja flash muisti.
Boot disk – luotava käyttöjärjestelmä.
Firewall – jättääkö palomuuri reitityksen portiin 80 ja 443.
SSH Keys – tähän kopioidaan oma julkinen avain.
Valittuasi Alhaalta “Create” palvelin luodaan.
Google Web Commandline
Painamalla sinisellä merkitystä kohdasta Connect: SSH avautuu Googlen Web terminaali valmiiksi tehdyssä Virtuaalipalvelimessa. Kuva alla.
Bash terminaali kirjautumine
Jos teit kohdan Bash terminaali palvelimellesi pääset SSH avainten, käyttäjän julkisessa avaimessa esimerkki oli “jonih” ja External IPn avulla komenolla “ssh user@ExternalIP“.
Google Cloudin SSH asetuksissa ei ole salasana kirjautumista, joten laitoin sen päälle. laitoin samalla Root käyttäjä kirjautumisen SSHlla pois päältä. Tiedostosta sshd_config PermitRootLogin prohibit-password –> PermitRootLogin no ja PasswordAuthentication no –> PasswordAuthentication yes tallensin ja lopetin.
Kirjauduin uudestaan käyttäjällä hakala käyttäen salasanaa:
ssh hakala@ExternalIP
Google cloud teki ubuntu käyttäjän poistin sen ja käyttäjän kansion:
sudo userdel ubuntu sudo rm -r /home/ubuntu
Poistan myös alkuperäisen käyttäjän ja käyttäjän kansion:
sudo userdel jonih
sudo rm -r /home/jonih
Kirjauduin viellä ulos ja laitoin julkisen ja salaisen avaimen kirjautumisen päälle komennolla:
ssh-copy-id hakala@ExternalIP
Lukitsin vielä lopuksi root käyttäjän komennolla:
sudo usermod --lock root
Budjetti hälytykset
Viimeistään ensimmäisen palvelin asennuksen jälkeen kannattaa ottaa käyttöön budjetti hälytykset kohdasta “Billing” –> Budgets & Alerts.
Hälytyksen nimi kannattaa olla tunnistettavassa muodossa, että muistaa mitä se tarkoittaa. Valitsin tähän kaikkien projektien ja tuotteiden yhteisen hinta hälytyksen eli kaikki yhteen laskettuna ei saa ylittää 15€ kk.
Valitsin budjetti tyypistä määritetyn määrän eli 15€ ja otin myös budjetin käyttöön ilmaisiin creditteihin valitsemalla “Include credits in cost”.
Porrastetussa hälytys mallissa saan hälytyksen kun budjetista on käytetty 50% 90% ja 100%.
Huom teksti “Setting a budget does not cap resource or API consumption” eli budjetti ei itsestään vaikka sammuta cloudista virtuaalikoneita jos budjetti ylittyy.
Web palvelin asennus
Apache asennus
Ensimmäisenä annan Ubuntulle versio tiedot komennolla “sudo apt-get update“. Sitten asensin Apache2 web palvelun komennolla “sudo apt-get install apache2“. Sitten pitää jotenkin todeta, että apache2 paketti asentui eli latasin Curlin komennolla “sudo apt-get install curl” ja avasin Apachen testi sivun Curlilla tekstimuodossa komennolla “curl localhost“, joka avasi Apachen testisivun. Korvasin Apachen testi sivun HelloWorld sivulla komennolla “echo HelloWorld! | sudo tee /var/www/html/index.html“. Nyt Apache avaa localhostista sivun, jossa lukee HelloWorld!.
Käyttäjä kansiot käyttöön Apachessa
Alotin komennolla “sudo a2enmod userdir“, jolla saadaan käyttäjien koti kansioon /home/user/public_html tehtyä kotisivut tekemällä sinne index.html tiedosto. Komento muuttaa Apachen asetuksia eli uudelleenkäynnistin Apachen, jotta uudet asetukset tulevat voimaan komennolla “sudo systemctl restart apache2“.
Tein skel kansioon eli uusille käyttäjille kotihakemistoon tuleville tiedostoille uuden kansion publi_html komennolla “sudo mkdir /etc/skel/public_html” ja komennolla “sudoedit index.html” tein kansioon index.html tiedoston, johon kirjoitin Hello World. Seuraavaksi loin uuden käyttäjän, jolle kotisivut luodaan komennolla “sudo adduser dunttus” käytin hyvää salasanaa koska Cloudissa on SSH kirjautuminen päällä ja kuka vaan voi käydä kokeilemassa kirjautumista. Sitten laitoin käyttäjälle sudo oikeudet komennolla “sudo adduser dunttus sudo“, joka lisää käyttäjän sudo oikeuksien asetuksiin. Tarkastin vielä, että skel on luonut käyttäjälle public_html kansion ja index.html tiedoston Curlilla komennolla “curl localhost/~dunttus/“. Curl avasi sivun, jossa luki Hello World eli toimii.
Domain nimi osoitteeseen
Omistan domain nimen dunttus.com, jota säilytän sivulla namecheap.com eli tarkoituksena olisi yhditää domain nimi IP osoitteeseen. Kirjauduin NameCheapin palveluun josta valistin Dashboard ja dunttus.com kohdalta manage kuva alla.
Seuraavaksi menin Advanced DNS –> ADD NEW RECORD, johon tein A Recordit @ ja www, johon laitoin Google Cloudiin tekemäni Ubuntun ExternalIP osoitteen lopuksi tallensin painamalla SAVE ALL CHANGES. Kuva alla. A Recordilla @ voidaan esimerkiksi tulevaisuudessa kirjautua palvelimelle domain nimellä esim. komennolla “ssh user@dunttus.com” ja A Record www vie http://www.dunttus.com osoitteen oikean IP osoitteen Web palveluun.
Domain nimen siirrossa toiseen osoitteeseen voi viedä jonkin aikaa eli menin tässä vaiheessa valmistelemaan tulevaa sivua.
Virtual Hosting Ubuntulla
Virtualhostin tarkoituksena on ohjata kaikki dunttus.com liikenne käyttäjän dunttus kansioon /home/dunttus/public_hml/index.html ja ExternalIP liikenne menee Apachen testisivuun HelloWorld! eli Virtual Hostin hyötynä on saada monta eri Domain nimeä saman IP osoitteen alle.
Ensin kirjauduin käyttäjällä dunttus komennolla “su dunttus“. Avasin Apachelle portin 80 UFW palomuurista komennolla “sudo ufw allow 80/tcp” ja uudelleen käynnistin UFWn komennola “sudo systemctl restart ufw“. Kokeilin samalla Domain ohjauksen IP osoitteelle eli avasin sivun Google Cromella osoitteesta dunttus.com jonka pitäisi nyt jo ohjata sivu palvelimelleni osoitteeseen http://35.228.191.122/. Kyllä tämä toimi odotetusti ja avasi Apachen testi sivun /var/www/html/index.html sivun, kuva alla.
Seuraavaksi ohjaamme palvelimen puolella dunttus.com liikenteen käyttäjä kansioon /home/dunttus/public_html/index.html Navigoin Apachen Virtualhost asetuksien tiedosto hakemistoon /etc/apache2/sites-available ja loin tiedoston dunttus.com.conf komennolla “sudoedit dunttus.com.conf“. Tiedoston sisältö alla.
Config tiedosto viedään sites-enabled kansioon komennolla “sudo a2ensite dunttus.com.conf” uudelleen käynnistin Apache2 palvelun komennolla “sudo systemctl restart apache2“, jotta asetukset tulevat voimaan. Kirjoitin testi tekstiä vielä dunttus käyttäjän index.html sivuun komennolla “echo “testiteksti dunttus.com” | tee /home/dunttus/public_html/index.html” ja avasin Google Cromella sivun dunttus.com joka avasi nyt käyttäjän kansion /home/dunttus/public_html/index.html tiedoston. Kuva alla.
Eli virtual hosting toimii nyt ja reitittää kaikki dunttus.com domainille tulevat yhteydet /home/dunttus/public_html/index.html ja External IP:llä tulevat apachen testisivuun /var/www/html/index.html.
Githubista oman sivun lataaminen dunttus.com sivulle
Kansioihin tarvitsee ajamis oikeuden muuten niitä ei voi avata nettisivuilla ja kansiossa olevat tiedostot tarvitsee luku oikeuden. Ulkoisille käyttäjille kannattaa antaa minimaaliset oikeudet, jotka näkyy alla.
dunttus@dunttus-web:~/home/joni/portfolio/$ ls -la
total 68
drwxr-xr-x 4 dunttus dunttus 4096 Nov 10 13:11 .
drwxr-xr-x 5 dunttus dunttus 4096 Nov 10 12:57 ..
drwx--x--x 2 dunttus dunttus 4096 Nov 10 12:57 css
drwx--x--x 2 dunttus dunttus 4096 Nov 10 12:57 img
-rwxr--r-- 1 dunttus dunttus 1831 Nov 10 13:11 index.html
-rwxr--r-- 1 dunttus dunttus 44086 Nov 10 12:57 komentoja.txt
-rwxr--r-- 1 dunttus dunttus 2618 Nov 10 12:57 sanalista.txt
Kopioin kaikki tarvittavat tiedostot kansiosta portfolio kansiosta public_html kansioon komenoilla -rp lippu tuo rekursiivisesti myös oikeudet.
Copy komennon flagit -r kopioi hakemistot rekursiivisesti ja -p säilyttää samat oikeudet ja tiedoston omistajan.
Kokeilin vielä lopuksi, että kaikki toimi oikealla tavalla selaimella ja toimii oletulla tavalla. Sivu löytyy nyt osoiteesta http://dunttus.com
Proxy yhteys palvelimen sisäverkkoon Windows 10:llä
Ensin avasin komento kehotteen Windsilla, painamalla Windows+R näppäimiä ja kirjoittamalla cmd. Palvelimelle päästään kirjautumaan Proxy tunnelilla komennolla “ssh -D 8181 user@ExternalIP“. Proxy tunneli pitää liittää vielä Windowsin omiin proxy asetuksiin painamalla Windows+R näppäimiä ja kirjoittamalla control panel. Ohjauspaneelissa navigoidaan Ohjauspaneeli –> Verkko ja Internet –> Hallitse Selaimen Lisäosia –> Yhteydet –> Lähiverkon asetukset. Verkon asetuksista kuvat alla.
Ensin valitaan lähiverkon asetukset.
Ruksitetaan Käytä välityspalvelinta lähiverkossa päälle ja mennään kohtaan Lisätiedot.
Proxylle valitaan Socks localhost:8181, joka reitittää Proxyn paikallisverkon portin 8181 kautta.
KESKEN Proxy yhteys palvelimen sisäverkkoon Linux Ubuntulla
Ensin avataan Linuxin terminaali eli Bash ja komennolla “ssh -D 8181 user@ExternalIP”. Jätä ikkuna auki, koska se toimii proxy tunnelin välittäjänä. Mene Linuxin verkko asetuksiin ja etsi sieltä Proxy asetukset.
Vaihda Proxy asetukset reitittämän portiin 8181 localhostin kautta liikenne jotta saadaan SSH-tunneli pilvipalveluun.
Lisätietoja Proxystä
Tein tässä esimerkissä Google Cloud palvelimeen Proxy tunnelin, joka reitittää verkkoyhteyden selaimilla sen kautta eli pääsen oman pilvipalvelun sisäverkkoon.
Proxyn toimivuuden voi kokeilla Crome selaimella osoiteessa https://www.whatismyip.com/. Ulkoverkon osoitteeksi whatismyip sivu ilmoitti Google Cloud palvelimeni osoitteen vaikka käytin kotiverkosta selainta eli Proxy tunneli toimii. Nyt selaamani sivut näkevät, että Google Cloud palvelimelta otetaan yhteys näin voidaan salata oma julkinen IP osoite. Nyt jos palomuurin takana olisi palveluita porteissa, jotka ovat kiinni ulkoverkkoon pääsen myös niihin käsiksi, koska olen sisäverkossa.