Configurarea unui Raspberry Pi 3 ca server local de web-hosting bazat pe LAMP si Drupal/WordPress

 

În prezentul articol vom configura un server local de web-hosting bazat pe Raspberry Pi 3, care ar putea găzdui proiectele voastre online de mici dimensiuni. Paşii principali ai prezentului tutorial sunt instalarea şi configurarea suitei LAMP pe Raspbian, urmate de instalarea Drupal şi WordPress, două dintre cele mai folosite CMS-uri. Ok, să trecem la treabă.

 

Instalarea LAMP pe Raspbian

 

Pentru început, trebuie să instalăm pe Raspberry Pi 3 ultima versiune a sistemului de operare Raspbian. Dacă aveţi deja instalat sistemul, tot ce trebuie să faceţi este să rulaţi comenzile:

 

sudo apt update şi sudo apt upgrade

 

Dacă nu aveţi sistemul instalat, va trebui să descărcaţi ultima versiune de pe site-ul oficial şi să o scrieţi pe un card microSD.

 

După instalare deschideţi un terminal şi rulaţi următoarea comandă:

 

sudo raspi-config

 

Aceasta vă va duce la o interfaţă grafică minimală, din care puteţi selecta opţiunea de a schimba parola utilizatorului implicit “pi” ca primă măsură minimă de siguranţă. După efectuarea acestei operaţiuni va trebui să selectaţi opţiunea “expand filesystem” pentru a putea să profitaţi de tot spaţiul care există pe cardul microSD. După aceasta va trebui să reporniţi sistemul de operare.

 

 

 

Instalarea serviciului Apache

 

După repornirea sistemului, vom trece la instalarea serviciului Apache, folosind comanda:

 

sudo apt install apache2 -y

 

După ce pachetele sunt instalate, puteţi verifica dacă instalarea a fost efectuată corect deschizând o nouă pagină în browserul de internet Chromium şi introducând adresa:

 

http://localhost/

 

Dacă totul a decurs bine, va trebui să vă apară pe ecran următoarea pagină:

 

 

O dată cu instalarea Apache, fişierul implicit al cărui conţinut este afişat în dreptul paginii accesate se află în fişierul index.html aflat la locaţia /var/www/html/.

 

 

 

Instalare MariaDB (sau MySQL)

 

MariaDB este o varianată coplet open-source a mySQL, acesta din urmă fiind dezvoltat de Oracle şi conţinând încă porţiuni de cod cu sursă închisă. Majoritatea distribuţiilor mari oferă deja suport default pentru MariaDB, iar dintre acestea amintesc de Debian 9 Stretch, openSUSE Leap, CentOS 7, Fedora, Mageia, Oracle Linux, RHEL 7, SLES 12 sau Ubuntu.

 

Pentru a instala MariaDB rulaţi comanda:

 

sudo apt install mariadb-server mariadb-client php5-mysql -y

 

În timpul instalării veţi fi solicitaţi să introduceţi parola pentru utilizatorul de “root” al MariaDB. Atenţie, nu trebuie să fie aceeaşi parolă cu cea a utilizatorului root din sistemul Linux. Introduceţi parola şi aşteptaţi să se termine instalarea.

 

După instalare reporniţi serviciul Apache cu comanda:

 

sudo service apache2 restart sau sudo systemctl restart apache2.service

 

 

 

Instalare PHP

 

PHP este folosit ca limba de programare pe parte de server atât de Drupal cât şi de WordPress, ca atare este nevoie ca acesta să fie instalat în sistemul pe care se construieşte serverul.

 

Pentru instalare folosiţi comanda:

 

sudo apt install php5 libapache2-mod-php5 -y

 

După instalare, va trebui să verificaţi dacă totul a decurs bine, iar pentru asta va trebui să realizaţi un fişier nou cu extensia php în directorul implicit al Apache. Pentru asta va trebui să executaţi comanda:

 

cd /var/www/html

 

pentru a vă plasa în interiorul directorului implicit, denumit în Apache “DirectoryRoot”. Vă amintiţi că în acest director există deja fişierul default de la instalarea apache, care are denumirea index.html. Pentru a vedea conţinutul directorului în care vă aflaţi, executaţi comanda:

 

ls -la

 

Veţi vedea că singurul fişier conţinut este index.html. Acum, pentru a verifica corecta instalare a pachetelor PHP, va trebui să creaţi un fişier nou cu extensia php în directorul curent. Pentru asta aveţi două opţiuni:

 

a) fie folosiţi comanda

 

sudo touch info.php

 

iar apoi deschideţi fişierul cu editorul de text preferat, precum vim sau nano.

 

b) fie deschideţi direct în editorul preferat un fişier gol cu numele info.php executând comanda:

 

sudo vim info.php

 

Atenţie că editorul vim nu este instalat default în Raspbian, astfel că dacă preferaţi să îl folosiţi pe acesta, va trebui în prealabil să folosiţi comanda:

 

sudo apt install vim

 

pentru a-l instala.

 

Odată deschis fişierul nou pentru editare, să presupunem că folosiţi vim, veţi intra în modul inserare şi veţi adăuga următoarele linii de text:

 

<?php

phpinfo();

?>

Salvaţi modificările aduse fişierului iar apoi ieşiti din editorul vim. Va trebui să reporniţi serviciul apache cu comanda:

 

sudo service apache2 restart

 

Aflându-vă în continuare în directorul curent /var/www/html/ unde aţi creat fişierul info.php, va trebui să ştergeţi fişierul default al apache numit index.html. Pentru asta, va trebui să executaţi comanda:

 

sudo rm index.html

 

Pentru a verifica instalarea PHP, deschideţi un nou browser şi introduceţi adresa:

 

http://localhost/

 

Ca rezultat ar trebui să vedeţi o imagine precum cea de mai jos.

 

 

 

 

Obţinerea unui domeniu

 

Momentan vă aflaţi la jumătatea tutorialului, însă trebuie să stabilim unele detalii cu privire la domeniul pe care doriţi să îl găzduiţi pe serverul local. În primul rând plecăm de la premisa că deţineţi deja un domeniu, iar ceea ce mai rămâne de făcut este să vă asiguraţi că domeniul indică mereu acelaşi IP. Acest lucru nu poate fi realizat implicit de foarte multe ori, pentru că de obicei utilizatorii casnici de internet nu au IP fix în cadrul abonamentelor să zicem obişnuite. Fie trebuie să faceţi o solicitare specială ISP-ului, fie să schimbaţi tipul de abonament cu unul mai scump, fie pur şi simplu nu se poate pentru utilizatorii persoane fizice, doar pentru cele juridice.

 

În situaţia în care nu aveţi IP static, puteţi să folosiţi un serviciu de Dynamic DNS dintre o listă destul de cuprinzătoare de astfel de servicii gratuite sau contra cost de pe internet. Eu folosesc serviciul celor de la Dynu DNS (dynu.com), care este gratuit şi se configurează relativ uşor, inclusiv clientul de Linux.

 

Pentru a instala clientul dynu.com rulaţi comanda:

 

sudo apt install ddclient

 

După instalare rulaţi clientul cu comanda:

 

/usr/sbin/ddclient -daemon 300 -syslog

 

Pentru a rula clientul în mod “depanare” rulaţi comanda:

 

ddclient -daemon=0 -debug -verbose -noquiet

 

 

 

Instalarea Drupal 8

 

Pentru început trebuie să descărcaţi pachetele disponibile pe site-ul drupal.org. În momentul scrierii acestui articol ultima versiune a Drupal este versiunea 8.3.5. În mod default, pachetele arhivate au fost descărcate în directorul ~/Downloads/. Înainte de a le dezarhiva, va trebui să creăm un director specific pentru Drupal, iar acesta poate să existe în DocumentRoot-ul Apache sau în orice altă locaţie. Pentru a crea un nou director în DocumentRoot-ul Apache executăm comanda:

 

sudo mkdir /var/www/html/drupal8

 

Ne mutăm apoi în directorul Downloads cu comanda:

 

cd ~/Downloads

 

Vom copia arhiva descărcată din directorul Downloads în directorul nou creat drupal8 cu comanda:

 

sudo cp drupal-8.3.5.tar.gz /var/www/html/drupal8/

 

Ne mutăm din nou în directorul drupal8 cu comanda:

 

cd /var/www/html/drupal8/

 

Extragem fişierele din arhivă cu comanda:

 

sudo tar xzf drupal-8.3.5.tar.gz

 

Această comandă va crea un nou director în cadrul directorulu drupal8 creat anterior.

 

Ştergem arhiva rămasă cu comanda:

 

sudo rm drupal-8.3.5.tar.gz

 

pentru că pe cardul microSD destul de mic (16GB default cu sistemul) orice spaţiu liber contează.

 

Ultimul pas este să setăm drepturile şi permisiunile corect pentru user-ul Apache cu comenzile:

 

sudo chown www-data:www-data -R /var/www/html/drupal8/

sudo chmod -R 755 /var/www/html/drupal8/

 

 

Configurare MariaDB pentru Drupal8

 

Rulăm utilitarul de configurare al mariadb, cu comanda:

 

sudo mysql_secure_installation

 

De-a lungul executării scriptului de configurare, veţi fi intrebaţi o serie de întrebări, astfel: vi se va cere să schimbaţi parola utilizatorului root al mariadb, însă puteţi răspunde cu “n” pentru că deja aţi realizat acest pas; înlăturaţi utilizatorul anonymous, apăsaţi “Y”, dezactivaţi acces remote pentru root, apăsaţi “Y”, ştergeţi baza de date de test, apăsaţi “Y”, reîncărcaţi tabelele cu privilegii, apăsaţi “Y”.

 

Accesaţi utilitarul bazelor de date cu comanda:

 

sudo mysql -u root -p

 

urmând ulterior să introduceţi parola utilizatorului “root” al mariadb.

Primul pas este să creaţi un nou utilizator mariadb cu comanda:

 

CREATE USER ‘drupaluser’@’localhost’ IDENTIFIED BY ‘parola’;

 

Al doilea pas este să creaţi o bază de date pe care o va utiliza Drupal, cu comanda:



CREATE DATABASE drupal;

GRANT ALL PRIVILEGES on drupal.* TO ‘drupaluser’@’localhost’ IDENTIFIED BY ‘parola’;

FLUSH PRIVILEGES;

 

Apoi apăsaţi Ctrl+D pentru a ieşi din mariadb.

 

 

Configurare Apache2 pentru Drupal 8

 

Pentru a configura corect apache, trebuie să creăm fişiere de configurare specifice pentru fiecare domeniu pe care îl vom găzdui pe serverul nostru local. Astfel, vom crea în cele ce urmează configurarea corectă a viitorului website care va fi asociat domeniului ipotetic “domeniulmeu.ro”.

 

În primă instanţă vom crea un fişier specific de configurare în directorul /etc/apache2/sites-available/ cu comanda:

 

sudo touch /etc/apache2/sites-available/domeniulmeu.conf

 

Vom deschide fişierul pentru editare cu utilitarul vim:

 

sudo vim /etc/apache2/sites-available/domeniulmeu.conf

 

În interiorul fişierului nou creat vom stabili un nou virtual host pentru apache, specific domeniulmeu.ro. Iată ce va conţine fişierul:

 

<VirtualHost *:80>

ServerAdmin your@email.com

DocumentRoot /var/www/html/drupal8/drupal-8.3.5/

ServerName domeniulmeu.ro

ServerAlias www.domeniulmeu.ro

<Directory /var/www/html/>

Options FollowSymLinks

AllowOverride All

Order allow,deny

allow from all

</Directory>

ErrorLog /var/log/apache2/domeniulmeu-error_log

CustomLog /var/log/apache2/domeniulmeu-access_log common

</VirtualHost>

 

Ieşim din vim şi salvăm fişierul nou creat. Pasul următor presupune activarea noului site în cadrul serviciului apache cu comanda:

 

sudo a2ensite domeniulmeu.conf

 

La final repornim serviciul apache cu comanda:

 

sudo service apache2 restart

 

Pentru a verifica dacă instalarea Drupal a fost corectă, deschidem o nouă pagină a browserului Chromium şi introducem adresa domeniului proaspăt configurat. În imaginea de jos veţi vedea un exemplu cu un domeniu pe care îl deţin şi care se numeşte: www.peisajcultural.ro.

 

Atenţie însă, înainte de a face acest test, trebuie să configuraţi router-ul local pentru a putea să aveţi acces la noul server setat local. Pentru asta, accesaţi router-ul şi stebilit reguli noi pentru Port Forwarding care să specifice portul 80 al apache şi IP-ul local al Raspberry Pi. Pentru a afla ip-ul local executaţi comanda ifconfig.

 

 

 

Instalare WordPress

 

Paşii pentru instalarea WordPress sunt similari cu cei executaţi pentru instalarea Drupal. Recomand să nu aveţi ambele sisteme instalate pentru acelaşi domeniu, pentru că vor exista ulterior incompatibilităţi şi nu vor funcţiona simultan. Dacă doriţi să le folosiţi pe ambele, trebuie să le folosiţi pentru domenii diferite! Este oarecum logic.

 

 

Pentru început trebuie să descărcaţi pachetele disponibile pe site-ul wordpress.org. În momentul scrierii acestui articol ultima versiune a WordPress este versiunea 4.8. În mod default, pachetele arhivate au fost descărcate în directorul ~/Downloads/. Înainte de a le dezarhiva, va trebui să creăm un director specific pentru WordPress, iar acesta poate să existe în DocumentRoot-ul Apache sau în orice altă locaţie. Pentru a crea un nou director în DocumentRoot-ul Apache executăm comanda:

 

