Git Zerbitzari Baten Muntaia

Post honen helburua garapenerako Git errepositorio zerbitzari bat martxan jartzea da. Horretarako Git, OpenSSH, Gitolite eta Gitweb tresnetaz baliatuko gara. Prozesu honetan OpenSSH eta Apache zerbitzariak dagoeneko martxan eta egoki konfiguraturik daudela aurreikusten da. Erabiliko dugun komando multzoa Ubuntu sistema batetara zuzendutakoak dira, beraz aldaketen beharra egon liteke beste linux sistemetara egokitzeko.

Git errepositorioa instalatu

Lehenik eta behin gure ubuntu sisteman Git tresna instalatuko dugu. Horretarako apt-get komandoaz baliatuko gara

1
sudo apt-get install git-core

Git erabiltzailea sortu eta konfiguratu

Git tresnarekin lan egingo duen erabiltzailea sortu eta konfiguratzea da hurrengo pausoa. Diseinatutako kautotze prozesuan erabiltzaile ugarirentzako sarbidea aurreikusten da. Lan hori ordea Gitolite tresnaren eskuetan utziko dugu. Erabiltzaile soil honen helburua SSH bidezko kautotze sistema arrunt eta segurua ahalbidetzea da.

1
2
3
4
5
6
7
8
sudo adduser \
    --system \
    --shell /bin/bash \
    --gecos 'Control de versiones' \
    --group \
    --disabled-password \
    --home /home/git \
    git
1
sudo passwd git

hurrengo urratsa erabiltzaileren home direktorioaren baimenak egokitzea izango da

1
sudo chmod o-rwx /home/git

emandako pausoak zuzenak izan direla egiaztatzeko erabiltzailearen kontuan kautotuko gara

1
su git

SSH sarbidea konfiguratu

Sortu berri dugun git erabiltzaileari SSH bidezko sarbidea gaituko diogu. Horretarako /etc/ssh/sshd_config fitxategian honako lerroa gehitu behar dugu (dagoeneko existitzen bada git testua gehitu besterik ez duzu)

1
AllowGroup git

Aldaketa honek git erabiltzailea SSH bidez bere pasahitza erabiliz sisteman kautotzea ahalbidetzen du. Gitolite tresna erabiltzeko ordea gako publiko bidezko kautotzea beharrezkoa da. Horretarako berriz ere sshd_config fitxategia editatu beharra dugu, dagokien  lerroei honako balioa esleituz:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

aldaketak amaitu ostean sshd zerbitzaria berrabiaratuko dugu

1
sudo service ssh restart

Zerbitzaria gako publikoak onartzeko prest dagoen arren, git erabiltzaileari dagozkion konfigurazioak gehitzea ezinbestekoa da. Erabiltzaile bakoitzak baimendutako gako publiko bat baino gehiago izan dezakeenez, azpi-erabiltzaile ugarik pasahitzik partekatu gabe batera lan egiteko aukera izango dute.

Lehenik beharrezko konfigurazio direktorio eta fitxategiak sortuko ditugu

1
2
3
4
5
sudo mkdir /home/git/.ssh
sudo touch /home/git/.ssh/authorized_keys
sudo chown -R git:git /home/git/.ssh
sudo chmod 700 /home/git/.ssh
sudo chmod 600 /home/git/.ssh/authorized_keys

direktorio edo fitxategi hauek dagoeneko sortuak dauden kasuan edukia txuritu eta baimen egokiak ezarri beharko zaizkie.

Hurrengo pausua RSA gako publiko berri bat sortzea da. Komando honek uneko direktorioan gako publiko eta pribatu parea sortuko du. Kasu honetan erabiltzaile gisara git-admin ezizena erabiliko dugu:

1
ssh-keygen -t rsa -b 2048 -C "git-admin@[zerbitzari-izena]"

sortutako fitxategiak honakoak izango dira:

  • id_rsa: Erabiltzailearen gako pribatua. Bezero makinatik konexioak egikaritzeko balioko duena (ezinbestekoa da gako hau pribatu mantentzea)
  • id_rsa.pub:  Erabiltzailearen gako publikoa. Zerbitzarian gordeta egongo den gakoaren zati partekagarria.

