Ki jan yo enstale LEMP Stack (Nginx, MariaDB, ak PHP) sou AlmaLinux 8

LEMP se yon koleksyon lojisyèl sous louvri ki souvan itilize ansanm pou sèvi aplikasyon entènèt. Tèm LEMP a se yon akwonim ki reprezante konfigirasyon yon sistèm operasyon Linux ak yon Nginx (pwononse motè-x, pakonsekan E a nan akwonim nan) sèvè wèb, ak done sit ki estoke nan yon baz done MySQL oswa MariaDB ak kontni dinamik trete pa PHP ki popilè yo itilize pou hosting sit entènèt vaste akòz pèfòmans li yo ak évolutivité.

Nan leson patikilye sa a, ou pral aprann ki jan yo enstale LEMP (Nginx, MariaDB, PHP 8.0) sou AlmaLinux 8.

Kondisyon

  • OS rekòmande: AlmaLinux 8.
  • Kont itilizatè: Yon kont itilizatè ak sudo privilèj or aksè rasin (su kòmand).

Mete ajou sistèm operasyon

Mete ajou ou AlmaLinux sistèm operasyon pou asire tout pakè ki egziste deja yo ajou:

sudo dnf upgrade --refresh -y

Tutorial la pral sèvi ak la sudo kòmand ak sipoze ou gen estati sudo. Pou verifye estati sudo sou kont ou:

sudo whoami

Egzanp pwodiksyon ki montre estati sudo:

[joshua@localhost ~]$ sudo whoami
root

Si ou pa mete yon kont itilizatè sudo epi ou ta renmen, vizite leson patikilye nou an sou Ki jan yo ajoute yon itilizatè nan Sudoers sou AlmaLinux.

Pou itilize kont rasin, sèvi ak lòd sa a ak modpas rasin lan pou konekte.

su

reklam


Enstale Nginx

Pou kòmanse enstalasyon pile LEMP, w ap bezwen enstale Nginx sèvè entènèt, ki ka fè ak lòd tèminal sa a:

sudo dnf install nginx

Egzanp pwodiksyon:

Ki jan yo enstale LEMP Stack sou AlmaLinux 8

Kalite (Y), Lè sa a, peze (ENTRE KLE) kontinye.

Konfime enstalasyon an pa tcheke vèsyon an bati:

nginx -v

Egzanp pwodiksyon:

nginx version: nginx/1.14.1

Pa default, lè enstale Nginx sou AlmaLinux, li pa pèmèt. Pou pèmèt sou bòt ak kòmanse, sèvi ak sa ki annapre yo:

sudo systemctl enable nginx && sudo systemctl start nginx

Egzanp pou pèmèt avèk siksè (senbolik):

Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.

Koulye a, tcheke pou wè estati sèvis Nginx ou a ak lòd tèminal sa a:

systemctl status nginx

Egzanp pwodiksyon ki di tout bagay anfòm:

Ki jan yo enstale LEMP Stack sou AlmaLinux 8

Li se yon bon lide pou pèmèt trafik HTTP atravè firewall ou a ak lòd sa a:

sudo firewall-cmd --zone=public --add-service=http --permanent 

Rechaje firewall la ak lòd sa a:

sudo firewall-cmd --reload

Koulye a, ou ka konfime ke sèvè wèb Nginx ou a fonksyone lè w antre HTTP://sèvè-ip or HTTP: // non domèn nan navigatè entènèt ou a, epi ou ta dwe jwenn bagay sa yo:

Ki jan yo enstale LEMP Stack sou AlmaLinux 8

Enstale ak Configure MariaDB

Enstalasyon

MariaDB se yon ranplasman gout-nan pou MySQL e li te devlope pa ansyen manm nan ekip la MySQL konsène ke Oracle ta ka vire MySQL nan yon sous fèmen ak potansyèlman peye pwodwi.

Antre kòmandman sa a pou enstale MariaDB:

sudo dnf install mariadb-server mariadb

Egzanp pwodiksyon:

Ki jan yo enstale LEMP Stack sou AlmaLinux 8

Kalite (Y), Lè sa a, peze (ENTRE KLE) kontinye.

Pou konfime enstalasyon MariaDB epi tcheke ki sa ki enstale, tape lòd sa a:

mysql --version

Egzanp pwodiksyon:

mysql  Ver 15.1 Distrib 10.3.28-MariaDB, for Linux (x86_64) using readline 5.1

Pa default, MariaDB pa vin aktive jis menm jan ak Nginx anvan li pa t '. Pou kòmanse ak pèmèt MariaDB sou bòt sistèm, sèvi ak sa ki annapre yo (systemctl) lòd tèminal:

sudo systemctl enable mariadb && sudo systemctl start mariadb

Egzanp pou pèmèt avèk siksè (senbolik):

Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.

Koulye a, asire w ke tout bagay fonksyone ak lòd sa a:

systemctl status mariadb

Egzanp pwodiksyon ki di tout bagay anfòm:

Ki jan yo enstale LEMP Stack sou AlmaLinux 8

nou konte ofri sèvis

Kounye a ke MariaDB ap fonksyone sou sistèm AlmaLinux ou a, ou bezwen kouri script sekirite apre enstalasyon an paske paramèt default yo bezwen revize osi souvan yo pa an sekirite. Sa a se trè rekòmande pa sote.

Premyèman, kouri lòd enstalasyon an sekirite MariaDB jan sa a:

sudo mysql_secure_installation

Apre sa, yo pral ba w yon èd memwa ki mande w antre (modpas rasin MariaDB ou). Pou kounye a, peze la (ANTRE) kle kòm modpas rasin lan poko fikse jan pi ba a:

Next, tape (Y) epi peze antre pou mete kanpe la (Rasin) modpas jan pi ba a:

Pwochen seri kesyon ou ka san danje frape (ANTRE), ki pral reponn (Y) a tout kesyon ki vin apre yo ki mande w (retire itilizatè anonim yo, enfim koneksyon rasin aleka, epi retire baz done tès la). Remake byen (Y) se lèt majiskil, sa vle di li se repons default la lè ou peze la (ANTRE) kle.

Egzanp anba a:

Ki jan yo enstale LEMP Stack sou AlmaLinux 8

Apèsi sou sa ki ta dwe fè pi wo a:

  • Mete modpas la pou rasin kont.
  • Retire kont rasin ki aksesib soti deyò lame lokal la.
  • Retire kont itilizatè anonim.
  • Retire baz done tès la, ki pa defo ka jwenn aksè pa itilizatè anonim.

Etap sa a esansyèl pou sekirite baz done MariaDB epi li pa ta dwe chanje oswa sote sof si w konnen sa w ap fè.

Koulye a, konekte nan tèminal baz done MariaDB ak lòd sa a:

sudo mysql -u root -p

Ou pral mande w antre modpas rasin ou mete nan swa konfigirasyon enstalasyon an oswa script sekirite apre enstalasyon an. Yon fwa andedan egzanp sèvis MySQL, ou ka egzekite kòmandman sa a kòm yon tès yo wè li nan operasyon.

Tape sa ki annapre yo SHOW DATABASE kòmand:

SHOW DATABASES;

Pou moun ki nouvo nan MySQL ak MariaDB, tout kòmandman yo dwe fini ak "."

Egzanp:

Ki jan yo enstale LEMP Stack sou AlmaLinux 8

Pou sòti tèminal baz done MariaDB, tape (sòti;) jan sa a:

exit;

reklam


Enstale PHP (PHP-FPM)

Enpòte PHP 8.0 Repository

Dènye pati pou enstale nan enstalasyon LEMP ou a se PHP. Ou pral bezwen enstale (PHP-FPM) ki se kout pou (Manadjè Pwosesis FastCGI). Li trè rekòmande enstale PHP (Remi) depo. Pou moun ki pa okouran, Remi se moun ki kenbe PHP degaje sou fanmi Rhel la. Pou leson patikilye a, nou pral enstale dernye PHP 8.0 la:

