Page cover

🌈Ubuntu 20.04 da Linux, Nginx, MySQL, PHP (LEMP stek) qanday o'rnatiladi

// Qo'llanma //

Kirish

LEMP dasturiy ta'minot to'plami PHPda yozilgan dinamik veb-sahifalar va veb-ilovalarga xizmat ko'rsatish uchun ishlatilishi mumkin bo'lgan dasturiy ta'minot guruhidir. Bu Nginx (" E ngine-X" kabi talaffuz qilinadi) veb-serverli L inux operatsion tizimini tavsiflovchi qisqartma . Backend ma'lumotlari M ySQL ma'lumotlar bazasida saqlanadi va dinamik ishlov berish P HP tomonidan amalga oshiriladi.

Ushbu qo'llanma Ubuntu 20.04 serveriga LEMP stekini qanday o'rnatishni ko'rsatadi. Ubuntu operatsion tizimi birinchi talabni bajaradi. Qolgan komponentlarni qanday qilib ishga tushirishni tasvirlab beramiz.

1-qadam - Nginx veb-serverini o'rnatish

Saytimizga tashrif buyuruvchilarga veb-sahifalarni ko'rsatish uchun biz Nginx, yuqori samarali veb-serverdan foydalanmoqchimiz. aptUshbu dasturni olish uchun paket menejeridan foydalanamiz .

Bu seans uchun birinchi marta foydalanayotganimiz sababli apt, serveringiz paketi indeksini yangilashdan boshlang. Shundan so'ng siz apt installNginx-ni o'rnatish uchun foydalanishingiz mumkin:

$ sudo apt update
$ sudo apt install nginx

So'ralganda, YNginx-ni o'rnatmoqchi ekanligingizni tasdiqlash uchun kiriting. O'rnatish tugallangach, Nginx veb-serveri faol bo'ladi va Ubuntu 20.04 serveringizda ishlaydi.

Agar sizda ufwxavfsizlik devori yoqilgan bo'lsa, bizning serverni sozlash bo'yicha dastlabki qo'llanmamizda tavsiya etilganidek, Nginx-ga ulanishga ruxsat berishingiz kerak bo'ladi. Nginx o'rnatishdan so'ng bir nechta turli UFW ilova profillarini ro'yxatdan o'tkazadi. Qaysi UFW profillari mavjudligini tekshirish uchun quyidagilarni bajaring:

$ sudo ufw app list

OutputAvailable applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

Sizga kerakli trafikka ruxsat beradigan eng cheklovchi profilni yoqish tavsiya etiladi. Ushbu qo'llanmada serveringiz uchun SSL-ni sozlamaganligingiz uchun portda oddiy HTTP trafigiga ruxsat berish kifoya 80.

Buni yozish orqali yoqing:

$ sudo ufw allow 'Nginx HTTP'

O'zgarishlarni quyidagi amallarni bajarish orqali tekshirishingiz mumkin:

$ sudo ufw status

Ushbu buyruqning chiqishi HTTP trafigiga ruxsat berilganligini ko'rsatadi:

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Yangi xavfsizlik devori qoidasi qoʻshilishi bilan siz serveringizning domen nomi yoki veb-brauzeringizdagi umumiy IP manziliga kirish orqali serverning ishlayotganligini tekshirishingiz mumkin.

Agar sizning serveringizda ko'rsatilgan domen nomingiz bo'lmasa va serveringizning umumiy IP manzilini bilmasangiz, uni quyidagi buyruqni ishga tushirish orqali topishingiz mumkin:

$ ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Bu bir nechta IP manzillarni chop etadi. Ularning har birini veb-brauzeringizda navbatma-navbat sinab ko'rishingiz mumkin.

Shu bilan bir qatorda, Internetdagi boshqa joylardan ko'rinib turganidek, qaysi IP-manzilga kirish mumkinligini tekshirishingiz mumkin:

$ curl -4 icanhazip.com

Veb-brauzeringizda olgan manzilni kiriting va u sizni Nginx-ning standart ochilish sahifasiga olib boradi:

http://server_domain_or_IP

