نحوه نصب Linux، Nginx، MySQL، PHP (دسته LEMP) در اوبونتو 22.04


دسته نرم افزار LEMP گروهی از نرم افزارها است که می تواند برای ارائه صفحات وب پویا و برنامه های کاربردی وب نوشته شده به زبان PHP استفاده شود. این عبارت مخفف یک سیستم عامل لینوکس را با یک وب سرور Nginx (تلفظ "Engine-X") توصیف می کند. داده های Backend در پایگاه داده MySQL ذخیره می شوند و پردازش پویا توسط PHP انجام می شود.

این راهنما نحوه نصب دسته LEMP را در سرور اوبونتو 22.04 نشان می دهد. سیستم عامل اوبونتو از بخش لینوکس دسته نگهداری می کند. نحوه راه اندازی و راه اندازی بقیه اجزا را شرح خواهیم داد.

پیش نیازها

برای تکمیل این آموزش، شما نیاز به دسترسی به یک سرور اوبونتو 22.04 به عنوان یک کاربر sudo معمولی و غیر ریشه ای و یک فایروال فعال بروی سرور خود دارید. برای تنظیم اینها، می توانید راهنمای اولیه راه اندازی سرور ما برای اوبونتو 22.04 را دنبال کنید.

مرحله 1 – نصب وب سرور Nginx

برای نمایش صفحات وب برای بازدیدکنندگان سایت،قرار است از Nginx، یک وب سرور با کارایی بسیار بالا استفاده کنید. برای دریافت این نرم افزار از مدیر بسته APT استفاده خواهید کرد.

از آنجایی که این اولین بار است که از apt برای این جلسه استفاده می کنید، با به روز رسانی فهرست بسته سرور خود شروع کنید:

 

sudo apt update

 

پس از آن، apt install را برای نصب Nginx اجرا کنید:

 

sudo apt install nginx

 

وقتی از شما خواسته شد، Y و ENTER را فشار دهید تا تأیید کنید که می خواهید Nginx را نصب کنید. پس از اتمام نصب، وب سرور Nginx فعال و در سرور اوبونتو 22.04 شما در حالت اجرا شده خواهد بود.

اگر فایروال ufw را فعال کرده اید، همانطور که در راهنمای اولیه راه اندازی سرور ما توصیه شده است، باید به Nginx اجازه اتصال دهید. Nginx پس از نصب، چند پروفایل مختلف برنامه UFW را ثبت می کند. برای بررسی اینکه کدام پروفایل های UFW در دسترس هستند، دستور زیر را اجرا کنید:

 

sudo ufw app list

 

Output
Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

 

توصیه می شود محدودترین نمایه ای را فعال کنید که همچنان به ترافیک مورد نیاز شما اجازه دهد. از آنجایی که در این راهنما SSL را برای سرور خود پیکربندی نکرده اید، فقط باید به ترافیک HTTP معمولی در پورت 80 اجازه دهید.

این فرایند را با اجرای موارد زیر فعال کنید:

 

sudo ufw allow 'Nginx HTTP'

 

با بررسی وضعیت می توانید تغییرات را تأیید کنید:

 

sudo ufw status

 

این خروجی نشان می دهد که ترافیک HTTP اکنون برای سرور شما مجاز است:

 

Output
Status: active

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

 

با اضافه شدن قانون جدید فایروال، می توانید با دسترسی به نام دامنه سرور یا آدرس IP عمومی در مرورگر وب خود، راه اندازی و اجرای سرور را بررسی کنید.

اگر نام دامنه ای به سمت سرور خود ندارید و آدرس IP عمومی سرور خود را نمی دانید، می توانید با اجرای یکی از دستورات زیر آن را پیدا کنید:

 

ip addr show

 

hostname -I

 

با این کار چند آدرس IP چاپ می شود. می توانید هر یک از آنها را به نوبه خود در مرورگر وب خود امتحان کنید.

به عنوان یک جایگزین، می توانید بررسی کنید که کدام آدرس IP در دسترس است، همانطور که از مکان های دیگر در اینترنت مشاهده می شود:

 

