Suoraan sisältöön

Sisällysluettelo

Oma_ubuntu_peilipalvelin.png

Lyhyesti

Tämän artikkelin tarkoitus on kertoa esimerkinomaisesti, miten luodaan oma peilipalvelin ubuntun jakeluista. Artikkelissa käydään kohta kohdalta läpi, miten luodaan oma peilipalvelin, asetetaan automaattinen ylläpito ja lopuksi miten työasemat määritellään käyttämään omaa peilipalvelinta.

Kenelle tarkoitettu

Oman peilipalvelin kannattaa olla, jos samassa lähiverkossa on useita ubuntuja. Jo kolmella työasemalla kaistantarve päivittäessä on merkittävä, saati sitten kouluympäristöissä.

Artikkeli syntyi kun toisen asteen oppilaitokseen asennettiin luokallinen (22 kpl) ubuntu-työasemia. Päivityspakettien hakeminen oli luonnollisesti työasemakohtainen, joten työpäivän alussa saattoi tulla suuri piikki kaistankäytössä. Artikkelin mukaan luotu oma peilauspalvelin korjasi tämän ongelman.

Laitteistovaatimukset

Kiintolevylle tulee olla jonkin verran tilaa. Esimerkin yhden jakelun (trusty) ja kahden arkkitehtuurin (i386, amd64) tarvitsema tila oli 117Gt.

Alla taulukko erilaisista vaihtoehdoista

Jakelu

Arkkitehtuurit

Kiintolevytila

Paketit

14.04 LTS (Trusty Tahr)

i386 / amd64

7.2GiB / 7.3GiB

main,restricted

14.04 LTS (Trusty Tahr)

i386 / amd64

59GiB

main,restricted,multiverse,universe

Esivalmistelut

Apache

Pakettien jakamiseen käytetään omaa www-palvelinta, joten jos sitä ei vielä ole asennettu, on nyt korkea aika. Asenna apache seuraavasti

sudo apt-get install apache2

Itse peilaus tapahtuu debmirror ohjelmalla

sudo apt-get install debmirror

Muista asettaa rootille ympäristömuuttujat http_proxy ja ftp_proxy jos niitä tarvitaan. Helpoin tapa tälle on kirjautua roottina sisään ja muuttaa .bashrc

sudo -i
nano ~/.bashrc

Lisää loppuun rivit

export http_proxy="http://username:password@proxy:port"
export ftp_proxy="http://username:password@proxy:port"

Jos käytetään proxya, kannattaa sisäinen verkko lisätä ohituslistalle. Eli

sudo gedit /etc/environment

ja lisää rivi sisäiselle verkolle (tässä tapauksessa C-luokan verkko, 24bit aliverkon peite ja osoiteavaruus 192.168.1.0)

no_proxy="192.168.1.0/24"


Julkaisuvarmenteet (Release signatures)

Aluksi pitää määritellä avain, jota vertaamalla voidaan varmistua, että ladataan oikeita paketteja. Onneksi ubuntussa on tallennettu vertailuavaimet hakemistoon /usr/share/keyrings.

Ensin luodaan hakemisto gpg-avaimelle

sudo mkdir -p /mirrors/mirrorkeyring

Sitten generoidaan sinne tarvittava avain

sudo gpg --no-default-keyring --keyring /mirrors/mirrorkeyring/trustedkeys.gpg --import /usr/share/keyrings/ubuntu-archive-keyring.gpg


Skriptin luominen

Peilipalvelimen voi päivittää pelkällä komentorivikäskyllä, mutta sivistyneempi tapa on tehdä skripti, jossa määritellään kaikki tarpeelliset muuttujat ja jota voi kutsua cronin kautta ajastetusti.

Ensin luodaan hakemisto, minne kaikki peilattavat tiedostot ladataan

sudo mkdir /mirrors/ubuntu

Luodaan skripti päivitystä varten. (username on oma käyttäjätunnuksesi, määritellään tässä ryhmäoikeuksiin).

sudo touch /mirrors/buildMirror.sh
sudo chown -R root:username /mirrors/ubuntu
sudo chmod -R 755 /mirrors/ubuntu
sudo chmod 755 /mirrors/buildMirror.sh

Avataan luotu skripti geditillä (käytä sitä editoria, mitä haluat)

sudo gedit /mirrors/buildMirror.sh

... ja kopioi seuraava teksti ja tallenna se.

# buildMirror.sh
# Luo peilihakemiston ubuntun jakelusta