Behin gakoa sortuta zati pribatua bezero makinara kopiatuko dugu eta zati publikoa zerbitzarian.

(Kontuan izan pauso hauek ez dutela dagoeneko gako bidezko sarbidea onartzen, horretarako gitolite tresna konfiguratu beharko dugu).

Gitolite tresna

Gitolitek errepositorioen gaineko baimenak gestionatzeko aukera eskaintzen du. Lehen pausoa sisteman instalatzea izango da.

1
sudo apt-get install gitolite

Ondoren Gitolite-ren konfigurazio prozesuari ekingo diogu. Lehenik, baimenen gestiorako administratzaile bat sortuko dugu aurreko pausuan sortutako gako publikoa erabiliz.

1
2
3
4
5
6
7
8
sudo su git
cd
git clone git://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin
echo "PATH=$HOME/bin:$PATH" > ~/.bashrc
source ~/.bashrc
gitolite setup -pk [sortutako-gako-fitxategia].pub

Gitweb errepositorio arakatzailea erabili nahi dugunez .gitolite.rc fitxategia editatu eta honako aldaketak egin beharko ditugu:

UMASK => 0027

Dagoeneko, konfigurazio prozesuak repositories izeneko direktorioa sortu du git erabiltzailearen home direktorioan. Bertan gorde eta kudeatu ahalko dira git errepositorio guztiak (administraziokoa barne).

Gitolite tresnak gitolite-admin errepositorioa erabiltzen du baimen kudeaketa egiteko. Hau da, errepositorio hori erabiltzen du konfigurazio fitxategi gisara. Bertan egindako push bakoitzeko, tresnak, egindako aldaketak irakurri eta beharrezko egokitzapenak egikarituko ditu.

Hurrengo pausua beraz, sortutako gako pribatua eta git bezero bat erabiliz administrazio errepositorioa gure makinan klonatzea da. Kontuan izan behar dugu, zerbitzarira konektatzen saiatzen hari garela arazorik suertzatzen bada, aurreko puntuak berrikusi beharko ditugula.

Errepositorioa deskargatuta bi direktorio aurkitu ahalko ditugu bertan:

  • conf: Gitoliteren konfigurazio fitxategia gordetzeko balio duena.
  • keydir: Erabiltzaileen gakoak gordetzeko balio duen direktorioa (administratzailearen gakoa dagoeneko bertan aurkituko duzu).

conf direktorioan aurkitzen den gitolite.conf fitxategia erabiliko dugu administrazio fitxategi gisara. Bertan egindako aldaketen push bat eginda automatikoki sortuko dira detektatutako erabiltzaile eta errepositorio berriak (erabiltzaile berrien gako publikoak keydir direktorioan gorde beharko dira izen berdineko fitxategietan).

Gitweb arakatzailea instalatu

Azken pausua gure zerbitzariari git errepositorioen web arakatzailea gehitzea da. Horretarako gitweb eta bere pakete laguntzaileak instalatu beharko ditugu.

1
sudo apt-get install highlight gitweb

Ondoren, arakatzailearen konfigurazioa editatuko ditugu errepositorioen kokalekua eta bestelako datuak zehazteko. Horretarako /etc/gitweb.conf fitxategia ireki eta honako sarrerak editatu behar dira:

$projectroot = "/home/git/repositories";
$projects_list = "/home/git/projects.list";
#Azken lerro hau gehitu
$feature{'highlight'}{'default'} = [1];

gitweb tresnari errepositorietara atzipena baimentzeko honako komandoak erabiliko ditugu

1
2
3
4
sudo usermod -a -G git www-data
sudo chmod g+r /home/git/projects.list
sudo chmod -R g+rx /home/git/repositories
sudo service apache2 restart

Azken pausoa test errepositorioa web arakatzailean publiko egitea da. Horretarako honako aldaketak egingo dizkiogu gitolite.conf fitxategiari (aldaketak indarrean jartzeko, etzazu ahaztu errepositorioaren commit eta push-a egitea).

repo testing
  RW+ = @all
  R = gitweb

Arakatzailea zuzen konfiguratu dela baieztatzeko zure nabigadorean http://[zure-domeinua]/gitweb helbidera atzitzea besterik ez zaigu falta.

