Server Tronweb con Gentoo

affettuosamente Tronyx ...

Questo server è stato richiesto dal TronWeb all’istituto per avere l’opportunità di gestire un server in proprio, quando sarà a regime andrà a sostituire il tronlinux e quindi reggerà tra le altre cose diversi siti e servizi. Il server è arrivato il 14 dicembre 2005 e ora si trova a casa di ogeidix per essere installato e configurato durante le feste natalizie.

Obbiettivi

Il server dovrà fungere da web server e servire diversi siti (tra cui spiccano quello del TronWeb, quello del giornalino di istituto e il sito di EduKnoppix). Verrà inoltre configurato un server di posta per diversi domini. Tutto questo (e molto altro che pera’ ancora e’ solo in fase propositiva) speriamo di riuscire a implementare entro la fine delle vacanze ;)

Configurazione Hardware

Il processore un P4 3.0 HT che sul sistema linux viene visto come 2 processori; la ram è di 2 GB Sono presenti due schede di rete: * eth0 10/100/1000 (presa + in alto) * eth1 10/100 (presa + in basso) Gli Hard disk sono SATA: * sda 120 GB * sdb 120 GB piu’ uno USB 2.0 esterno: * sdc 120 GB

livecd / # lspci

0000:00:00.0 Host bridge: Intel Corporation 82875P/E7210 Memory Controller Hub (rev 02)
0000:00:01.0 PCI bridge: Intel Corporation 82875P Processor to AGP Controller (rev 02)
0000:00:03.0 PCI bridge: Intel Corporation 82875P/E7210 Processor to PCI to CSA Bridge (rev 02)
0000:00:1d.0 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (rev 02)
0000:00:1d.1 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (rev 02)
0000:00:1d.2 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI #3 (rev 02)
0000:00:1d.3 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (rev 02)
0000:00:1d.7 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (rev 02)
0000:00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev c2)
0000:00:1f.0 ISA bridge: Intel Corporation 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge (rev 02)
0000:00:1f.1 IDE interface: Intel Corporation 82801EB/ER (ICH5/ICH5R) IDE Controller (rev 02)
0000:00:1f.2 IDE interface: Intel Corporation 82801EB (ICH5) SATA Controller (rev 02)
0000:00:1f.3 SMBus: Intel Corporation 82801EB/ER (ICH5/ICH5R) SMBus Controller (rev 02)
0000:02:01.0 Ethernet controller: Intel Corporation 82547EI Gigabit Ethernet Controller (LOM)
0000:03:06.0 VGA compatible controller: ATI Technologies Inc Rage XL (rev 27)
0000:03:08.0 Ethernet controller: Intel Corporation 82562EZ 10/100 Ethernet Controller (rev 01)

livecd / # cat /proc/cpuinfo

processor : 0
vendor_id : GenuineIntel
cpu family : 15
model  : 4
model name : Intel(R) Pentium(R) 4 CPU 3.00GHz
stepping : 1
cpu MHz  : 2994.402
cache size : 1024 KB
physical id : 0
siblings : 2
core id  : 0
cpu cores : 1
fdiv_bug : no
hlt_bug  : no
f00f_bug : no
coma_bug : no
fpu  : yes
fpu_exception : yes
cpuid level : 5
wp  : yes
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts 
         acpi mmx fxsr sse sse2 ss ht tm pbe pni monitor  ds_cpl cid xtpr
bogomips : 5914.62
processor : 1
vendor_id : GenuineIntel
cpu family : 15
model  : 4
model name : Intel(R) Pentium(R) 4 CPU 3.00GHz
stepping : 1
cpu MHz  : 2994.402
cache size : 1024 KB
physical id : 0
siblings : 2
core id  : 0
cpu cores : 1
fdiv_bug : no
hlt_bug  : no
f00f_bug : no
coma_bug : no
fpu  : yes
fpu_exception : yes
cpuid level : 5
wp  : yes
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts
         acpi mmx fxsr sse sse2 ss ht tm pbe pni monitor ds_cpl cid xtpr
bogomips : 5914.62

livecd / # lsmod