Agar siz ushbu sahifani ko'rsangiz, bu sizning Nginx-ni muvaffaqiyatli o'rnatganingizni va veb-serveringiz uchun HTTP-trafikni yoqqaningizni anglatadi.

2-qadam - MySQL-ni o'rnatish

Endi veb-serveringiz ishlayotgan bo'lsa, saytingiz uchun ma'lumotlarni saqlash va boshqarish imkoniyatiga ega bo'lish uchun ma'lumotlar bazasi tizimini o'rnatishingiz kerak. MySQL - bu PHP muhitida ishlatiladigan mashhur ma'lumotlar bazasini boshqarish tizimi.

Shunga qaramay, aptushbu dasturni sotib olish va o'rnatish uchun foydalaning:

$ sudo apt install mysql-server

So'ralganda, yozish orqali o'rnatishni tasdiqlang Yva keyin ENTER.

O'rnatish tugagach, MySQL bilan oldindan o'rnatilgan xavfsizlik skriptini ishga tushirish tavsiya etiladi. Ushbu skript ba'zi xavfli standart sozlamalarni olib tashlaydi va ma'lumotlar bazasi tizimiga kirishni bloklaydi. Interaktiv skriptni ishga tushirish orqali boshlang:

$ sudo mysql_secure_installation

ni sozlashni xohlaysizmi, deb so'raydi VALIDATE PASSWORD PLUGIN.

Eslatma: Ushbu xususiyatni yoqish - bu qaror qabul qilishdir. Agar yoqilgan bo'lsa, belgilangan mezonlarga mos kelmaydigan parollar MySQL tomonidan xatolik bilan rad etiladi. Tasdiqlashni o'chirib qo'yish xavfsiz, lekin ma'lumotlar bazasi hisob ma'lumotlari uchun har doim kuchli, noyob parollardan foydalanishingiz kerak.

Yoqmasdan Ydavom etish uchun “Ha” yoki boshqa biror narsa deb javob bering.

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:

Agar “ha” deb javob bersangiz, sizdan parolni tekshirish darajasini tanlashingiz soʻraladi. Shuni yodda tutingki, agar siz 2eng kuchli darajaga kirsangiz, raqamlar, katta va kichik harflar va maxsus belgilardan iborat bo'lmagan yoki umumiy lug'at so'zlariga asoslangan har qanday parolni o'rnatishga urinishda xatoliklarga duch kelasiz.

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary              file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

ni o'rnatishni tanlaganingizdan qat'i nazar, VALIDATE PASSWORD PLUGINserveringiz sizdan MySQL ildiz foydalanuvchisi uchun parolni tanlash va tasdiqlashingizni so'raydi. Buni tizim ildizi bilan aralashtirib yubormaslik kerak . Ma'lumotlar bazasining ildiz foydalanuvchisi ma'lumotlar bazasi tizimiga nisbatan to'liq imtiyozlarga ega bo'lgan ma'muriy foydalanuvchi. MySQL ildiz foydalanuvchisi uchun standart autentifikatsiya usuli paroldan foydalanishga ruxsat bersa ham, parol o'rnatilgan bo'lsa ham, bu yerda qo'shimcha xavfsizlik chorasi sifatida kuchli parolni belgilashingiz kerak. Bu haqda birozdan keyin gaplashamiz.

Agar siz parolni tekshirishni yoqsangiz, siz kiritgan asosiy parol uchun parol kuchi ko'rsatiladi va serveringiz ushbu parol bilan davom etishni xohlaysizmi, deb so'raydi. Agar joriy parolingizdan mamnun bo'lsangiz, so'rovda Y"ha" deb kiriting:

Estimated strength of the password: 100 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

Qolgan savollar uchun har bir taklifda tugmachani bosing Yva ENTERbosing. Bu ba'zi anonim foydalanuvchilar va test ma'lumotlar bazasini o'chirib tashlaydi, masofaviy ildizga kirishni o'chiradi va MySQL siz kiritgan o'zgarishlarni darhol hurmat qilishi uchun ushbu yangi qoidalarni yuklaydi.

Tugatganingizdan so'ng, MySQL konsoliga kirish imkoningiz bor-yo'qligini tekshirib ko'ring:

$ sudo mysql