curl -4 icanhazip.com

 

آدرسی را که دریافت می کنید در مرورگر وب خود بنویسید که شما را به صفحه لندینگ پیش فرض Nginx می برد:

 

http://server_domain_or_IP
Nginx default page

اگر این صفحه را مشاهده کردید، به این معنی است که Nginx را با موفقیت نصب و ترافیک HTTP را برای وب سرور خود فعال کرده اید.

مرحله 2 - نصب MySQL

اکنون که یک وب سرور در حال اجرا دارید، باید سیستم پایگاه داده را برای ذخیره و مدیریت داده ها برای سایت خود نصب کنید. MySQL یک سیستم مدیریت پایگاه داده محبوب است که در محیط های PHP استفاده می شود.

مجدداً از apt برای تهیه و نصب این نرم افزار استفاده کنید:

 

sudo apt install mysql-server

 

هنگامی که از شما خواسته شد، نصب را با فشار دادن Y و سپس ENTER تأیید کنید.

هنگامی که نصب به پایان رسید، توصیه می شود یک اسکریپت امنیتی که از قبل با MySQL نصب شده است را اجرا کنید. این اسکریپت برخی از تنظیمات پیش فرض ناامن را حذف می کند و دسترسی به سیستم پایگاه داده شما را قفل می کند. اسکریپت تعاملی را با اجرای دستور زیر شروع کنید:

 

sudo mysql_secure_installation

 

از شما سوالی پرسیده می شود که آیا می خواهید VALIDATE PASSWORD PLUGIN را پیکربندی کنید.

توجه: فعال کردن این ویژگی چیزی شبیه به قضاوت است. در صورت فعال بودن، پسوردهایی که با معیارهای مشخص شده مطابقت ندارند توسط MySQL با خطا رد می شوند. غیرفعال کردن اعتبارسنجی بی خطر است، اما همیشه باید از رمزهای عبور قوی و منحصر به فرد برای اعتبار پایگاه داده استفاده کنید.

به Y برای بله یا هر چیز دیگری برای ادامه بدون فعال کردن پاسخ دهید:

 

Output
VALIDATE PASSWORD COMPONENT 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 component?

Press y|Y for Yes, any other key for No: 

 

اگر پاسخ «بله» را بدهید، از شما خواسته می‌شود سطح اعتبارسنجی رمز عبور را انتخاب کنید. به خاطر داشته باشید که اگر 2 را برای قوی ترین سطح وارد کنید، هنگام تلاش برای تنظیم رمز عبوری که حاوی اعداد، حروف بزرگ و کوچک و کاراکترهای خاص نباشد، خطاهایی دریافت خواهید کرد:

 

Output
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

 

صرف نظر از اینکه آیا شما انتخاب کرده اید که VALIDATE PASSWORD PLUGIN را تنظیم کنید، سرور شما از شما می خواهد که یک رمز عبور برای کاربر ریشه MySQL انتخاب و تأیید کنید. این را نباید با ریشه سیستم اشتباه گرفت. کاربر ریشه پایگاه داده یک کاربر اداری با امتیازات کامل بر روی سیستم پایگاه داده است. حتی اگر روش احراز هویت پیش‌فرض برای کاربر ریشه MySQL استفاده از رمز عبور را انجام نمی‌دهد، حتی زمانی که یک رمز عبور تنظیم شده است، باید یک رمز عبور قوی را در اینجا به عنوان یک اقدام ایمنی اضافی تعریف کنید. ما در این مورد بعداصحبت خواهیم کرد.

اگر تأیید رمز عبور را فعال کرده باشید، قدرت رمز عبور رمز عبور ریشه ای که وارد کرده اید نشان داده می شود و سرور شما از شما می پرسد که آیا می خواهید با آن رمز عبور ادامه دهید یا خیر. اگر از رمز عبور فعلی خود راضی هستید، Y را برای "بله" در اعلان فشار دهید:

 

Output
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

 