Module                  Size  Used by
e1000                  76308  0
e100                   26432  0
mii                     2944  1 e100
ipv6                  188544  12
parport_pc             28004  0
parport                22696  1 parport_pc
floppy                 45204  0
pcspkr                  2764  0
rtc                     8940  0
dm_mod                 38340  0
ata_piix                6244  0
ahci                    7972  0
sata_qstor              6468  0
sata_vsc                5284  0
sata_uli                4576  0
sata_sis                4448  0
sata_sx4                9924  0
sata_nv                 5988  0
sata_via                5572  0
sata_svw                4868  0
sata_sil                6116  0
sata_promise            7268  0
libata                 28036  12  ata_piix,ahci,sata_qstor,sata_vsc,sata_uli,sata_sis,sata_sx4,sata_nv,sata_via,sata_svw,sata_sil,sata_promise
sbp2                   17160  0
ohci1394               26388  0
ieee1394               59192  2 sbp2,ohci1394
sl811_hcd               9664  0
ohci_hcd               15396  0
uhci_hcd               24368  0
usb_storage            50464  0
usbhid                 26112  0
ehci_hcd               23272  0
usbcore                76892  7 sl811_hcd,ohci_hcd,uhci_hcd,usb_storage,usbhid,ehci_hcd 

Configurazione sistema operativo

Il SO installato Gentoo/Linux.

Installazione

Per l’installazione si è seguito il relativo documento prodotto dal TronWeb, di seguito sono riassunti i passaggi pratici, le scelte fatte e le eventuali particolarità.

Inizio installazione 23:12:05 h 15:10

LiveCD Gentoo 2005.1                  # Siamo partiti con il liveCd Gentoo 2005.1 Minimal
BOOT:gentoo                           # Non abbiamo specificato nessuna opzione particolare per il boot

Prepariamo l’ambiente di lavoro:

livecd root # loadkeys it             # Carichiamo il layout di tastiera italiano
livecd root # passwd                  # Cambiamo la password di root (questa pwd è temporanea)
livecd root # lspci                   # Analizziamo l'hardware presente (lspci) e rilevato (lsmod)
livecd root # lsmod                   #   [l'output è riportato sopra nella sezione HW x questioni di spazio]
livecd root # ifconfig                # Analizziamo la situazione di rete

Prepariamo i dischi:

livecd root # modprobe raid1          # Carichiamo il modulo per il RAID1
livecd root # cfdisk /dev/sda         # Partizioniamo il primo HD a piacimento

# Sono state create 4 partizioni primarie, una da 100 Mb, una da 2000 Mb, una da 115900 Mb e una da 4000 Mb
# Ricordatevi di impostare il flag 'bootable' attivo alla prima partizione e di selezionare
# per tutte le partizioni il tipo Linux raid autodetect (fd)
#  
# Disk /dev/sda: 120.0 GB, 120034123776 bytes
# 255 heads, 63 sectors/track, 14593 cylinders
# Units = cylinders of 16065 * 512 = 8225280 bytes
#
#   Device Boot      Start         End      Blocks   Id  System
# /dev/sda1   *           1          13      104391   fd  Linux raid autodetect
# /dev/sda2              14         257     1959930   fd  Linux raid autodetect
# /dev/sda3             258       14106   111242092+  fd  Linux raid autodetect
# /dev/sda4           14107       14593     3911827+  fd  Linux raid autodetect

livecd root # sfdisk -d /dev/sda | sfdisk /dev/sdb    # Con questo comando copiamo la tabella delle
                                                      #  partizioni da un HD all'altro.

livecd root # mknod /dev/md0 b 9 0                    # Creiamo i nodi "md" che rappresentano i dispositivi RAID
livecd root # mknod /dev/md1 b 9 1                      
livecd root # mknod /dev/md2 b 9 2
livecd root # mknod /dev/md3 b 9 3

livecd root # mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1   # Eccoci ora alla creazione
livecd root # mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2   #  vera e propria del raid1
livecd root # mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/sda3 /dev/sdb3 
livecd root # mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/sda4 /dev/sdb4 

# Ora il sistema iniziera' la creazione degli array.
# Possiamo monitorare lo stato d'avanzamento di questa operazione con:

livecd root # cat /proc/mdstat     
# L'operazione non è delle più veloci, almeno per la terza partizione (~40m), le altre sono immediate.

livecd root # mkfs.ext2 /dev/md0                # Creiamo il filesystem sulla partizione di boot (ext2)
livecd root # mkfs.reiserfs /dev/md1            # Creiamo il filesystem sulla partizione di / (reiserfs)
livecd root # mkswap /dev/md3                   # Creiamo la partizione di swap
livecd root # swapon /dev/md3                   #   e attiviamola