Kanpo Web Erabiltzaileak

Kanpo web erabiltzaile berri bat sortzeko lehen pausua SFTP erabiltzaile mugatu berri bat sortzea da. Adibide honetan webuser erabiltzaile izena erabiliko da.

Behin prozesua amaituta hurrengo urratsa web orrialdearen gordailua sortzea da. Kasu honetan web orrialdeak /var/www direktorioan gordeko dira. Beraz:

sudo mkdir /var/www/webuser
sudo chown webuser:webuser /var/www/webuser
sudo chmod 755 /var/www/webuser

webuser erabiltzailea SFTP erabiltzaile mugatu da, beraz ez du /var/www direkotorioa atzizeko modurik. Atzipena ahalbidetzeko ezinbestekoa da direktorio binding-a egitea. Lehenik erabiltzaileran home-an www izeneko direkotorioa sortu beharra dago:

sudo mkdir /home/webuser/www

ondoren direktorio biak binding prozesuaz linkatu:

sudo mount /var/www/webuser /home/webuser/www -o bind

horrela erabiltzaileak /var/www/webuser direktorioaren edukia atzigarri izango du /home/webuser/www direktorioaren bitartez. Prozesu hau ordea ez da behin betikoa. Zerbitzaria berabiatzearakoan komando bera exekutatu beharko da berriz ere. Hori dela eta /etc/rc.local script-ean lerro hori gehitzea gomendatzen da (Kasu honetan azken script horretan exekutatzen den azpi-script batean gehitu da /home/myuser/bin/mount-binds.sh-an alegia).

Azkenik, web erabiltzaile askok mysql datu basera atzipena beharrezkoa izaten dute. Horretarako phpmyadmin bezalako tresna bat erabiltzea gomendatze da. Prozesuan honako puntuak izan beharko dira kontuan:

  • Sortutako erabiltzailearen izen eta pasahitza sistemakoaren berak izatea gomendatzen da.
  • Erabiltzaileari baimen global guztiak ezabatu behar zaizkio (zerbitzariko beste edozein datu base atzitu ez dezan).
  • Erabiltzaile izen berbera izango duen datu base berria sortzea.
  • Erabiltzaileari bere datu base propioari beharrezko baimenak ematea.

Atzipen ez onartuak ekiditeko, garrantzi handikoa da sortutako erabiltzailearen baimenak egiaztatzea,

SFTP Erabiltzaile Mugatuak

Sftp protokoloa erabiltzen denean erabiltzaileak libreki nabiga dezakete sistemako direktorien hartean. Askatasun horrek arazoak eman ditzazke erabiltzaileen kontrola norbanakoaren home direktoriora mugatu nahi den kasuetan. Arazoa ekiditeko chroot bidezko sftp sistema erabiltzea besterik ez dago.

OpenSSH Zerbitzuaren Konfigurazioa

Zerbitzariak erabiltzaile mugatuak onartu ditzan /etc/ssh/sshd_config konfigurazio fitxategia editatu beharra dago.

  • Sftp exekutagarria definitzen duen lerroa iruzkindu
#Subsystem sftp /usr/lib/openssh/sftp-server
  • eta beste honegatik ordezkatu
Subsystem sftp internal-sftp
  • Fitxategiaren amaieran erabiltzaile mugatuentzako konfigurazio espezifikoa ezarri
Match Group sftp    
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

non sftp taldea sftp zerbitzaria erabiliko duten erabiltzaile mugatuen talde komuna den. Kontuan izan talde honen ordez beste edozein talde-izen erabili daitekeela.

Talde berria sortu

Aurreko atalean ikusi den bezala talde berri bat definitu behar da erabiltzaile mugatuentzat. Horretarako honako komandoa erabiliko da:

sudo addgroup sftp

Erabiltzaile berria

Lehenik eta behin erabiltzailearen home direktorioa eraiki behar da.

sudo mkdir /home/sftpuser
sudo mkdir /home/sftpuser/data

