آموزش نصب LAMP روی اوبونتو
در این راهنما، آموزش نصب LAMP را بررسی میکنیم. LAMP یک استک یا مجموعه کامل از ابزارهای متن باز و رایگان است که شامل Linux، وب سرور Apache، سیستم مدیریت دیتابیس MySQL و زبان PHP است. از آنجایی که این پلتفرم رایگان بوده و شامل اصلیترین ابزارهای ارائه یک وب سایت داینامیک نوشته شده با PHP است، برای توسعه دهندگان بسیار اهمیت دارد. LAMP را میتوان روی سیستمهای عامل متعددی نصب کرد اما این آموزش، به طور خاص نحوه نصب لمپ روی اوبونتو ۲۲.۰۴ را ارائه میدهد. به همین دلیل، در ادامه تمام مراحل آموزش نصب LAMP را به طور کامل و جامع بررسی میکنیم.
LAMP چیست؟
قبل از آن که بخواهیم مراحل آموزش نصب LAMP را بررسی کنیم، بهتر است ببینیم که اصلاً این پلتفرم چیست و شامل چه ابزارهایی است. لمپ مجموعهای از نرمافزارهای منبع باز است که در ایجاد وب سایتهای پویا و وب اپلیکیشنها کاربرد دارد. خود عبارت LAMP به صورت اختصاری از چهار عبارت مختلف گرفته شده است که عبارتند از:
- L؛ سیستمعامل Linux
- A؛ وب سرور Apache
- M؛ دیتابیس MySQL
- P؛ زبان برنامهنویسی PHP
هر یک از این چهار فناوری خود به صورت منبع باز طراحی شده و دسترسی به آنها رایگان است. معمولاً توسعهدهندگان از LAMP برای ایجاد، میزبانی و نگهداری محتواهای وب استفاده میکنند. بسیاری از وب سایتهایی که امروزه از آنها استفاده میکنید، معمولاً پشتوانه LAMP را دارند.
پیشنیازهای نصب LAMP
قبل از بررسی مراحل آموزش نصب LAMP باید مطمئن شوید که الزامات و پیشنیازهای نصب را روی سیستم خود دارید یا خیر. برای این آموزش، به یک سرور اوبونتو ۲۲.۰۴ نیاز دارید که یک حساب کاربری غیر روت با sudo به همراه فایروال اولیه روی آن فعال باشد. درصورتی که این پیشنیازها را دارید، میتوانید لمپ را براساس آموزش زیر نصب کنید.
مرحله اول آموزش نصب LAMP؛ نصب Apache و بروزرسانی فایروال
همانطور که گفتیم، یکی از پیشنیازهای اولیه نصب LAMP داشتن یک فایروال فعال است. پس در مرحله اول از آموزش نصب LAMP باید فایروال را بروزرسانی کنیم. علاوه بر این، وب سرور آپاچی را که یکی از اجزای مهم lamp است، نصب میکنیم. Apache به دلیل قابلیتهای اساسی خود، داشتن جامعه فعالی از کاربران و استفاده گسترده در وب، یکی از محبوبترین وب سرورهای جهان بوده و انتخابی عالی برای میزبانی وب است.
مرحله اول را با بروزرسانی کش package manager شروع میکنیم. اگر برای بار اول در این Session از sudo
استفاده میکنید، باید رمز عبور را وارد کنید تا تأیید شود که از امتیازات کافی برای مدیریت پکیجهای سیستم در apt
برخوردار هستید. این کار را با استفاده از فرمان زیر انجام میدهیم:
sudo apt update
سپس باید از دستور زیر استفاده کرده و وب سرور آپاچی را نصب کنید.
sudo apt install apache2
در این مرحله باید نصب Apache را با فشردن دکمه Y
و سپس ENTER
، تأیید کنید. پس از نصب آپاچی، تنظیمات فایروال را برای اجازه دادن به ترافیک HTTP بروزسانی کنید. ابزاری که بهطور پیشفرض برای پیکربندی فایروال در اوبونتو طراحی شده، UFW (مخفف Uncomplicated Firewall) نام دارد. این ابزار دارای اپلیکیشن پروفایلهای متعددی است که میتوانید از آنها استفاده کنید. برای بررسی فهرست تمام پروفایلهای برنامه UFW دردسترس، از فرمان زیر استفاده کنید:
sudo ufw app list
خروجی به این صورت خواهد بود:
Output
OutputAvailable applications:
Apache
Apache Full
Apache Secure
OpenSSH
هر یک از پروفایلهایی که در لیست خروجی میبینید، معنی خاصی دارند که عبارت است از:
- Apache: برای باز کردن پورت
80
(فقط برای ترافیک وب عادی و رمزگذاری نشده) - Apache Full: برای باز کردن پورت
80
(ترافیک وب عادی و رمزگذاری نشده) و پورت443
(ترافیک رمزگذاری شده TLS/SSL) - Apache Secure: تنها برای باز کردن پورت
443
(ترافیک رمزگذاری شده TLS/SSL)
بهتر است در این مرحله تنها اتصالهای پورت 80
را مجاز کنید؛ زیرا از آنجایی که یک آپاچی جدید را نصب کردهاید، هنوز پیکربندی گواهی TLS/SSL ندارید که ترافیک HTTPS را روی سرور مجاز کند.
برای تأیید مجوز ترافیک تنها در پورت 80
، از پروفایل Apache
استفاده میکنیم و دستور زیر را وارد میکنیم:
sudo ufw allow in "Apache"
برای تأیید تغییرات، از دستور زیر استفاده میکنیم:
sudo ufw status
خروجی به صورت زیر خواهد بود:
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
پس از دریافت خروجی بالا، ترافیک در پورت 80
از طریق فایروال مجاز میشود. میتوانید با رفتن به آدرس IP عمومی سرور خود در مرورگر، بررسی کنید که همه چیز طبق برنامه پیش رفته است. در زیر صفحه وب پیشفرض آپاچی در اوبونتو ۲۲.۰۴ را میبینید:
http://your_server_ip
اگر این صفحه را در مرورگر خود ببینید، وب سرور به درستی نصب شده و از طریق فایروال شما قابل دسترسی است.
نحوه یافتن آدرس IP عمومی سرور
در بخشهای قبلی آموزش نصب LAMP گفتیم که برای بررسی آن که وب سرور شما بهدرستی نصب شده، لازم است که آدرس IP عمومی سرور را در مرورگر وارد کنید. اگر نمیدانید که آدرس IP شما چیست، روشهای مختلفی را میتوانید برای پیدا کردن آن امتحان کنید. آدرس IP عمومی سرور شما همان آدرسی است که برای اتصال به سرور ازطریق SSH نیاز دارید.
روشهای مختلفی برای بررسی این آدرس در خط فرمان وجود دارد. میتوانید از ابزار iproute2
برای دریافت آدرس IP خود استفاده کنید که با تایپ کد زیر امکانپذیر است:
ip addr show ens3 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
با این کار، ممکن است دو یا سه خط آدرس به شما نشان داده شود که اگرچه همه آنها آدرسهای صحیحی هستند، اما سیستم شما ممکن است تنها بتواند یکی از آنها را استفاده کند؛ به همین دلیل باید هر کدام از آنها را امتحان کنید. روش دیگر پیدا کردن آدرس IP، استفاده از ابزار curl است که ارتباط خارجی برقرار میکند و از خارج از شبکه شما میپرسد که آدرس آیپی شما چیست. در این روش، از یک سرور خاص پرسیده میشود که آدرس IP شما چیست:
curl http://icanhazip.com
تفاوتی ندارد که از کدام یک از این روشها استفاده میکنید، درهر صورت بهتر است آدرس IP که دریافت میکنید را در مرورگر وب خود تایپ کنید تا مطمئن شوید که سرور در حال اجرا است.
مرحله دوم آموزش نصب LAMP؛ نصب MySQL
حالا که وب سرور را نصب کردیم، باید سایر مراحل آموزش نصب LAMP را دنبال کنیم. پس از وب سرور، نوبت به یک سیستم دیتابیس میرسد که برای ذخیره و مدیریت دادههای وب سایت باید آن را نصب کنیم. از MySQL بهعنوان یک سیستم مدیریت دیتابیس محبوب در محیطهای PHP استفاده میشود. برای تهیه و نصب این نرمافزار مجدداً از apt
استفاده کرده و دستور زیر را وارد میکنیم:
sudo apt install mysql-server
سپس باید با وارد کردن یک حرف Y
و فشردن دکمه ENTER
، روند نصب را تأیید کنید. پس از پایان نصب، پیشنهاد میشود یک اسکریپت امنیتی که از قبل روی MySQL نصب شده را اجرا کنید. این اسکریپت به حذف برخی از تنظیمات پیشفرض ناامن کمک کرده و دسترسی به سیستم دیتابیس را ایمن میکند.
اخطار:
از تیر/مرداد ۱۴۰۱، هنگامی که اسکریپت mysql_secure_installation
را بدون برخی از پیکربندیها اجرا میکنید، خطایی رخ میدهد. دلیل خطا این است که این اسکریپت سعی میکند یک رمز عبور برای اکانت روت نصب MySQL تنظیم کند، اما بهطور پیشفرض در نصب اوبونتو، این اکانت برای اتصال با استفاده از پسورد پیکربندی نشده است.
قبل از این تاریخ، این اسکریپت پس از تلاش برای تنظیم رمز عبور اکانت روت، بیصدا با مشکل مواجه میشد و به بقیه درخواستها ادامه میداد. با این حال، از زمان نوشتن این اسکریپت پس از وارد کردن و تایید پسورد، خطای زیر را برمیگرداند:
Output
... Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.
New password:
این خطا، اسکریپت را به یک حلقه بازگشتی هدایت میکند که فقط با بستن پنجره ترمینال میتوانید از آن خارج شوید.
از آنجایی که اسکریپت mysql_secure_installation
تعدادی اقدامات دیگر را انجام میدهد که برای ایمن نگهداشتن نصب MySQL شما مفید است، همچنان توصیه میشود قبل از شروع استفاده از MySQL برای مدیریت دادههای خود، آن را اجرا کنید. برای جلوگیری از ورود به این حلقه بازگشتی، ابتدا باید نحوه احراز هویت کاربر روت MySQL خود را تنظیم کنید.
برای انجام این کار، نخست پرامپت MySQL را باز کنید:
sudo mysql
سپس دستور ALTER USER
زیر را اجرا کنید تا روش احراز هویت کاربر اصلی را به روشی که از رمز عبور استفاده میکند تغییر دهید. مثال زیر روش احراز هویت را به mysql_native_password
تغییر میدهد:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
پس از انجام این تغییر، از پرامپت MySQL خارج شوید:
mysql> exit
در نهایت میتوانید اسکریپت mysql_secure_installation
را بدون مشکل اجرا کنید.
اجرای این اسکریپت تعاملی را با وارد کردن دستور زیر شروع میکنیم:
sudo mysql_secure_installation
پس از اجرای اسکریپت، با نمایش VALIDATE PASSWORD PLUGIN از شما میپرسد که آیا میخواهید تأیید اعتبار پلاگین رمزعبور را انجام دهید. با فعال کردن این ویژگی، پسووردهایی که با معیارهای تعیین شده مطابقت نداشته باشند، توسط MySQL رد میشوند. غیرفعال کردن این ویژگی اعتبارسنجی مشکلی ایجاد نمیکند، اما بهتر است همیشه از رمزهای عبور قوی و متمایز استفاده کنید.
برای فعال کردن این ویژگی، پس از نمایش پیام زیر کلید Y
را فشار داده و درصورتی که نمیخواهید آن را فعال کنید، هر دکمه دیگری را انتخاب کنید.
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:
در صورت فعال کردن، باید سطح اعتبارسنجی پسورد را انتخاب کنید. سطح 2
، بالاترین سطح امنیتی است و برای تعیین رمزهای عبور در این سطح، باید حتماً از اعداد، حروف کوچک و بزرگ و کاراکترهای خاص استفاده کنید که در غیر این صورت، با خطاهایی مواجه میشوید.
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
را در مراحل قبلی آموزش نصب LAMP تنظیم کردهاید یا خیر، سرور در مرحله بعد از شما میخواهد که برای کاربر روت (Root) در MySQL، یک رمز عبور انتخاب و تأیید کنید. توجه داشته باشید که کاربر روت در MySQL با روت سیستم تفاوت دارد و کاربری است که اختیارات کامل روی سیستم دیتابیس دارد. حتی اگر از روند احراز هویت پیشرفته برای کاربر Root استفاده نکرده باشید، در هر صورت به یک رمز عبور قوی برای آن نیاز خواهید داشت. در صورت فعال بودن تأیید رمز (Validate Password)، میزان قوی بودن رمزی که وارد کردهاید به شما نمایش داده شده و سرور از شما میپرسد که آیا میخواهید با همان رمز ادامه دهید یا خیر. اگر رمز عبور فعلی خود را میخواهید، دکمه Y
را فشار دهید:
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
اگر از Sudo استفاده کنید، به عنوان روت کاربر دیتابیس در نقش مدیریتی (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
رمز عبوری را تعریف کرده باشید، برای اتصال بهعنوان کاربر اصلی نیازی به وارد کردن رمز عبور نخواهید داشت. دلیل این مسئله، آن است که روش پیشفرض احراز هویت برای کاربر Administrative در MySQL، استفاده از unix_socket
به جای password
است. اگرچه ممکن است این روش نگرانیهای امنیتی برای شما داشته باشد، اما سرور دیتابیس را امنتر میکند، زیرا تنها کاربران مجاز برای ورود بهعنوان کاربر روت در MySQL، کاربران سیستمی هستند که امتیازات sudo داشته و از کنسول یا از طریق برنامهای که با همان امتیازات اجرا میشود، متصل میشوند.
به عبارت دیگر، شما نمی توانید از کاربر روت دیتابیس مدیریتی برای اتصال از برنامه PHP خود استفاده کنید. در صورتی که روش احراز هویت پیشفرض از روش unix_socket
به password
تغییر کند، تنظیم رمز عبور برای اکانت روت MySQL تنها بهعنوان یک لایه ایمنی و محافظتی بیشتر عمل میکند. برای امنیت بیشتر، بهخصوص زمانی که میخواهید چندین دیتابیس را روی سرور میزبانی کنید، بهتر است اکانتهای اختصاصی با امتیازات بیشتر برای هر دیتابیس تنظیم کنید.
نکته: روش احراز هویت پیشفرض در MySQL نسخه ۸، caching_sha2_password است اما برخی از نسخههای قدیمیتر PHP از این روش پشتیبانی نمیکنند. به همین دلیل هنگامی که دیتابیس کاربران برای اپلیکیشنهای PHP در MySQL نسخه ۸ ایجاد میشود، احتمالا نیاز دارید اپلیکیشن خود را بهگونهای برای استفاده از پلاگین mysql_native_password پیکربندی نمایید. این موضوع در مرحله ششم همین مقاله توضیح داده شده است.
مرحله سوم آموزش نصب LAMP؛ نصب PHP
تا اینجا، Apache را برای ارائه محتوا و MySQL را برای ذخیره و مدیریت دادهها نصب کردهایم. PHP یکی از بخشیهایی است که در آموزش نصب LAMP آن را نصب کرده و مسئولیت پردازش کد را برای نمایش محتوای پویا به کاربر نهایی برعهده دارد. البته علاوه بر پکیج php
، به php-mysql
هم نیاز دارید. php-mysql یک ماژول است که به PHP اجازه میدهد با دیتابیسهای مبتنیبر MySQL مرتبط شود. علاوه بر این، به libapache2-mod-php
هم نیاز دارید تا به Apache امکان مدیریت فایلهای PHP را دهد. پکیجهای اصلی PHP به طور خودکار به عنوان یک جزء وابسته نصب میشوند. از کد زیر برای نصب پکیجها استفاده کنید:
sudo apt install php libapache2-mod-php php-mysql
پس از اتمام نصب، از فرمان زیر را برای تایید نسخه PHP استفاده کنید:
php –v
سپس خروجی زیر را مشاهده خواهید کرد:
Output
PHP 8.1.2 (cli) (built: Mar 4 2022 18:13:46) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2, Copyright (c), by Zend Technologies
در این مرحله، آموزش نصب LAMP تکمیل شده و میتوانید از این استک استفاده کنید، اما قبل از تست تنظیمات با یک اسکریپت PHP، بهتر است یک هاست مجازی Apache مناسب برای نگهداری فایلها و پوشههای وب سایت راهاندازی کنید.
مرحله چهارم آموزش نصب LAMP؛ ایجاد یک هاست مجازی برای وب سایت
زمانی که از وب سرور Apache استفاده میکنید، میتوانید هاستهای مجازی (مشابه بلاکهای سرور در NGINX) ایجاد کرده و با پیکربندی جزئیات، بیش از یک دامنه را در یک سرور میزبانی کنید. در ادامه این آموزش نصب LAMP ما نحوه راهاندازی یک دامنه نمونه تحت عنوان your_domain را بررسی میکنیم. البته شما باید دامنه وب سایت خود را با این دامنه نمونه جایگزین کنید. به طور پیشفرض، وب سرور آپاچی در نسخه ۲۲.۰۴ اوبونتو یک هاست مجازی فعال دارد که برای ارائه اسناد از دایرکتوری /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 در آپاچی باز میکنیم. در نمونه زیر، از nano استفاده شده است:
sudo nano /etc/apache2/sites-available/your_domain.conf
حالا یک فایل خالی جدید ایجاد شده و باید با نام دامنه خود، پیکربندی زیر را اضافه کنید:
<VirtualHost *:80>
ServerName your_domain
ServerAlias www.your_domain
ServerAdmin webmaster@localhost
DocumentRoot /var/www/your_domain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
در نهایت، فایل را ذخیره کرده و آن را ببندید. اگر از ویرایشگر nano
استفاده میکنید، ذخیره و بستن فایل را با فشردن CTRL+X
، سپس Y
و ENTER
انجام دهید.
با این پیکربندی که برای هاست مجازی انجام دادهایم، به Apache میگوییم که به دامنه وب سایت (در اینجا your_domain) با استفاده از /var/www/your_domain
بهعنوان دایرکتوری روت وب، سرویس دهد. در صورتی که بخواهید آپاچی را بدون نام دامنه تست کنید، میتوانید گزینههای ServerName
و ServerAlias
را با اضافه کردن یک علامت (#
) در ابتدای خطوط هر گزینه از حالت دستور خارج کرده و به کامنت تبدیل کنید.
حالا برای فعال کردن هاست مجازی جدید، از a2ensite
استفاده میکنیم:
sudo a2ensite your_domain
ممکن است بخواهید وبسایت پیشفرض نصب شده با آپاچی را غیر فعال کنید. هنگامی که از یک نام دامین دلخواه استفاده نمیکنید، لازم است این کار را انجام دهید؛ چون در این حالت، پیکربندی پیشفرض آپاچی، هاست مجازی شما را نادیده میگیرد. از دستور زیر میتوانید برای غیرفعال کردن وبسایت پیشفرض آپاچی استفاده کنید:
sudo a2dissite 000-default
برای آن که مطمئن شوید که فایل پیکربندی شما دارای خطاهای syntax نیست، از دستور زیر استفاده کنید:
sudo apache2ctl configtest
در نهایت، با اجرای مجدد Apache، تغییرات اعمال میشوند:
sudo systemctl reload apache2
تا این مرحله از آموزش نصب LAMP حالا وب سایت جدید شما فعال شده است. البته روت وب /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>
با ذخیره و بستن فایل موردنظر، حالا میتوانید به مرورگر خود رفته و به نام دامنه یا آدرس IP سرور خود دسترسی داشته باشید:
http://server_domain_or_IP
در صفحه وب خود باید محتویات فایلی که ویرایش کردید را ببینید.
تا زمانی که یک فایل index.php
را بهعنوان جایگزین فایل موردنظر تنظیم کنید، میتوانید آن را بهعنوان صفحه لندینگ موقت درنظر بگیرید. توجه داشته باشید که بعد از انجام این کار، از آنجایی که فایل index.html
به طور پیشفرض بر فایل index.php
اولویت دارد، این فایل html را از روت اسناد حذف کرده یا نام آن را تغییر دهید.
درباره DirectoryIndex در آپاچی
در ادامه این آموزش نصب LAMP لازم است نکاتی را درباره DirectoryIndex
در Apache بررسی کنیم. تنظیمات پیشفرض DirectoryIndex در آپاچی بهگونهای است که فایل index.html
همیشه بر فایل index.php
اولویت دارد. این ویژگی برای راهاندازی صفحات نگهداری و ذخیره در برنامههای PHP، با ایجاد یک فایل index.html
موقت حاوی یک پیام خاص برای بازدیدکنندگان، مفید است. به دلیل ارجحیت این صفحه بر صفحه index.php
، به صفحه لندینگ برنامه تبدیل میشود. پس از اتمام روند بررسی و نگداری (maintenance)، index.html
تغییر نام داده یا از روت سند حذف شده و صفحه اپلیکیشن معمولی بازگردانده میشود.
برای تغییر این رفتار، باید فایل/etc/apache2/mods-enabled/dir.conf
ویرایش شده و ترتیب فهرستبندی فایل index.php
در دستورالعمل DirectoryIndex
تغییر داده شود. این کار را با دستور زیر انجام دهید:
sudo nano /etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
پس از ذخیره و بستن فایل، با بارگیری مجدد Apache ازطریق دستور زیر، تغییرات انجام شده اعمال میشود:
sudo systemctl reload apache2
در مرحله بعدی از آموزش نصب LAMP نحوه ایجاد یک اسکریپت PHP را میبینیم که برای تست نصب و پیکربندی درست PHP کاربرد دارد.
مرحله پنجم آموزش نصب LAMP؛ تست پردازش PHP روی وب سرور
تا اینجا یک هاست مجازی ایجاد کردهاید و یک مکان سفارشی برای میزبانی فایلها و پوشههای وب سایت خود دارید. حالا برای اطمینان از قابلیت رسیدگی و پردازش درخواستهای فایلهای PHP در آپاچی، یک اسکریپت تست PHP ایجاد میکنیم. در ادامه آموزش نصب LAMP نحوه انجام این کار را بررسی میکنیم.
ابتدا با استفاده از دستور زیر یک فایل جدید با نام info.php
در پوشه روت وب سفارشی خود ایجاد میکنیم:
nano /var/www/your_domain/info.php
پس از باز شدن یک فایل خالی، متن زیر را داخل فایل اضافه کنید. این متن، یک کد PHP معتبر است.
پس از آن که کارتان تمام شده، فایل را ذخیره کرده و ببندید. برای تست این اسکریپت میتوانید در مرورگر به نام دامنه یا آدرس IP سرور دسترسی پیدا کرده و نام اسکریپت را (در اینجا info.php
) در ادامه آن اضافه کنید.
nano /var/www/your_domain/info.php
در تصویر زیر میتوانید نمونهای از صفحه وب پیش فرض PHP را ببینید:
در این صفحه میتوانید اطلاعاتی را درباره سرور از دید PHP بررسی کنید که برای رفع اشکال و اطمینان از درستی تنظیمات، مفید است. چنانچه پس از وارد کردن آدرسی که قبلاً گفتیم، این صفحه را را در مرورگر خود میبینید، نصب PHP به درستی انجام شده است. از آنجایی که فایل ایجاد شده شامل اطلاعات حساسی درباره محیط PHP و سرور اوبونتو است، بهتر است پس از بررسی اطلاعات مربوط به سرور PHP خود، این فایل را حذف کنید. برای حذف فایل، از دستور زیر استفاده میکنیم:
sudo rm /var/www/your_domain/info.php
هر زمان که به این اطلاعات نیاز داشتید، میتوانید این صفحه را مجدداً ایجاد کنید.
مرحله ششم آموزش نصب LAMP؛ تست اتصال دیتابیس از PHP (اختیاری)
این مرحله از آموزش نصب LAMP اختیاری است و میتوانید آن را انجام ندهید. برای بررسی امکان اتصال PHP به MySQL و همچنین اجرای کوئریهای دیتابیس، میتوانید یک جدول آزمایشی با دادههای تست و کوئری برای محتوای آن از اسکریپت PHP ایجاد کنید. قبل از این کار، به ایجاد یک دیتابیس آزمایشی و یک کاربر جدید MySQL نیاز دارید که متناسب با این دسترسی، پیکربندی شده است. ما دیتابیس را با نام example_database و حساب کاربری را با نام example_user ایجاد میکنیم که میتوانید آن را با هر عبارت دلخواهی جایگزین کنید.
در مرحله اول، ازطریق دستور زیر با استفاده از اکانت root به کنسول MySQL متصل شوید:
sudo mysql
دیتابیس جدید را با اجرای دستور زیر از کنسول MySQL خود ایجاد کنید:
CREATE DATABASE example_database;
حالا میتوانید یک کاربر جدید ایجاد کنید و امتیازات دسترسی کامل این کاربر به دیتابیسی که ساختهاید را بدهید برای ایجاد کاربر، میتوانید از دستور مشابه نمونه زیر استفاده کنید. در این نمونه، نام کاربرexample_user
بوده و با متد caching_sha2_password
احراز هویت میشود. همچنین رمز عبور تعیین شده برای آن،password
است که البته باید یک رمز ایمنتر برای آن در نظر بگیرید.
CREATE USER 'example_user'@'%' IDENTIFIED BY 'password';
نکته: ALTER USER که قبلا قبلا به آن اشاره کردیم، کاربر روت MySQL را به گونهای تنظیم میکند که با پلاگین caching_sha2_password امکان احراز هویت را داشته باشید. بر اساس آنچه در اسناد رسمی MySQL آمده است caching_sha2_password پلاگین ترجیح داده شده برای احراز هویت MySQL است. دلیل این موضوع این است که این پلاگین از رمزنگاری پسورد قویتری نسبت به نسخههای قبلی، یعنی mysql_native_password بهره میبرد. البته همچنان نسخه قبلی توسط بسیاری از کاربران استفاده میشود.
با این حال برخی از نسخههای PHP نمیتوانند به شکل قابل اعتماد با caching_sha2_password کار کنند. PHP اشاره کرده که این مشکل در نسخه PHP ۷.۴ رفع شده است. در صورتیکه همچنان هنگام تلاش برای لاگین به phpMyAdmin با خطا مواجه میشوید، باید احراز هویت روت با mysql_native_password را تنظیم نمایید. برای این کار از دستور زیر استفاده نمایید:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
حالا اجازه دسترسی کامل روی دیتابیس example_database
که قبل از این ایجاد کردیم را میدهیم:
GRANT ALL ON example_database.* TO 'example_user'@'%';
اگرچه این دستور دسترسی کامل کاربر example_user به دیتابیس example_database را میدهد، اما امکان ایجاد یا تغییر سایر دیتابیسها در سرور را برای آن فراهم نمیکند.
حالا با استفاده از دستور زیر میتوانید از پوسته MySQL خارج شوید:
exit
از طریق ورود مجدد به کنسول MySQL میتوانید تست کنید که آیا کاربر جدید مجوزهای دسترسی مناسب را دارد یا خیر. این بار از گواهینامه کاربر دلخواه استفاده کنید.
mysql -u example_user -p
قسمت p-
در این دستور از شما می خواهد که پسورد تعیین شده برای کاربر example_user را انتخاب کنید. پس از ورود به کنسول MySQL، ازطریق دستور زیر میتوانید تأیید کنید که به دیتابیس example_database دسترسی دارید:
SHOW DATABASES
خروجی به صورت زیر خواهد بود:
Output
+--------------------+
| Database |
+--------------------+
| example_database |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)
حالا با اجرای دستور زیر در کنسول MySQL جدول آزمایشی با نام todo_list ایجاد کنید:
CREATE TABLE example_database.todo_list ( item_id INT AUTO_INCREMENT, content VARCHAR(255), PRIMARY KEY(item_id) );
چند ردیف از مطالب را در جدول تست درج کرده و دستور زیر را چند بار با استفاده از Valueهای مختلف تکرار کنید تا جدول تست پر شود:
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
حالا که با موفقیت این مرحله از آموزش نصب LAMP را نیز پشت سر گذاشتید، میتوانید یک اسکریپت PHP ایجاد کنید که به MySQL متصل شده و کوئری را آغاز کند. ازطریق دستور زیر، با استفاده از یک ویرایشگر دلخواه، یک فایل PHP جدید در فهرست اصلی وب سفارشی خود ایجاد کنید:
nano /var/www/your_domain/todo_list.php
اسکریپت PHP زیر به دیتابیس MySQL متصل شده و محتوای جدول todo_list.php
جستجو میشود تا نتایج در یک لیست نمایش داده شوند. در صورتی که مشکلی در اتصال به دیتابیس وجود داشته باشد، با یک استثنا نمایش داده میشود. محتوای زیر را به اسکریپت todo_list.php خود اضافه کنید. البته توجه کنید که کاربر و پسورد را باexample_user
و password
جایگزین کنید.
پس از اتمام ویرایش، فایل را ذخیره کرده و ببندید.
حالا میتوانید با نوشتن نام دامنه یا آدرس IP عمومی پیکربندی شده وب سایت خود در یک مرورگر، عبارت /todo_list.php
را به آن اضافه کرده و به صفحه موردنظر دسترسی پیدا کنید. یعنی آدرس نهایی نوشته شده در مرورگر، به صورت زیر است:
http://your_domain_or_IP/todo_list.php
این صفحه، محتواهایی را که در جدول آزمایشی خود درج کردهاید، نمایش میدهد.
در این مرحله، آموزش نصب LAMP را تکمیل کرده و محیط PHP شما آماده اتصال و تعامل با سرور MySQL خواهد بود.
جمعبندی
در این راهنما، آموزش نصب LAMP را به طور کامل بررسی کرده و دیدیم که چطور میتوانیم با استفاده از Apache به عنوان وب سرور و MySQL به عنوان یک سیستم دیتابیس، یک پلتفرم انعطافپذیر برای ارائه وب سایتها و اپلیکیشنهای PHP ارائه دهیم. علاوهبراین، دیدیم که چطور میتوان اتصال دیتابیس از php را تست کرد.
با خرید سرور ابری میتوانید LAMP را راهاندازی نمایید. همچنین میتوانید فرایند نصب و راهاندازی را به ابر زَس بسپارید تا تحت سرویس مدیریت شده، به صورت آماده استفاده در اختیارتان قرار بگیرد.