Tagapache2

Puppet package-file-service example

I am writing this post as part of course Linuxin keskitetty hallinta held by Tero Karvinen. In this post I will create new package-file-service module and install apache2 by puppet.

If you need to help for installing puppet I recommend you beginning training puppet here:
http://nikokiuru.com/2013/11/hello-puppet/

Otherwise, let’s begin to install Apache2 by puppet!

Create new module

First create new module and init.pp file inside manifests:

$ mkdir -p modules/apache2/manifests/
$ nano modules/apache2/manifests/init.pp

And the code in init.pp:

class apache2 {
  package {"apache2":
    ensure => "installed",
  }

  service {"apache2":
    ensure => "running",
    enable => "true",
    require => Package["apache2"],
  }
}

Apply our puppet module by command:

$ puppet apply --modulepath modules/ -e 'class {"apache2":}'

Test module

We can test that Apache2 is running by command:

$ sudo service apache2 status

Result:
Apache2 is running

Source

http://docs.puppetlabs.com/learning/ordering.html#packagefileservice

Ruby on Rails Linuxissa

Tämän ohjeen mukaisesti on saatu testatusti toimimaan oma kehitysympäristöni Xubuntu 13.10 saucy. Ubuntu 12.04 LTS ei aikaisemman testin perusteella toiminut, mutta tulen lähipäivinä päivittämään tämän ohjeen toimimaan myös sillä.

Asennetaan Ruby on Rails

Testattuani asentaa Ruby on Rails moneen eri linuxin levityspakettiin tai niiden eri versioihin, olen tullut siihen johtopäätökseen että järkevintä on asentaa RVM (Ruby Version Manager), jonka kautta hallitaan Rubya. RVM löytyy myös pakettivarastosta, mutta siellä on tällä hetkellä vanha ja buginen versio, joten järkevintä on asentaa se RVM:n repositorista:

$ sudo apt-get update
$ sudo apt-get -y install curl
$ sudo curl -L https://get.rvm.io | bash -s stable --ruby --autolibs=enable --auto-dotfiles

Luodaan RVM:lle alias, jotta pystymme kutsumaan sitä myös jatkossa:

$ source $HOME/.rvm/scripts/rvm

Asennetaan rails:

$ sudo gem install rails

Hei Rails!

Luodaan “Hei Maailma” rails projekti:

$ mkdir -p /home/niko/public_html/
$ cd /home/niko/public_html/
$ rails new hello-rails

Asennetaan Apache2

$ sudo apt-get -y install apache2
$ sudo a2enmod rewrite
$ sudo a2enmod userdir
$ sudo service apache2 restart

Asennetaan Phusion Passenger

$ sudo apt-get -y install libapache2-mod-passenger

Luodaan apacheen uusi virtualhost:

$ sudoedit /etc/apache2/sites-available/hello-rails.conf

Kirjoita seuraava koodi hello-rails -tiedostoon (korvaa home-kansion käyttäjä omalla):

<VirtualHost *:80>
  RailsEnv development
  ServerName hello-rails
  DocumentRoot /home/niko/public_html/hello-rails/public/
</VirtualHost>

Hyväksy uusi sivusi, ja lataa Apache:n asetukset uudestaan:

$ sudo a2ensite hello-rails.conf
$ sudo service apache2 restart

Testaus

Otetaan sivustoon yhteyttä curlilla, todistaaksemme railsin toimivuuden:

$ curl -I hello-rails

Tulos:

HTTP/1.1 200 
Date: Thu, 05 Dec 2013 16:10:47 GMT
Server: Apache/2.4.6 (Ubuntu)
X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.13
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-UA-Compatible: chrome=1
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: d63000a5-d953-4346-bf1f-4a9c4ff4f8db
X-Runtime: 0.009467
Set-Cookie: request_method=HEAD; path=/
ETag: "9fdff472a0cc0802ae8009cd2322f2da"
Status: 200
Content-Type: text/html; charset=utf-8

Lähteet

https://rvm.io/rvm/install

Apache2 logit ja prosessien seuranta

Apache2
Palvelimessa logit ovat yhtiä tärkeimpiä tiedostoja, kun aletaan virhettä etsimään. Logit pitävät yllä myös mitä on tapahtunut, ja niillä voidaan ennustaa mitä tulee tapahtumaan. Otin tähän artikkeliin esimerkkilogiksi seurantaan oman palvelimen apache2 logit.