Bu MySQL serveriga ma'muriy ma'lumotlar bazasi foydalanuvchi ildizisudo sifatida ulanadi, bu buyruqni ishga tushirishda foydalanish natijasida paydo bo'ladi. Siz shunday chiqishni ko'rishingiz kerak:

OutputWelcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 22
Server version: 8.0.19-0ubuntu5 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

MySQL konsolidan chiqish uchun quyidagilarni kiriting:

mysql> exit

E'tibor bering, skriptni ishga tushirishda parolni belgilagan bo'lsangiz ham , root foydalanuvchisi sifatida ulanish uchun parol kiritishingiz shart emas edi . mysql_secure_installationBuning sababi, ma'muriy MySQL foydalanuvchisi uchun standart autentifikatsiya usuli unix_socketo'rniga password. Avvaliga bu xavfsizlik muammosidek tuyulishi mumkin bo'lsa-da, bu ma'lumotlar bazasi serverini yanada xavfsizroq qiladi, chunki MySQL-ning ildiz foydalanuvchisi sifatida tizimga kirishga ruxsat berilgan yagona foydalanuvchilar sudo imtiyozlariga ega bo'lgan tizim foydalanuvchilari konsoldan yoki dastur bilan ishlaydigan dastur orqali ulanadi. bir xil imtiyozlar. Amaliy ma'noda, bu sizning PHP ilovangizdan ulanish uchun ma'muriy ma'lumotlar bazasi ildiz foydalanuvchisidan foydalana olmaysiz. Ildiz uchun parol o'rnatishMySQL hisob qaydnomasi, agar standart autentifikatsiya usuli dan unix_socketga o'zgartirilgan bo'lsa, himoya vositasi sifatida ishlaydi password.

Xavfsizlikni oshirish uchun har bir ma'lumotlar bazasi uchun kamroq keng imtiyozlarga ega maxsus foydalanuvchi hisoblariga ega bo'lish yaxshiroqdir, ayniqsa siz serveringizda bir nechta ma'lumotlar bazalariga ega bo'lishni rejalashtirmoqchi bo'lsangiz.

Eslatma: Ushbu yozish vaqtida mahalliy MySQL PHP kutubxonasi MySQL 8 uchun standart autentifikatsiya usulini mysqlnd qo'llab-quvvatlamaydi caching_sha2_authentication . Shu sababli, MySQL 8 da PHP ilovalari uchun ma'lumotlar bazasi foydalanuvchilarini yaratishda siz ularning mavjudligiga ishonch hosil qilishingiz kerak. mysql_native_passwordo'rniga foydalanish uchun tuzilgan . Buni qanday qilishni 6-bosqichda ko'rsatamiz .

MySQL serveringiz endi o'rnatildi va himoyalandi. Keyinchalik, LEMP stekidagi yakuniy komponent bo'lgan PHP ni o'rnatamiz.

3-qadam - PHP o'rnatish

Sizda kontentingizga xizmat ko'rsatish uchun Nginx o'rnatilgan va ma'lumotlarni saqlash va boshqarish uchun MySQL o'rnatilgan. Endi siz veb-server uchun kodni qayta ishlash va dinamik tarkibni yaratish uchun PHP-ni o'rnatishingiz mumkin.

Apache har bir soʻrovda PHP tarjimonini joylashtirgan boʻlsa-da, Nginx PHP bilan ishlov berish va PHP tarjimonining oʻzi va veb-server oʻrtasida koʻprik vazifasini bajarish uchun tashqi dasturni talab qiladi. Bu ko'pchilik PHP-ga asoslangan veb-saytlarda umumiy ishlashni yaxshilash imkonini beradi, ammo bu qo'shimcha konfiguratsiyani talab qiladi. “PHP fastCGI jarayon menejeri” ni oʻrnatishingiz php-fpmva Nginx’ga PHP soʻrovlarini qayta ishlash uchun ushbu dasturiy taʼminotga yuborishini aytishingiz kerak. Bundan tashqari, sizga php-mysqlPHP-ning MySQL-ga asoslangan ma'lumotlar bazalari bilan bog'lanishiga imkon beruvchi PHP moduli kerak bo'ladi. Asosiy PHP paketlari avtomatik ravishda bog'liqlik sifatida o'rnatiladi.