Premye travay la se enstale (EPEL) depo, ki vle di (Pakè siplemantè pou Enterprise Linux). Pou itilizatè ki pi resan yo Rhel ak AlmaLinux, EPEL gen pakè lojisyèl ki pi souvan itilize pou Enterprise Linux.

Pou enstale EPEL, sèvi ak sa ki annapre yo (dnf) lòd tèminal:

sudo dnf install epel-release

Egzanp pwodiksyon:

Ki jan yo enstale LEMP Stack sou AlmaLinux 8

Kalite (Y), Lè sa a, peze (ENTRE KLE) kontinye.

Kounye a ke ou te ajoute repozitwa EPEL la, pèmèt (Repozitwa Remi) avèk bagay sa yo:

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
Ki jan yo enstale LEMP Stack sou AlmaLinux 8

Kalite (Y), Lè sa a, peze (ENTRE KLE) kontinye.

Apre sa, sèvi ak (dnf) lòd pou mete ajou lis depo ou a:

sudo dnf update

Ou pral remake yon demann nan tèminal ou a sou enpòte a (kle GPG) pou repozitwa Remi jan pi ba a:

Ki jan yo enstale LEMP Stack sou AlmaLinux 8

Kalite (Y), Lè sa a, peze (ENTRE KLE) kontinye.

Remake byen ke yo pral mande w de fwa plis tape (Y) de fwa plis enpòte plis kle GPG. Sa a se byen fè.

Apre sa, yo pral mande w pou ajou lage EPEL la:

Egzanp:

Ki jan yo enstale LEMP Stack sou AlmaLinux 8

Kalite (Y), Lè sa a, peze (ENTRE KLE) kontinye.

Repozitwa EPEL ou a kounye a ajou, epi ou pare pou ale nan pwochen pati leson patikilye a.

Pèmèt PHP 8.0 (Remi) Repository

PHP 7.2 se chwa PHP default pou enstalasyon estanda sou Rhel/Alma Linux ak depo Remi a. Yon konsèy rapid se sèvi ak la (lis php) kòmand pou wè opsyon ki disponib ak default la. Kòmandman sa a ka fè sa:

sudo dnf module list php

Ou pral jwenn pwodiksyon sa a kòm pi ba a. Remake byen la (D) tag pou PHP default yo dwe enstale:

Ki jan yo enstale LEMP Stack sou AlmaLinux 8

Kòm ou ka wè pi wo a, tag (d) la se akote PHP 7.2, ke ou pral bezwen reset ak chanje pou kontinye enstale PHP 8.0 sou AlmaLinux. Reyajiste lis PHP a fasil ak lòd sa a:

sudo dnf module list reset php

Apre sa, pèmèt PHP 8.0 ak lòd sa a:

sudo dnf module enable php:remi-8.0 -y

Egzanp pwodiksyon yon fwa fini:

Ki jan yo enstale LEMP Stack sou AlmaLinux 8

Remake byen, ou ka pèmèt PHP-7.4 pa swiv la dnf modil reset lòd epi sèvi ak la dnf modil pèmèt php:remi-7.4 kòmand olye. Chwazi vèsyon an ou bezwen pou aplikasyon an, ak sa a se te jis yon egzanp ki gen dènye vèsyon PHP nan kèlkeswa chwa PHP ou deside.

Enstale PHP 8.0

Kounye a ke ou te ajoute Remi PHP repozitwa a ak pèmèt PHP 8.0 yo dwe vèsyon an default sou sistèm AlmaLinux ou a, ou ka enstale PHP 8.0 ak lòd sa a:

sudo dnf install php

Egzanp pwodiksyon:

Ki jan yo enstale LEMP Stack sou AlmaLinux 8

Kalite (Y), Lè sa a, peze (ENTRE KLE) kontinye.

Si ou ta renmen enstale ekstansyon ki pi souvan itilize pou PHP 8.0, sèvi ak lòd sa a:

sudo dnf install php-cli php-fpm php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imap php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml

Remake byen, retire opsyon ou pa vle sa a se opsyonèl.

Egzanp pwodiksyon:

Ki jan yo enstale LEMP Stack sou AlmaLinux 8

Kalite (Y), Lè sa a, peze (ENTRE KLE) kontinye.

Kounye a ke ou te enstale PHP 8.0 ak ekstansyon yo tcheke vèsyon an ak lòd sa a:

php -v

Egzanp pwodiksyon:

PHP 8.0.10 (cli) (built: Aug 24 2021 15:40:40) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.10, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.10, Copyright (c), by Zend Technologies

Anfen, PHP-FPM tankou Nginx ak MariaDB anvan li pa aktive pa default, pou pèmèt PHP-FPM sou bòt sistèm lan epi pou kòmanse li, sèvi ak sa ki annapre yo. (systemctl) lòd:

sudo systemctl enable php-fpm && sudo systemctl start php-fpm

Egzanp pou pèmèt avèk siksè (senbolik):

Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.

Koulye a, menm jan anvan ak tcheke estati lòt kondisyon yo nan enstalasyon LEMP ou a, sèvi ak sa ki annapre yo (systemctl) lòd tèminal pou tcheke estati a pou asire w ke tout bagay ap travay:

systemctl status php-fpm

Si pa gen okenn erè, ou ta dwe jwenn pwodiksyon sa a:

Ki jan yo enstale LEMP Stack sou AlmaLinux 8

Kontrèman ak enstalasyon LEMP sou Debian/Ubuntu ki sèvi ak (www-done) itilizatè, sa a se pa ka a ak enstalasyon fanmi RHEL. Pa defo sou AlmaLinux, sèvis PHP-FPM fèt pou kouri (Apache) itilizatè a, ki pa kòrèk depi n ap itilize Nginx, e sa a te bezwen korije.

Premyèman, louvri sa yo (www.conf) dosye konfigirasyon:

sudo nano /etc/php-fpm.d/www.conf

Apre sa, ranplase a (Apache) itilizatè ak gwoup ak la (Nginx) itilizatè ak gwoup:

Ki jan yo enstale LEMP Stack sou AlmaLinux 8

Pou sove, peze (CTRL+O) Lè sa a, sòti (CTRL+X).

Koulye a, ou pral twò rechaje oswa rekòmanse sèvis PHP-FPM ou a:

sudo systemctl restart php-fpm

Kreye Tès PHP Landing Page

Pou teste PHP-FPM ak sèvè Web Nginx, ou dwe kreye yon fichye nan anyè webroot la.

Pou gid la, ou pral nonmen fichye a (info.php) jan sa a:

sudo nano /usr/share/nginx/html/info.php

Kole sa ki annapre yo (info.php) dosye:

<?php

phpinfo();

?>

Sove dosye a (CTRL+O), Lè sa a, sòti (CTRL+X).

Koulye a, nan ba adrès navigatè entènèt ou a, antre (adrès-ip-sèvè/info.php). Si ou te enstale Nginx sou òdinatè lokal ou a, sèvi ak default la (127.0.0.1/info.php) or (localhost/info.php).

Ou ta dwe wè enfòmasyon PHP sèvè ou a:

Ki jan yo enstale LEMP Stack sou AlmaLinux 8

Enfòmasyon sa a montre PHP scripts ka kouri byen ak sèvè wèb Nginx la.

Pou rezon sekirite, ou ta dwe retire dosye a. Pou fè sa, sèvi ak lòd sa a:

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

Si ou ta prefere kenbe fichye a pou rezon nan lavni, ajoute sa ki annapre yo nan dosye blòk sèvè Nginx ou a nan sèvè {} seksyon:

    location ^~ /info.php {
     allow <YOUR IP ADDRESS>; 
     deny all;
    }

Sa a pral sèlman pèmèt adrès IP espesifye nan aksè nan dosye a. Li konseye pou kache enfòmasyon sistèm anpil nan entru potansyèl ak aktè move.


reklam


Kreye yon blòk sèvè Nginx

Yon blòk sèvè Nginx se ekivalan a yon lame vityèl nan Apache, ki gen yon konfigirasyon pou sèvè entènèt Nginx ou ki reponn a vizitè piblik yo. Anba la a se yon egzanp konplè sou ki jan yo reyalize sa a ak PHP-FPM nan tèt ou.

Kreye Anyè blòk sèvè

Jounal (.conf) fichye yo nòmalman sitiye nan (sit-disponib) ak (sit ki pèmèt). Itilizatè ki soti nan distribisyon diferan ta remake sa a ta deja enstale; sepandan, pou AlmaLinux, w ap bezwen kreye yo.

Kreye de yo mande yo (sit) anyè ak lòd sa a:

sudo mkdir /etc/nginx/sites-available && sudo mkdir /etc/nginx/sites-enabled

Edit dosye konfigirasyon Nginx la

Apre ou fin kreye anyè ki nesesè yo, edite dosye prensipal konfigirasyon Nginx la (nginx.conf) jan sa a:

sudo nano /etc/nginx/nginx.conf

Lè sa a, kole pwochen liy yo nan la (HTTP) seksyon nan la (nginx.conf) dosye konfigirasyon:

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

Egzanp:

Ki jan yo enstale LEMP Stack sou AlmaLinux 8

Remak, (server_names_hash_bucket_size) ogmante memwa ki afekte nan analiz non domèn.

Sove konfigirasyon an ak (CLTR+O) ak Lè sa a, (CTRL+X) sòti.

Kreye fichye konfigirasyon blòk sèvè

Koulye a, kreye yon fichye blòk sèvè lè l sèvi avèk nenpòt editè tèks, gid la pral itilize (nano):

sudo nano /etc/nginx/sites-available/example.com.conf

Apre sa, ou bezwen mete kanpe fichye a konfigirasyon ak yon egzanp k ap travay ak PHP-FPM pèmèt.

Yo bay yon egzanp anba a pou w kopye epi kole. Remak pou ranplase (non_sèvè) ak non domèn ou oswa IP:

server {
  listen 80;
  listen [::]:80;
  server_name example.com www.example.com;
  root /var/www/html/example.com/;
  index index.php index.html index.htm index.nginx-debian.html;

  location / {
    try_files $uri $uri/ /index.php;
  }

  location ~ \.php$ {
    fastcgi_pass unix:/run/php-fpm/www.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;

  }

 # A long browser cache lifetime can speed up repeat visits to your page
  location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
       access_log        off;
       log_not_found     off;
       expires           360d;
  }

  # disable access to hidden files
  location ~ /\.ht {
      access_log off;
      log_not_found off;
      deny all;
  }
}

Koulye a sove blòk sèvè a ak (CTRL+O), Lè sa a, sòti ak (CTRL+X).

Kreye paj Landing tès

Yon bon lide se kreye yon sit tès echantiyon. Anba a se yon tès estanda index.html mete kanpe:

Si ou poko kreye anyè entènèt pèmanan oswa tès ou a:

sudo mkdir -p /var/www/htmlexample.com/

Ou pral bezwen configured otorizasyon yo, epi ou ka mete kòm itilizatè a kounye a konekte ak la $ Itilizatè varyab:

sudo chown -R $USER:$USER /var/www/html/example.com/

Dènye anviwònman pèmisyon an se pèmèt piblik la li anyè entènèt la (aksede sit ou a) lè l sèvi avèk pèmisyon chmod 755:

sudo chmod -R 755 /var/www

Apre sa, kreye index.html dosye:

sudo nano /var/www/html/example.com/index.html

Kole kontni ki anba a. Kòm ou ka wè, li trè debaz paske nou sèlman itilize li pou rezon tès.

<html>
  <head>
    <title>You have reached Example.com!</title>
  </head>
  <body>
    <h1>Congratulations! The server block is active!</h1>
  </body>
</html>

Sove konfigirasyon an ak (CLTR+O) ak Lè sa a, (CTRL+X) sòti.