برای بقیه سوالات، Y را فشار دهید و در هر اعلان کلید ENTER را فشار دهید. با این کار برخی از کاربران ناشناس و پایگاه داده آزمایشی حذف می شوند، ورودهای ریشه از راه دور غیرفعال می شود و این قوانین جدید بارگیری می شود تا MySQL بلافاصله به تغییراتی که ایجاد کرده اید احترام بگذارد.

وقتی کارتان تمام شد، تست کنید که آیا می‌توانید به کنسول MySQL وارد شوید:

 

sudo mysql

 

این کار به سرور MySQL به عنوان کاربر روت پایگاه داده مدیریتی متصل می شود که با استفاده از sudo هنگام اجرای این دستور استنباط می شود. شما باید خروجی زیر را دریافت کنید:

 

Output
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 10
Server version: 8.0.28-0ubuntu4 (Ubuntu)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

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 دستور زیر را بنویسید:

 

exit

 

توجه داشته باشید که برای اتصال به عنوان کاربر اصلی نیازی به ارائه رمز عبور ندارید، حتی اگر هنگام اجرای اسکریپت mysql_secure_installation رمز عبور را تعریف کرده باشید. این به این دلیل است که وقتی روی اوبونتو نصب می‌شود، روش احراز هویت پیش‌فرض برای کاربر مدیریت MySQL auth_socket است، نه با روشی که از رمز عبور استفاده می‌کند. این ممکن است در ابتدا یک نگرانی امنیتی به نظر برسد، اما سرور پایگاه داده را ایمن‌تر می‌کند زیرا تنها کاربرانی که مجاز به ورود به عنوان کاربر روت MySQL، کاربران سیستمی هستند که دارای امتیازات sudo هستند که از کنسول یا از طریق برنامه‌ای که با همان برنامه اجرا می‌شود متصل می‌شوند. امتیازات از نظر عملی، این بدان معنی است که شما نمی توانید از کاربر ریشه پایگاه داده مدیریتی برای اتصال از برنامه PHP خود استفاده کنید.

برای افزایش امنیت، بهتر است حساب‌های کاربری اختصاصی با امتیازات کمتر گسترده برای هر پایگاه داده تنظیم شده باشد، به خصوص اگر قصد دارید چندین پایگاه داده روی سرور خود میزبانی کنید.

 

توجه: این نکته مهم را در نظر بگرید که برخی از نسخه‌های قدیمی‌تر MySQLPHP کتابخانه بومی mysqlnd از caching_sha2_authentication، روش احراز هویت پیش‌فرض برای کاربران ایجاد شده MySQL 8 پشتیبانی نمی‌کنند. به همین دلیل، هنگام ایجاد کاربران پایگاه داده برای برنامه‌های PHP در MySQL 8، ممکن است لازم باشد مطمئن شوید که آنها برای استفاده از mysql_native_password به جای آن پیکربندی شده است. نحوه انجام این کار را در مرحله 6 نشان خواهیم داد.

 

سرور MySQL شما اکنون نصب و ایمن شده است. در مرحله بعد، PHP، کامپوننت نهایی در دسته LEMP را نصب خواهید کرد.

مرحله 3 – نصب PHP

شما Nginx را برای ارائه محتوای خود و MySQL را برای ذخیره و مدیریت داده های خود نصب کرده اید. اکنون می توانید PHP را برای پردازش کد و تولید محتوای پویا برای وب سرور نصب کنید.

در حالی که Apache مفسر PHP را در هر درخواست تعبیه می کند، Nginx به یک برنامه خارجی نیاز دارد تا پردازش PHP را مدیریت کند و به عنوان پلی بین خود مفسر PHP و وب سرور عمل کند. این امکان عملکرد کلی بهتر را در اکثر وب سایت های مبتنی بر PHP فراهم می کند، اما به پیکربندی اضافی نیاز دارد. شما باید php8.1-fpm را نصب کنید که مخفف "PHP fastCGI process manager" است و از نسخه فعلی PHP (در زمان نوشتن) استفاده می کند تا به Nginx بگویید درخواست های PHP را برای پردازش به این نرم افزار ارسال کند. علاوه بر این، شما به php-mysql نیاز دارید، یک ماژول PHP که به PHP اجازه می دهد با پایگاه های داده مبتنی بر MySQL ارتباط برقرار کند. بسته های اصلی PHP به طور خودکار به عنوان وابستگی نصب می شوند.