livecd root # modprobe dm-mod                   # Carichiamo il modulo per LVM2
livecd root # mkdir -p /etc/lvm                 # Impostiamo LVM2 per non utilizzare il CDROM e gli IDE
livecd root # echo 'devices { filter=["r/cdrom/","r/hd[ag]/"] }' >/etc/lvm/lvm.conf 
livecd root # vgscan                            # Controlliamo che non ci siano partizioni in LVM2
livecd root # pvcreate /dev/md2                 # Prepariamo la partizione
livecd root # pvdisplay                         # e verifichiamo che sia andato tutto ok
livecd root # vgcreate vg /dev/md3              # Creiamo un gruppo di volume
livecd root # vgdisplay vg                      # e verifichiamo
livecd root # lvcreate -L10G -nusr  vg          # Creiamo le partizioni virtuali
livecd root # lvcreate -L10G -nhome vg          
livecd root # lvcreate -L2G  -nopt  vg
livecd root # lvcreate -L20G -nvar  vg
livecd root # lvcreate -L4G  -ntmp  vg
livecd root # mkfs.reiserfs /dev/vg/usr         # e formattiamole con i loro FileSystem
livecd root # mkfs.reiserfs /dev/vg/home        #                   (tutte in reiserfs)
livecd root # mkfs.reiserfs /dev/vg/opt
livecd root # mkfs.reiserfs /dev/vg/var
livecd root # mkfs.reiserfs /dev/vg/tmp         # Bene con questo abbiamo finito la preparazione dei dischi

Creiamo i Filesystem e installiamo il sistema minimo

livecd root # mount /dev/md1 /mnt/gentoo        # Montiamo il Filesystem di root
livecd root # mkdir /mnt/gentoo/boot            # Creiamo i mountpoint per gli altri filesystem
livecd root # mkdir /mnt/gentoo/home
livecd root # mkdir /mnt/gentoo/usr
livecd root # mkdir /mnt/gentoo/opt
livecd root # mkdir /mnt/gentoo/var
livecd root # mkdir /mnt/gentoo/tmp
livecd root # mkdir /mnt/gentoo/backup
livecd root # mount /dev/md0 /mnt/gentoo/boot   # e montiamoli ...
livecd root # mount /dev/vg/usr /mnt/gentoo/usr
livecd root # mount /dev/vg/home /mnt/gentoo/home
livecd root # mount /dev/vg/opt /mnt/gentoo/opt
livecd root # mount /dev/vg/var /mnt/gentoo/var
livecd root # mount /dev/vg/tmp /mnt/gentoo/tmp
livecd root # mount /dev/sdc2 /mnt/gentoo/backup

livecd root # cd /mnt/gentoo                     # Spostiamoci nella futura cartella di root
livecd root # wget http://www.die.unipd.it/pub   # Scarichiamo lo stage3 dell'installazione
  /Linux/distributions/gentoo-sources/releases
  /x86/2005.1-r1/stages/pentium4/stage3-pentium4-2005.1-r1.tar.bz2

livecd root # wget http://www.die.unipd.it/pub
  /Linux/distributions/gentoo-sources/releases   # Scarichiamo il codice di controllo (md5) del file
  /x86/2005.1-r1/stages/pentium4/stage3-pentium4-2005.1-r1.tar.bz2.md5

livecd root # md5sum -c stage3-pentium4-*.tar.bz2.md5  # Controlliamo che il file non sia corrotto
livecd root # tar xvjpf stage3-pentium4-*.tar.bz2      # Untarriamo lo stage nella futura root
livecd root # wget http://www.die.unipd.it/pub         # Scarichiamo lo snapshot + recente del portage
  /Linux/distributions/gentoo-sources/snapshots/portage-20051223.tar.bz2

livecd root # wget http://www.die.unipd.it/pub         # Controlliamo che il file non sia corrotto
  /Linux/distributions/gentoo-sources/snapshots/portage-20051223.tar.bz2.md5sum

livecd root # md5sum -c portage-20051223.tar.bz2.md5          # Controlliamo che il file non sia corrotto
livecd root # tar xvjf portage-20051223.tar.bz2 -C /mnt/gentoo/usr # Untarriamo lo snapshot 

Configuriamo il sistema base