Apache logittaa kahteen eri tiedostoon, kahta eri tyyppistä logia. Tiedostot ovat nimeltään error.log ja access.log. Error.log nimensä mukaan pitää sisällään apachen päällä toimivien nettisivujen virheet, kun taas access.log logittaa kaikki apachen yhteydenotot mm. käyttäjän sivunpäivitykset, sivuvaihdot.

Itselläni pyörii omalla palvelimellani webbisivut, jotka ovat kirjoitettu php:lla. Kävin tarkastelemassa apachen error.logia, ja otin sieltä yhden esimerkki rivin:
[Thu Sep 12 22:21:14 2013] [error] [client 198.143.xxx.xxx] PHP Notice: A session had already been started – ignoring session_start() in /var/sivun/osoite/public_html/index.php on line 4

– Ensimmäiset hakasulut sisältävät ajan milloin virhe on syntynyt ([Thu Sep 12 22:21:14 2013])
– Toiset hakasulut kertoo että kyseessä on virhe ([error])
– Kolmannet hakasulut kertoo että kyseessä on asiakasliittymästä aiheutuva virhe, ja sen on aiheutunut kyseisestä ip:stä “198.143.xxx.xxx” (loppu osa sensuroitu) ([client 198.143.xxx.xxx])
– Neljänneksi kerrotaan virheen syy, jonka on antanut PHP. Virhe ei ole kriittinen, vaan huomio. PHP antaa huomautuksen että sessio jota yritin luoda, on jo olemassa, ja PHP ei ota huomioon antamaani session_start() funktiota, joka löytyy paikasta /var/sivun/osoite/public_html/index.php ja riviltä 4. Tuosta ilmoituksesta minun on helppo päätellä, että käyttäjä tulee saamaan session_start():n kahdesti yhdellä sivunlatauksella, joka ei ole tarpeellista.

Prosessien seuranta
Saat kaikki palvelimesi prosessit näkyviin komennolla:

$ sudo ps x

Jokainen käynnissä oleva prosessi on identifikoitu numerolla. Näitä numeroita kutsutaan PID:ksi, joka tulee englanninkielisestä sanasta Process Identifier.
Palvelimen ylläpitäjänä, sinulla on oikeus hallita näitä prosesseja, käynnistää / lopettaa niitä, kuin vain haluat.
ps x antoi minulle seuraavanlaisen viimeisen rivin:
1870 pts/0 R+ 0:00 ps x

Tärkeimmät kohdat tuossa on ensimmäinen ja viimeinen kohta. Ensimmäinen kertoo mikä on prosessin PID-arvo, ja viimeinen prosessin nimen. Prosessi siis oli juuri antamani komento, joka näkyi myös hetken kyseisenä prosessina. Voimme yrittää sulkea prosessin käskyllä:

$ sudo kill -9 1870

Komento todennäköisesti antaa seuraavan ilmoituksen:
bash: kill: (1870) – No such process

Kyseinen ilmoitus johtuu siitä, että ps x oli jo ehtinyt lopettaa itse prosessinsa, kun oli saanut prosession tiedot tulostettua näytöllesi. Kun saamme kyseisen ilmoituksen, voimme olla myös varmoja, että kyseinen prosessi on onnistuneesti lopetettu.

Linux palvelimena kurssin tehtävä: Ratkaise peruskurssin linux-koe

Saimme Linux palvelimena kurssin ensimmäiseksi tehtäväksi ratkaista jonkin aikaisemman peruskurssin kokeen.
Huom! Koska Linuxin perusteet ovat itselleni tutut, olen kirjoittanut ajan säästämiseksi tämän artikkelin ulkomuistista.

Valitsin itse tämän: http://terokarvinen.com/2012/koe-tyoasemat-ja-tietoverkot-33-linux.

Tervetuloa Kiertoradan Kansa Oy:n tietohallintoon! Olet toistaiseksi koko IT-osastomme.
Asenna meille työasema, jolla voi surffailla wepissä, kirjoittaa dokumentteja ja tehdä taulukkolaskentaa. Kirjoitusohjelmista OpenOffice on meille tuttu, voitko asentaa myös sen?

Xubuntun asennus rutiinit ovat lähes identtiset ubuntun kanssa. Tästä minulla on valmiit ohjeet jo olemassa aikasemmassa artikkelissa:
http://nikokiuru.com/2011/08/ubuntu-11-04-asennus/

Meillä työskentelevät Mikko Mallikas, Maija Mehiläinen, Einari Vähäkäähkä, Ik E, Veijo Miettinen ja Håkan Persson. Tekisitkö meille käyttäjät ja jokaiselle esimerkkikotisivun. Voimme sitten muokata sivut SSH-yhteydellä mieleisiksemme. Tallenna käyttäjätunnukset ja salasanat kotihakemistoosi pelkkänä tekstinä tiedostoon users.txt.