برای نصب بسته های php8.1-fpm و php-mysql، اجرا کنید:

 

sudo apt install php8.1-fpm php-mysql

 

وقتی از شما خواسته شد، Y و ENTER را فشار دهید تا نصب تایید شود.

اکنون اجزای PHP خود را نصب کرده اید. در مرحله بعد، Nginx را برای استفاده از آنها پیکربندی خواهید کرد.

مرحله 4 - پیکربندی Nginx برای استفاده از پردازنده PHP

هنگام استفاده از وب سرور Nginx، می‌توانیم بلوک‌های سرور (مشابه میزبان‌های مجازی در آپاچی) ایجاد کنیم تا جزئیات پیکربندی را محصور کنیم و بیش از یک دامنه را روی یک سرور واحد میزبانی کنیم. در این راهنما، ما از your_domain به عنوان یک نام دامنه استفاده خواهیم کرد.

در اوبونتو 22.04، Nginx دارای یک بلوک سرور است که به طور پیش‌فرض فعال است و به گونه‌ای پیکربندی شده است که اسناد را خارج از یک فهرست در /var/www/html ارائه دهد. در حالی که این برای فقط یک سایت خوب کار می کند، اگر چندین سایت را میزبانی کنید، مدیریت آن ممکن است دشوار شود. به جای تغییر /var/www/html، یک ساختار دایرکتوری در /var/www برای وب‌سایت your_domain ایجاد می‌کنیم و در صورت عدم درخواست کلاینت، /var/www/html را به عنوان دایرکتوری پیش‌فرض باقی می‌گذاریم تا ارائه شود. با هر سایت دیگری مطابقت دهید

دایرکتوری وب ریشه برای your_domain به صورت زیر ایجاد کنید:

 

sudo mkdir /var/www/your_domain

 

سپس، مالکیت دایرکتوری را با متغیر محیطی $USER اختصاص دهید، که به کاربر فعلی سیستم شما ارجاع خواهد داد:

 

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

 

سپس، با استفاده از ویرایشگر خط فرمان دلخواه خود، یک فایل پیکربندی جدید را در دایرکتوری sites-available Nginx باز کنید. در اینجا از نانو استفاده خواهیم کرد:

 

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

 

با این کار یک فایل خالی جدید ایجاد می شود. پیکربندی خام زیر را وارد کنید:

 

/etc/nginx/sites-available/your_domain

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/php8.1-fpm.sock;
     }

    location ~ /.ht {
        deny all;
    }

}

 

در اینجا هر یک از این دستورالعمل ها و بلوک های مکان انجام می دهند:

  • listen — تعریف می کند که Nginx به چه پورتی گوش دهد. در این صورت، در پورت 80، پورت پیش فرض HTTP، گوش می دهد.
  • root — ریشه سند را تعیین می کند که در آن فایل های ارائه شده توسط این وب سایت ذخیره می شوند.
  • index — تعیین می کند که Nginx به چه ترتیبی فایل های فهرست را برای این وب سایت اولویت بندی می کند. این یک روش معمول است که فایل‌های index.html را با اولویت بالاتر از فایل‌های index.php فهرست کنید تا امکان تنظیم سریع صفحه لندینگ برای تعمیر و نگهداری در برنامه‌های PHP فراهم شود. شما می توانید این تنظیمات را به گونه ای تنظیم کنید که بیشتر با نیازهای برنامه شما مطابقت داشته باشد.
  • server_name — تعیین می کند که این بلوک سرور باید به کدام نام های دامنه و/یا آدرس های IP پاسخ دهد. این دستورالعمل را به نام دامنه یا آدرس IP عمومی سرور خود هدایت کنید.
  • location / — اولین بلوک مکان شامل یک دستورالعمل try_files است که وجود فایل ها یا دایرکتوری هایی را که با درخواست URL مطابقت دارند بررسی می کند. اگر Nginx نتواند منبع مناسب را پیدا کند، خطای 404 را برمی‌گرداند.
  • location ~ .php$ — این بلوک مکان، پردازش واقعی PHP را با اشاره Nginx به فایل پیکربندی fastcgi-php.conf و فایل php8.1-fpm.sock را انجام می دهد، که مشخص می کند چه سوکتی با php8.1-fpm مرتبط است.
  • location ~ /.ht — آخرین بلوک مکان با فایل‌های .htaccess سروکار دارد که Nginx آن‌ها را پردازش نمی‌کند. با افزودن دستور deny all، اگر هر فایل .htaccess به ریشه سند راه پیدا کند، به بازدیدکنندگان ارائه نخواهد شد.