livecd root # vim etc/mdadm.conf                 # Creiamo il file di configurazione per il RAID1
# # Contenuto del file etc/mdadm.conf
# DEVICE          /dev/sda*
# DEVICE          /dev/sdb*
# ARRAY           /dev/md0 devices=/dev/sda1,/dev/sdb1
# ARRAY           /dev/md1 devices=/dev/sda2,/dev/sdb2
# ARRAY           /dev/md2 devices=/dev/sda3,/dev/sdb3
# ARRAY           /dev/md3 devices=/dev/sda4,/dev/sdb4
# MAILADDR        root@localhost
livecd root # vim etc/make.conf                 # Creiamo il file di configurazione di portage
# # Contenuto del file etc/make.conf
# (Please consult /etc/make.conf.example for a more detailed example)
# CHOST="i686-pc-linux-gnu"
# CFLAGS="-march=pentium4 -Os -pipe -fomit-frame-pointer"
# CXXFLAGS="${CFLAGS}"
# MAKEOPTS="-j4"
#
# ACCEPT_KEYWORDS="x86"
# FEATURES=""
# LINGUAS="it"
#
# USE="sse sse2 mmx nls nptl nptlonly -ipv6 -X -gnome -kde -qt -gtk -alsa apache2 vhost ssl php mysql"
#
# GENTOO_MIRRORS="http://distfiles.gentoo.org http://www.ibiblio.org/pub/Linux/distributions/gentoo"
#
# PORTDIR_OVERLAY="/usr/local/portage"
# PORTAGE_TMPDIR="/tmp"
# PORTAGE_NICENESS="15"

livecd root # cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf   # Copiamo il file dei DNS sulla futura root
livecd root # mount -t proc none /mnt/gentoo/proc                  # Montiamo una copia di /proc sulla fut. root
livecd root # chroot /mnt/gentoo /bin/bash                         # Chrootiamoci nella nuova root
livecd root # env-update                                           #  e aggiorniamo le variabili di ambiente
livecd root # source /etc/profile                                  #  e assumiamo le nuove variabili di profilo
livecd root # emerge sync                                          # Aggiorniamo Portage
livecd root # echo "sys-libs/glibc userlocales" >> /etc/portage/package.use # Configuriamo le glibc
# Controlliamo che siano presenti le seguenti righe in /etc/locales.build :
# it_IT/UTF-8
# it_IT/ISO-8859-1
# it_IT@euro/ISO-8859-15
livecd root # emerge gentoo-sources                                # Scarichiamo il sorgente del kernel
livecd root # cd /usr/src/linux                                    # Spostiamoci nella cartella del kernel
livecd root # make menuconfig                                      # Configuriamo il kernel
                                                                   # Ricordarsi il supporto al RAID1 e a LVM2
livecd root # make && make modules_install                         # Compiliamo il kernel
livecd root # cp arch/i386/boot/bzImage /boot/kernel-2.6.14-gentoo-r5-0  # Copiamo il kernel compilato in /boot
livecd root # cp .config /boot/config-2.6.14-gentoo-r5-0                 # e il suo file di config per sicurezza
livecd root # vim /etc/fstab                                       # Configuriamo il file /etc/fstab
# Contenuto di /etc/fstab
# /dev/md0                /boot           ext2            noauto,noatime  1 2
# /dev/md1                /               reiserfs        noatime         0 1
# /dev/vg/usr             /usr            reiserfs        noatime         0 0
# /dev/vg/var             /var            reiserfs        noatime         0 0
# /dev/vg/opt             /opt            reiserfs        noatime         0 0
# /dev/vg/tmp             /tmp            reiserfs        noatime         0 0
# /dev/vg/home            /home           reiserfs        noatime         0 0
# 
# /dev/sdc2               /mnt/backup     reiserfs        noauto,noatime  0 0
#
# /dev/fd0                /mnt/floppy     auto            noauto          0 0
# /dev/cdroms/cdrom0      /mnt/cdrom      iso9660         noauto,ro       0 0
#
# /dev/md3                none            swap            sw              0 0

livecd root # vim /etc/conf.d/hostname             # Settiamo l'hostname a 'tronweb'
livecd root # vim /etc/conf.d/domainname           # Settiamo il domainname a 'tron'
livecd root # rc-update add domainname default     # Aggiungiamo domainname al runlevel
livecd root # ln -s net.eth0 net.eth1              # Aggiungiamo l'init script per eth1
livecd root # rc-update add net.eth0 default       # Aggiungiamo eth0 al runlevel
livecd root # vim /etc/hosts                       # Aggiungiamo l'hostname a localhost
livecd root # passwd                               # Impostiamo la pwd definitiva di root (ac**dem*a)
livecd root # vim /etc/conf.d/keymap               # Configuriamo la keymap (it)