Paketlarni o'rnatish uchun quyidagilarni php-fpmbajaring :php-mysql

$ sudo apt install php-fpm php-mysql

So'ralganda, kiriting Yva ENTERo'rnatishni tasdiqlang.

Endi siz PHP komponentlarini o'rnatdingiz. Keyin Nginx-ni ulardan foydalanish uchun sozlaysiz.

4-qadam — PHP protsessoridan foydalanish uchun Nginx-ni sozlash

Nginx veb-serveridan foydalanganda biz konfiguratsiya tafsilotlarini qamrab olish va bitta serverda bir nechta domenlarni joylashtirish uchun server bloklarini (Apache'dagi virtual xostlarga o'xshash) yaratishimiz mumkin. Ushbu qo'llanmada biz domen nomi sifatida your_domain dan foydalanamiz. DigitalOcean bilan domen nomini o'rnatish haqida ko'proq ma'lumot olish uchun DigitalOcean DNS ga kirishimizga qarang .

Ubuntu 20.04 da Nginx sukut bo'yicha yoqilgan bitta server blokiga ega va katalogdan hujjatlarga xizmat ko'rsatish uchun sozlangan /var/www/html. Bu bitta sayt uchun yaxshi ishlayotgan bo'lsa-da, agar siz bir nechta saytlarni joylashtirsangiz, uni boshqarish qiyin bo'lishi mumkin. ni oʻzgartirish oʻrniga, agar mijoz soʻrovi boshqa saytlarga toʻgʻri kelmasa, xizmat koʻrsatish uchun birlamchi katalog sifatida oʻrnida qoldirib , your_domain veb-sayti uchun /var/www/htmlkatalog tuzilmasini yaratamiz ./var/www/var/www/html

your_domain uchun ildiz veb-katalogini quyidagicha yarating:

$ sudo mkdir /var/www/your_domain

Keyin, joriy tizim foydalanuvchisiga havola qiladigan $USER muhit oʻzgaruvchisi bilan katalog egaligini tayinlang:

$ sudo chown -R $USER:$USER /var/www/your_domain

sites-availableKeyin, afzal ko'rgan buyruq qatori muharriridan foydalanib, Nginx katalogida yangi konfiguratsiya faylini oching . Bu erda biz foydalanamiz nano:

$ sudo nano /etc/nginx/sites-available/your_domain

Bu yangi bo'sh faylni yaratadi. Quyidagi yalang suyak konfiguratsiyasiga joylashtiring:

server {
    listen 80;
    server_name your_domain www.your_domain;
    root /var/www/your_domain;

    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
     }

    location ~ /\.ht {
        deny all;
    }

}

Ushbu ko'rsatmalar va joylashuv bloklarining har biri nima qiladi:

  • listen— Nginx qaysi portni tinglashini belgilaydi. Bunday holda, u 80HTTP uchun standart port bo'lgan portni tinglaydi.

  • root— Ushbu veb-sayt tomonidan taqdim etilgan fayllar saqlanadigan hujjat ildizini belgilaydi.

  • index— Nginx ushbu veb-sayt uchun indeks fayllariga qaysi tartibda ustunlik berishini belgilaydi. PHP ilovalarida texnik xizmat ko'rsatish sahifasini tezda o'rnatishga imkon berish uchun fayllardan index.htmlko'ra ustunlikka ega bo'lgan fayllarni ro'yxatga olish odatiy holdir . index.phpSiz ushbu sozlamalarni ilova ehtiyojlaringizga yaxshiroq moslashtirish uchun sozlashingiz mumkin.

  • server_name— Ushbu server bloki qaysi domen nomlari va/yoki IP manzillari uchun javob berishi kerakligini belgilaydi. Ushbu ko'rsatmani serveringizning domen nomi yoki umumiy IP manziliga yo'naltiring.

  • location /— Birinchi joylashuv bloki try_filesdirektivani o'z ichiga oladi, u URI so'roviga mos keladigan fayllar yoki kataloglar mavjudligini tekshiradi. Agar Nginx tegishli manbani topa olmasa, u 404 xatosini qaytaradi.

  • location ~ \.php$— Bu joylashuv bloki Nginx-ni fastcgi-php.confkonfiguratsiya fayliga va php7.4-fpm.sockqaysi rozetka bilan bog'langanligini e'lon qiluvchi faylga yo'naltirish orqali haqiqiy PHP ishlovini boshqaradi php-fpm.

  • location ~ /\.ht— Oxirgi joylashuv bloki .htaccessNginx qayta ishlamaydigan fayllar bilan bog'liq. deny allDirektivni qo'shish orqali , agar biron bir .htaccessfayl hujjat ildiziga yo'l topsa, ular tashrif buyuruvchilarga taqdim etilmaydi.