پس از اتمام ویرایش، فایل را ذخیره کرده و ببندید. اگر از nano استفاده می کنید، می توانید این کار را با فشار دادن CTRL+X و سپس Y و ENTER برای تایید انجام دهید.

پیکربندی خود را با پیوند دادن به فایل پیکربندی از دایرکتوری sites-enabled Nginx فعال کنید:

 

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

 

سپس، پیوند فایل تنظیمات پیش فرض را از فهرست /sites-enabled/ جدا کنید:

 

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

 

توجه: اگر زمانی نیاز به بازیابی تنظیمات پیش فرض داشتید، می توانید این کار را با ایجاد مجدد پیوند نمادین مانند زیر انجام دهید:

 

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

 

این به Nginx می‌گوید که دفعه بعد که بارگذاری مجدد می‌شود از این پیکربندی استفاده کند. با اجرای موارد زیر می توانید پیکربندی خود را برای خطاهای نحوی آزمایش کنید:

 

sudo nginx -t

 

اگر هر گونه خطایی گزارش شد، به فایل پیکربندی خود برگردید تا قبل از ادامه، محتوای آن را بررسی کنید.

هنگامی که آماده شدید، Nginx را دوباره بارگیری کنید تا تغییرات اعمال شود:

 

sudo systemctl reload nginx

 

وب سایت جدید شما اکنون فعال است، اما ریشه وب /var/www/your_domain هنوز خالی است. یک فایل index.html در آن مکان ایجاد کنید تا بتوانید تست کنید که بلوک سرور جدید شما همانطور که انتظار می رود کار می کند یا نه:

 

nano /var/www/your_domain/index.html

 

مطالب زیر را در این فایل قرار دهید:

/var/www/your_domain/index.html

<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>

 

اکنون به مرورگر خود بروید و به نام دامنه یا آدرس IP سرور خود، همانطور که در دستورالعمل server_name در فایل پیکربندی بلوک سرور فهرست شده است، دسترسی پیدا کنید:

 

http://server_domain_or_IP

 

صفحه ای مانند زیر دریافت خواهید کرد:

اگر این صفحه را دریافت کردید، به این معنی است که بلوک سرور Nginx شما همانطور که انتظار می رود کار می کند.

شما می توانید این فایل را به عنوان یک صفحه فرود موقت برای برنامه خود بگذارید تا زمانی که یک فایل index.php برای جایگزینی آن تنظیم کنید. پس از انجام این کار، به یاد داشته باشید که فایل index.html را از ریشه سند خود حذف یا تغییر نام دهید، زیرا به طور پیش فرض بر فایل index.php ارجحیت دارد.

دسته LEMP شما اکنون به طور کامل پیکربندی شده است. در مرحله بعد، یک اسکریپت PHP ایجاد می‌کنید تا آزمایش کنید که Nginx در واقع قادر به مدیریت فایل‌های .php در وب‌سایت تازه پیکربندی شده شما است.

مرحله 5 - آزمایش PHP با Nginx