Ensimmäisenä päivitetään apt kirjasto:

$ sudo apt-get update

Seuraavaksi lisätään uudet käyttäjät komennolla:

$ useradd käyttäjä

jonka jälkeen annetaan käyttäjälle vahva salasana, ja muutama muu käytättäjäkohtainen tieto.

Kokonaisuudessaan siis:

$ useradd mikko
$ useradd maija
$ useradd einari
$ useradd ik
$ useradd håkan

Kirjoitetaan käyttäjien tunnukset ja salasanat muistiin omaan kotihakemistoomme:

$ cd ~
$ nano users.txt

Ctrl + o -näppäinyhdistelmällä saadaan tallennettua toiminto, ja ctrl + x päästään poist perustilaan.

Seuraavaksi asennetaan apache2 http-palvelin, käyttäjien kotisivuja varten:

$ sudo apt-get install apache2
$ sudo a2enmode userdir
$ sudo service apache2 restart

Nyt käyttäjien kotihakemistoihin on ilmestynyt uusi kansio “public_html”, jotka ovat auki ulkoverkkoon perjaatteella: “http://domain_tai_serverin_ip/~kayttaja”

Einari haluaa käyttää PHP:ta. Tee Einarille “Hei maailma”.

PHP-tuen apacheen saa asennettua seuraavasti:

$ sudo apt-get install php5
$ sudo apt-get install libapache2-mod-php5
$ sudo a2enmod php5
$ sudo service apahce2 restart

Jotta käyttäjät pystyvät ajamaan php:ta omasta kotihakemistosta, täytyy meidän hieman muokata apache2:n asetustiedostoa:

$ cd /etc/apache2/mods-enabled/
$ sudoedit php5.conf

Kommentoi seuraavat rivit antamalla # merkin rivin eteen:

#<IfModule mod_userdir.c>
# <Directory /home/*/public_html>
# php_admin_value engine Off
# </Directory>
#</IfModule>

Lopuksi restartataan apache2, jotta saadaan äskeinen muutos voimaan:

$ sudo service apache2 restart

Tehdään Einarin kotihakemistoon “Hei maailma” php-tiedosto.

Ensimmäiseksi asennetaan openssh-serveri, jotta voimme kirjautua käyttäjinä sisälle.

$ sudo apt-get install openssh-server

Jonka jälkeen kirjaudutaan sisälle einarina:

$ ssh [email protected]

Ja seuraavaksi annetaan einarin salasana.

Sitten luodaan einarille kotihakemistoon public_html.

$ cd /home/einari/
$ mkdir public_html

Ja seuraavaksi luodaan Einarille “Hei maailma” testi php-skripti.

$ cd /home/einari/public_html
$ nano index.php

Kirjoita tiedostoon seuraava scripti:

<?php echo "Hello php!"; ?>

Ctrl + o tallensi tiedoston, ja ctrl + x sulki sen, kuten aikaisemminkin.

Ja lopuksi voimme poistua einarina kirjoittamalla exit komentoriville.

Maija haluaa ohjelmoida Pythonilla. Mikko haluaa ohjelmoida Javalla. Tee ja testaa “hei maailmat” kummankin kotihakemistoon.

Asennetaan python:

$ apt-get install python-dev

Tehdään “hei maailma” tiedosto Maijan kotihakemistoon.
Eli ensimmäiseksi kirjaudutaan sisään Maijana:

$ ssh [email protected]

Ja luodaan maijalle “Hei maailma!” esimerkki koodi:

$ nano heimaailma.py

Kirjoitetaan tiedostoon heimaailma.py tiedostoon:

print 'Hei maailma!'

ja testiksi voimme vielä ajaa sen komennolla:

$ python heimaailma.py

Kuulin, että saatat päästä innovaattorikurssille Turkkiin. Valmistaudu siis ylläpitämään konettamme verkon yli. Suojaa kone tulimuurilla. Tee reiät tässä asentamiasi palveluita varten

Asennetaan palomuurisovellus ufw:

$ sudo apt-get install ufw

seuraavaksi kytketään palomuuri päälle, sekä laitetaan portit 22 ja 80 avoimiksi:

$ sudo ufw enable
$ sudo ufw allow 22
$ sudo ufw allow 80
$ sudo ufw default deny

tämän jälkeen serveri on käynnistettävä uudestaa, jotta asetukset astuvat voimaan.

$ sudo shutdown -r 0

© 2017 Niko Kiuru

Theme by Anders NorenUp ↑