Pèmèt blòk sèvè Nginx

Ou se kounye a nan etap final yo, epi kounye a li se tan yo pèmèt dosye a konfigirasyon blòk sèvè. Pou fè sa, ou bezwen kreye yon lyen senbolik (senbolik) pou fichye konfigirasyon blòk sèvè nan (sit-disponib) anyè a la (sit ki pèmèt) anyè lè l sèvi avèk lòd sa a:

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf

Teste blòk sèvè Nginx

Pou fini, ou ta dwe toujou fè yon kouri sèk anvan rekòmanse oswa rechaje sèvis Nginx ou a, ki se kritik si w ap travay nan yon anviwònman ap viv. Tape lòd sa a pou teste dosye konfigirasyon blòk sèvè ou a:

sudo nginx -t

Si pa gen okenn erè, ou pral jwenn pwodiksyon sa a:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Apre sa, louvri navigatè entènèt ou a epi antre adrès domèn ou a (egzanp.com) pou teste si sèvè w la ka jwenn.

Felisitasyon, ou te kreye avèk siksè yon blòk sèvè Nginx ki se PHP-FPM pare.

Ki jan yo enstale LEMP Stack sou AlmaLinux 8

Sekirize Nginx ak ann ankripte Sètifika SSL gratis

Idealman, ou ta vle kouri Nginx ou sou HTTPS lè l sèvi avèk yon sètifika SSL. Pi bon fason pou fè sa se sèvi ak Ann ankripte, yon otorite sètifika gratis, otomatik epi ouvè dirije pa la Gwoup rechèch sekirite entènèt san bi likratif (ISRG).

Premyèman, enstale EPEL depo ak la mod_ssl pake pou pi bon pakè ak sekirite mete ajou.

sudo dnf install epel-release mod_ssl -y

Apre sa, enstale a pake certbot jan sa a:

sudo dnf install python3-certbot-nginx -y

Yon fwa enstale, kouri lòd sa a pou kòmanse kreyasyon sètifika ou a:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com

Sa a se konfigirasyon ideyal la ki gen ladan fòs HTTPS 301 redireksyon, Strict-Transport-Security header, ak OCSP Stapling. Jis asire w ke ou ajiste imel la ak non domèn nan kondisyon ou yo.

Koulye a, URL ou a pral HTTPS://www.example.com olye pou yo HTTP://www.example.com.

Remake byen, si ou itilize ansyen an URL HTTP, li pral otomatikman redireksyon nan T.

Opsyonèlman, ou ka mete yon travay cron pou renouvle sètifika yo otomatikman. Certbot ofri yon script ki fè sa otomatikman, epi ou ka premye teste asire w ke tout bagay ap travay pa fè yon kouri sèk.

sudo certbot renew --dry-run

Si tout bagay ap travay, ouvri fenèt crontab ou a lè w sèvi ak lòd tèminal sa a.

sudo crontab -e

Apre sa, presize lè a lè li ta dwe renouvle otomatikman. Sa a ta dwe tcheke chak jou nan yon minimòm, epi si sètifika a bezwen renouvle, script la pa pral mete ajou sètifika a. Si ou bezwen èd pou jwenn yon bon moman pou mete, sèvi ak la crontab.guru zouti gratis.

00 00 */1 * * /usr/sbin/certbot-auto renew

Save (CTRL+O) Lè sa a, sòti (CTRL+X), epi cronjob la pral otomatikman aktive.


reklam


Kòmantè ak konklizyon

Nan leson patikilye a, ou te aprann kijan pou enstale pile LEMP pou sekirize MariaDB, teste PHP, epi kreye yon blòk sèvè Nginx. An jeneral, LEMP se yon opsyon entelijan. Koulye a, Nginx te depase Apache kòm lojisyèl an ki pi itilize HTTP sèvètè a byen configuré ak pèfòmans jere ka bay sèvè entènèt ou an yon avantaj desizif sou lòt konfigirasyon.

Leave a Comment