دسته LEMP شما اکنون باید به طور کامل تنظیم شود. می‌توانید آن را آزمایش کنید تا تأیید کنید که Nginx می‌تواند به درستی فایل‌های .PHP را به پردازنده PHP شما تحویل دهد.

می توانید این کار را با ایجاد یک فایل PHP آزمایشی در سند ریشه خود انجام دهید. یک فایل جدید به نام info.php را در سند ریشه خود در ویرایشگر متن دلخواه خود باز کنید:

 

nano /var/www/your_domain/info.php

 

خطوط زیر را به فایل جدید اضافه کنید. این یک کد معتبر PHP است که اطلاعات مربوط به سرور شما را برمی گرداند:

/var/www/your_domain/info.php

<?php
phpinfo();

 

وقتی کارتان تمام شد، فایل را ذخیره و ببندید.

اکنون می توانید با مراجعه به نام دامنه یا آدرس IP عمومی که در فایل پیکربندی Nginx خود تنظیم کرده اید و به دنبال آن با مراجعه به /info.php در مرورگر وب خود دسترسی پیدا کنید:

 

http://server_domain_or_IP/info.php

 

شما یک صفحه وب حاوی اطلاعات دقیق در مورد سرور خود دریافت خواهید کرد:

پس از بررسی اطلاعات مربوط به سرور PHP خود از طریق آن صفحه، بهتر است فایلی را که ایجاد کرده اید حذف کنید زیرا حاوی اطلاعات حساسی در مورد محیط PHP و سرور اوبونتو شما است. برای حذف آن فایل می توانید از rm استفاده کنید:

 

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

 

اگر بعداً به آن نیاز داشتید، همیشه می‌توانید این فایل را دوباره ایجاد کنید.

مرحله 6 - آزمایش اتصال پایگاه داده از PHP (اختیاری)

اگر می خواهید آزمایش کنید که آیا PHP قادر به اتصال به MySQL و اجرای جستجو های پایگاه داده است یا خیر، می توانید یک جدول آزمایشی با داده های ساختگی و جستجو برای محتویات آن از یک اسکریپت PHP ایجاد کنید. قبل از انجام این کار، باید یک پایگاه داده آزمایشی و یک کاربر MySQL جدید که به درستی برای دسترسی به آن پیکربندی شده است ایجاد کنید.

توجه: برخی نسخه‌های قدیمی‌تر mysqlnd کتابخانه بومی MySQL PHP از caching_sha2_authentication، روش احراز هویت پیش‌فرض برای MySQL 8 پشتیبانی نمی‌کنند، ممکن است لازم باشد مطمئن شوید که آنها برای استفاده از mysql_native_password پیکربندی شده‌اند.

ما یک پایگاه داده با نام example_database و یک کاربر با نام example_user ایجاد خواهیم کرد، اما شما می توانید این نام ها را با مقادیر مختلف جایگزین کنید.

ابتدا با استفاده از اکانت root به کنسول MySQL متصل شوید:

 

sudo mysql

 

برای ایجاد یک پایگاه داده جدید، دستور زیر را از کنسول MySQL خود اجرا کنید:

 

CREATE DATABASE example_database;

 

اکنون می توانید یک کاربر جدید ایجاد کنید و در پایگاه داده سفارشی که ایجاد کرده اید، امتیازات کامل به او بدهید.

دستور زیر یک کاربر جدید به نام example_user ایجاد می کند که از mysql_native_password به عنوان روش احراز هویت پیش فرض استفاده می کند. ما password این کاربر را به عنوان رمز عبور تعریف می کنیم، اما شما باید این مقدار را با یک رمز عبور ایمن به انتخاب خود جایگزین کنید.

 

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

 

اکنون باید به این کاربر روی پایگاه داده example_database مجوز دهیم:

 

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

 

این به کاربر example_user امتیازات کاملی نسبت به پایگاه داده example_database می دهد و در عین حال از ایجاد یا تغییر سایر پایگاه های داده در سرور شما توسط کاربر جلوگیری می کند.