# 2005 LittleLion, 2014 JakeStyles
# License http://www.gnu.org/licenses/gpl.txt

# käytetään generoitua avainta
export GNUPGHOME=/mirrors/mirrorkeyring

################################################################################
# MÄÄRITTELYT
################################################################################
# Ei ladata lähdekoodeja
OPTIONS="--nosource"

# Valitaan käytettävä tiedonsiirtotapa (rsync/ftp/http) tiedostojen päivittämiseen
#  - Funetin tapauksessa valittiin http
METHOD="http"

# Valitaan käytettävä palvelin, jolla tiedostot sijaitsevat.
# Vain palvelimen nimi kirjoitetaan (ei http tai ftp -alkua)
HOST="www.nic.funet.fi"

# Hakemisto, josta päivitykset löytyvät palvelimelta
DIR="/pub/mirrors/archive.ubuntu.com"

# Valitaan käytettävät versiot (voi valita useita, erotinmerkki pilkku)
# Valittu versio 14.04 LTS (trusty)
DIST="trusty,trusty-updates,trusty-security"

# Valitaan pakettityypit (main ja restricted pakolliset)
SECTIONS="main,restricted,universe,multiverse"

# Valitaan arkkitehtuurit (i386,amd64)
ARCH="i386,amd64"

# Määritellään lokitiedostojen hakemisto
LOGDIR="/var/log"

# Määritellään kohdehakemisto, minne haetut paketit tallennetaan (täytyy olla luotuna valmiiksi!)
DESTDIR="/mirrors/ubuntu"

################################################################################
# PÄÄOHJELMA
################################################################################
# Kopioidaan määrittelyiden mukaisesti tiedostot paikalliseen hakemistoon
#  - Virheilmoitukset ohjataan tiedostoon debmirrorscript-errors.log
#  - Suorituksen aikaiset tiedot ohjataan tiedostoon debmirrorscript-progress.log
debmirror $OPTIONS -h $HOST -e $METHOD -r $DIR -d $DIST -s $SECTIONS -a $ARCH $DESTDIR -p -v 2> $LOGDIR/debmirrorscript-errors.log 1> $LOGDIR/debmirrorscript-progress.log


Linkki apacheen

Päivitystä varten tee linkki apachen www-hakemistoon ja annetaan sille oikeudet.

sudo ln -s /mirrors/ubuntu /var/www/ubuntu
sudo chmod 755 /var/www/ubuntu


Peilaus

Kun järjestelmä on määritelty oikein, testataan peilausprosessi. Suorita

sudo /mirrors/buildMirror.sh &

ja järjestelmä alkaa hakea tiedostoja peilipalvelimelle. Tämä vaihe voi kestää useita tunteja, riippuen haettavan jakelun laajuudesta ja verkon nopeudesta.

Ajastus

Mikäli skriptin ajaminen manuaalisesti tuntuu työläältä, kannattaa luoda siitä oma ajastettu toiminto croniin. Ensin editori auki

sudo crontab -e

Lisää seuraava rivi

0 1 * * * /mirrors/buildMirror.sh

ja peilaus suoritetaan kerran vuorokaudessa,kello 01:00. Mikäli haluat, voit käynnistää cronin uudestaan

sudo service cron restart


Asiakkaat (clients)

Esimerkkinä on käytetty asiakastyöasemaa, johon on asennettu 64-bittinen versio.

Asiakastyöasemissa pitää määritellä sources.list käyttämään luotua, omaa peilipalvelinta. Siirrytään hakemistoon ja kopioidaan alkuperäinen sources.list talteen nimellä sources.list.orig mikäli se halutaan palauttaa.

cd /etc/apt
sudo mv sources.list sources.list.orig

luodaan uusi sources.list

sudo gedit sources.list

Kopioi seuraavat rivit ja muokkaa vastaamaan omaa järjestelmääsi

# Paikallinen peilipalvelin.
# Muuta IP-numero 192.168.2.100 vastamaan omaa palvelintasi (myös nimi käy, jos määritelty asiakkaan
# /etc/hosts -tiedostossa)
deb http://192.168.2.100/ubuntu/ trusty main restricted universe multiverse
deb http://192.168.2.100/ubuntu/ trusty-updates main restricted universe multiverse
deb http://192.168.2.100/ubuntu/ trusty-security main restricted universe multiverse

Tämän jälkeen päivitetään lähteet ja testataan uusi palvelin

sudo apt-get update
sudo apt-get dist-upgrade

Ja työaseman pitäisi hakea päivitykset paikalliselta palvelimelta.