Tahrirlash tugagach, faylni saqlang va yoping. dan foydalanayotgan bo'lsangiz nano, buni tasdiqlash uchun terib CTRL+X, keyin yva keyin qilishingiz mumkin ENTER.

sites-enabledNginx katalogidan konfiguratsiya fayliga ulanish orqali konfiguratsiyangizni faollashtiring :

$ sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Keyin, standart konfiguratsiya faylini /sites-enabled/katalogdan ajratib oling:

$ sudo unlink /etc/nginx/sites-enabled/default

Eslatma : Agar siz standart konfiguratsiyani tiklashingiz kerak bo'lsa, buni ramziy havolani qayta yaratish orqali qilishingiz mumkin, masalan:

$ sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/

Bu Nginx-ga keyingi safar qayta yuklanganda konfiguratsiyadan foydalanishni aytadi. Siz konfiguratsiyani sintaktik xatolar uchun tekshirishingiz mumkin:

$ sudo nginx -t

Agar biron-bir xatolik haqida xabar berilsa, davom etishdan oldin uning mazmunini ko'rib chiqish uchun konfiguratsiya faylingizga qayting.

Tayyor bo'lgach, o'zgarishlarni qo'llash uchun Nginx-ni qayta yuklang:

$ sudo systemctl reload nginx

Yangi veb-saytingiz hozir faol, lekin veb-ildiz hali ham bo'sh. Yangi server blokingiz kutilganidek ishlashini tekshirishimiz uchun oʻsha joyda fayl yarating :/var/www/your_domainindex.html

$ nano /var/www/your_domain/index.html

Ushbu faylga quyidagi tarkibni qo'shing:

<html>
  <head>
    <title>your_domain website</title>
  </head>
  <body>
    <h1>Hello World!</h1>

    <p>This is the landing page of <strong>your_domain</strong>.</p>
  </body>
</html>

Endi brauzeringizga o'ting va server_nameserver blokining konfiguratsiya faylidagi direktivada ko'rsatilganidek, serveringizning domen nomi yoki IP manziliga kiring:

http://server_domain_or_IP

Siz shunday sahifani ko'rasiz:

Agar siz ushbu sahifani ko'rsangiz, bu sizning Nginx server blokingiz kutilganidek ishlayotganini anglatadi.

Siz uni almashtirish uchun faylni sozlamaguningizcha ushbu faylni ilovangiz uchun vaqtinchalik ochilish sahifasi sifatida qoldirishingiz mumkin index.php. Buni qilganingizdan so'ng, index.htmlfaylni hujjat ildizidan olib tashlashni yoki nomini o'zgartirishni unutmang, chunki u index.phpsukut bo'yicha fayldan ustun bo'ladi.

LEMP stekingiz endi toʻliq sozlangan. .phpKeyingi bosqichda biz Nginx yangi sozlangan veb-saytingizdagi fayllar bilan ishlashga qodirligini tekshirish uchun PHP skriptini yaratamiz .

5-qadam - Nginx bilan PHPni sinab ko'rish

Sizning LEMP stekingiz endi to'liq sozlangan bo'lishi kerak. .phpNginx fayllarni PHP protsessoringizga to'g'ri topshirishi mumkinligini tekshirish uchun uni sinab ko'rishingiz mumkin .

Buni hujjat ildizida test PHP faylini yaratish orqali qilishingiz mumkin. info.phpMatn muharririda hujjat ildizida deb nomlangan yangi faylni oching :

