Tag: VPS


Apache Tomcat 8 asennus virtuaalipalvelimelle


Apache Tomcat 8 asennus virtuaalipalvelimelle

 

Tavoitteena oli asentaa Apache Tomcat 8 Palvelinohjelmoinnin kurssin harjoitustöiden esittelyä varten. Lähtötilanteessa käytössä oli virtuaalipalvelin, jossa oli asennettuna Ubuntu 16.04 LTS käyttöjärjestelmä ja LAMP-stack

WordPress-sisällönhallintajärjestelmää varten. Lähteenä käytettiin DigitalOceanin mainiota tutoriaalia.

 

Esivalmistelut

Tomcat vaatii Java Development Kitin asennuksen, joten se asennettiin ensimmäisenä.

$ sudo apt-get update
$ sudo apt-get install default-jdk

Seuraavaksi luotiin oma käyttäjä Tomcatille. Käyttäjä luotiin turvallisuussyistä ilman sudo-oikeuksia sekä mahdollisuuksia kirjautua sisään. Käyttäjän kotihakemistoksi annettiin /opt/tomcat/, minne Tomcat ohjelmisto asennettaisiin.

$ sudo groupadd tomcat
$ sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

Tomcat 8 asennus

Seuraavaksi haettiin Tomcat 8 uusimman version osoite ohjelman lataussivuilta. Asennusta varten ladattiin Core version tar.gz -paketti.

$ cd /tmp
$ curl -O http://www.nic.funet.fi/pub/mirrors/apache.org/tomcat/tomcat-8/v8.5.20/bin/apache-tomcat-8.5.20.tar.gz
$ sudo mkdir /opt/tomcat
$ sudo tar xzvf apache-tomcat-8.5.20.tar.gz -C /opt/tomcat --strip-components=1

Kansioiden käyttöoikeudet

Tämän jälkeen päivitettiin kansioiden käyttäjäoikeuksia. käyttäjälle tomcat annettiin omistajuus koko asennuskansiolle. tomcat-ryhmälle annettiin lukuoikeus conf-kansioon ja sen sisältöön ja suoritusoikeus itse kansioon.

Lopuksi tomcat käyttäjälle annetaan omistajuus kansioille webapps, work, temp ja logs.

$ sudo chgrp -R tomcat /opt/tomcat

$ sudo chmod -R g+r conf

$ sudo chmod g+x conf

$ sudo chown -R webapps/ work/ temp/ logs/

systemd asetukset

systemd asetuksia muokkaamalla Tomcat 8:a voidaan ajaa palveluna ja se voidaan asettaa käynnistymään automaattisesti. Tomcatille täytyy myös kertoa, mihin kansioon Java on asennettu (JAVA_HOME -polku)

$ sudo update-java-alternatives -l

Tarvittava JAVA_HOME polku oli kuvan mukainen polku, jonka perään liitettäisiin /jre kansio eli tässä tapauksessa:

/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre

Seuraavaksi luotiin Tomcat 8 asetukset systemd kansioon

$ sudoedit /etc/systemd/system/tomcat.service

Tiedoston sisältöön kopioitiin seuraavat tiedot, varmistaen että JAVA_HOME muuttuja viittasi oikeaan kansioon.

