Ubuntu 18.04 (LTS) tutorial i serverit LAMP me Apache, PHP 7.2 dhe MySQL


LAMP është shkurtim për Linux, Apache, MySQL, PHP. Ky tutorial tregon se si mund të instaloni një server në internet Apache në një server Ubuntu 18.04 LTS (Bionic Beaver) me mbështetje PHP 7.2 (mod_php) dhe MySQL/MariaDB dhe si të konfiguroni një certifikatë SSL me Lets encrypt. Për më tepër, unë do të instaloj PHPMyAdmin për ta bërë më të lehtë administrimin e MySQL. Një konfigurim LAMP është një bazë e përsosur për sistemet e njohura CMS si Joomla, Wordpress ose Drupal.

Shënim paraprak

Në këtë tutorial, unë do të përdor emrin e hostit server1.example.com me adresën IP 192.168.1.100. Këto cilësime mund të ndryshojnë për ty, kështu që duhet t'i zëvendësosh aty ku është e përshtatshme.

Unë rekomandoj që të përdorni një konfigurim minimal të serverit Ubuntu si bazë për tutorialin, që mund të jetë një imazh i serverit virtual ose rrënjë me një instalim minimal Ubuntu 18.04 nga një kompani web hosting ose përdorni udhëzuesin tonë minimal të serverit për të instaluar një server nga e para.

Unë i ekzekutoj të gjitha hapat në këtë tutorial me privilegje rrënjësore, prandaj sigurohuni që jeni identifikuar si rrënjë:

sudo -s

1. Instalimi i bazës së të dhënave MySQL ose MariaDB

Aktualisht ekzistojnë dy sisteme të përdorura gjerësisht të bazës së të dhënave MySQL, serveri klasik \MySQL\ i cili është zhvilluar nga Oracle dhe është i disponueshëm në versionin 5.7 tani dhe forku MySQL i quajtur MariaDB i cili është zhvilluar nga zhvilluesi origjinal i MySQL Monty Widenius.

Më poshtë do t'ju tregoj se si t'i instaloni të dyja alternativat. Thjesht ndiqni kapitullin 1.1 ose 1.2, por jo të dyja. Unë do të përdor MySQL 5.7 për imazhin e makinës virtuale që mund të shkarkohet nga Howtoforge.

1.1 Instaloni MySQL 5.7

Për të instaluar MySQL 5.7, ekzekutoni këtë komandë:

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

Paketat mysql-server dhe mysql-client janë të ashtuquajturat meta-paketa, ato instalojnë gjithmonë versionin më të fundit MySQL që disponohet nga Ubuntu. Versioni i fundit aktualisht është MySQL 5.7.

Ne kemi vendosur fjalëkalimin rrënjë për MySQL tashmë gjatë instalimit, por do të doja të hiqja përdoruesin anonim dhe bazën e të dhënave të testimit për arsye sigurie. Ekzekutoni komandën mysql_secure_installation më poshtë për ta arritur atë.

mysql_secure_installation

Do t'ju bëhen këto pyetje:

Securing the MySQL server deployment.
Enter password for user root: <-- Enter the MySQL root password
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : <-- Choose 'y' here if you like to enable the password validation, I don't need that function, so I choose 'n' here.
... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : <-- y
Success.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : <-- y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : <-- y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : <-- y
Success.
All done!

Konfigurimi i MySQL është siguruar tani.

1.2 Instaloni MariaDB 10

Drejtoni komandën e mëposhtme për të instaluar serverin dhe klientin MariaDB:

apt-get -y install mariadb-server mariadb-client

Tani vendosim një fjalëkalim rrënjësor për MariaDB.

mysql_secure_installation

Do t'ju bëhen këto pyetje:

Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

1.3 Testoni hyrjen rrënjësore të MySQL/MariaDB

Testoni hyrjen në MariaDB me \komandën mysql\

mysql -u root -p

dhe futni fjalëkalimin rrënjësor të MariaDB që keni vendosur më sipër. Rezultati duhet të jetë i ngjashëm me pamjen e mëposhtme të ekranit:

Për të dalë nga guaska MySQL/MariaDB, futni komandën \quit\ dhe shtypni enter.

2. Instaloni Apache Web Server

Apache 2 është i disponueshëm si një paketë Ubuntu, prandaj ne mund ta instalojmë atë si kjo:

apt-get -y install apache2