kontuan izan home direktorioaren erroa root erabiltzailearen kontrolpean egon behar duela (chroot egin ahal izateko) eta beraz erabiltzaileak ez duela idazketa baimenik edukiko. Erabiltzaileak idazketak egin ahal izan ditzan data azpi direktorioa sortu eta bi direktorioei beharrezko baimenak ezarri behar zaizkie

sudo useradd sftpuser
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
sudo chown sftpuser:sftpuser /home/sftpuser/data

azkenik erabiltzaile berria sortu eta konfiguratu beharra dago.

sudo passwd sftpuser
sudo usermod -s /bin/false sftpuser
sudo usermod -d /home/sftpuser sftpuser

kontuan izan erabiltzailearen komando interpretatzailetzat /bin/false ezarri dela. Modu honetan erabiltzaile mugatuen ssh bidezko kautotzea ekiditen da. Azkenik erabiltzaile berria sftp taldera gehitzea besterik ez da gelditzen.

sudo adduser sftpuser sftp

Ubuntu Komando Glosarioa

A

  • apt-get install [pakete-izena]  Paketea eta bere dependentziak sisteman instalatu.
  • apt-get update – Sistemako pakete repositoriaren informazioa eguneratu.
  • apt-get upgrade – Eguneraketa duten sistemako pakete guztiak eguneratu.
  • apt-get remove [pakete-izena] – Aukeratutako paketearen exekutagarriak sistematik ezabatu.
  • apt-get –purge remove [pakete-izena] – Aukeratutako paketearen exekutagarri eta konfigurazio fitxategi guztiak sistematik ezabatu.

B

  • blkid /dev/[partizio-identificadorea] – Emandako partizioaren UUID-a lortu.

D

  • dmraid -r – Hardwarezko raid diskoen egoera pantailaratu.

L

  • ln -s [jatorri-direktorioa] [helburu-linka] – Jatorri direktorio edo fitxategiaren esteka sortzen du helburuan.

M

  • make-ssl-cert generate-default-snakeoil –force-overwrite – Sisteman generikoki erabiliko diren zertifikatuak berritzeko komandoa.
  • mount [jatorri-direktorioa] [muntaketa-direktorioa] -o bind – Jatorri direktorioa muntaketa direktorioan muntatzen du. Jatorri direktorioaren edukia beraz muntaketa direktorioan atzigarri aurkituko da.

P

  • passwd [erabiltzaile-izena] – Erabiltzailearen pasahitza ezarri/berritu.

S

  • smbmount //[zerbitzaria]/[jatorri-direktorioa] [helburu-direktoria] -o user=[erabiltzailea] – Samba diskoa emandako helburu direkotioan muntatuko du.

U

  • useradd [erabiltzaile-izena] – Erabiltzaile berri bat sistemara gehitu.
  • usermod -s [komando-interpretatzailea] [erabiltzaile-izena] – Erabiltzailearen komando interpretatzailea ezarri (/bin/sh, /bin/bash, /bin/false…).
  • usermod -d [home-direktorioa] [erabiltzaile-izena] – Erabiltzailearen home direktorioa ezarri.

Distira Sentsorea Ubuntu Sistemetan

Arazo arrunta da Linux distribuzio bat ordenagailu eramangarri batean instalatzerakoan, “Fn” tekla bidez aktibatzen diren funtzioak ehuneko ehunean eskuragarri ez egotea. Hori dela eta post honetan Asus makina batean, distira sentsorea nola aktibatu azalduko da.

Lehenik aipatu beharra dago, Ubuntu sistematan, hardwarea, fitxategietan grabatutako balioen bidez konfiguratzen dela. Fitxategi hauek /sys/ erroan gorderik aurkitzen dira. Kasu partikular honetan distira sentsorearen konfigurazio fitxategia honakoa litzateke:

/sys/devices/platform/asus_laptop/ls_switch

Bertan “0” (ezgaitua) edota “1” (gaitua) baloreak esleitu daitezkeelarik.

Balio aldaketa hauek ordea, birabiaraketaren ondoren baliogabetuak izango dira, sistemak defektuzko balioak esleitzen baititu hasieraketa prozesuan. Horregatik, baloreei persistentzia eskainiko dien sysfsutils erramintaren erabilera beharrezkoa da. Behin instalazioa amaitzen denean, /etc/sysfs.conf konfigurazio fitxategia editatu beharra dago honako lerroa gehituz:

devices/platform/asus_laptop/ls_switch=1

Kontuan izan, programak berak /sys/ aurrezkia esleitzen diola lerro bakoitzari. Fitxategia gorde eta sistema birabiaratu ondoren, gure Asus eramangarriaren distira sentsorea martxan izango da.

JDownloader Testuzko Linux Zerbitzari Batean

Post honetan ingurune grafikorik ez duen Linux zerbitzari batean JDownloader deskarga programaren instalaziorako pausuak argituko dira.

Lehen pausua JDownloader programa deskargatzea eta instalatzea da. Horretarako honako orrialdetik instaladorea lortu eta instalazio pausuak jarraitu besterik ez duzu. http://jdownloader.org/download

Behin aplikazioa instalatuta, exekutatu eta JDownloader-ek dakarren urruneko maneiurako Web Interfazea gaitu beharko duzu (Plugin-en artean aurki daiteke aukera hau).

Ondoren Xvfb komandoa instalatu beharra dago, horretarako honako pausuak jarraituz.

Azkenik honako kodea duen script-fitxategia sortu eta Linux sisteman instalatu beharko duzu honako pausuak egikarituz.

#!/bin/sh
 
set -e
 
JDOWNLOADER_USER=erabiltzailea
NDISPLAY=8765
 
XVFB_COMMAND="/usr/bin/Xvfb"
XVFB_COMMAND_OPS=":$NDISPLAY -ac"
JD_COMMAND="/usr/bin/java"
JD_COMMAND_OPS="-Xmx512m -jar /exekutagarrira/path/osoa/JDownloader.jar"
 
export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
 
start() {
     start-stop-daemon --start --quiet --background --user $JDOWNLOADER_USER --exec $XVFB_COMMAND  -- $XVFB_COMMAND_OPS &
     export DISPLAY=:$NDISPLAY.0
     start-stop-daemon --start --quiet --background --user $JDOWNLOADER_USER --exec $JD_COMMAND -- $JD_COMMAND_OPS &
}
 
stop() {
     kill `ps aux | grep "$JD_COMMAND" | awk '{print $2}' | head -n 1`
     kill `ps aux | grep "$XVFB_COMMAND" | awk '{print $2}' | head -n 1`
}
 
case "$1" in
  start)
        echo "Starting daemon: "$NAME
          start
          echo "."
     ;;
  stop)
        echo "Stopping daemon: "$NAME
          stop
          echo "."
     ;;
  *)
     echo "Usage: "$1" {start|stop}"
     exit 1
esac
 
exit 0

Kontuan izan script honetan honako balioetan sistemaren araberako aldaketak egin beharko direla:

  • JDOWNLOADER_USER: script-a exekutatuko duen erabiltzailea (root erabiltzailea ez da gomendatzen).
  • NDISPLAY: Xvfb-k sortuko duen ingurune grafikoaren identifikadorea.
  • JD_COMMAND_OPS: JDownloader.jar elementua aurkitzen den direktorioaren path-a ezarri beharko da.

Behin pauso guzti hauek jarraituta, sistema berrabiaratu beharko da. Dena egoki joan baldin bada, JDownloader-en web interfazera konektatu ahal izango zara.

Xvfb Ingurune Grafiko Birtualak

Sortzen dituen errendimendu galerak direla eta, linux zerbitzarietan ez da inolako ingurune grafikorik abiatzen. Hori dela eta, ezinezkoa izaten da derrigorrez ingurune grafikoa beharrezko duten aplikazioak exekutatzea.

Arazo honi aurre egiteko, Xvfb komandoaz baliatu gaitezke. Xvfb edo X Virtual Framebuffer komandoak, memoria espazioan ingurune grafiko birtual bat sortzeko gai da. Horrela ingurunea beharrezko duten aplikaziak exekutatzeko gai ziango garelarik. Hauek dira Xvfb instalatu ahal izateko beharrezko pausuak:

sudo apt-get install xvfb
 
sudo apt-get install xfonts*

