Poniższy wpis przedstawia jak postawić serwer na netbooku. Tekst piszę „na żywo” – równolegle ze stawianiem owego serwera. Uznałem, że jeżeli miałbym napisać o tym później, to pewnie zapomniałbym połowy rzeczy i pominąłbym wszystkie błędy które popełniłem po drodze. A takie problemy warto opisywać. To co warto podkreślić, to fakt, że jestem całkowitym noobem (w końcu to mój pierwszy serwer) i pewnie tonę rzeczy zrobię źle. Jeżeli to czytasz i też jesteś serwerowym noobem, to materiały z których korzystam mogą pomóc i Tobie. Z kolei jeżeli jesteś mistrzem serwerów i widzisz jakieś mniej lub bardziej rażące błędy w moim działaniu, to proszę o wiadomość na priv. To czego nie wiem bez problemu doczytam, ale zawsze znajdzie się coś czego nie wiesz, że nie wiesz.

Dlaczego stawiam serwer?

Serwer chciałem postawić sobie już od dawna, ale zawsze było coś co mnie od tego powstrzymało. Na początku nie miałem fizycznie na czym. Później miałem Netbook’a EeePC 1000h, który byłby idealnym mini serwerem z energooszczędnym procesorem itd. ale za często używałem go jako maszyny do pisania. Nie ukrywam też, że nie miałem też na tyle fajnego pomysłu, by uzasadnić posiadanie własnego serwera.

To wszystko zmieniło się stosunkowo niedawno. Zacząłem na poważniej zgłębiać programowanie i tworzyć projekt oparty na Node.js, który nie jest wspierany przez mojego hosta. Na domiar złego serwery z Node.js nie należą do najtańszych. W międzyczasie kupiłem sobie notebook’a do grania i montażu, który jest mobilny i szybki, co sprawiło, że całkowicie przestałem korzystać ze wspomnianego Netbook’a. To ten czas, pomyślałem: mam sprzęt i pomysł.

Po postawieniu serwera okazało się, że by w pełni z niego skorzystać musiałbym wykupić od swojego dostawcy internetu statyczne IP, by mój komputer mógł być dostępny z zewnątrz mojej sieci domowej. Postawienie darmowego serwera do destrukcyjnej zabawy okazało się nierealne – nie chce mi się płacić za możliwość postawienia sobie paru twitterbotów. Także pomysł serwera upadł, ale skoro napisałem już tutorial, to zapraszam.

Dlaczego piszę ten tekst skoro jestem noobem?

Dla siebie. Zdarzało mi się robić pewną rzecz parę razy w życiu, ale na tyle rzadko, że za każdym razem musiałem się jej uczyć praktycznie od nowa. Tworząc taki tutorial ułatwiam sobie kolejne podejścia do tego samego tematu. A jak skorzystać z tego mogą inni, to dlaczego nie?

Założenia

Chcę postawić serwer na Netbook’u, który będzie zawierał LAMP (Linux, Apache, MySQL i PHP) oraz Node.js. Będzie to mały serwer roboczy do zabawy i nauki.

Wybór Linux’a

Reklama

Po przejrzeniu różnych forów i stron internetowych nie dowiedziałem się niczego szczególnego poza standardowymi wypocinami jak to Ubuntu to syf i nie prawdziwy Linux, bo jak Linux jest za bardzo dostosowany do przeciętnego użytkownika, to gówno a nie Linux i Arch jest jedyną opcją, podczas gdy druga strona barykady mówi o tym jak to cały Arch Linux jest za trudny i trzeba wszystko kompilować od zera. Opinie, opinie i niczego konkretnego się nie dowiesz.

Serwer postanowiłem postawić na Debianie, bo po prostu lubię Debiana i wszystkie Linuxy jakie miałem w życiu mniej lub bardziej na Debianie bazowały od Ubuntu, przez Mint po minimalistyczne Cruchbang i Bunsen Labs (którego miałem na Netbooku przed tym Debianem właśnie).

W telegraficznym skrócie wybierz coś w czym czujesz się dobrze. A jeżeli w ogóle nie czujesz się dobrze w Linuxie, to wybierz coś co jest znane, bo znajdziesz więcej wsparcia. Z drugiej strony, jeżeli nie ogarniasz Linuxa, to nie wiem czy stawianie teraz serwera jest dobrą opcją – zainstaluj sobie wersję pulpitową, poznaj trochę architekturę tego systemu operacyjnego, polubcie się i dopiero wtedy pomyśl o serwerze.

Instalacja Debian Server

Tworzymy pendrive z systemem operacyjnym

  • Wchodzimy na https://www.debian.org/ i ściągamy obraz płytki. Ja używam netinstall, bo Netbook’i nie mają wejścia na płytkę i wszytko trzeba załatwić przez USB. Jak podstawowy system będzie już działał to cała reszta repozytoriów zostanie zassana przez sieć.
  • Po ściągnięciu obrazu podłączamy pendrive do komputera, odpalamy terminal i sprawdzamy gdzie się pojawił wpisując w terminal dmesg.
  • W moim przypadku pendrive był podpięty pod /dev/sdb więc odłączyłem urządzenie komendą umount, a potem przekopiowałem ISO do pendrive’a wpisując:
sudo cp [debian.iso] /dev/sdb