# Installiamo gli ultimi pacchetti di sistema
livecd root # emerge syslog-ng vixie-cron slocate e2fsprogs reiserfsprogs lvm2 raidtools mdadm dhcpcd grub

# Aggiungiamo i nuovi servizi ai runlevels
livecd root # rc-update add syslog-ng default 
livecd root # rc-update add vixie-cron default
livecd root # rc-update add mdadm default

livecd root # vim /boot/grub/grub.conf            # Configuriamo grub
livecd root # grub                                # Installiamo grub sugli MBR
     root (hd0,0)
     setup (hd0)
     root (hd1,0)
     setup (hd1)

Ecco installato il sistema di base !! (~2h) Possiamo uscire dal chroot

livecd root # exit

e riavviare

livecd root # reboot

ricordandosi di togliere il cd appena possibile.

Una volta avuto accesso al sistema, dopo essersi rallegrati per l’ottima riuscita del lavoro facciamo un bell’aggiornamento di sistema:

tronweb ~ # emerge -Dau world

Quindi procediamo a installare dei piccoli tools che ci semplificheranno la gestione del server.

tronweb ~ # emerge most screen bash-completion genlop gentoolkit colordiff ccache
tronweb ~ # echo 'export MANPAGER="/usr/bin/most"' >> /etc/profile 
tronweb ~ # bash-completion-config --global --install bash-completion-config
tronweb ~ # bash-completion-config --global --install genlop
tronweb ~ # vim /etc/skel/.bashrc                  # rimuovere il commento dall'ultima riga
tronweb ~ # cp /etc/skel/.bashrc ./
tronweb ~ # vim /etc/etc-update.conf               # settare diff_command a "colordiff -u %file1 %file2"
tronweb ~ # vim /etc/dispatch-conf.conf            # settare diff a "colordiff -u %s %s | less"
tronweb ~ # vim /etc/make.conf                     # agiungere ccache alle features
tronweb ~ # mkdir /tmp/ccache
tronweb ~ # echo 'CCACHE_SIZE="2G"' >> /etc/make.conf
tronweb ~ # echo 'CCACHE_DIR="/tmp/ccache"' >> /etc/make.conf
tronweb ~ # echo 'export CCACHE_SIZE="2G"' >> /etc/profile
tronweb ~ # echo 'export CCACHE_DIR="/tmp/ccache"' >> /etc/profile
tronweb ~ # env-update && source /etc/profile
tronweb ~ # vim /etc/issue                         # personalizziamo la fase di login

Aggiorniamo GCC secondo la guida http://www.gentoo.org/doc/en/gcc-upgrading.xml

# gcc-config i686-pc-linux-gnu-3.4.4
# source /etc/profile
# emerge --oneshot -av libtool
# revdep-rebuild --library libstdc++.so.5
# emerge sys-libs/libstdc++-v3

Installazione servizi

SSH

Installato e configurato ssh (come descritto nella guida sul ns. wiki)

# emerge openssh
# vim /etc/ssh/sshd_config   # Impostiamo PermitRootLogin a no
# rc-update add sshd default

MySQL

Installato e configurato MySql (come descritto nella guida sul ns. wiki)

# emerge mysql
# emerge --config =mysql-4.1.14  
# /etc/init.d/mysql start
# rc-update add mysql default
# mysql_secure_installation

Apache

Installato e configurato Apache (come descritto nella guida sul ns. wiki)

# emerge -av apache
# echo 'app-admin/eselect     ~x86' >> /etc/portage/package.keywords
# echo 'app-admin/eselect-php ~x86' >> /etc/portage/package.keywords
# echo 'dev-lang/php          ~x86' >> /etc/portage/package.keywords
# echo 'dev-lang/php apache2 mysqli sqlite -berkdb' >> /etc/portage/package.use
# emerge -av dev-lang/php
# cd /etc/apache2/ssl/
# rm server.*
# /usr/sbin/gentestcrt.sh (or /usr/lib/ssl/apache2-mod_ssl/gentestcrt.sh)
# vim /etc/apache2/httpd.conf             # ServerName, ServerSignature Off
# vim /etc/conf.d/apache2                 # APACHE2_OPTS="-D PHP5 -D SSL -D DEFAULT_VHOST -D SSL_DEFAULT_VHOST" 
# /etc/init.d/apache2 start
# rc-update add apache2 default

SQUID

Installato il proxy squid come da articolo su wiki

Backup

Configurato il sistema di backup come da articolo su wiki

 
Tronweb on Facebook @tronweb on Twitter Recent changes RSS feed Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki