Ubuntu + Apache + PhP + MariaDB + WORDPRESS = LOVE

Am promis pe undeva pe site, că o să postez un articol despre cum am configurat WordPress pe un server găzduit în regim “home”.  Sincer, nu mă gândeam că acestei pagini îi va veni rândul atât de curând, dar rugămintea unui prieten de a-l ajuta să-și configureze un server asemănător, m-a determinat să procedez la publicare.

Până să ajung la varianta asta, am testat pe un laptop HP o mulțime de configurări. Trebuie să spun că în prezent mașina pe care rulează site-ul este tot un HP, dar un Proliant Gen8 cu o configurație destul de modestă. Poate și de aceea nu se “mișcă natural” așa cum o fac paginile găzduite. Dar despre configurarea hardware, precum și despre considerentele care au dus la realizarea acestei configurații software, într-o altă postare…

Despre ce configurație software este vorba? Păi cam despre asta:

  • Ubuntu server 16.04 LTS
  • Apache2
  • PhP 7.0
  • MariaDB
  • WordPress 4.7.2

Dar să începem cu începutul: sistemul de operare: Ubuntu server 16.04 LTS, varianta pe 64 de biți cu suport pentru limba română.

Am început cu o instalare pe “curat”, pe care nu am s-o tratez aici, fără instalarea LAMP. Am selectat numai instalarea de bază, cu IP fix în rețeaua locală și setări de localizare pentru România. Suplimentar, din pachete opționale, am optat doar pentru SSH server. Pentru a înțelege mai ușor ce se va întâmpla mai departe, să zicem că adresa locală este 192.168.0.11 și numele mașinii este web-blog. Ca și convenție de lucru, orice linie de comandă linux va fi marcată •$. Deci să considerăm că după ce a boot-at proaspăt-instalatul Ubuntu server, ne-am logat remote printr-un client SSH (Putty, să zicem) la mașina noastră și avem în față o minunată fereastră neagră. Vom începe prin logarea ca root (pentru economie de timp), actualizarea pachetelor instalate și verificarea configurărilor de rețea.

  • $ sudo -s
  • $ apt-get update
  • $ apt-get upgrade                            && operațiunea asta o să dureze…
  • $ apt-get dist-upgrade
  • $ nslookup www.google.com     && verifică și notează adresa DNS
  • $ ifconfig                                               && notează adresa IP

Sper că v-ați prins că partea cu && și ce urmează după, nu trebuie tastată fiind pur și simplu un comentariu al subsemnatului.

Mergem mai departe prin instalarea serverului web care, așa cum am spus este Apache2. Este drept că o configurație cu Nginx este mult mai rapidă în funcționare dar se pare că, cel puțin la acest moment există o problemă de configurare a WordPress cu acest server (sincer, se poate trăi cu ele). Deci:

  • $ apt-get install apache2 apache2-utils    && instalează Apache2
  • $ systemctl status apache2                            && verific dacă serverul este pornit
  • $ systemctl enable apache2
  • $ apache2 -v                                                            && testează versiunea Apache
  • $ apt-get install curl                                             && posibil să fie deja instalat

Acum este momentul să dăm ceva drepturi utilizatorului web asupra folder-ului html:

  • $ chown www-data /var/www/html/ -R

Dacă tot avem server web, să instalăm și o bază de date pe care acesta, dar mai ales WordPress-ul, să o folosească. Eu am folosit MariaDB, care este o clonă de MySQL și care – am aflat eu după ceva săpături –  are avantajul de a folosi mai puține resurse prin comparație cu baza de date mamă. Așadar:

  • $ apt-get install mariadb-server mariadb-client
  • $ systemctl status mysql             && verifică funcționarea serverului mysql
  • $ systemctl start mysql                && NUMAI în cazul în care la linia anterioară
  •                                                                            serverul mysql nu este ENABLED   

Având în vedere faptul că net-ul este plin de oameni răi, dornici să ne hakerească (!?!) minunăția de site, trecem la securizarea bazei de date. Ar fi bine ca parola pe care o alegeți să fie alta decât cea de root aleasă pentru serverul Linux, și să o notați pentru că este parola root a bazei de date. Vreau să vă atrag atenția asupra faptului că o să ieșiți de sub prompterul Linux de la un moment dat:

  • $ mysql_secure_installation
  •      Secure Maria DB:
  •      Enter current password for root (enter for none):    && apasă ENTER
  •      Set root password? [Y/n]  Y
  •      ENTER YOUR PASSWORD                                                  && parola aleasă
  •      Remove Anonymus users? [Y/n]  Y
  •      Disallow root login remotely [Y/n]  Y
  •      Remove test database and acces to it [Y/n]  Y
  •      Reload privilege tables now? [Y/n]  Y
  • $ clear                                                                                                   && curăță ecranul

Și dacă tot suntem aici, să pregătim și cuibul pentru WordPress! O să creăm o bază de date numită bazadedate, un utilizator WordPress numit utilizatorwp care se va autentifica cu parola ParolaWp. Vă sfătuiesc ca parola să fie una serioasă, cu caractere, cifre, lunguță, etc. și să notați cu multă atenție atât numele bazei de date cât și utilizatorul și parola. A, și nu uitați: după fiecare instrucțiune trebuie să puneți semnul ; , altfel instrucțiunea nu se execută. Și DA, MariaDB acceptă instrucțiuni scrise cu litere mici!

  • $ mysql -u root -p
  •      TYPE YOUR PASSWORD       && parola de root aleasă în pasul anterior
  •       create database bazadedate;
  •       create user utilizatorwp@localhost identified by ‘ParolaWp’;
  •       grant all privileges on bazadedate.* to utilizatorwp@localhost identified by ‘ParolaWp’;
  •       flush privileges;
  •       \q

 

Bun! Acum ar cam fi cazul să ne ocupăm și de PhP. Fără PhP, WordPress nu prea există, dar nu mă apuc acum eu să țin prelegeri despre crearea paginilor web, că dacă mă pricepeam nu făceam o groază de chestii ca maimuța. Personal am ales să folosesc PhP 7.0 iar cine o să aibă răbdare să caute pe net, o să și afle de ce.

  • $ apt-get install php7.0-fpm php7.0-mysql php7.0-gd php7.0-json php7.0-cli php7.0-curl libapache2-mod-php7.0 php7.0-mbstring php7.0-xml php7.0-common
  • $ a2enmod php7.0
  • $ systemctl restart apache2

Înainte de a merge mai departe, este necesar să testăm funcționarea corectă a php7.0 împreună cu Apache.  Pentru aceasta vom crea, cu ajutorul editorului nano (un editor care are avantajul de a fi ușor de utilizat chiar și de către cei neobișnuiți cu editoare mai linuxistice), o pagină numită test.php, pe care, ulterior testării, o vom șterge.

  • $ php –version                                           && afișează versiunea curentă a php
  • $ nano /var/www/html/test.php        && pornim crearea paginii test.php
  •       <?php phpinfo(); ?>
  •                                                                            && salvăm și ieșim de aici

Acum este momentul ca pe calculatorul pe care lucrăm să pornim browser-ul favorit (IE, Opera, etc.) și să tastăm adresa http://192.168.0.11/test.php și vom obține o pagină cu o groază de informații despre serverul web și versiunea php. Asta înseamnă că totul sau aproape totul funcționează corect. Este momentul să ștergem pagina de test:

  • $ rm -rf /var/www/html/test.php

Și a sosit momentul să instalăm și principalul vinovat de acest deranj, respectiv vedeta de serviciu în acest caz, respectiv WordPress.

Din fericire pentru noi, băieții s-au gândit cu capul cum să facă acest proces cât mai elegant pentru noi ăștia, dornici de faimă pe net dar fără arginți de aruncat pe configurări sofisticate. Odată pornită instalarea WordPress, acesta devine o altă ciorbă despre care, dacă va fi cazul, am să amestec în alt articol. Ultima versiune de WordPress se găsește pe site-ul organizației fie în format zip, fie în format tar, și se numește, întotdeauna latest.zip sau latest.tar.gz. Deci:

  • $ apt-get update        && Pentru cazul, puțin probabil, că mai există vreun
  • $ apt-get upgrade     && pachețel neactualizat
  • $ wget https://wordpress.org/latest.tar.gz     && descărcăm
  • $ tar xvf latest.tar.gz                                                   && despachetăm
  • $ mv wordpress/ /var/www/html/                       && mutăm conținutul
  • $ mkdir /var/www/html/wp-content/uploads
  • $ chown -R www-data.www-data /var/www/html/
  • $ chmod -R 755 /var/www/html
  • $ chown -R :www-data /var/www/html/wp-content/uploads
  • $ rm -rf /var/www/html/index.html                     && ștergem fișierul index implicit
  • $ systemctl restart apache2                                  && repornim Apache

În momentul de față WordPress se află pe serverul nostru, nu mai trebuie decât configurat. În acest scop, vom edita, folosind tot nano, o serie de fișiere pre-configurate, unde vom face ceva înlocuiri și adăugiri. Să zicem, de dragul exemplului, că suntem posesorii domeniului nume-site.ro 

  • $ cd /var/www/html
  • $ cp wp-config-sample.php wp-config.php  && creăm fișierul de configurare
  • $ nano wp-config.php
  •              &&  Aici modificăm următoarele variabile după cum urmează:
  • DB-NAME = bazadedate
  • DB_USER = utilizatorwp
  • DB_PASSWORD = ParolaWp
  •                                                                    && Lăsăm restul neatins, salvăm și ieșim
  • $ a2enmode rewrite
  • $ systemctl restart apache2      && repornim Apache
  • $ cd /etc/apache2/sites-available/
  • $ cp 000-default.conf nume-site.ro.conf   && creăm fișierul de configurare
  • $ nano nume-site.ro.conf
  •                                                                 && Aici modificăm/adăugăm liniile, după caz
  •         <VirtualHost *:80>
  •         ServerName nume-site.ro
  •         ServerAlias www.nume-site.ro
  •         ServerAdmin webmaster@localhost
  •         <Directory /var/www/html/>
  •         Options FollowSymLinks
  •         AllowOverride All
  •         Order allow,deny
  •         allow from all
  •         </Directory>
  •         ErrorLog /var/log/apache2/nume-site.ro-error_log
  •         CustomLog /var/log/apache2/nume-site.ro-access_log common
  •          </VirtualHost>
  •          &&  salvăm și ieșim
  • $ a2ensite nume-site.ro.conf
  • $ systemctl restart apache2    && repornim Apache

Acesta este momentul în care, dacă accesăm pe browser http://192.168.0.11 , procesul de instalare grafică va porni fără probleme. Nu este nimic greșit dacă procedați la a porni configurarea WordPress, conform tutorialelor existente pe site-ul lor.  Oricum la un moment dat veți dori să vă configurați Permalinks (o să aflați voi ce sunt alea, asta în cazul în care nu știți deja), acțiune ce se desfășoară cam așa:

  • $ touch /var/www/html/.htaccess
  • $ chown  :www-data /var/www/html/.htaccess
  • $ chmod 664 /var/www/html/.htaccess
  • $ chmod 644 /var/www/html/.htaccess
  • $ systemctl restart apache2

Ei, și de aici încolo, totul depinde numai și numai de creativitatea voastră. Eu nu pot decât să sper că v-am scutit de o groază de căutări și teste. Asta pentru că, deși net-ul este plin de tutoriale, care mai de care mai haioase, eu am săpat o vreme până să ajung la această variantă. Se pare că instalarea pe o mașină virtuală funcționează ușor diferit față de cea pe o mașină fizică. Nu-mi rămâne decât să vă urez să fiți mai inspirați decât mine în alegerea temelor, plugin-urilor, cât și a subiectelor postărilor!

Nessy – 2017