|

Raspberry Pi web serveris savo rankomis

Buvo noras turėti savo eksperimentinį serverį namuose. Išsikėliau reikalavimus kuklius, bet reikia nuo kažko pradėti. Reikalavimai, kad:

  • kompaktiškas, daug vietos neužimtu (gal koks routeriukas tam tiktų, pvz. Linksys);
  • mažos elektros sąnaudos;
  • tylus veikimas.


Pradėjau žiūrinėti iš ko čia galima būtų pasigaminti mažą serveriuką, ar čia kokį kompiuterį (nešiojamo ar stacionaro dalį) susiremontuoti ar kokį routeriuką perdaryti (pvz. linksys wrt54g). Internete beieškodamas suradau įdomų straipsnį, kuris padėjo apsispręsti, padėti tašką paieškoms. Nusprendžiau pasidaryti serveriuką iš Raspberry Pi, tai toks super mini kompiuteriukas, prie kurio galima prijungti išorinius įrenginius (klaviatūra, pelė, televizorius, lan …), bet tinkamai pasiruošus programinę dalį užteks tik prijungti prie kompiuterių tinklo (LAN) ir maitinimą (microUSB, 5 V).

 

Šis daiktas tylus, neturi jokių aktyvių ventiliatorių, HDD funkcija atlieka SD kortelė. Plačiau apie Raspberry Pi skaitykite gamintojo puslapyje (tarp kitko – rašo kad pagaminta UK).

Taigi programinė įranga. Pirmas startas.

Startavau nuo Raspbian “wheezy” (Debian pagrindu Raspberry Pi įrenginukui priderinta Linux distribucija). Ją atsisiunčiame iš čia. Pasiruošiame SD kortelę (bent 4 GB), ir kaip gamintojo aprašyta įsirašome distribuciją į kortelę. Kortelę įdedame į įrenginį ir pirmas startas. Startavus pasileidžia meniu kuriame, pasirenkame kad startu ssh startuojant linux`ui. Šiame žingsnyje dar reikia pilnai prijungti prie išorinių įrenginių (tv, klaviatūra..), vėliau viską galėsime valdyti per SSH.

0. Įdiegus ir pirmą kartą įkrovus os rekomenduoju paleisti:

sudo raspi-config

P.S. rekomenduoju pasinaudoti meniu: expand_rootfs, change_pass, memory_split, ssh, update, change_timezone ir/ar change_locale

1. Pasikeičiame standartinį slaptažodį (jei to nedarėme per raspi-config)

passwd

2. Susitvarkau tinklo sąsaja, fiksuota IP:

sudo nano /etc/network/interfaces

Surandame ir pakeičiame eilutę “iface eth0 inet dhcp” :

iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1

Patikriname nustatymus /etc/resolv.conf

sudo nano /etc/resolv.conf

ieškome įrašo nameserver (tai gali būti mūsų interneto tiekėjo DNS serveris arba gateway adresas), pvz. nameserver 192.168.1.1

Perkrauname tinklo sąsaja:

sudo /etc/init.d/networking restart

Pagal poreikius koreguojame/sutvarkome hosts

sudo nano /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.1.10   server1.example.com     server1

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Dabar koreguojame /etc/hostname

sudo nano /etc/hostname

Failo turinį pakeičiame, įrašome server1.example.com ir išsagojame pakeitimus, tada vykdome:

sudo /etc/init.d/hostname.sh

Tikriname

hostname
hostname -f

Abi komandos turi parodyti vienodą rezultatą server1.example.com

3. Konfigūruojame vietą ir datą, diegiame datos ir laiko sinchronizacija

sudo dpkg-reconfigure tzdata
sudo apt-get install ntp ntpdate
sudo ntpdate -u ntp.ubuntu.com

Jei yra poreikis lokaliazcijai:

sudo apt-get install console-data locales
sudo dpkg-reconfigure console-data
sudo dpkg-reconfigure locales

4. Ieškome atnaujinimų:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ca-certificates

5. Sugeneruojame sertifikatus:

ssh-keygen

Startuojame ssh ir nustatome kad automatiškai satrtuotų:

sudo service ssh start sudo update-rc.d ssh defaults

Restartuoju OS.

sudo reboot

arba (man pirmas variantas trumpesnis):

sudo shutdown -r now

P.S. Po os restartavimo galime atjungti, išorinius įrenginius paliekant pajungtą tik matinimą ir LAN. Jungiamės per ssh ir tolesnius veiksmus atliekame komandinėje eilutėje nuotoliniu būdu.

Diegiame Apache ir PHP

sudo apt-get install apache2 php5 libapache2-mod-php5

dar rekomenduojama:

sudo apt-get install php-pear php5-suhosin

jei diegimo metu gavome klaidos pranešimą, vykdome komandą:

sudo groupadd www-data
sudo usermod -g www-data www-data

Perkrauname apache

sudo service apache2 restart

naršyklėje surinkus serverio IP turėtume matyti „It Works!“ užrašą.

Diegiame MySQL

sudo apt-get install mysql-server mysql-client php5-mysql

diegiam phpmyadmin

sudo apt-get install phpmyadmin

Tikriname

Sukuriame failą /var/www/info.php:

sudo nano /var/www/info.php

Įrašome ir išsaugome:

<?php
phpinfo();
?>

Poto peržiūrime http://jusu_serverio_ip/info.php

Diegiame FTP

Vartotojui pi nustatome namini aplanką

sudo chown -R pi /var/www

diegiame vsftp

sudo apt-get install vsftpd

Konfigūruojame, koreguojame vsftpd.conf failą

sudo nano /etc/vsftpd.conf

ir keičiame anonymous_enable=YES į anonymous_enable=NO, atkomentuojema eilutes local_enable=YES , write_enable=YES ir local_umask=022, pabaigoje pridedame eilutę force_dot_files=YES. Išsaugome pakeitimus ir perkrauname:

sudo service vsftpd restart

Papildomi paketai

1. Statistika, diegiame webalizer ir kita

sudo apt-get install webalizer vlogger geoip-database
sudo apt-get install zoo unzip bzip2 zip

koreguojame webalizer.conf failą

sudo nano /etc/webalizer/webalizer.conf

ir pridedame arba keičiame šias eilutes:

LogFile /var/log/apache2/access.log
OutputDir /var/www/webalizer
Incremental  yes
PageType  htm*
PageType  cgi
PageType  php

išsaugojus, perleidžiame /etc/init.d/apache2 restart

2. Truputi apsaugos priemonių:

sudo apt-get install chkrootkit rkhunter clamav clamav-daemon

Paiešką vykdome (galima į cron komandą įrašyti):

$ sudo rkhunter --check 
$ sudo chkrootkit 
$ sudo clamscan -r /folder/to/scan/ 
$ sudo chkrootkit -x | less

arba išplėstiniais parametrais:

$ sudo chkrootkit -p /mnt/safe

rkhunter atnaujinimams:

$ sudo rkhunter --update

Paieška su išplėstiniais parametrais:

$ sudo rkhunter --check --bindir /mnt/safe 

2. Nepamirštame MySQL saugumo

sudo mysql_secure_installation

2. Serverio apkrovas galime stebėti su Munin-node

Kviečiu įvertinti įrašą!
[Viso: 0 Vidurkis: 0]

Similar Posts

Parašykite komentarą

El. pašto adresas nebus skelbiamas.

1 + 8 =