Aplikacje, serwery, endpointy czy wszelkiego rodzaju instalacje webowe zazwyczaj kończą swój cykl developerski w chmurzę, dedykowanych serwerach czy vps-ach (virtual private server). Centos 7 to stabilny system operacyjny oparty o RHEL Red Hat Enterprise Linux (RHEL).  Jest to mój ulubiony system pod testowanie aplikacji webowych. Jakiś czas temu przerobiłem starego laptopa na serwer oparty o Centos 7. Dużo integruje w ten system, aby znaleźć optymalne ustawienia wydajności i bezpieczeństwa.  Ostatnio strasznie popsułem ustawienia, dlatego postanowiłem zainstalować Centosa od nowo oraz zapisać sobie proces instalacyjny, żebym nie musiał biegać po googlu jak szalony.

Centos 7  

Centosa najlepiej się chyba ściga przez torrenty, można znaleźć plik torrent w każdym z oficjalnych mirror'ów strony oficjalnej .

Program Rufus do robienia USB BOOT UEFI na Win

Linux, można od wersji centos 6 można kopiować obraz bezpośrednio na USB  

dd if=CentOS-6.5-x86_64-bin-DVD1.iso of=/dev/sdb

Instalacja

Wersja 7.4 DVD Iso posiada graficzny interfejs instalacyjny, ustawiamy ścieżkę do dysku oraz pakiety jakie chcemy zainstalować.  Centos 7 zawiera pakiety dla developerów, pod server, gnome desktop, itd.

Po instalacji systemu osobiście instaluje także:

Node.js

Centos 7, zależnie od pakietów wybranych przy instalacji systemu posiada, już node.js, jednakże jest to wersja 6. (Ostatnia poważna aktualizacja systemu Centos 7 była w 2014 roku). Aby zainstalować nowe wersje musimy dodać repo do bazy Centos 7.

Najnowszy node(12):

yum install -y gcc-c++ make 
curl -sL https://rpm.nodesource.com/setup_12.x | sudo -E bash -

Stable:

yum install -y gcc-c++ make 
curl -sL https://rpm.nodesource.com/setup_10.x | sudo -E bash -
 

*Możliwe są dalsze problemy instalacyjne node, najczęściej system wywala się podczas instalacji nowszej wersji node.js

Workaround:

Instalujemy nowy node przez npm oraz podmieniamy ścieżki (system link do nowej wersji node)

npm cache clean -f
npm install -g n
ln -sf /usr/local/n/versions/node/(wersja node, np:)10.15.3/bin/node /usr/bin/node
node -v (sprawdzamy wersje)

Yarn

Trzeba dodać repo yarn

curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
yum -y install yarn

Git

Z git możemy mieć problem z dostępem do najnowszej wersji. Centos 7 może nam uparcie mówić, że wersja 1.8 to najnowsza wersja. W takim razie musimy usunąć gita, i zainstalować nowszą wersje od iuscommunity

sudo yum remove git
sudo yum -y install  https://centos7.iuscommunity.org/ius-release.rpmsudo yum -y install  git2u-all
$ git --versiongit version 2.16.5

Docker i Docker Compose

Dodajemy odpowiednie repa do yum config, oraz instalujemy docker-ce

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce
sudo usermod -aG docker nazwa_użytkownika
sudo systemctl enable docker.service
sudo systemctl start docker.service

Docker Compose

sudo yum install epel-release
sudo yum install -y python-pip
sudo pip install --upgrade pip
sudo pip install docker-compose
sudo yum upgrade python*
docker-compose version

*Problem GSSException przy sprawdzaniu wersji można rozwiązać przez usunięcie pakietu python-gssapi

sudo yum remove python-gssapi

Google Chrome

Musimy stworzyć własny plik z info o repo Googla, w ten sposób będziemy mogli robić update Chrome przez komendy.

cd /etc/yum.repos.d/
sudo nano google-chrome.repo

Dodać plik o treści

[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64
enabled=1
gpgcheck=1
gpgkey=https://dl.google.com/linux/linux_signing_key.pub

Visual Studio Code

Dodajemy repo, VS code

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'

Sprawdzamy i instalujemy code

yum check-update
sudo yum install code

Konfiguracja Sieci

Ostanie co musimy zrobić to ustawić naszą sieć lokalną oraz zasady firewall aby nasze aplikacje uruchomione na Centos 7 były dostępne z innych urządzeń. Zazwyczaj musimy otworzyć porty używane podczas cyklu developerskiego  (8000) i produkcyjnego (3000).

firewall-cmd --zone=public --permenent --add-service=https
firewall-cmd --zone=public --permenent --add-service=http
firewall-cmd --zone=public --permenent --add-service=ssh
firewall-cmd --zone=public --permenent --add-port=(numerPortu)/tcp
firewall-cmd --reload

Teraz nasze apki już powinny być dostępne dla sieci lokalnych.

Centos oraz systemy linkusowe są o wiele bardziej dostosowane do współpracy z node niż Windows według mojej opinii, starszy komputer z i5 radzi sobie lepiej, szybciej buduje i serwuje pliki niż i7 z windowsem. Dodatkowo natywne mamy obsługę dockera, która przydaje się podczas końcowego etapu deweloperskiego aplikacji.

Pozdrawiam