اکنون با دستور زیر از پوسته MySQL خارج شوید:

 

exit

 

می‌توانید با ورود مجدد به کنسول MySQL، این بار با استفاده از اعتبار کاربری سفارشی، آزمایش کنید که آیا کاربر جدید مجوزهای مناسب را دارد یا خیر. به پرچم -p در این دستور توجه کنید، که از شما می خواهد پسوردی را که هنگام ایجاد کاربر example_user استفاده کردید را انتخاب کنید:

 

mysql -u example_user -p

 

پس از ورود به کنسول MySQL، تأیید کنید که به پایگاه داده example_database دسترسی دارید:

 

SHOW DATABASES;

 

این خروجی را برمی گرداند:

 

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

 

سپس یک جدول آزمایشی با نام todo_list ایجاد می کنیم. از کنسول MySQL عبارت زیر را اجرا کنید:

 

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

 

چند ردیف از مطالب را در جدول تست درج کنید. ممکن است بخواهید دستور بعدی را چند بار با استفاده از مقادیر مختلف تکرار کنید:

 

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

 

برای تأیید اینکه داده ها با موفقیت در جدول شما ذخیره شده است، دستور زیر را اجرا کنید:

 

SELECT * FROM example_database.todo_list;

 

خروجی شما باید به صورت زیر نمایش داده شود:

 

Output
+---------+--------------------------+
| item_id | content                  |
+---------+--------------------------+
|       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)

 

پس از تأیید اینکه داده های معتبری در جدول آزمایشی خود دارید، می توانید از کنسول MySQL خارج شوید:

 

exit

 

اکنون می توانید اسکریپت PHP را ایجاد کنید که به MySQL متصل می شود و محتوای شما را جستجو می کند. یک فایل PHP جدید در فهرست اصلی وب سفارشی خود با استفاده از ویرایشگر دلخواه خود ایجاد کنید. ما از nano برای آن استفاده خواهیم کرد:

 

nano /var/www/your_domain/todo_list.php

 

اسکریپت PHP زیر به پایگاه داده MySQL متصل می شود و محتوای جدول todo_list را جستجو می کند و نتایج را در یک لیست نمایش می دهد. اگر در اتصال پایگاه داده مشکلی وجود داشته باشد، یک استثنا ایجاد می کند.

محتوای زیر را به اسکریپت todo_list.php خود اضافه کنید:

/var/www/your_domain/todo_list.php

<?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();
}

 

پس از اتمام ویرایش فایل را ذخیره کرده و ببندید.

اکنون می توانید با مراجعه به نام دامنه یا آدرس IP عمومی پیکربندی شده برای وب سایت خود و به دنبال آن با مراجعه به /todo_list.php در مرورگر وب خود دسترسی پیدا کنید:

 

http://server_domain_or_IP/todo_list.php

 

You should receive a page like the following, showing the content you’ve inserted in your test table:

این بدان معناست که محیط PHP شما آماده اتصال و تعامل با سرور MySQL شما است.

نتیجه

در این راهنما، شما با استفاده از Nginx به عنوان وب سرور و MySQL به عنوان سیستم پایگاه داده، پایه ای انعطاف پذیر برای ارائه وب سایت ها و برنامه های کاربردی PHP به بازدیدکنندگان خود ایجاد کرده اید. شما می توانید این کار را با یک وب سرور آپاچی نیز انجام دهید، آموزش ما را در مورد نحوه نصب دسته لینوکس، آپاچی، MySQL، PHP (LAMP) در اوبونتو 22.04 بررسی کنید. همچنین می‌توانید سایت خود را با Let’s Encrypt که گواهی‌های رایگان و قابل اعتماد ارائه می‌کند، ایمن کنید. نحوه انجام این کار را با راهنمای ما در مورد Let’s Encrypt for Apache بیاموزید.

بیشتر بخوانید

طراحی سایت در اردبیل

 

منبع DigitalOcean

۱۹۱۷
۱۴۰۲/۳/۱۲