LAMP به معنای استفاده از ترکیب linux، apache, MySQL و php برای میز‌بانی وب‌سایت‌هایی با محتوای پویا یا وب‌اپلیکیشن‌ها است. در‌ این مجموعه از apache به عنوان وب‌سرویس، از php برای پردازش محتوای پویا و از MySQL برای ذخیره‌سازی اطلاعات و به عنوان دیتابیس استفاده می‌شود.

‌پیش‌نیاز‌ها

برای دنبال کردن این آموزش، به یک ابرک با سیستم عامل ubuntu 18.04 و یک کاربر با دسترسی sudo نیاز‌ دارید.

شیوه نصب LAMP

اولین قدم، نصب و راه‌اندازی وب‌سرور apache است. برای نصب این برنامه، می‌توانید از apt استفاده کنید. ابتدا لازم است repository هایی را که apt از آن‌ها استفاده می‌کند، به‌روزرسانی کنید:

sudo apt-get update

سپس، با استفاده از دستور زیر، apache را نصب کنید:

sudo apt-get install apache2

پس از نصب این برنامه، سرویس به طور خودکار راه‌اندازی می‌شود. برای دیدن صفحه‌ی پیش‌فرض apache، می‌توانید آدرس IP ابرک خود را در مرورگر وارد کنید. صفحه‌ی پیش‌فرض، مانند تصویر زیر است:

اگر مراحل نصب به درستی انجام شده‌اند ولی صفحه‌ی پیش‌فرض را نمی‌بینید، ابتدا با استفاده از دستور زیر، وضعیت سرویس را بررسی کنید:

sudo systemctl status apache2

اگر خروجی دستور مانند تصویر زیر باشد، به این معنی است که سرویس به درستی راه‌اندازی نشده‌:

برای راه‌اندازی سرویس، دستور زیر را وارد کنید و دوباره وضعیت سرویس را بررسی کنید:

sudo systemctl start apache2

اگر سرویس به درستی راه‌اندازی شده اما هنوز هم صفحه‌ی پیش‌فرض برای شما نمایش داده نمی‌شود، ممکن است فایروال تنظیم‌شده روی ابرک، مانع ورود ترافیک به وب‌سرور شده باشد. اگر از ufw به عنوان فایروال استفاده می‌کنید، برای فعال کردن ترافیک ورودی وب‌سرور، دستور زیر را وارد کنید:

"sudo ufw allow in "Apache Full

اکنون، با استفاده از دستور زیر، سرویس apache را دوباره راه‌اندازی کنید. بعد از اجرای این دستور، می‌توانید صفحه‌ی پیش‌فرض apache را ببینید:

sudo systemctl restart apache2

قدم بعدی، نصب MySQL است. برای نصب این برنامه هم می‌توانید از apt استفاده کنید:‌

sudo apt-get install mysql-server

پس از نصب می‌توانید با استفاده از دستور زیر، یک script اجرا کنید. اجرای این script، تظیمات پیش‌فرضی را که ممکن است باعث ایجاد مشکلات امنیتی شود، حذف می‌کند:

sudo mysql_secure_installation

در اولین بخش، از شما پرسیده می‌شود که آیا می‌خواهید افزونه‌ی VALIDATE PASSWORD را تنظیم کنید یا خیر. این افزونه، میزان امنیت پسورد‌هایی را که برای MySQL انتخاب می‌کنید، می‌سنجد. برای تنظیم افزونه، کلید y و برای تغییر ندادن تنظیمات فعلی، هر کلید دیگری را می‌توانید فشار دهید (اگر تنظیم افزونه را انتخاب کنید، در ادامه درباره‌ی میزان اعتبار مورد پذیرش از شما سوال‌هایی می‌کند):

در ادامه، از شما خواسته می‌شود برای root یک پسورد انتخاب کنید. این کاربر از نظر اهمیت و میزان دسترسی مانند کاربر root در لینوکس است؛ در نتیجه پسوردی که برای root انتخاب می‌کنید، باید به اندازه‌ی کافی قوی باشد.

سوال‌های بعدی، برای حذف کاربران ناشناخته یا تغییر پیش‌فرض‌ها استفاده می‌شود. به همه‌ی سوال‌های بعدی، با y پاسخ دهید:

اکنون، با استفاده از دستور زیر، می‌توانید PHP و افزونه‌هایی را که برای ارتباط بین PHP با MySQL و apache نیاز دارید نصب کنید:

sudo apt install php libapache2-mod-php php-mysql