Oczywiście [debian.iso] to ścieżka do pliku, a /dev/sdb to lokalizacja urządzenia. Twoja może być inna!

  • Do tego rzuciłem jeszcze komendę:
sync

Instalujemy system operacyjny

No dobrze, to mamy już mamy pendrive do postawienia systemu, teraz instalujemy:

  • Wyłączamy komputer.
  • Włączamy komputer i gdy coś się pojawi klikamy [F2] (tak jest z moją płytą, główną, u Ciebie może być [F12], [Delete] lub coś jeszcze innego).
  • W BIOS wchodzimy w zarządzanie kolejności bootowania (u mnie pod „Boot”) i zmieniamy kolejność aktywacji. U mnie na EeePC 1000h to zawsze dziwne jest, bo najpierw muszę w Hard Disk Drives zmieniamy 1st Drive na USB: USB Flash Memory1.00, a potem dopiero wejść w Boot Device Priority zmienić 1st Boot Device na USB: USB Flash Memory1.00, który wcześniej nie byłby dostępny.
  • Przechodzimy do Exit, robimy Exit & Save Changes i zatwierdzamy.
  • Po restarcie powinien włączyć się splash screen instalatora. Wybieramy Install.
  • No a potem standard:
    • Język: English
    • Lokalizacja: Other > Europe > Poland
    • Lokalsy: United States - en_US.UTF-8
    • Klawiatura Polish
  • Podłączamy się do sieci.
  • Nazywamy komputer, sieć i tworzymy hasło do roota.
  • Nazywamy użytkownika i nadajemy mu hasło.
  • Partycjonujemy dysk.
  • Formatujemy cały dysk.
  • Gdy pojawi się informacja o udostępnianiu statystyk najczęściej wykorzystywanych repozytoriów można się zgodzić albo nie.
  • Przy wybieraniu dodatkowego oprogramowania wyłączam cały GUI i pozostawiam jedynie SSH server by móc się połączyć z serwerem poprzez PuTTY oraz standard system utilities.
  • Instalujemy GRUB na tej samej partycji co system.
  • Wyciągamy pendrive’a i restartujemy system.

Źródła z których korzystałem: https://www.howtoforge.com/tutorial/debian-8-jessie-minimal-server/

Instalujemy Apache

Zanim cokolwiek zrobimy powinniśmy zrobić update bazy danych repozytoriów by się upewnić, że działamy na aktualnej.

su
apt-get update

Sprawdzamy, czy na pewno mamy najbardziej aktualny system operacyjny.

apt-get upgrade

Teraz jak już mamy to za sobą, możemy przystąpić do instalacji samego Apache.

apt-get -y install apache2

Sprawdzamy czy nas serwer działa znalezienie jego lokalnego adresu IP wpisując

/sbin/ifconfig | grep 'inet addr:'

To co nam wyskoczyło wpisujemy w przeglądarkę internetową na innym komputerze, który jest na tej samej sieci lokalnej co nasz serwer. Adres jaki wpisujemy wygląda mniej więcej tak:

http://00.0.0.0

Instalujemy MySQL

apt-get -y install mysql-server mysql-client

No i wpisujemy hasło, które będzie wykorzystane zarówno do root@localhost jak i do root@twoja.domena.pl.

Instalujemy PHP

Teraz instalujemy PHP:

apt-get install php5 libapache2-mod-php5

Restartujemy Apache by złapało zmianę w konfiguracji:

/etc/init.d/apache2 restart

Sprawdźmy naszego PHP poprzez stworzenie pliku info.php w katalogu /var/www/ używając edytora tekstu nano:

nano /var/www/html/info.php

W edytorze stwórzmy plik, który po wyświetleniu w przeglądarce powinno wypluć nam informacje na temat naszej wersji PHP:

<?php
phpinfo();
?>

Wchodzimy na adres http://00.0.0.0/info.php (wiadomo, „00.0.0.0” musisz zastąpić lokalnym adresem IP serwera) i patrzymy czy coś się wyświetla. Jeżeli tak, to działa.

Źródło: https://www.howtoforge.com/installing-apache2-with-php5-and-mysql-support-on-debian-wheezy

Instalujemy Node.js

Zainstalujmy wreszcie „sudo”, bo nie jest on standardowo zainstalowany na Debianie, a robienie rzeczy z perspektywy admina będąc zalogowanym jako użytkownik jest przydatne. Zainstalujmy też „curl”.

apt-get -y install sudo curl

Teraz jak mamy te dwa programy możemy zrobić to:

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs

Źródło: https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions

Wyłączmy usypianie i hibernację

By wyłączyć usypianie i hibernację wpisujemy:

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

By przywrócić te funkcje należy wpisać

sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target

Podsumowanie

Po wykonaniu wszystkich powyższych kroków Twój serwer powinien działać w sieci lokalnej. By wyjść na świat trzeba jeszcze zmienić ustawienia Twojego routera’ by nie hamował na zaporze ogniowej informacji przychodzącej z zewnątrz. Oraz, jak już wspomniałem, najprawdopodobniej trzeba będzie wykupić stałe IP od swojego dostawcy internetu.

Jeżeli postanowisz udostępnić swój serwer na świat, musisz zainteresować się tematyką zabezpieczenia serwerów przed atakami, które po prostu będą się zdarzać. Jest to jednak kwestia wychodząca poza tematykę tego wpisu.