[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

 

Seuraavaksi käynnistettiin Tomcat palvelu ja testattiin sen toimivuutta.

$ sudo systemctl daemon-reload
$ sudo systemctl start tomcat
$ sudo systemctl status tomcat

 

Palomuurin konfigurointi ja Tomcat serverin testaus

Tomcat käyttää porttia 8080, joka avattiin UFW-palomuurista liikennettä varten.

$ sudo ufw allow 8080

Tämän jälkeen voitiin testata serverin toimintaa siirtymällä osoitteeseen http://serverinosoite:8080

Tomcatin oletuskotisivu saatiin näkyviin, joten asennus oli onnistunut.  Manager App ja Host Manager sivut eivät vielä toimineet,

koska ne vaativat asetusten muokkausta. Tässä vaiheessa voitiin kuitenkin asettaa Tomcat palvelu käynnistymään automaattisesti järjestelmän käynnistyessä.

$ sudo systemctl enable tomcat

Lisäasetukset

Manager App ja Host Manager hallintaa varten Tomcatille täytyi seuraavaksi luoda käyttäjiä. Kuten kotisivulla näkyy, käyttäjiä hallitaan $CATALINA_HOME/conf/tomcat-users.xml -tiedostossa.

$ sudoedit /opt/tomcat/conf/tomcat-users.xml

Luotavalle käyttäjälle annettiin roolit manager-gui ja admin-gui, jolloin käyttäjällä pääsee hallitsemaan Manager App ja Host Manager toiminnallisuuksia. Käyttäjätiedot luotiin tomcat-users.xml -tiedostoon alla olevan kuvan mukaisesti

(luonnollisesti käyttäjätunnus ja salasana muutettiin…)

Oletusasetuksena Tomcat estää Manager App ja Host Manager toiminnallisuuksien käytön, jos niitä ohjataan suoraan serveriltä. Asetus otettiin pois päältä muokkaamalla kahta context.xml -tiedostoa.

$ sudoedit /opt/tomcat/webapps/manager/META-INF/context.xml
$ sudoedit /opt/tomcat/webapps/host-manager/META-INF/context.xml

Molemmista tiedostoista kommentoitiin ulos kuvan mukaiset kaksi riviä, jolloin Manager App ja Host Manager toiminnallisuuksia voi käyttää mistä tahansa. Vaihtoehtoisesti asetustiedostoista voi määritellä halutut IP-osoitteet, jotka voivat käyttää toiminnallisuuksia.

Asetusten muokkaamisen jälkeen Tomcat palvelu käynnistettiin uudestaan.

$ sudo systemctl restart tomcat

Tämän jälkeen sekä Manager App että Host Manager toimivat annetuilla käyttäjätunnuksilla. /opt/tomcat/webapps -kansioon siirretyt .war tiedostot voitiin ottaa käyttöön Manager App:in kautta.

 

 

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

Simo Suominen


Palvelinten hallinta – kotitehtävät 4


Palvelinten hallinta kotitehtävät 4

Lähde  Tero Karvinen 2017: Linux kurssi, http://terokarvinen.com

Harjoitusympäristönä asennettu Xubuntu 16.04, Xenial Xerus

Harjoituskoneen tiedot:

Emolevy X79A-GD65 (8D)

Prosessori Intel(R) Core(TM) i7-3930K

16GiB RAM

 

Puppet: Master-slave.

Aloita tyhjästä koneesta. Tee yhdestä koneesta orja ja toisesta herra. Kokeile, että orja saa herralta modulin. (Voit käyttää labraa, kun se on tyhjä. Laita mukaan ‘puppet cert –list –all’, ‘tail /var/log/auth.log’, ‘tail /var/log/syslog’).

Harjoitustyön tavoitteena on toteuttaa Puppet keskitetyn hallinnan ratkaisu niin, että master-palvelima toimii virtuaalipalvelin. Master- ja orjakoneitten asetukset määritellään niin, että orja noutaa sille määritellyt moduulit virtuaalipalvelimelta.

Lähtötilanteessa virtuaalipalvelimelle on asennettu valmiiksi Ubuntu 16.04 Xenial Xerus -käyttöjärjestelmä. Palvelimen tietoturvaa on parannettu ottamalla palomuuri käyttöön ja luomalla uusi sudo-käyttäjä + lukitsemalla root-käyttäjä. Toimenpiteiden tarkempi kuvaus löytyy Linux-palvelinten kurssin kotitehtävistä. Tämän lisäksi domainin DNS-asetukset on määritelty niin, että osoite puppet.simosuominen.com osoittaa virtuaalipalvelimen IP-osoitteeseen.

Masterkoneen asetukset

Harjoitus aloitettiin määrittelemällä masterkoneen asetukset, lähteenä käytettiin Tero Karvisen artikkelia. Masterkoneelle oli otettu yhteys SSH:n kautta.

$ sudo apt-get update && sudo apt-get -y install puppetmaster //master-ohjelmiston asennus

$ sudo service puppetmaster stop //master-palvelun pysäytys


$ sudo rm -r /var/lib/puppet/ssl //vanhojen sertifikaattien poisto

$ sudoedit /etc/puppet/puppet.conf //Puppet asetustiedoston muokkaus

Master-ohjelmiston asennuksen jälkeen asennettu palvelu pysäytettiin ja luodut sertifikaatit poistettiin. Koska Puppetin asetustiedosto oli vajavainen, sertifikaateista puuttui oikea DNS-nimi. Puppet.conf -tiedostoon, [master] -rivin alle lisättiin rivi osoittamaan oikeaan DNS-osoitteeseen:

dns_alt_names = puppet.simosuominen.com

Tämän jälkeen puppetmaster -palvelu käynnistettiin uudelleen, jolloin uusi sertifikaatti luotiin automaattisesti uudelleen.

$ sudo service puppetmaster restart

Lopuksi luotiin yksinkertainen moduuli kansioon /etc/puppet/modules. Moduuli luo /tmp/helloworld.txt -tiedoston kun se ajetaan. Tämän jälkeen muokattiin vielä /etc/puppet/manifests/site.pp -tiedostoa seuraavalla rivillä:

class {"helloworld":}

Lopputuloksena kaikki masterkoneeseen yhteyttä ottavat orjakoneet ajavat helloworld -moduulin omissa laitteissaan.

Orjakoneen asetukset

Orjakoneena käytettiin ikivanhaa Asus eeePc -kannettavaa, johon oli asennettu 32-bittinen Xubuntu 16.04 LTS käyttöjärjestelmä. Orjakoneen asetusten asentaminen aloitettiin asentamalla puppet ja muokkaamalla tarvittavia asetuksia.

$ sudo apt-get update && sudo apt-get -y install puppet //puppet-ohjelman asennus

$ sudo service puppet stop //puppet-palvelun pysäytys

$ sudoedit /etc/puppet/puppet.conf //asetustiedoston muokkaus

Sekä herra- että orjakoneen asetustiedosto on saman niminen. Orjakoneen asetukset tehdään luomalla tiedostoon [agent] -rivi, jonka alle tehdään halutut asetukset.

[agent]

server = puppet.simosuominen.com

Seuraavaksi käynnistettiin puppet-palvelu uudelleen sekä testattiin asetuksia.

$ sudo service puppet start //palvelun käynnistys


$ sudo puppet agent -tvd //asetusten testaus (-tvd = --test --verbose --debug)

Testistä saatiin aikaan seuraava virheilmoitus:

Samalla hetkellä tajuttiin, että virtuaalipalvelimen palomuuriin ei ole puhkaistu reikää Puppetin oletusporttia varten. Kirjautumalla virtuaalipalvelimelle ja avaamalla tarvittava portti päästiin harjoituksessa eteenpäin. Seuraavaksi ajettiin testikomento uudestaan ja saatiin uusi ilmoitus:

Exting: no certificate found and waitforcert is disabled.

Testikomennon debug-lokeja tutkimalla saatiin selville, että orjakone oli luonut sertifikaattipyynnön herrakoneelle. Kirjauduttiin taas herrakoneelle ja tutkittiin asiaa.

$ sudo puppet cert list //avattiin sertifikaattipyynnöt, joihin ei ole vastattu

Listalta löytyi host nimi 1001px, joka tunnistettiin vanhaksi surkeaksi orjakoneeksi. Hyävksyttiin ks. sertifikaattipyyntö.

$ sudo puppet cert --sign 1001px

Sertifikaatin hyväksymisen jälkeen herra- ja orjakoneen välille on luotu luottamussuhde. Jatkettiin ajamalla vanha tuttu testikomento orjakoneella. Tuloksena kolmas, informatiivinen virheilmoitus, joka neuvoi ottamaan puppet agentin käyttöön, sillä ks. palvelu on oletuksena pois käytöstä. Ajettiin lisää komentoja:

$ sudo puppet agent --enable //puppet agentin käyttöönotto

$ sudo puppet agent -tvd //asetusten testaus

Viides kerta, ja komento saatiin ajettua ilman virheilmoutksia. Seuraavaksi tutkittiin moduulin tekemiä muutoksia orjakoneella komennolla sudo cat /tmp/helloworld.txt

Hello world! Sekä herra- että orjakoneen Puppet-asetukset saatiin onnistuneesti toimimaan.

 

 

 

 

 

 

 

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

Simo Suominen


Linux palvelimet – kotitehtävät 6


Linux-palvelimet kotitehtävät 6

Lähde  Tero Karvinen 2017: Linux kurssi, http://terokarvinen.com

Harjoitusympäristönä Ubuntu 17.04 (Zesty Zapus) Daily Build

Harjoituskoneen tiedot:

Emolevy X79A-GD65 (8D)

Prosessori Intel(R) Core(TM) i7-3930K

16GiB RAM

Näytönohjain GeForce GTX 690

Ota käyttöön oma virtuaalipalvelin (VPS).

Harjoituksen tavoitteena on ottaa käyttöön oma virtuaalipalvelin Linux-käyttöjärjestelmällä ja varmistaa palvelimen tietoturva luomalla palvelimelle käyttäjä ja käynnistämällä ja konfiguroimalla palomuuri.

Virtuaalipalvelimen tarjoajaksi on valittu DigitalOcean -palvelu, joka on todettu helppokäyttöiseksi ja luotettavaksi palveluksi. Tämän lisäksi palveluun saa 50$ aloitusrahaa Github student developer -paketin kautta.

Virtuaalipalvelimen luonti

Lähtötilanteessa palveluun on rekisteröidytty ja voidaan luoda oma virtuaalipalvelin (Droplet).

Selection_016.png

Käyttöjärjestelmäksi valittiin viimeisin Ubuntun LTS (Long Term Support) versio. Palvelimen tehovaatimuksissa ensimmäisenä tulee vastaan vähäinen keskusmuistin määrä, joten halvin vaihtoehto jätettiin väliin ja valittiin 10 $/kk maksava palvelin.

Palvelimen sijaintia päätettäessä tulee miettiä mistä päin suurin osa palvelimen asiakkaista ottaa yhteyden palvelimeen. Lisäksi tietyt lain pykälät saattavat vaikuttaa palvelimen sijainnin valintaan. Harjoitustyössä palvelimen sijainniksi valittiin Frankfurt. Lopuksi valittiin palvelimien määrä (1) ja geneerinen nimi palvelimelle. Lisäpalveluita ei otettu.

Kun palvelin on luotu, käyttäjä saa sähköpostiinsa viestin, jossa on palvelimen salasana root-käyttäjälle.  Palvelimeen voi ottaa yhteyttä palvelun verkkosivun konsolin kautta tai suojatulla SSH-yhteydellä. Harjoitustyössä käytettiin SSH-yhteyttä testikoneen komentokehotteen kautta.

Palvelimen konfigurointi

$ ssh root@palvelimenip //kirjauduttiin palvelimelle

$ sudo ufw allow 80/tcp //sallittiin http-yhteys palomuurin läpi 

$ sudo ufw allow 22/tcp //sallittiin SSH-yhteydet palomuurin läpi

$ sudo ufw enable //käynnistettiin palomuuri

$ sudo adduser suomisim //lisättiin käyttäjä suomisim. HUOM. KUNNON SALASANA!

$ sudo adduser suomisim sudo //lisättiin käyttäjä ryhmään sudo

$ sudo adduser suomisim adm //lisättiin käyttäjä ryhmään adm

$ sudo adduser suomisim admin //lisättiin käyttäjä ryhmään admin

Seuraavaksi avattiin toinen komentokehote ja testattiin luotuja tunnuksia. Root-tunnuksilla jäätiin vielä palvelimelle varmistamaan, että ongelmat voidaan korjata jos niitä esiintyy. Kun sudo-tunnusten toimivuus on varmistettu, voitiin lukita root-tunnus palvelimelle.

$ ssh suomisim@palvelimenip //kirjaudutiin palvelimelle luodulla käyttäjällä

$ sudo apt-get update && sudo apt-get -y upgrade //testattiin sudo-oikeuksia

$ sudo usermod --lock root //lukittiin root-käyttäjä

Lopuksi voitiin todeta, että virtuaalipalvelin oli otettu onnistuneesti käyttöön. Aikaa operaatioon ja dokumentointiin kului  35 minuuttia.

Asenna weppipalvelin virtuaalipalvelimeesi

Harjoitusta jatkettin aiemmin asennetun ja konfiguroidun virtuaalipalvelimen kanssa. Palvelimeen asennettiin Apache 2 -webpalvelin ja muokattiin Apachen oletussivua.

$ ssh suomisim@palvelimenip //otettiin yhteys palvelimeen

$ sudo apt-get update 

$ sudo apt-get -y install apache2 //apache2 -palvelimen asennus

$ sudoedit /var/www/html/index.html //oletuswebsivun muokkaus

index.html -tiedoston sisältö korvattiin yksinkertaisella html-testisivulla. Tässä vaiheessa huomattiin, että ääkköset eivät toimineet palvelimella. Seuraavasta lähteestä löytyi apua ongelmaan, joka ratkesi seuraavilla komennoilla:

$ sudo apt-get install language-pack-fi

$ sudo locale-gen fi_FI.UTF-8

$ sudo update-locale

Tämän jälkeen siirtymällä selaimella palvelimen IP-osoitteeseen saatiin näkyviin testisivu, johon saatiin nyt lisättyä myös ääkkösiä. Aikaa Apache2 -palvelimen asennukseen ja sivun muokkaukseen kului 5 minuuttia + 15 minuuttia kieliongelmien selvittämiseen.

Selection_022.png

 Laita domain-nimi osoittamaan virtuaalipalvelimeesi

Harjoituksen tavoitteena on ottaa käyttöön domain virtuaalipalvelimelle. Harjoitusta varten valittiin Namecheap -palvelu, joka on luotettava  sekä tarjoaa opiskelijoille pientä alennusta ylempänä mainitun paketin kautta. Palvelussa varmistetaan ensin halutun domain-osoitteen saatavuus ja ostetaan haluttu osoite. Github-paketin kautta tilattuna osoitteesta saa pienen alennuksen tai vaihtoehtoisesti .me -osoitteen saa vuodeksi ilmaiseksi. Huonona puolena palvelu pakottaa .me -osoitteen ostoskoriin sekä Githubin ilmaisen ominaisuuden jollekin ostetulle domainille.

Selection_017.png

Seuraava askel vaatii rekisteröitymistä palveluun sekä luottokorttimaksua palvelusta. Namecheap tarjoaa aggressiivisesti mahdollisuutta yhteistoimintaan Githubin kautta. Kuvaan piilotetun sinisen linkin kautta päästiin kuitenkin itse konfiguroimaan asetuksia.Selection_018.png

Palvelun etusivulla voitiin huomata, että oletuksena molemmilla domaineilla ja kaikilla palveluilla oli auto-renew -toiminto päällä. Koska .me -domainia ei alun perin edes haluttu mukaan eikä sähköpostipalvelua aiottu ottaa käyttöön, pyrittiin minimoimaan ylimääräiset kulut ja jätettiin ainoastaan domain simosuominen.com auto-renew tilaan. Syystä tai toisesta simosuominen.me -domainin sähköpostin auto-renew -toiminto piti käydä erikseen poistamassa alla olevan kuvan valikosta kohdasta Manage.

Selection_020.png

simosuominen.com -domainin asetuksia päästiin siirtymällä Domain list -> Manage. Harjoituksessa käytettiin Advanced DNS -näkymää, joka oli allekirjoittaneelle selkeämpi tapa muokata asetuksia. Alla olevassa kuvassa on kuvattu yksinkertainen konfiguraatio, jolla domain simosuominen.com saatiin viittaamaan Digitaloceanin kautta käyttöön otettuun virtuaalipalvelimeen ja ylempänä tehtyyn Simon Testisivu -websivuun. Palvelimen IP-osoite on sutattu kohdasta Value.Selection_023.png

Tee weppisivu omalle virtuaalipalvelimellesi käyttäen Apachen VirtualHost-asetusta.

Jatkettiin harjoitusta samalla palvelimella ja kokoonpanolla. Tavoitteena oli toteuttaa toinen websivu samalla palvelimella käyttäen Apachen VirtualHost -asetusta. Harjoitusta varten omistettu simosuominen.me -domain oli ohjattu osoittamaan käytettyyn virtuaalipalvelimeen.

$ ssh suomisim@palvelimenip //kirjautuminen palvelimelle

$ mkdir /home/suomisim/html/simome //luotiin kansio simosuominen.me sivustolle

$ nano /home/suomisim/html/simome/index.html //luotiin websivu kansioon

$ sudoedit /etc/apache2/sites-available/simome.conf //luotiin asetustiedosto sivustolle

simome.conf -tiedostoon tehtiin tarvittavat ohjaustiedot (ks. kuva)

Terminal - suomisim@lapikas: ~-html-simome_024.png

$ sudo a2ensite simome.conf //otettiin sivu käyttöön

$ sudo service apache2 restart //käynnistettiin Apache 2 uudestaan

Harjoituksen lopputuloksena virtuaalipalvelimella pyörii kaksi eri verkkosivustoa, simosuominen.com ja simosuominen.me

Selection_025.png

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html” Simo Suominen