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 tilaa. Esimerkin kahden jakelun (lucis, maverick) ja kahden arkkitehtuurin (i386, amd64) tarvitsema tila oli 76.1Gt. Verkon nopeus oli 1.2Mt/s, joten kokonaisuudessaan meni aikaa n. 19 tuntia

Alla taulukko erilaisista vaihtoehdoista

Jakelu

Arkkitehtuurit

Kiintolevytila

Paketit

10.04 LTS (Lucid Lynx)

i386 / amd64

7.2GiB / 7.3GiB

main,restricted

10.04 LTS (Lucid Lynx)

amd64

31.9GiB

main,restricted,multiverse,universe

10.04 LTS (Lucid Lynx)

i386,amd64

43.3GiB

main,restricted,multiverse,universe

10.04 LTS (Lucid Lynx), 10.10 (Maverick Meerkat)

i386,amd64

76.1GiB

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


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, 2011 JakeStyles
# License http://www.gnu.org/licenses/gpl.txt

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

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

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

# 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)
# Valitut versiot 10.04 LTS (lucid) ja 10.10 (Maverick)
DIST="lucid,lucid-updates,lucid-security,maverick,maverick-updates,maverick-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.

Esimerkissa verkon nopeus oli 1.2Mt/s ja latausten koko 76.1Gt, joten kokonaisuudessaan meni aikaa n. 19 tuntia. Lataus käynnistettiin neljä kertaa uudestaan ja aina löytyi uusia paketteja. Luultavasti ftp-yhteyden kautta funetilla on jonkinasteinen siirtokoko / aika-raja, joka saavutettiin ja yhteys katkesi.

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 10.10 (Maverick Meerkat) 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/ maverick main restricted universe multiverse
deb http://192.168.2.100/ubuntu/ maverick-updates main restricted universe multiverse
deb http://192.168.2.100/ubuntu/ maverick-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.