Tani drejtojeni shfletuesin tuaj në http://192.168.1.100 dhe duhet të shihni faqen e paracaktuar të Apache2 (Funksionon!):

Rrënja e dokumentit të vhost-it të paracaktuar të apache është /var/www/html në Ubuntu dhe skedari kryesor i konfigurimit është /etc/apache2/apache2.conf. Sistemi i konfigurimit është i dokumentuar plotësisht në /usr/share/doc/apache2/README.Debian.gz.

3. Instaloni PHP 7.2

Ne mund të instalojmë PHP 7.2 dhe modulin Apache PHP si më poshtë:

apt-get -y install php7.2 libapache2-mod-php7.2

Pastaj rinisni Apache:

systemctl restart apache2

4. Testoni PHP dhe merrni detaje rreth instalimit tuaj të PHP

Rrënja e dokumentit të faqes së paracaktuar të internetit është /var/www/html. Tani do të krijojmë një skedar të vogël PHP (info.php) në atë direktori dhe do ta thërrasim në një shfletues. Skedari do të shfaqë shumë detaje të dobishme në lidhje me instalimin tonë të PHP-së, siç është versioni i instaluar i PHP-së.

nano /var/www/html/info.php
<?php
phpinfo();

Pastaj ndryshoni pronarin e skedarit info.php në përdoruesin dhe grupin www-data.

chown www-data:www-data /var/www/html/info.php