نکته: برای این‌که بتوانید از چندین دامنه‌ی مختلف روی ابرک استفاده کنید، لازم است تنظیمات مربوط به Virtual Host را انجام دهید. برای این کار به حداقل یک نام‌دامنه که برای ابرک تنظیم شده‌ باشد نیاز دارید.

در ادامه، می‌توانید شیوه‌ی انجام این تنظیمات را دنبال کنید. در این آموزش، از دامنه‌ی example.com استفاده شد. در تمام تنظیمات مربوط به Virtual Host، از نام‌دامنه‌ی خود به جای این دامنه استفاده کنید.
وب‌سرور apache به صورت پیش‌فرض، فایل‌های موجود در مسیر var/www/html/ را نمایش می‌دهد. ابتدا با استفاده از دستور زیر، مسیری مشابه برای دامنه‌ی خود ایجاد کنید:

sudo mkdir /var/www/example.com

سپس دستور زیر را اجرا کنید. این دستور، مالکیت مسیر بالا را به مقدار متغیر USER تغییر می‌دهد:

sudo chown -R $USER:$USER /var/www/example.com

با استفاده از دستور زیر، دسترسی‌های مورد نیاز را تنظیم کنید:‌

sudo chmod -R 755 /var/www/example.com

سپس، فایلی مانند فایل پیش‌فرضی که در مسیر var/www/html/ قرار دارد ایجاد کنید. این فایل، پس از انجام تنظیمات و زمانی که نام دامنه‌ی خود را جست‌و‌جو کنید، به شما نمایش ‌داده‌ خواهد شد:

nano /var/www/example.com/index.html

نوشته‌ی زیر را در فایل ایجادشده قرار دهید. فایل را ذخیره‌ کنید و سپس خارج شوید:

<html>
<head>
<title>Welcome to example.com!</title>
</head>
<body>
<h1>your setup is working!</h1>
</body>
</html>

اکنون، لازم است یک فایل Virtual Host ایجاد کنید که به فایل که در مرحله‌ی قبل ایجاد کردید، اشاره می‌کند. برای این کار، از فایل نمونه apache استفاده کنید:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

در فایل جدید مقادیر متغیر‌های ServerAdmin و DocumentRoot را تغییر دهید. مقدار متغیر ServerAdmin، باید آدرس ایمیلی باشد که admin به آن دسترسی دارد و مقدار DocumentRoot باید به آدرس فایلی که قبل‌تر ایجاد کردید، یعنی var/www/example.com/ اشاره داشته‌ باشد:

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

sudo a2ensite example.com.conf

برای غیر‌فعال کردن فایل پیش‌فرض، این دستور را اجرا کنید:

sudo a2dissite 000-default.conf

از دستور زیر برای بررسی درست بودن تنظیمات انجام‌شده استفاده کنید. اگر تنظیمات انجام شده درست باشند، خروجی دستور مانند تصویر زیر است:

sudo apache2ctl configtest

سپس، برای اعمال تنظیمات انجام‌شده، سرویس apache را یک‌بار دیگر راه‌‌اندازی کنید:

sudo systemctl restart apache2

با وارد کردن نام‌دامنه‌ی تنظیم‌شده در مرورگر، می‌توانید پیامی را که در فایل نوشته ‌شده است، ببینید.
برای بررسی درست بودن تنظیمات stack، می‌توانید یک script ساده به زبان php بنویسید. اگر تنظیمات مربوط به نام‌دامنه و virtual host را انجام داده‌اید، می‌توانید این script را در مسیر var/www/example.com/ یا در غیر این‌صورت، در مسیر پیش‌فرض یعنی var/www/html/ قرار دهید. برای نمونه، می‌توانید از script زیر استفاده کنید (script را با نام info.php در مسیر مورد نظر خود ایجاد کنید):

php?>
;()phpinfo
<?

حالا با نوشتن آدرس http://example.com/info.php (با انجام تنظیمات virtual host) یا http://your_IP/info.php، صفحه‌ای مانند صفحه‌ی زیر می‌بینید:

دقت کنید که اگر تنظیمات مربوط به virtual host را دنبال کرده‌اید و برای تنظیمات بالا از مسیر پیش‌فرض استفاده می‌کنید، به دلیل غیرفعال کردن تنظیمات مسیر پیش‌فرض، صفحه‌ی نشان داده‌شده را نمی‌بینید و لازم است دوباره حالت پیش‌فرض را فعال کنید:

sudo a2ensite 000-default.conf
sudo systemctl restart apache2