Ki jan yo enstale LEMP Stack sou Debian 11 - Nginx MariaDB PHP

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 Debian 11.

Kondisyon

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

Mete ajou sistèm operasyon

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

sudo apt update && sudo apt upgrade

Rasin oswa Sudo Aksè

Pa default, lè ou kreye kont ou nan demaraj ak Debian konpare ak lòt distribisyon, li pa otomatikman resevwa estati sudoers. Ou dwe swa gen aksè a modpas rasin yo sèvi ak kòmandman su a oswa vizite leson patikilye nou an sou Ki jan yo ajoute yon itilizatè nan Sudoers sou Debian.


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 apt install nginx

Egzanp pwodiksyon:

Ki jan yo enstale LEMP Stack sou Debian 11 - Nginx MariaDB PHP

Kalite Y, Lè sa a, peze la antre kle kontinye ak enstalasyon an.

Konfime enstalasyon an pa tcheke vèsyon an bati:

sudo nginx -v

Egzanp pwodiksyon:

nginx version: nginx/1.18.0

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

sudo systemctl status nginx

Egzanp pwodiksyon ki di tout bagay anfòm:

Ki jan yo enstale LEMP Stack sou Debian 11 - Nginx MariaDB PHP

Pa default, lè w ap enstale Nginx sou Debian, li ta dwe aktive; si ou pa, sèvi ak lòd sa a pou kòmanse Nginx epi pèmèt li chaje sou demaraj.

sudo systemctl enable nginx && sudo systemctl start nginx

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

Synchronizing state of nginx.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable nginx

Pou itilizatè ki vle sèvi ak yon vèsyon ki pi ajou oswa liy prensipal nan Nginx pou Debian 11, vizite leson patikilye nou an. Ki jan yo enstale dènye Nginx Mainline oswa Stable sou Debian 11.

Enstale ak konfigirasyon MariaDB

Enstalasyon

MariaDB se yon ranplasman drop-in pou MySQL epi li devlope pa ansyen manm nan ekip 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 sou Debian:

sudo apt install mariadb-server mariadb-client

Egzanp pwodiksyon anba a:

Ki jan yo enstale LEMP Stack sou Debian 11 - Nginx MariaDB PHP

Kalite Y Lè sa a, peze la antre kle kontinye ak enstalasyon an:

Koulye a, tcheke estati sèvis baz done MariaDB ou a epi si li fonksyone ak lòd sa a:

sudo systemctl status mariadb

Egzanp pwodiksyon ki di tout bagay anfòm:

Ki jan yo enstale LEMP Stack sou Debian 11 - Nginx MariaDB PHP

Menm jan ak Nginx, pa default, MariaDB ta dwe aktive. Si se pa sa a, pou kòmanse ak pèmèt MariaDB sou bòt sistèm lan, 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):

Synchronizing state of mariadb.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable mariadb

Pou tcheke ki vèsyon MariaDB enstale sou sistèm Debian ou a, tape lòd sa a:

mysql --version

Egzanp pwodiksyon:

mysql  Ver 15.1 Distrib 10.5.11-MariaDB, for debian-linux-gnu (x86_64) using  EditLine wrapper

Pou itilizatè ki vle sèvi ak yon vèsyon ki pi ajou oswa liy prensipal nan Nginx pou Debian 11, vizite leson patikilye nou an. Ki jan yo enstale MariaDB 10.6 sou Debian 11.

nou konte ofri sèvis

Kounye a ke MariaDB ap fonksyone sou sistèm Debian ou a, ou bezwen kouri script sekirite apre enstalasyon an paske paramèt default yo bezwen revize 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 pwochen kesyon 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.

Ki jan yo enstale LEMP Stack sou Debian 11 - Nginx MariaDB PHP

Egzanp anba a:

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 se yon kondisyon debaz 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 Debian 11 - Nginx MariaDB PHP

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

exit;

reklam


Enstale PHP (PHP-FPM)

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). Pwosesis pou enstale dènye etap la trè senp; nan fen a, ou pral kreye yon .PHP dosye tès pou asire w ke tout bagay ap travay.

Leson patikilye a kouvri enstale PHP-FPM 7.4. Pou itilizatè ki vle enstale yon vèsyon ki pi ajou PHP-FPM 7.4 oswa nouvo 8.0, 8.1, vizite leson patikilye nou an. Ki jan yo enstale PHP 8 sou Debian 11 Bullseye. Si ou enstale PHP-FPM 8.0, pou egzanp, nan leson patikilye a, retounen isit la epi sote pati enstalasyon an.

Enstale PHP-FPM, sèvi ak kòmandman sa a:

sudo apt install php7.4 php7.4-fpm

Egzanp pwodiksyon:

Ki jan yo enstale LEMP Stack sou Debian 11 - Nginx MariaDB PHP

Kalite Y Lè sa a, peze la antre kle kontinye ak enstalasyon an:

Opsyonèlman, ou ka Lè sa a, enstale nenpòt ekstansyon nan chwa ou. Anba a se kèk nan pi souvan itilize yo:

sudo apt install php7.4-cli php7.4-curl php7.4-mysqlnd php7.4-gd php7.4-opcache php7.4-zip php7.4-intl php7.4-common php7.4-bcmath php7.4-imap php7.4-imagick php7.4-xmlrpc php7.4-json php7.4-readline php7.4-memcached php7.4-memcache php7.4-redis php7.4-mbstring php7.4-apcu php7.4-xml

Egzanp pwodiksyon:

Ki jan yo enstale LEMP Stack sou Debian 11 - Nginx MariaDB PHP

Kalite Y Lè sa a, peze la antre kle kontinye ak enstalasyon an:

Remake byen, pou sekirite redi, epi ou reyèlman ta dwe sèlman enstale pakè ki anwo yo, ou konnen w ap bezwen itilize pou prekosyon.

Apre sa, konfime enstalasyon PHP a pa tcheke vèsyon an ak bati enstale:

php -v

Egzanp pwodiksyon:

PHP 7.4.21 (cli) (built: Jul  2 2021 03:59:48) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.21, Copyright (c), by Zend Technologies

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:

sudo systemctl status php7.4-fpm

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

Ki jan yo enstale LEMP Stack sou Debian 11 - Nginx MariaDB PHP

Anfen, PHP-FPM tankou Nginx ak MariaDB anvan yo ta dwe aktive pa default; si se pa sa, 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 php7.4-fpm && sudo systemctl start php7.4-fpm

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

Synchronizing state of php7.4-fpm.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable php7.4-fpm

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 fason pou 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 Debian, 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è obligatwa yo, edite dosye prensipal konfigirasyon Nginx la (nginx.conf) jan sa a:

sudo mkdir /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;

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

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

Egzanp:

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 /usr/share/nginx/html/;
 index index.php index.html index.htm index.nginx-debian.html;

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

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_intercept_errors on;	
 }

# 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).

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 (example.com) pou teste si sèvè ou a ka jwenn. Felisitasyon, ou te kreye avèk siksè yon blòk sèvè Nginx ki pare PHP-FPM.


reklam


Tès PHP

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 /var/www/html/example.com/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 Debian 11 - Nginx MariaDB PHP

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

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 tandans. Koulye a, Nginx te depase Apache kòm lojisyèl an HTTP sèvè Web ki pi itilize byen configuré ak pèfòmans jere ka bay sèvè Web ou a yon avantaj pwisan sou lòt konfigirasyon.

Leave a Comment