LEMP گروهی از نرمافزارها است که برای ارائه صفحات پویای وب و وب اپلیکیشنهای نوشتهشده به زبان PHP استفاده میشود. LEMP در واقع کلمه مخففشدهای است که حروف آن از ابتدای کلمات Linux، Engine-X، MySQL و PHP گرفته شده است. این کلمه در واقع یک سیستمعامل لینوکس را با یک وب سرور Nginx توصیف میکند. دادههای Backend در دیتابیس MySQL ذخیره میشوند و پردازش پویا توسط PHP انجام میشود. در این مقاله قصد داریم به نحوه نصب LEMP در سرور اوبونتو 22.04 بپردازیم و مراحل انجام این کار را بهصورت گامبهگام بیان کنیم.
پیشنیازهای نصب LEMP روی سرور اوبونتو
برای نصب LEMP روی سرور اوبونتو لازم است که به یک سرور اوبونتو 22.04 بهعنوان کاربر sudo غیرریشه (Non-root sudo user) دسترسی داشته باشید و یک فایروال روی سرورتان فعال باشد. برای این کار میتوانید از صفحه خرید سرور ابری سرور مورد نظرتان را خریداری کنید. با وجود همین پیشنیازها میتوانید با آموزش مرحلهبهمرحله این مقاله همراه باشید.
مرحله 1: نصب وب سرور NginX
برای نمایش صفحات وب به بازدیدکنندگان سایت، از NginX استفاده کنید که یک وب سرور با کارایی بالا محسوب میشود. اگر میخواهید درباره وب سرور بیشتر بدانید، توصیه میکنیم مقاله لینکشده را مطالعه کنید. برای دریافت نرمافزار NginX میتوانید از Package manager (مدیر بسته) APT استفاده کنید. ازآنجاییکه برای اولین بار قصد استفاده از apt را دارید، توصیه میکنیم ابتدا Package index سرورتان را حتما بهروزرسانی کنید:
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 را با موفقیت نصب کرده و ترافیک HTTP را برای وب سرور خود فعال کردهاید.
اگر قصد خرید سرور ابری را دارید، در صفحه قیمت سرور ابری ابر دراک میتوانید قیمت و مشخصات فنی پلنهای مختلف این سرویس را مشاهده کنید.
مرحله 2: نصب MySQL
در این مرحله از نصب LEMP روی اوبونتو شما یک وب سرور بالا و در حال اجرا دارید؛ حالا باید سیستم پایگاه داده (Database) را برای ذخیره و مدیریت دادهها برای سایت خود نصب کنید. 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 را تنظیم کردهاید یا خیر، سرور از شما میخواهد تا یک پسورد برای کاربر ریشه (Root) MySQL انتخاب و تایید کنید. کاربر ریشه MySQL را با ریشه سیستم اشتباه نگیرید. کاربر ریشه 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
این بهعنوان ریشه کاربر پایگاه داده Administrative به سرور MySQL متصل میشود. در این زمان باید خروجی زیر را دریافت کنید:
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 پسورد تعیین کرده باشید، به وارد کردن پسورد نیازی ندارید. زیرا وقتی روی اوبونتو نصب میشود، auth_socket روش احراز هویت پیشفرض برای کاربر Administrative MySQL است، نه روشی که از پسورد استفاده میکند.
این موضوع شاید در ابتدا یک مشکل امنیتی به نظر برسد، اما سرور پایگاه داده را ایمنتر میکند؛ زیرا تنها کاربرانی که اجازه ورود بهعنوان کاربر ریشه MySQL را دارند، کاربران سیستم با امتیازهای sudo هستند که از کنسول یا از طریق اجرای یک اپلیکیشن با امتیازهای یکسان متصل میشوند. به عبارت دیگر، شما نمیتوانید با استفاده از کاربر ریشه پایگاه داده administrative به اپلیکیشن PHP خود متصل شوید.
برای افزایش امنیت، بهتر است حسابهای کاربری اختصاصی با امتیازهای کمتر برای هر پایگاه داده تنظیم شده باشد؛ بهخصوص اگر میخواهید چندین پایگاه داده را روی سرور ابری خود میزبانی کنید.
مرحله 3: نصب PHP
تا این مرحله از آموزش نصب LEMP روی سرور اوبونتو به نصب NginX برای ارائه محتوا و نصب MySQL برای ذخیره و مدیریت دادهها پرداختیم. حالا وقت آن است که PHP را برای پردازش کد و تولید محتوای پویا برای وب سرور نصب کنیم.
درحالیکه آپاچی (Apache) مفسر PHP را در هر درخواست تعبیه میکند، NginX به یک برنامه خارجی نیاز دارد تا پردازش PHP را مدیریت کرده و بهعنوان پل بین مفسر PHP و وب سرور عمل کند. این به بهبود عملکرد کلی در بیشتر وبسایتهای مبتنی بر PHP کمک میکند، اما به پیکربندی اضافی نیز نیاز دارد.
شما باید php8.1-fm را نصب کنید که مخفف عبارت PHP fastCGL process manager است و از نسخه فعلی PHP (در زمان نگارش این مقاله) استفاده میکند تا به NginX بگویید درخواستهای PHP را برای پردازش به این نرمافزار ارسال کند.
بهعلاوه، شما به php-mysql نیز نیاز دارید که یک ماژول PHP است و به PHP اجازه میدهد با پایگاه داده مبتنی بر MySQL ارتباط برقرار کند. پکیجهای اصلی PHP بهطور خودکار نصب خواهند شد.
برای نصب php8.1-fm و پکیجهای 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 باز کنید. با استفاده از nano دستور زیر را بنویسید:
sudo nano /etc/nginx/sites-available/your_domain
در این صورت یک فایل خالی جدید ایجاد خواهد شد. پیکربندی bare-bones زیر را وارد کنید:
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 میگوید که در صورت بارگذاری مجدد از پیکربندی استفاده کند. شما میتوانید با اجرای دستور زیر، پیکربندی خود را برای خطاهای syntax آزمایش کنید:
sudo nginx -t
در صورت گزارش هر خطایی، به فایل پیکربندی خود برگردید و محتواهای آن را قبل از ادامه بازبینی کنید. بعد از آماده شدن، Nginx را دوباره بارگذاری کنید تا تغییرات اعمال شوند:
sudo systemctl reload nginx
وبسایت جدید شما اکنون فعال است، اما ریشه وب /var/www/your_domain هنوز خالی است. یک فایل index.html در آن لوکیشن ایجاد کرده و تست کنید که بلاک سرور جدید شما طبق انتظار کار میکند یا خیر:
nano /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>
حالا به مرورگر خود بروید و همانطور که در دستورالعمل server_name در فایل پیکربندی بلاک سرور فهرست شده است، به آدرس IP یا نام دامنه سرورتان دسترسی پیدا کنید:
http://server_domain_or_IP
در این صورت، یک صفحه مشابه زیر به شما نمایش داده خواهد شد:
اگر این صفحه را دریافت کردید، یعنی بلاک سرور Nginx شما مطابق انتظار کار میکند.
شما میتوانید این فایل را در جایی بهعنوان یک صفحه لندینگ موقت برای اپلیکیشن خود قرار دهید تا زمانی که یک فایل index.php برای جایگزینی آن تنظیم کنید. بعد از انجام این کار، به یاد داشته باشید که فایل index.html را از ریشه داکیومنت خود حذف کنید یا تغییر نام دهید؛ زیرا این فایل بهطور پیشفرض بر فایل index.php ارجحیت دارد.
پشته LEMP شما اکنون بهطور کامل پیکربندی شده است. در مرحله بعد، یک اسکریپت PHP ایجاد خواهیم کرد تا بررسی کنیم که آیا Nginx واقعا توانایی مدیریت فایلهای php. در وبسایت تازه پیکربندیشده شما را دارد یا خیر.
مرحله 5: تست PHP با Nginx
تا این قسمت از آموزش نحوه نصب LEMP در اوبونتو 22.04 پشته LEMP بهطور کامل تنظیم شده است. در این گام باید به تست آن بپردازیم و تایید کنیم که Nginx میتواند بهدرستی فایلهای php. را به پردازنده PHP تحویل دهد.
این کار با ایجاد یک فایل PHP آزمایشی در ریشه داکیومنت امکانپذیر است. یک فایل جدید با نام info.php داخل ریشه داکیومنت خود در ویرایشگر متن دلخواهتان باز کنید:
nano /var/www/your_domain/info.php
خطهای زیر را به فایل جدید اضافه کنید. این کد معتبر 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 یا هر نام دیگری ایجاد کنید. ابتدا با استفاده از اکانت ریشه به کنسول 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 shell خارج شوید:
Exit
در این مرحله میتوانید با ورود دوباره به کنسول MySQL، با استفاده از اعتبار کاربر سفارشی تست کنید که آیا کاربر جدید مجوزهای مناسب را دارد یا خیر. به flag (پرچم) 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
حالا میتوانید برای اتصال به MySQL و جستوجوی محتوایتان یک اسکریپت PHP ایجاد کنید. با استفاده از ویرایشگر مورد نظرتان، یک فایل PHP جدید در دایرکتوری ریشه وب سفارشی خود ایجاد کنید. در دستور زیر از nano برای این کار استفاده کردهایم:
nano /var/www/your_domain/todo_list.php
اسکریپت PHP زیر به پایگاه داده MySQL متصل میشود، محتوای جدول todo_list را جستوجو میکند و نتایج را در یک فهرست نمایش میدهد. اگر در اتصال پایگاه داده مشکلی وجود داشته باشد، یک استثنا (Exception) رخ خواهد داد. محتوای زیر را به اسکریپت 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
با این کار باید صفحهای مشابه زیر ببینید که محتوایی را که در جدول تست خود وارد کردهاید، نمایش دهد:
در این صورت محیط PHP شما آماده اتصال و تعامل با سرور MySQL شما خواهد بود.
منبع: DigitalOcean