$ nano /var/www/your_domain/info.php

Quyidagi qatorlarni yangi faylga kiriting yoki joylashtiring. Bu sizning serveringiz haqidagi ma'lumotlarni qaytaradigan haqiqiy PHP kodi:

<?php
phpinfo();

Tugatganingizdan so'ng, faylni saqlang va yoping va tasdiqlash uchun CTRL+ Xva keyin yva ENTERtasdiqlang.

Endi siz Nginx konfiguratsiya faylida oʻrnatgan domen nomi yoki umumiy IP manziliga tashrif buyurib, veb-brauzeringizdagi ushbu sahifaga kirishingiz mumkin, keyin /info.php:

http://server_domain_or_IP/info.php

Siz serveringiz haqida batafsil ma'lumotni o'z ichiga olgan veb-sahifani ko'rasiz:

Ushbu sahifa orqali PHP serveringiz haqidagi tegishli ma'lumotlarni tekshirgandan so'ng, siz yaratgan faylni o'chirib tashlaganingiz ma'qul, chunki unda PHP muhiti va Ubuntu serveringiz haqida nozik ma'lumotlar mavjud. Siz rmushbu faylni o'chirish uchun foydalanishingiz mumkin:

$ sudo rm /var/www/your_domain/info.php

Agar kerak bo'lsa, bu faylni har doim qayta tiklashingiz mumkin.

6-qadam - PHP dan ma'lumotlar bazasi ulanishini sinab ko'rish (ixtiyoriy)

Agar siz PHP MySQL-ga ulanishi va ma'lumotlar bazasi so'rovlarini bajara olishini sinab ko'rmoqchi bo'lsangiz, PHP skriptidan so'nggi ma'lumotlar va uning mazmuni uchun so'rovlar bilan test jadvalini yaratishingiz mumkin. Buni amalga oshirishdan oldin test ma'lumotlar bazasini va unga kirish uchun to'g'ri sozlangan yangi MySQL foydalanuvchisini yaratishimiz kerak.

Ushbu yozish vaqtida mahalliy MySQL PHP kutubxonasi MySQL 8 uchun standart autentifikatsiya usulini mysqlnd qo'llab-quvvatlamaydi . MySQL ma'lumotlar bazasiga ulanish imkoniyatiga ega bo'lish uchun autentifikatsiya usuli bilan yangi foydalanuvchi yaratishimiz kerak. PHP.caching_sha2_authenticationmysql_native_password

Biz example_database nomli ma'lumotlar bazasini va example_user nomli foydalanuvchini yaratamiz , lekin siz bu nomlarni turli qiymatlar bilan almashtirishingiz mumkin.

Birinchidan, ildiz hisob qaydnomasi yordamida MySQL konsoliga ulaning :

$ sudo mysql

Yangi ma'lumotlar bazasini yaratish uchun MySQL konsolingizdan quyidagi buyruqni bajaring:

mysql> CREATE DATABASE example_database;

Endi siz yangi foydalanuvchi yaratishingiz va ularga o'zingiz yaratgan maxsus ma'lumotlar bazasida to'liq imtiyozlar berishingiz mumkin.

Quyidagi buyruq standart autentifikatsiya usuli sifatida example_userismli yangi foydalanuvchi yaratadi . mysql_native_passwordBiz ushbu foydalanuvchi parolini sifatida belgilayapmiz password, lekin siz bu qiymatni oʻzingiz tanlagan xavfsiz parol bilan almashtirishingiz kerak.

mysql> CREATE USER 'example_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

example_databaseEndi biz ushbu foydalanuvchiga ma'lumotlar bazasiga ruxsat berishimiz kerak :

mysql> GRANT ALL ON example_database.* TO 'example_user'@'%';

Bu example_user foydalanuvchisiga example_ma'lumotlar bazasi ma'lumotlar bazasiga nisbatan to'liq imtiyozlar beradi , shu bilan birga bu foydalanuvchi serveringizda boshqa ma'lumotlar bazalarini yaratish yoki o'zgartirishga yo'l qo'ymaydi.

Endi MySQL qobig'idan chiqing:

mysql> exit