Tani ne e quajmë atë skedar në një shfletues (p.sh. http://192.168.1.100/info.php):

Siç e shihni, PHP 7.2 po funksionon dhe funksionon përmes Apache 2.0 Handler, siç tregohet në linjën API të Serverit. Nëse lëvizni më poshtë, do të shihni të gjitha modulet që janë aktivizuar tashmë në PHP. MySQL nuk është renditur atje, që do të thotë se ne nuk kemi ende mbështetje MySQL/MariaDB në PHP.

5. Merrni mbështetje MySQL/MariaDB në PHP

Për të marrë mbështetjen e MySQL në PHP, ne mund të instalojmë paketën php7.2-mysql. Është një ide e mirë të instaloni disa module të tjera PHP, si dhe ato mund t'ju nevojiten për aplikacionet tuaja. Ju mund të kërkoni për module të disponueshme PHP si kjo:

apt-cache search php7.2

dhe

apt-cache search php-

pasi jo të gjitha paketat PHP kanë numrin e versionit 7.2 në emrin e tyre.

Zgjidhni ato që ju nevojiten dhe instaloni ato si kjo:

apt-get -y install php7.2-mysql php7.2-curl php7.2-gd php7.2-intl php-pear php-imagick php7.2-imap php-memcache  php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl php7.2-mbstring php-gettext

Tani rinisni Apache2:

systemctl restart apache2

PHP 7.2 tani ka mbështetje MySQL/MariaDB siç tregohet në phpinfo() më sipër.

6. Instaloni cache Opcache + APCu PHP për të shpejtuar PHP

PHP 7 dërgohet me një memorie të integruar të kodit për ruajtjen dhe optimizimin e kodit të ndërmjetëm PHP, ai ka emrin opcache dhe është i disponueshëm në paketën php7.0-opcache. Rekomandohet fuqimisht që të keni të instaluar një Opcache për të shpejtuar faqen tuaj PHP. Përveç opcache, unë do të instaloj APCu i cili është një mbështjellës përputhshmërie për opcache për të ofruar funksionet e cache APC, një sistem memorie të përdorur shpesh në versionet PHP 5.x dhe shumë sisteme CMS ende e përdorin atë.

Opcache dhe APCu mund të instalohen si më poshtë:

apt-get -y install php7.2-opcache php-apcu

Mos u shqetësoni nëse tregon se Opcache është instaluar tashmë.

Tani rinisni Apache:

systemctl restart apache2

Tani ringarkoni http://192.168.1.100/info.php në shfletuesin tuaj dhe lëvizni përsëri te seksioni i moduleve. Tani duhet të gjeni shumë module të reja atje:

Ju lutemi, mos harroni të fshini skedarin info.php kur nuk ju nevojitet më pasi ai ofron detaje të ndjeshme të serverit tuaj. Drejtoni komandën e mëposhtme për të fshirë skedarin.

rm -f /var/www/html/info.php

7. Aktivizo faqen e internetit SSL në apache

SSL/TLS është një shtresë sigurie për të enkriptuar lidhjen midis shfletuesit të internetit dhe serverit tuaj. Shumica e shfletuesve të internetit fillojnë t'i shfaqin sajtet si të pasigurta sot kur lidhja midis serverit dhe shfletuesit të uebit nuk është e koduar me SSL. Në këtë kapitull, unë do t'ju tregoj se si të siguroni faqen tuaj të internetit me SSL.

Ekzekutoni komandat e mëposhtme në serverin tuaj për të aktivizuar mbështetjen e SSL (https://). Vraponi:

a2enmod ssl
a2ensite default-ssl

i cili mundëson modulin SSL dhe shton një lidhje simbolike në dosjen /etc/apache2/sites-enabled në skedarin /etc/apache2/sites-available/default-ssl.conf për ta përfshirë atë në konfigurimin aktiv të apache-së. Pastaj rinisni apache për të aktivizuar konfigurimin e ri:

systemctl restart apache2

Tani testoni lidhjen SSL duke hapur https://192.168.1.100 në një shfletues ueb.

Do të merrni një paralajmërim SSL pasi certifikata SSL e serverit është një certifikatë SSL \vetë-nënshkruar\, kjo do të thotë se shfletuesi nuk i beson kësaj certifikate si parazgjedhje dhe ju duhet të pranoni paralajmërimin e sigurisë së pari. Pas pranimit të paralajmërimit, do të shihni faqen e paracaktuar të apache.

Mbyllur \Green Padlock\ përpara URL-së në shfletues tregon se lidhja është e koduar.

Ka dy mënyra për të hequr qafe paralajmërimin SSL, ose zëvendësoni certifikatën SSL të vetë-nënshkruar /etc/ssl/certs/ssl-cert-snakeoil.pem me një certifikatë SSL të nënshkruar zyrtarisht që blini nga një Autoritet SSL ose e merrni një certifikatë falas SSL nga Lets encrypt, të cilën do ta përshkruaj në kapitullin 8.

8. Merrni një Certifikatë SSL falas nga Lets Encrypt

Hapi i parë për të siguruar faqen e internetit me një Certifikatë Lets Encrypt SSL është instalimi i paketës python3-certbot-apache. Ekzekutoni komandën e mëposhtme:

apt-get -y install python3-certbot-apache

Në hapin tjetër, ne do të kërkojmë një certifikatë SSL nga Lets Encrypt duke përdorur programin e klientit certbot, gjatë këtij procesi, serveri Lets Encrypt përpiqet të lidhet me serverin tuaj përmes emrit të domenit që i jepni komandës certbot. Është e rëndësishme që ky emër domeni të drejtojë serverin tuaj në DNS tashmë në mënyrë që faqja e internetit të jetë e arritshme me emrin e saj të domenit në portin 80 (http). Nëse faqja e internetit nuk është e arritshme nga interneti, atëherë krijimi i certifikatës Lets Encrypt SSL do të dështojë.

Përpara se të fillojmë të krijojmë certifikatën SSL, vendosni emrin e domenit në skedarin e konfigurimit vhost. Hapni skedarin e paracaktuar vhost me një redaktues:

nano /etc/apache2/sites-available/000-default.conf

dhe shtoni rreshtin:

ServerName example.com

Pikërisht nën linjën DocumentRoot. Zëvendësoni example.com me emrin e domenit të faqes tuaj të internetit.

Pastaj krijoni Certifikatën SSL me këtë komandë:

certbot --apache -d example.com

Zëvendësoni shembull.com me emrin tuaj të domenit këtu përsëri. Komanda do të fillojë një magjistar që ju bën disa pyetje.

Futni adresën e emailit ku mund të kontaktohet administratori që është përgjegjës për këtë faqe interneti.

Pranoni termat dhe kushtet e autoritetit Lets Encrypt SSL.

Certbot do t'ju pyesë tani nëse dëshironi të ndani adresën tuaj të emailit me Electronic Frontier Foundation. Zgjidhni këtu çfarëdo që ju preferoni.

Pastaj zgjidhni nëse dëshironi të ridrejtoni automatikisht kërkesat jo-SSL në https://. Këtu do të zgjidhet po për të shmangur problemet e përmbajtjes së kopjuar kur faqja e internetit është e disponueshme si versione http:// dhe https://.

Certifikata SSL është lëshuar me sukses.

Kur hyni në faqen e internetit tani me një shfletues, do të ridrejtoheni automatikisht në SSL dhe dryni i gjelbër përpara shiritit të URL-së në shfletues tregon se ne po përdorim një certifikatë të besuar SSL tani.

8.1 Le të enkriptojmë Rinovimin automatik

Lets Encrypt Certifikatat SSL janë të vlefshme vetëm për një periudhë të shkurtër prej 80 ditësh. Prandaj është i nevojshëm një cronjob për të rinovuar automatikisht certifikatat SSL që ekzekuton komandën certbot --renew.

Ky cronjob konfigurohet automatikisht kur instaloni certbot, skedari cron është /etc/cron.d/certbot. Pra, këtu nuk ka asgjë për të bërë më shumë. Nëse ju pëlqen të dini se si duket cronjob, ekzekutoni komandën:

/etc/cron.d/certbot

Rezultati është:

:~# cat /etc/cron.d/certbot
# /etc/cron.d/certbot: crontab entries for the certbot package
#
# Upstream recommends attempting renewal twice a day
#
# Eventually, this will be an opportunity to validate certificates
# haven't been revoked, etc. Renewal will only occur if expiration
# is within 30 days.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew

9. Instaloni phpMyAdmin

phpMyAdmin është një ndërfaqe në internet përmes së cilës ju mund të menaxhoni bazat e të dhënave tuaja MySQL. Është një ide e mirë ta instaloni:

apt-get -y install phpmyadmin

E RËNDËSISHME: Instaluesi i përshtatshëm do t'ju bëjë disa pyetje tani, njëra prej tyre është të zgjidhni llojin e serverit në internet. Një gabim i zakonshëm është se lloji i serverit në internet thjesht theksohet, por nuk zgjidhet. Për të zgjedhur një artikull në një meny të përshtatshme, duhet të shtypni shiritin e hapësirës në tastierë pasi të keni lundruar te artikulli me butonat e skedës ose të kursorit. Nuk mjafton vetëm ta theksosh!

Do të shihni pyetjet e mëposhtme:

Web server to configure automatically: <-- Select the option: apache2
Configure database for phpmyadmin with dbconfig-common? <-- Yes
MySQL application password for phpmyadmin: <-- Press enter, apt will create a random password automatically.

9.1 Qasja rrënjësore në PHPMyAdmin

MariaDB dhe MySQL mundësojnë si parazgjedhje një shtesë të quajtur \unix_socket\ për përdoruesin rrënjë, kjo shtojcë parandalon që përdoruesi rrënjë të mund të hyjë në PHPMyAdmin dhe që lidhjet TCP me MySQL të funksionojnë për përdoruesin rrënjë. Për të marrë një përdorues me privilegje për të krijuar përdorues të tjerë dhe baza të dhënash në PHPMyAdmin, unë do të krijoj një përdorues të ri MySQL me emrin \admin\ me të njëjtat privilegje se përdoruesi rrënjë.

Hyni në bazën e të dhënave MySQL si përdorues rrënjë në shell:

mysql -u root

Krijo një përdorues të ri me emrin \admin\ dhe fjalëkalimin \howtoforge\. Zëvendësoni fjalëkalimin \howtoforge\ me një fjalëkalim të sigurt në komandat e mëposhtme!

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'howtoforge';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit

Më pas, mund të përdorni phpMyAdmin nën http://192.168.1.100/phpmyadmin/:

10 Shkarkimi i imazhit të makinës virtuale i këtij tutoriali

Ky udhëzues është i disponueshëm si imazh i gatshëm për përdorim i makinës virtuale në formatin ovf/ova që është i pajtueshëm me VMWare dhe Virtualbox. Imazhi i makinës virtuale përdor detajet e mëposhtme të hyrjes:

Hyrja në SSH/Shell

Emri i përdoruesit: administratori
Fjalëkalimi: howtoforge

Ky përdorues ka të drejta sudo.

Hyrja në MySQL

Emri i përdoruesit: root
Fjalëkalimi: howtoforge

IP-ja e VM-së është 192.168.1.100, mund të ndryshohet në skedarin /etc/network/interfaces. Ju lutemi ndryshoni të gjitha fjalëkalimet e mësipërme për të siguruar makinën virtuale.

11 Lidhje

  • Apache: http://httpd.apache.org/
  • PHP: http://www.php.net/
  • MySQL: http://www.mysql.com/
  • MariaDB: https://mariadb.com/
  • Ubuntu: http://www.ubuntu.com/
  • phpMyAdmin: http://www.phpmyadmin.net/