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ä milla alkuperäinen ohjelmisto on tehty. Tämä luo uuden kansion projektiin nimeltä build, joka viedään Google cloud palvelimelle hyö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 tallennus kansio Googlen cloudissa tämä on nimellä Bucket. Navigoi Googlen Cloudissa Storege osioon ja paina CREATE BUCKET nappia.
Bucket tallennus tilan tekeminen on melko suoraviivainen prosessi jossa valitaan Bucketille nimi ja asettukset kuvat alla.
Mihin maahan tiedot tallennetaan.
Miten tiedot tallennetaan
Miten tietoihin pääsee käsiksi ja Bucketin luonti.
Sitten ladataan tiedostot Cloud tallennus tilaan 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 Buckettin 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.
Googlen Cloud Platform löytyy sivulta https://console.cloud.google.com/, loin tälle sivulle käyttäjä, joka sai 300$ vuodeksi käyttöön Google Cloudiin eli voin asentaa ilmaisia palvelimia näillä crediteillä.
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ään pää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 asennettaan.
Machine configuration – palvelimelle tuleva rauta: Prosessori ja flash muisti.
Boot disk – luotava käyttöjärjestelmä.
Firewall – jättääkö palomuuri reirityksen 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ä Virtuaali- palvelimessa. Kuva alla.
Bash terminaali kirjautumine
Jos teit kohdan Bash terminaali palvelimelesi 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ä. Tiedostossa 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 budhetti 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 greditteihin 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 resourse or API consumption” eli budjetti ei itsestään vaikka sammuta cloudista virtuaali koneita 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 teksti muodossa komennolla “curl localhost“, joka avasi Apachen testi sivun. 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 koti hakemistoon tuleville tiedostoille uuden kansion publi_html komennolla “sudo mkdir /etc/skel/public_html” ja komennolla “sudoedit index.html” tein kansioon index.html tiedoston, johon kijoitin 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 osoiteeseen. 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 nimelle 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 oletetusti 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
Chmod GO tarkoittaa Group ja Other, joilta otin RWX oikeudet pois miinus “-” merkillä eli Read, Write ja Execute. Kansioihin tarvitsee ajamis oikeuden muuten niitä ei voi avata netti-sivulla ja kansiossa olevat tiedostot tarvitsee luku oikeuden. Ulkoisille käyttäjille kannattaa antaa minimaaliset oikeudet, jotka näkyy alla.
Copy komennon flagit -r kopioi hakemistot rekursiivisesti ja -p säilyttää samat oikeudet ja tiedoston omistajan.
Kokeilin vielä lopuksi, että kaikki toimi oikealla tavalla netti sivulla ja kyllä toimii. 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 paikallis verkon 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 palvelimeeni Proxy tunnelin, joka reitittää verkko yhteyden 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 palvelimeltani 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.