Yangi foydalanuvchi tegishli ruxsatlarga ega yoki yoʻqligini MySQL konsoliga qayta kirish orqali tekshirishingiz mumkin, bu safar maxsus foydalanuvchi hisob maʼlumotlari yordamida:

$ mysql -u example_user -p

Ushbu buyruqdagi bayroqqa e'tibor bering , u sizdan example_user-p foydalanuvchisini yaratishda ishlatiladigan parolni so'raydi . MySQL konsoliga kirganingizdan so'ng, example_ma'lumotlar bazasi ma'lumotlar bazasiga kirish huquqiga ega ekanligingizni tasdiqlang:

mysql> SHOW DATABASES;

Bu sizga quyidagi chiqishni beradi:

Output+--------------------+
| Database           |
+--------------------+
| example_database   |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)lsql

Keyinchalik, biz todo_list nomli test jadvalini yaratamiz . MySQL konsolidan quyidagi bayonotni ishga tushiring:

mysql> CREATE TABLE example_database.todo_list (
mysql>        item_id INT AUTO_INCREMENT,
mysql>        content VARCHAR(255),
mysql>        PRIMARY KEY(item_id)
mysql> );

Sinov jadvaliga bir necha qator tarkibni kiriting. Turli qiymatlardan foydalangan holda keyingi buyruqni bir necha marta takrorlashni xohlashingiz mumkin:

mysql> INSERT INTO example_database.todo_list (content) VALUES ("My first important item");

Ma'lumotlar jadvalingizga muvaffaqiyatli saqlanganligini tasdiqlash uchun quyidagilarni bajaring:

mysql> SELECT * FROM example_database.todo_list;

Siz quyidagi chiqishni ko'rasiz:

Output+---------+--------------------------+
| item_id | content                  |sq
+---------+--------------------------+
|       1 | My first important item  |
|       2 | My second important item |
|       3 | My third important item  |
|       4 | and this one more thing  |
+---------+--------------------------+
4 rows in set (0.000 sec)

Sinov jadvalida to'g'ri ma'lumotlar mavjudligini tasdiqlaganingizdan so'ng, MySQL konsolidan chiqishingiz mumkin:

mysql> exit

Endi siz MySQL-ga ulanadigan PHP skriptini yaratishingiz va tarkibingizga so'rov yuborishingiz mumkin. O'zingiz yoqtirgan muharrir yordamida maxsus veb-ildiz katalogingizda yangi PHP fayl yarating. Buning uchun biz foydalanamiz nano:

$ nano /var/www/your_domain/todo_list.php

Quyidagi PHP skripti MySQL ma'lumotlar bazasiga ulanadi va natijalar ro'yxatda ko'rsatiladigan todo_list jadvalining mazmuni uchun so'rovlar. Agar ma'lumotlar bazasiga ulanishda muammo bo'lsa, u istisno qiladi. todo_list.phpUshbu tarkibni skriptingizga nusxalang :

<?php
$user = "example_user";
$password = "password";
$database = "example_database";
$table = "todo_list";

try {
  $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
  echo "<h2>TODO</h2><ol>"; 
  foreach($db->query("SELECT content FROM $table") as $row) {
    echo "<li>" . $row['content'] . "</li>";
  }
  echo "</ol>";
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

Tahrirlash tugagach, faylni saqlang va yoping.

Endi veb-brauzeringizdagi ushbu sahifaga veb-saytingiz uchun sozlangan domen nomi yoki umumiy IP-manzilga tashrif buyurib, undan keyin kirishingiz mumkin /todo_list.php:

http://server_domain_or_IP/todo_list.php

Siz test jadvalingizga kiritgan tarkibni ko'rsatadigan shunday sahifani ko'rishingiz kerak:

Bu sizning PHP muhitingiz MySQL serveringizga ulanish va o'zaro ishlashga tayyorligini bildiradi.

Xulosa

Ushbu qo'llanmada biz Nginx-ni veb-server sifatida va MySQL-ni ma'lumotlar bazasi tizimi sifatida ishlatib, tashrif buyuruvchilaringizga PHP veb-saytlari va ilovalariga xizmat ko'rsatish uchun moslashuvchan poydevor yaratdik.

Last updated

Was this helpful?