سوال اولی که توسعهدهندگان هنگام فکر کردن به راهاندازی برنامههای مبتنی بر PHP میپرسند این است که چگونه بسته نرم افزاری LAMP را در اوبونتو نصب کنند. بسته نرم افزاری LAMP به خاطر اوپن سورس بودن و انعطافپذیریاش، گزینه محبوبی برای میزبانی وبسایتها و برنامههای وب است. افزایش محبوبیت آن به خاطر پایداری و ثباتی است که اجزایش در ارائه خدمات به وبسایتهای با تعداد بازدیدکنندگان بالا فراهم میکند.
چون همه اجزای این بسته نرم افزاری رایگان هستند و یک جامعه کاربری بزرگ دارند، این بسته نرم افزاری برای خیلی از سازمانها یک انتخاب خوب محسوب میشود. این امر باعث میشود که هزینههای اولیه بسیار کم شود و مدیران فناوری اطلاعات میتوانند تمام سیستم را بر اساس نیازهای خاص پروژههایشان تنظیم کنند، بدون اینکه نگرانی از بروز تعارضاتی که ممکن است بر عملکرد تأثیر بگذارد، داشته باشند.
در این مقاله، ما یک راهنمای ساده و گام به گام برای نصب هر بخش از مجموعه LAMP (لینوکس، آپاچی، مایاسکیوال، و PHP) روی سرور اوبونتو ۲۲.۰۴ ارائه خواهیم داد. ما به شما نشان میدهیم چطور یک میزبان مجازی برای وبسایتهایتان ایجاد کنید و اتصال به پایگاه داده را آزمایش نمایید.
بیایید با مروری بر تعاریف ابتدایی شروع کنیم قبل از اینکه به جزئیات فنی نصب مجموعه LAMP در سرور اوبونتو ۲۲.۰۴ بپردازیم.
بسته نرم افزاری LAMP چیست؟
بسته نرم افزاری LAMP شامل چهار جزء است – یک لایه سیستمعامل (لینوکس/اوبونتو)، یک وب سرور (آپاچی)، یک سیستم مدیریت پایگاه داده (مایاسکیوال)، و یک زبان برنامهنویسی اسکریپتی (PHP) که برای تعامل با پایگاه داده و وب سرور به منظور آمادهسازی پاسخها به درخواستهای ورودی از رابط کاربری برنامه استفاده میشود. به طور معمول، در محیط اوبونتو ۲۲.۰۴، اوبونتو به عنوان لایه سیستمعاملی است که سه جزء دیگر روی آن نصب میشوند. آپاچی به عنوان وب سرور انتخاب میشود، عمدتاً به خاطر عملکرد پایدارش تحت بارهای رو به افزایش، و مایاسکیوال گزینهای محبوب برای سیستم مدیریت پایگاه داده است.
در نهایت، PHP به عنوان زبان اسکریپتنویسی انتخاب میشود به دلیل تنوعپذیری و محبوبیتش به عنوان یک زبان اسکریپتنویسی بکاند. این ترکیب در جامعه اوبونتو رایج است چرا که هر سه جزء به عنوان مخازن بومی اوبونتو در دسترس هستند.
با این حال، اگر پروژهای نیازمند جزء متفاوتی باشد، میتوانید به راحتی یکی از این سه جزء را با گزینهای جایگزین کنید. به عنوان مثال، ممکن است به NGINX به عنوان وب سرور یا MariaDB به عنوان سیستم مدیریت پایگاه داده نیاز داشته باشید. به طور مشابه، میتوانید از Python یا Perl به عنوان زبان اسکریپتنویسی استفاده کنید بدون اینکه بر عملکرد مجموعه تأثیر بگذارد.
با تشکر از انعطافپذیری نرمافزارهای منبع باز، میتوانید به راحتی این تغییر را اعمال کنید بدون اینکه بر معماری کلی مجموعه تأثیر بگذارد.
حال که با معماری مجموعه LAMP آشنا شدید، زمان آن رسیده که مجموعه LAMP را روی دستگاه اوبونتوی خود راهاندازی کنید.
پیشنیازهای راهاندازی مجموعه LAMP بر روی اوبونتو ۲۲.۰۴
برای راهاندازی یک مجموعه LAMP، نیاز به یک سرور با اوبونتو ۲۲.۰۴ دارید. حداقل الزامات شامل موارد زیر است:
– یک فایروال ابتدایی روی سرور.
– یک حساب کاربری غیر روت با امتیازات مدیریتی (sudo).
حال که بخش لینوکس در LAMP را بررسی کردیم، به نصب و پیکربندی سه جزء دیگر مجموعه ادامه خواهیم داد.
نصب بسته نرم افزاری LAMP بر روی اوبونتو ۲۲.۰۴
در این بخش از راهنمای نصب LAMP در اوبونتو، مطابق با حروف اختصاری، با نصب سرور آپاچی شروع میکنیم. سپس، مایاسکیوال را نصب کرده و با راهاندازی PHP، فرایند نصب را به پایان میبریم.
همانطور که قبلاً ذکر شد، میتوانید با دانلود و نصب بستههای مربوطه، اجزاء مورد نظر خود را جایگزین کنید.
نصب وب سرور آپاچی
آپاچی یک وب سرور محبوب است که تا حدود ۳۰% از وبسایتهای اینترنتی را پشتیبانی میکند. این وب سرور منبع باز است و قابل پیکربندی برای پشتیبانی از طیف گستردهای از پروژهها میباشد.
برای شروع فرایند نصب، ابتدا لیست بستههای موجود بر روی سرورتان را بهروز کنید با استفاده از دستور زیر:
# sudo apt update
پس از آن، نصب وب سرور آپاچی را با اجرای دستور زیر آغاز کنید:
# sudo apt install apache2
در حین نصب، برای تایید نصب بسته، از شما خواسته میشود که تایید کنید. وقتی از شما خواسته شد، کلید Y را فشرده و سپس Enter را بزنید تا نصب ادامه یابد.
پیکربندی فایروال
بعد از اتمام نصب، نوبت به تنظیم فایروال سرور میرسد تا ترافیک وب اجازه دسترسی به سرور آپاچی را داشته باشد. چون ما از اوبونتو استفاده میکنیم، فایروال UFW، که یک ابزار تنظیم فایروال ساده است، را پیکربندی خواهیم کرد. UFW اجازه میدهد تا ترافیک را برای برنامههای خاص با استفاده از پروفایلهای مختلف کنترل کنیم.
برای دیدن لیست پروفایلهای برنامهای که UFW ارائه میدهد، از دستور زیر استفاده کنید:
#sudo ufw app list
این پروفایلها عبارتند از:
- Apache: فقط پورت ۸۰ را برای ترافیک وب رمزنگاری نشده باز میکند.
- Apache Full: هم پورت ۸۰ برای ترافیک وب رمزنگاری نشده و هم پورت ۴۴۳ برای ترافیک رمزنگاری شده با TLS/SSL را باز میکند.
- Apache Secure: فقط پورت ۴۴۳ را برای ترافیک رمزنگاری شده با TLS/SSL باز میکند.
چون ما میخواهیم به هر دو نوع ترافیک وب اجازه دهیم، پروفایل Apache Full را انتخاب میکنیم. البته، بسته به نیازهای خود، میتوانید پروفایل دیگری را فعال کنید.
برای فعال کردن پروفایل Apache Full، از دستور زیر استفاده کنید:
# sudo ufw allow in "Apache Full"
پس از آن، با دستور زیر وضعیت را بررسی کنید تا مطمئن شوید پروفایل به درستی فعال شده است:
# sudo ufw status
آخرین مرحله، بررسی دسترسی عمومی به سرور است تا مطمئن شویم فایروال به درستی ترافیک را به سمت سرور آپاچی هدایت میکند. برای این کار، به آدرس IP عمومی سرور خود در مرورگر وب مراجعه کنید.
اگر همه چیز به درستی تنظیم شده باشد، باید صفحه وب پیشفرض اوبونتو ۲۲.۰۴ آپاچی را ببینید که اطلاعات سرور را نمایش میدهد.
نصب MySQL
مرحله بعد، نصب MySQL، یک سیستم مدیریت پایگاه داده است. پایگاه داده یک بخش کلیدی در هر سیستم وب است چون اطلاعات لازم برای پاسخگویی به بازدیدکنندگان را فراهم میکند. یک سیستم مدیریت پایگاه داده اطلاعات برنامه را ذخیره و مدیریت میکند و به بقیه اجزای سیستم اجازه میدهد که دادههای مورد نیاز را درخواست کنند.
برای نصب MySQL روی اوبونتو ۲۲.۰۴، این دستور را اجرا کنید:
# sudo apt install mysql-server
مانند زمان نصب آپاچی، لازم است تا نصب را تایید کنید. با فشردن Y و سپس Enter ادامه دهید.
یک نصب پیشفرض MySQL به تنهایی امن نیست. چون MySQL دادههای مهمی را نگهداری میکند، بالا بردن امنیت آن ضروری است. MySQL یک اسکریپت ارائه میدهد که امنیت نصب را با تغییر تنظیمات پیشفرض و اعمال کنترلهای دسترسی سختگیرانه بهبود میبخشد.
برای اجرای اسکریپت امنسازی، این دستور را به کار ببرید:
# sudo mysql_secure_installation
اسکریپت با پرسیدن اینکه آیا میخواهید تنظیم VALIDATE PASSWORD را فعال کنید شروع میشود. با فشردن Y ادامه دهید و سپس سطح اعتبارسنجی رمز عبور را انتخاب کنید.
بعد از آن، باید رمز عبوری برای کاربر روت MySQL تعیین و تایید کنید. توجه داشته باشید که این کاربر روت فقط برای MySQL است، نه برای کل سرور اوبونتو.
فعال کردن VALIDATE PASSWORD قدرت رمز عبور شما را نشان میدهد. از شما سوال میشود که آیا میخواهید با این رمز عبور ادامه دهید. اگر راضی هستید، در هنگام درخواست Y را وارد کنید.
برای همه سوالات دیگر نیز Y را فشار دهید و در هر درخواست Enter را بزنید.
اسکریپت در حین اجرا، کاربران ناشناس و پایگاههای داده آزمایشی را پاک میکند، ورود از راه دور روت را غیرفعال میکند، و قوانین جدید را اجرا میکند. این کار بلافاصله تغییرات امنیتی اعمال شده را فعال میکند.
پس از پایان اسکریپت، باید بررسی کنید که آیا با اطلاعات ورود جدید میتوانید به MySQL وارد شوید. این را با دستور زیر انجام دهید:
# sudo mysql -u root -p
وارد کردن رمز عبور شما را به صفحه خوشآمدگویی و محیط خط فرمان شل MySQL منتقل میکند. اگر همه چیز به نظر روبراه است، با استفاده از این دستور از محیط خط فرمان MySQL خارج شوید:
# mysql> exit
حالا بریم سراغ نصب PHP، که آخرین جزء در مجموعه LAMP ما است.
نصب PHP
PHP برای ارائه محتوای صفحات دینامیک به کاربران استفاده میشود. در حین نصب PHP، ما بسته php-mysql را نیز نصب میکنیم که امکان ارتباط PHP با سرور MySQL را فراهم میآورد. علاوه بر این، از بسته libapache2-mod-php که قبلاً نصب شده استفاده خواهیم کرد تا آپاچی بتواند فایلهای PHP را مدیریت کند. سایر بستههای اصلی PHP به طور خودکار به عنوان وابستگیها نصب خواهند شد.
شروع فرآیند نصب با دستور زیر:
# sudo apt install php libapache2-mod-php php-mysql
پس از پایان نصب، باید با اجرای دستور زیر از نصب صحیح PHP اطمینان حاصل کنید و نسخهی نصب شده را ببینید:
# php -v
در این مرحله، مجموعه LAMP به طور کامل نصب شده و آماده آزمایش نهایی است. قبل از آن، تنظیم یک میزبان مجازی در آپاچی برای بهتر مدیریت کردن فایلها و پوشههای وبسایتتان ضروری است.
تنظیم یک میزبان مجازی (Virtual Host) برای وبسایت شما
به طور پیشفرض، روی سرور آپاچی اوبونتو ۲۲.۰۴، شما یک میزبان مجازی پیشفرض دارید که محتوای خود را از پوشه /var/www/html در اختیار کاربران قرار میدهد. این پوشه محلی است که در آن فایلها و پوشههای مربوط به وبسایت شما ذخیره میشوند و توسط آپاچی قابل دسترس هستند.
اما اگر قصد دارید چند وبسایت مختلف را روی یک سرور میزبانی کنید، ایجاد فایلهای پیکربندی مجزا برای هر وبسایت ضروری است.
توجه: در این مثال، ما یک دامنه آزمایشی به نام Zoip.ir تنظیم میکنیم. شما باید این نام دامنه را با دامنه خودتان جایگزین کنید.
برای میزبانی وبسایت Zoip.ir، ما پوشه پیشفرض /var/www/html را رها کرده و یک پوشه جدید در /var/www برای Zoip.ir ایجاد میکنیم. اگر درخواستی با Zoip.ir (یا هر وبسایت دیگری که روی این سرور میزبانی میشود) مطابقت نداشته باشد، /var/www/html به عنوان پوشه پیشفرض استفاده خواهد شد.
ابتدا با ایجاد پوشه برای Zoip.ir شروع میکنیم با دستور:
# sudo mkdir /var/www/zoip
سپس، مالکیت این پوشه را به کاربر فعلی سیستم (که با متغیر محیطی $USER نشان داده میشود) اختصاص میدهیم:
# sudo chown -R $USER:$USER /var/www/zoip
پس از تنظیم مالکیت، یک فایل پیکربندی جدید برای میزبان مجازی در دایرکتوری sites-available آپاچی ایجاد میکنیم. برای این کار، ویرایشگر متن نانو را با دستور زیر باز میکنیم:
# sudo nano /etc/apache2/sites-available/zoip.conf
این دستور یک فایل خالی جدید ایجاد میکند و آن را در ویرایشگر متن باز میکند. در این فایل، جزئیات پیکربندی پایه زیر را برای zoip، نام دامنه آزمایشی که برای این نمونه استفاده میکنیم، وارد خواهیم کرد.
<VirtualHost *:80>
ServerName zoip.ir
ServerAlias www.zoip.ir
ServerAdmin zoip@localhost
DocumentRoot /var/www/zoip
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
این دستور یک فایل جدید و خالی میسازد و آن را در یک ویرایشگر متن باز میکند. در این فایل، تنظیمات اولیه برای دامنه آزمایشی ما، Zoip.ir، را وارد خواهیم کرد. وقتی تمام شد، فایل را ذخیره کنید و ببندید. اگر از ویرایشگر نانو استفاده میکنید، برای خروج CTRL+X را فشار دهید، بعد Y و سپس Enter را برای ذخیره.
در این تنظیمات VirtualHost، آپاچی دستور میگیرد که محتوای Zoip.ir را از پوشه /var/www/zoip (مکان اصلی فایلهای وب برای دامنه) نشان دهد. اگر میخواهید بدون نام دامنه آپاچی را آزمایش کنید، میتوانید با اضافه کردن علامت # در ابتدای خطهای مربوط به ServerName و ServerAlias، آنها را غیرفعال کنید.
پس از تنظیم VirtualHost برای دامنه آزمایشی ما، حالا زمان آن رسیده که آن را فعال کنیم با دستور:
$ sudo a2ensite zoip
باید بدانید که سرور آپاچی با یک وبسایت پیشفرض میآید که زمانی استفاده میشود که سرور به یک نام دامنه سفارشی سازی نشده باشد. از آنجایی که ما یک نام دامنه (zoip.ir) داریم، میخواهیم وبسایت پیشفرض آپاچی را غیرفعال کنیم تا از هرگونه تداخل با تنظیمات دامنه آزمایشی ما جلوگیری کنیم با دستور:
# sudo a2dissite 000-default
یک نکته مهم دیگر، بررسی دقت در فایل تنظیمات است. ما این کار را با دستور زیر برای اطمینان از نبود خطا انجام میدهیم:
# sudo apache2ctl configtest
سپس، برای اعمال تغییرات، سرویس آپاچی را با دستور زیر دوباره بارگذاری میکنیم:
# sudo systemctl reload apache2
وبسایت جدید شما اکنون فعال است.
با این حال، پوشه وب /var/www/zoip هنوز خالی است، یعنی بازدیدکنندگان چیزی نمیبینند وقتی به دامنه آزمایشی مراجعه میکنند. برای حل این مسئله، یک فایل جدید index.html در آن مکان بسازید تا بتوانید تست کنید که میزبان مجازی به درستی کار میکند. برای ساخت این فایل، از ویرایشگر نانو استفاده میکنیم:
# nano /var/www/zoip/index.html
کد HTML زیر را به فایل اضافه کنید.
<html>
<head>
<title>وبسایت Zoip</title>
</head>
<body>
<h1>سلام دنیا!</h1>
<p>این صفحه <strong>zoip.ir</strong> است.</p>
</body>
</html>
فایل را ذخیره کنید و ببندید. سپس، مرورگر وب خود را باز کنید و به دامنه آزمایشی خود یا آدرس IP سرور بروید. شما باید صفحهای را ببینید که توسط کد HTML نوشته شده در فایل index.html ایجاد شده است.
در مرحله بعد، ما یک فایل PHP ساخته و آزمایش میکنیم تا مطمئن شویم PHP به درستی روی سرور شما نصب و تنظیم شده است.
تست پردازش PHP روی وب سرور
حالا که شما یک مکان مخصوص برای میزبانی فایلها و پوشههای وبسایت خود دارید، باید تست کنیم که آیا سرور آپاچی میتواند فایلهای PHP را به درستی اجرا و پردازش کند یا خیر؟
برای این کار، یک اسکریپت تست PHP میسازیم که تابع phpinfo() را اجرا میکند. این تابع تمام اطلاعات ضروری درباره نصب PHP بر روی سرور را نمایش میدهد.
ابتدا، با استفاده از دستور زیر یک فایل جدید با نام info.php در داخل پوشه ریشه وب سفارشی خود (برای ما، پوشه zoip.ir) ایجاد کنید:
$ nano /var/www/zoip/info.php
این دستور ویرایشگر متن را با یک فایل خالی باز میکند. کد PHP زیر را به آن اضافه کنید:
<?php
phpinfo();
پس از اضافه کردن کد، فایل را ذخیره کرده و ببندید.
برای آزمایش این اسکریپت، به مرورگر وب خود بروید و به نام دامنه یا آدرس IP سرور خود دسترسی پیدا کنید:
http://server_domain_or_IP/info.php
اگر همه چیز به درستی تنظیم شده باشد، شما باید صفحهای را ببینید که تمام اطلاعات مربوط به نصب PHP بر روی سرور شما را نمایش میدهد.
اضافه کردن کاربر جدید و آزمایش جدول و دادهها در پایگاه داده آزمایشی
مرحله بعدی، تست ارتباط بین PHP و پایگاه داده (در این مورد MySQL) است. ما ابتدا با ساخت یک پایگاه داده و یک کاربر جدید شروع میکنیم و بعد ارتباط بین PHP و MySQL را آزمایش خواهیم کرد.
اول، به کنسول MySQL با استفاده از حساب کاربری روت وصل شوید. حالا شما در کنسول MySQL هستید (نمایش داده شده با mysql>). سپس، با اجرای دستور زیر یک پایگاه داده جدید بسازید (ما نام آن را demo میگذاریم):
# mysql > CREATE DATABASE demo;
بعد، یک کاربر پایگاه داده جدید بسازید و به او تمام امتیازات لازم برای پایگاه داده demo که تازه ساختید، بدهید.
این دستور یک کاربر جدید به نام demo_user میسازد که با روش احراز هویت caching_sha2_password تأیید میشود. همچنین رمز عبور این کاربر را Zoip@123 تنظیم کردهایم.
توجه: بهتر است از این رمز عبور استفاده نکنید. یک رمز عبور قوی و منحصر به فرد انتخاب کنید.
# mysql > CREATE USER demo_user@'%' IDENTIFIED BY Zoip@123';
سپس، به این کاربر اجازه دهید که به پایگاه داده demo دسترسی داشته باشد:
# mysql > GRANT ALL ON demo.* TO 'demo_user'@'%';
این مرحله به کاربر پایگاه داده demo_user اجازه میدهد که فقط روی پایگاه داده demo دسترسی کامل داشته باشد. این بدان معناست که کاربر نمیتواند پایگاههای داده دیگری روی سرور ایجاد کند یا تغییر دهد.
برای خروج از کنسول MySQL، دستور زیر را اجرا کنید:
# mysql > exit
برای تست اینکه آیا کاربر جدید دسترسیهای لازم را دارد، با اطلاعات ورود کاربر جدید (demo_user) دوباره وارد کنسول MySQL شوید:
$ mysql -u demo_user -p
دقت کنید که -p در این دستور است که از شما خواسته میشود رمز عبور را وارد کنید. پس از ورود به کنسول MySQL، با دستور زیر بررسی کنید که آیا به پایگاه داده demo دسترسی دارید:
# SHOW DATABASES;
شما میتوانید ببینید که کاربر به پایگاه داده demo دسترسی دارد. سپس، یک جدول تست به نام todo_list بسازید با دستور زیر:
mysql > CREATE TABLE demo.todo_list (item_id INT AUTO_INCREMENT, content VARCHAR(255), PRIMARY KEY(item_id));
حالا، قصد داریم چند داده را به جدول آزمایشی اضافه کنیم. برای اطمینان از تفاوت مقادیر در هر ردیف، دستور زیر را با مقادیر مختلف چند بار اجرا خواهیم کرد:
# mysql > INSERT INTO demo.todo_list (content) VALUES ("My first important task");
پس از اضافه کردن دادهها، همیشه خوب است که تایید کنید دادهها به درستی ذخیره شدهاند. برای این کار، دستور زیر را اجرا کنید:
# mysql > SELECT * FROM demo.todo_list;
پس از تایید اینکه دادهها به درستی در جدول آزمایشی ذخیره شدهاند، از کنسول MySQL خارج شوید:
# mysql > exit;
نتیجهگیری
با موفقیت در نصب پکیج LAMP روی سیستم اوبونتوی خود، شما یک قدم بزرگ برداشتید. این پکیج قدرتمند، یک پایه محکم برای شروع و حمایت از وبسایتها و برنامههای دینامیک میسازد. دنبال یک گزینه عالی برای میزبانی هستید؟ زویپ سرور، با قیمتهای رقابتی برای سرورهای اختصاصی و ارائه فوری آنها انتخاب ایدهآلی است. چه به دنبال یک سرور اختصاصی باشید، یک سرور قادر به مدیریت ترافیک سنگین، یا یک سرور مجازی پرقدرت، میتوانید روی زویپ سرور به عنوان شریک قابل اعتماد میزبانی خود حساب کنید.