sudo mkdir /var/www/html/wordpress

 

Ne mutăm apoi în directorul Downloads cu comanda:

 

cd ~/Downloads

 

Vom copia arhiva descărcată din directorul Downloads în directorul nou creat wordpress cu comanda:

 

sudo cp wordpress-4.8.tar.gz /var/www/html/wordpress/

 

Ne mutăm din nou în directorul wordpress cu comanda:

 

cd /var/www/html/wordpress/

 

Extragem fişierele din arhivă cu comanda:

 

sudo tar xzf wordpress-4.8.tar.gz

 

Această comandă va crea un nou director în cadrul directorului wordpress creat anterior.

 

Ştergem arhiva rămasă cu comanda:

 

sudo rm wordpress-4.8.tar.gz

 

pentru că pe cardul microSD destul de mic (16GB default cu sistemul) orice spaţiu liber contează.

 

Ultimul pas este să setăm drepturile şi permisiunile corect pentru user-ul Apache cu comenzile:

 

sudo chown www-data:www-data -R /var/www/html/wordpress/

sudo chmod -R 755 /var/www/html/wordpress/

 

 

Configurare MariaDB pentru WordPress

 

Rulăm utilitarul de configurare al mariadb, cu comanda:

 

sudo mysql_secure_installation

 

De-a lungul executării scriptului de configurare, veţi fi intrebaţi o serie de întrebări, astfel: vi se va cere să schimbaţi parola utilizatorului root al mariadb, însă puteţi răspunde cu “n” pentru că deja aţi realizat acest pas; înlăturaţi utilizatorul anonymous, apăsaţi “Y”, dezactivaţi acces remote pentru root, apăsaţi “Y”, ştergeţi baza de date de test, apăsaţi “Y”, reîncărcaţi tabelele cu privilegii, apăsaţi “Y”.

 

Accesaţi utilitarul bazelor de date cu comanda:

 

sudo mysql -u root -p

 

urmând ulterior să introduceţi parola utilizatorului “root” al mariadb.

Primul pas este să creaţi un nou utilizator mariadb cu comanda:

 

CREATE USER ‘wordpressuser’@’localhost’ IDENTIFIED BY ‘parola’;

 

Al doilea pas este să creaţi o bază de date pe care o va utiliza Drupal, cu comanda:

 

CREATE DATABASE wordpress;

GRANT ALL PRIVILEGES on wordpress.* TO ‘wordpressuser’@’localhost’ IDENTIFIED BY ‘parola’;

FLUSH PRIVILEGES;

 

Apoi apăsaţi Ctrl+D pentru a ieşi din mariadb.

 

 

Configurare Apache2 pentru WordPress

 

Pentru a configura corect apache, trebuie să creăm fişiere de configurare specifice pentru fiecare domeniu pe care îl vom găzdui pe serverul nostru local. Astfel, vom crea în cele ce urmează configurarea corectă a viitorului website care va fi asociat domeniului ipotetic “domeniulmeu2.ro”.

 

În primă instanţă vom crea un fişier specific de configurare în directorul /etc/apache2/sites-available/ cu comanda:

 

sudo touch /etc/apache2/sites-available/domeniulmeu2.conf

 

Vom deschide fişierul pentru editare cu utilitarul vim:

 

sudo vim /etc/apache2/sites-available/domeniulmeu2.conf

 

În interiorul fişierului nou creat vom stabili un nou virtual host pentru apache, specific domeniulmeu.ro. Iată ce va conţine fişierul:

 

<VirtualHost *:80>

ServerAdmin your@email.com

DocumentRoot /var/www/html/wordpress/wordpress/

ServerName domeniulmeu2.ro

ServerAlias www.domeniulmeu2.ro

<Directory /var/www/html/>

Options FollowSymLinks

AllowOverride All

Order allow,deny

allow from all

</Directory>

ErrorLog /var/log/apache2/domeniulmeu2-error_log

CustomLog /var/log/apache2/domeniulmeu2-access_log common

</VirtualHost>

 

Ieşim din vim şi salvăm fişierul nou creat. Pasul următor presupune activarea noului site în cadrul serviciului apache cu comanda:

 

sudo a2ensite domeniulmeu2.conf

 

La final repornim serviciul apache cu comanda:

 

sudo service apache2 restart

 

Pentru a verifica dacă instalarea WordPress a fost corectă, deschidem o nouă pagină a browserului Chromium şi introducem adresa domeniului proaspăt configurat. În imaginea de jos veţi vedea un exemplu cu un domeniu pe care îl deţin şi care se numeşte: www.peisajcultural.ro.