Bigarren komando hau ez da guztiz beharrezkoa sistema guztietan, baina garrantzitsua da  xvfb komandoa erabiltzean erroreak agertzen diren kasuetan.

Behin komandoa instalatuta bere erabilera honakoa litzateke

  • Ingurune birtuala sortu, non ingurunearen identifikadorea kasu honetan 8765 zenbakia izango den.

Xvfb :8765 -ac &

  • DISPLAY aldagaia eguneratu, exekutatuko den programak ingurune berriaren berri izan dezan (ez ahaztu identifikadorearen amaieran dagoen “.0” balioa).

export DISPLAY=:8765.0

  • Orain nahi dugun programaren komandoa idatzi:
gedit

Komando honen erabilera JDownloader programarekin testeatu da Ubuntu Server 8.04 LTS batean. Oso erabilgarria suerta daiteke komando bidezko maneiua ez duten programak zerbitzari batean martxan izateko.

Linux-en Hasiera Script-ak Gehitzen

Linux sistema bat abiaratzen denean, sistemako edota erabiltzaileak definitutako zerbitzuak hasieratzeko aukera eskaintzen da. Horretarako sistema nagusietan /etc/init.d/ direktorioan kokatuak egoten diren script fitxategiak erabiltzen dira.

Erabiltzaileak sortutako script bat txertatu nahi denean, aipatutako direktorioan kopiatu beharra dago. Ez ahaztu script-aren jabea eta taldea “root” izateaz eta exekuzio baimenak egokiak esleitzeaz, horretarako honako komandoak erabiliz:

sudo chown root:root /etc /init.d/
sudo chmod 700 /etc/init.d/

Hurrengo pausua, script-a sistema abiatzean exekuta dadin ezartzea da. Horretarako update-rc komandoa erabiliko da.

  • Script-a gaitzeko honako komandoa erabili behar da:
update-rc.d /etc/init.d/<script_fitxategia> defaults
  • Eta honakoa desgaitzeko:
update-rc.d -f /etc/init.d/<script_fitxategia> remove

Komando hauek ez diete script-ei inongo aldaketarik eragiten, sistemari script-aren berri ematen diote eta beharrezko estekak ezartzen dituzte sistema abiatzean gure fitxategia exekuta dadin.

Postfix Posta Zerbitzaria Instalatzen

Zerbitzari batean postfix posta zerbitzari bat martxan jartzeko pausuak honakoak dira:

Lehenik eta behin postfix paketea instalatu behar da honako komandoaz:

sudo apt-get install postfix

Instalazioan zehar, konfiguraziorako menu txiki bat agertuko zaigu kontsolan. Puntu hau garrantzitsua da, postfix berak konfigurazio patroi bat edo beste eratuko duelako aukeraren arabera.

Kasu honetan, zerbitzaria Euskaltel-en internet konexio batera konektatua dagoenez, 25 portua itxia dago. Hori dela eta, ezinezkoa da posta zuzenean postfix zerbitzaritik bidaltzea, erdibideko bat erabili beharra dago. Beraz Internet with smarthost aukeratu da.

Hemendik aurrerako pausuak garrantzitsuak dira azken konfigurazioa zuzena izan dadin.

Mail domeinuaren izena ezarri, kontuan izan beharra dago domeinua lehenagotik existitu behar duela:

Hurrengo pausua erdibideko smtp zerbitzariaren helbidea ezartzea da, Euskaltel-en kasuan safemail.euskaltel.net:587 helbidean dago kokatua (587 portua erabiltzen du).

Aurrera jarraituz instalazioa amaitutzat joko da.

Azkenik honako puntuak kontuan hartzea gomendagarria da:

  1. Zerbitzariko firewall-ean 25 portua ireki beharra dago.
  2. NAT zerbitzua erabiltzen bada konexiorako Routerrean, 25 portua postfix zerbitzarira esplizituko bideratu beharra dago.
  3. Kontuan izan domeinua eskaintzen duen zerbitzuak Mail Exchange (MX) zerbitzua eskaintzen duela.

OHARRA: Webmin-eko mail gestorea erabiliz gero ezinbestekoa da moduluko konfigurazioan Domain to use in From: address aldagaian oroitz.dyndns.org domeinua ezartzea.