مجموعه “LAMP” گروهی از نرمافزارهای منبع باز یا همان اوپن سورس است که معمولا به صورت یکجا نصب میشود تا سرور لینوکسی شما را برای میزبانی سایت و اپلیکیشن مورد نظر شما آماده کند.در حقیقت شما با نصب و راه اندازی LAMP یک سرور میزبانی وب برای سایت فروشگاهی و یا هر نوع سایت و برنامه دیگری راه اندازی می نمایید و دیگر نیازی برای خرید هاست از شرکت های ارایه دهنده خدمات میزبانی وب ندارید.
“LAMP” درواقع حروف اول این کلمات میباشد: Linux که سیستم عامل ماست، Apache که به عنوان web server ایفای نقش میکند، MySQL که پایگاه داده وبسایت ما خواهد بود و PHP که محتوای داینامیک یا پویا را پردازش میکند.در حقیقت کلیه صفحاتی از سایت که با کدهای php نوشته شده اند توسط مفسر php اجرا خواهند شد.به راحتی با نصب این سرویس ها می توانید سرور خود را تبدیل به یک سرور میزبانی وب نمایید.
در این راهنمای نصب قرار است پکیج “LAMP”را بر روی سرور Debian 9 نصب کنیم.
پیشنیاز:
پیشنهاد می گردد که از کاربر root که بالاترین سطح دسترسی را در سیستم عامل لینوکس دارد برای راه اندازی LAMP استفاده نمایید در غیر این صورت می توانید یک کاربر معمولی ایجاد کرده و کلیه دستورات زیر را با استفاده از دستور sudo اجرا کنید.این مورد مستلزم این است که از سوی مدیر سرور کاربر عادی ایجاد شده عضو گروه sudoers شود.
Apache جزء بهترین و محبوبترین سرورهای وب در جهان است. Apache بسیار معتبر است و در ابعاد گستردهای در تاریخ وب از آن استفاده شده است که آن را به یک انتخاب پیشفرض بسیار مناسب برای هاست یک وبسایت تبدیل کرده است.
Apache را با دستور apt که مدیر بسته قدرتمند Debian است نصب کنید:
$ sudo apt update
$ sudo apt install apache2
چون از دستور sudo استفاده میکنید از شما میخواهد رمز عبور کاربریتان را وارد کنید تا اعتبار شما را تایید کند.
به محض وارد کردن رمز عبور apt به شما نشان میدهد که قرار است کدام پکیجها را نصب کند. همچنین به شما میگوید که چقدر فضا برای نصب آنها نیاز است. Y را وارد کرده و کلید enter را فشار دهید. اکنون فرآیند نصب آغاز میشود.
در ادامه، باید مراحل تنظیمات اولیه سرور را همراه با نصب و راهاندازی فایروال UFW دنبال کرده باشید، و اکنون از باز بودن دسترسی HTTP و HTTPS اطمینان حاصل کنید.
بعد از نصب Apache بر روی Debian 9، پروفایل اپلیکیشنهایی که با استفاده از آنها میتوانید تنظیمات فایروال خود را دستخوش تغییرات کنید، توسط UFW لود میشود.
لیست کامل این پروفایلها را با اجرای دستور زیر مشاهده کنید:
$ sudo ufw app list
پروفایلهای WWW برای مدیریت درگاههای مورد استفاده توسط سرورهای وبسایت استفاده می شود:
Output
Available applications:
. . .
WWW
WWW Cache
WWW Full
WWW Secure
. . .
اگر شما پروفایل WWW Full را ملاحظه کنید، متوجه خواهید شد که ترافیک روی درگاههای ۸۰ و ۴۴۳ برقرار است:
$ sudo ufw app info “WWW Full”
Output
Profile: WWW Full
Title: Web Server (HTTP,HTTPS)
Description: Web Server (HTTP,HTTPS)
Ports:
۸۰, ۴۴۳/tcp
برای این پروفایل دسترسی برای سرویسهای HTTP و HTTPS را باز کنید:
$ sudo ufw allow in “WWW Full”
روش دیگر برای بازکردن پرت های ۸۰ و ۴۴۳ که برای بازدید سایت شما الزامی است و می بایست حتما این پرت ها از سمت فایروال باز باشند دستورات زیر است اگر از روش گفته شده در بالا استفاده نکردید می توانید با دو خط دستور زیر پرت های اعلام شده را از سمت فایروال باز کنید:
$ sudo ufw allow 80
$ sudo ufw allow 443
حال میتوانید با مشاهده کردن public IP خود در مرورگر، همه چیز را واکاوی و بررسی کنید تا از درست کار کردن هر آنچه برنامهریزی شده اطمینان حاصل کنید:
http://your_server_ip
با ورود به IP صفحه پیشفرض Debian 9 Apache را مشاهده خواهید کرد که به منظور تست و بررسی اطلاعات طراحی شده است. این صفحه شبیه به تصویر زیر است:
اگر این صفحه را مشاهده کردید یعنی web server شما به درستی نصب شده است و از طریق فایروال قابل دسترسی است.
اگر public IP سرور خود را نمیدانید، راههای زیادی برای پیدا کردن آن وجود دارد. معمولا این آدرس همان آدرسی است که شما برای اتصال به سرورتان از طریق SSH استفاده میکنید.
$ sudo apt install curl
$ curl http://icanhazip.com
دستور زیر را وارد کنید:
ip addr show eth0 | grep inet | awk ‘{ print $2; }’ | sed ‘s/\/.*$//’
این دستور برای شما دو یا سه خروجی به همراه دارد که همه ی آن ها صحیح میباشند. اما کامپیوتر شما ممکن است تنها یکی از آنها را ساپورت کند؛ در نتیجه هر دو روش را امتحان کنید.
فرقی نمیکند که از کدام روش برای پیدا کردن آدرس IP استفاده میکنید. شما میتوانید با وارد کردن آن در آدرس بار مرورگر صفحه پیشفرض Apache را مشاهده کنید.
حال که web server خود را نصب کردید و از عملکرد آن مطمئن شدید، زمان آن رسیده است که MariaDB را نصب کنید. MariaDB سیستم مدیریت پایگاه داده است. اساسا کار آن این است که پایگاه داده را، یعنی محل ذخیرهسازی اطلاعات وبسایت، سازماندهی کند و دسترسی به آن را ممکن سازد.
برای نصب دیتابیس Mariadb از دستور زیر استفاده کنید:
$ sudo apt install mariadb-server
همچنین این دستور لیستی از پکیجهایی که باید install کنید به همراه اطلاعاتی راجع به حجم مورد نیازشان به شما ارائه میدهد. برای ادامه کلید Y را فشار دهید.
هنگامی که فرایند نصب تکمیل شد، یک اسکریپت امنیتی ساده که همراه با MariaDB نصب شده را اجرا کنید تا برخی پیش فرض های خطرناک را حذف کرده و دسترسی به سیستم دیتابیس ما را اندکی محدود کند. این اسکریپت تعاملی را با اجرای دستور زیر راه اندازی کنید:
$ sudo mysql_secure_installation
با اجرای این اسکریپت، تعدادی Prompt بالا میآید که با کمک آن میتوانید تغییراتی در گزینههای امنیتی نصب MariaDB اعمال کنید. اولین prompt از شما میخواهد تا کلمه عبور کاربر root پایگاه داده خود را وارد نمایید. این اکانت در MariaDB یک اکانت مدیریتی شناخته میشود که دسترسیها و امکانات آن را افزایش میدهد. به این فکر کنید که حسابی شبیه به کاربر root خود سرور است (هرچند اکانتی که الان میسازید یک اکانت ویژه MariaDB به حساب میآید). چون به تازگی MariaDB را نصب کردید و هنوز تغییراتی در تنظیمات آن ایجاد نکردهاید، پسورد را خالی بگذارید و فقط کلید enter را در محیط prompt بفشارید.
Prompt بعدی که ظاهر میشود، از شما میخواهد اگر مایلید برای root پایگاه داده خود یک رمز عبور تعیین کنید. کلید N را وارد کنید و enter را فشار دهید. در Debian حساب root MariaD شدیدا به نگهداری خودکار سیستم وابسته است. بنابراین نباید تنظیمات روشهای احراز هویت اکانت را تغییر دهید.
با چنین دستکاریها و ایجاد تغییراتی پکیج به روزرسانی میتواند database سیستم را با حذف کردن دسترسی اکانت ادمین دچار اخلال و خرابی کند. جلوتر نحوه ایجاد یک حساب اضافی برای دستیابی به رمزعبور را به هنگام ایجاد اخلال در احرازهویت بررسی میکنیم.
از اینجا به بعد میتوانید کلید Y را وارد و سپس enter را فشار دهید تا پیشفرضها را برای مابقی سؤالات بپذیرید. این کار باعث میشود برخی از اکانتهای ناشناس و تست پایگاه داده حذف شوند، ورودهای غیر مجاز و خارج از محیط را به سیستم غیرفعال میکند و تغییرات جدید را با توجه به تغییرات دلخواه شما اعمال میکند.پیشنهاد می شود تا برای مدیریت دیتابیس خود یک اکانت مدیریتی جدید ایجاد کنید.
برای انجام این کار، یک اکانت جدید میسازید و آن را برای مثال admin مینامید، درست با قابلیتهای اکانت root، با این تفاوت که این اکانت به منظور احراز هویت از طریق کلمه عبور ساخته میشود. برای ساخت این اکانت prompt مربوط به MariaDB را از پایانهی خود باز کنید:
$ sudo mariadb
حال، میتوانیم یک یوزر جدید با دسترسیهای اکانت root و امکان دسترسی از طریق پسورد را ایجاد کنیم. username و پسورد خود را مطابق سلیقه خود تغییر دهید:
MariaDB [(none)]> GRANT ALL ON *.* TO ‘admin’@’localhost’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
دسترسی ها را محک بزنید تا از فعال بودن و ذخیره بودن آنها در اکانت حاضر اطمینان حاصل کنید:
MariaDB [(none)]> FLUSH PRIVILEGES;
دستور زیر را دنبال کنید تا از MariaDB خارج شوید:
MariaDB [(none)]> exit
از این پس هر موقع که میخواستید با اکانت جدید مدیریتی خود به پایگاه داده خود دسترسی داشته باشید، کافی است با همان یوزر با پسورد از طریق درستور زیر اعبار سنجی شوید:
$ mariadb -u admin -p
در این هنگام، سیستم دیتابیس شما تماما آماده است و میتوانید به سراغ نصب PHP، آخرین ماژول مجموعه «LAMP» بروید.
PHP یک مفسر است که کدها را به منظور نمایش محتوای داینامیک یا پویا پردازش میکند. همچنین میتواند اسکریپتها را اجرا کند، به پایگاه داده MariaDB متصل شود تا اطلاعات را دریافت کند و محتوای پردازش شده را به web server شما انتقال دهد تا به نمایش درآیند.
یک بار دیگر میتوانید از مدیر بسته apt برای نصب PHP استفاده کنید. همچنین این بار پکیجهای Helper را اضافه کنید تا کد PHP تحت سرور Apache اجرا شود و بتواند با دیتابیس MariaDB ارتباط برقرار کند:
$ sudo apt install php libapache2-mod-php php-mysql
این دستور باید بدون هیچ مشکلی PHP را نصب نماید و قرار است برای اطمینان آن را تست کنیم.
به صورت پیش فرض در صورتی که درخواستی به وب سرور برسد در ابتدا Apache دنبال فایلی به اسم index.html میگردد. هدف ما این است که به web server بگوییم که فایلهای PHP را نسبت به بقیه فایلها اولویت قرار دهد تا Apache در ابتدا به جای فایل index.html فایل index.php را جستجو کند.
برای این منظور دستور زیر را وارد کنید تا فایل dir.conf را در یک ویرایشگر متن، که دارای دسترسیهای root میباشد، باز نماید:
$ sudo nano /etc/apache2/mods-enabled/dir.conf
پس از وارد کردن دستوربالا ویرایشگر این پیغام را نمایش میدهد:
/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
فایل PHP index (در بالا هایلایت شده است) را درست بعد از DirectoryIndex انتقال دهید، به این شکل:
/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
وقتی که این عملیات به اتمام رسید، ذخیره کنید و با فشردن کلیدهای CTRL+X خارج شوید. با وارد کردن Y ذخیره سازی را تایید کنید و سپس با فشردن دکمه ENTER محل ذخیره سازی فایل را تایید نمایید.
بعد از این مرحله، وب سرور Apache را restart کنید تا تغییرات ایجاد شده را تشخیص دهد. برای restart کردن دستور زیر را تایپ کنید:
$ sudo systemctl restart apache2
همچنین میتوانید وضعیت سرویس apache2 را با استفاده از systemctl بررسی کنید:
$ sudo systemctl status apache2
نمونه نتیجه ظاهر شده:
Sample Output
apache2.service – The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2018-09-04 18:23:03 UTC; 9s ago
Process: 22209 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
Process: 22216 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 22221 (apache2)
Tasks: 6 (limit: 4915)
CGroup: /system.slice/apache2.service
├─۲۲۲۲۱ /usr/sbin/apache2 -k start
├─۲۲۲۲۲ /usr/sbin/apache2 -k start
├─۲۲۲۲۳ /usr/sbin/apache2 -k start
├─۲۲۲۲۴ /usr/sbin/apache2 -k start
├─۲۲۲۲۵ /usr/sbin/apache2 -k start
└─۲۲۲۲۶ /usr/sbin/apache2 -k start
برای افزایش کارایی PHP، میتوانید ماژولهای دیگری را نصب کنید. برای مشاهده ماژولها و کتابخانههای موجود برای PHP، نتایج جستجوی apt search را با دستور less ترکیب کنید، صفحهای که به شما اجازه میدهد از طریق نتایج دستورات دیگر را بازخوانی و بررسی کنید:
$ apt search php- | less
از کلیدهای جهت برای بالا پایین کردن نتایج استفاده کنید، سپس برای خروج کلید Q را بفشارید.
نتایج ظاهر شده تمام گزینههای اختیاری است که میتوانید نصب کنید. همچنین به شما توضیح مختصری از هرکدام ارائه میدهد:
Output
Sorting…
Full Text Search…
bandwidthd-pgsql/stable 2.0.1+cvs20090917-10 amd64
Tracks usage of TCP/IP and builds html files with graphs
bluefish/stable 2.2.9-1+b1 amd64
advanced Gtk+ text editor for web and software development
cacti/stable 0.8.8h+ds1-10 all
web interface for graphing of monitoring systems
cakephp-scripts/stable 2.8.5-1 all
rapid application development framework for PHP (scripts)
ganglia-webfrontend/stable 3.6.1-3 all
cluster monitoring toolkit – web front-end
haserl/stable 0.9.35-2+b1 amd64
CGI scripting program for embedded environments
kdevelop-php-docs/stable 5.0.3-1 all
transitional package for kdevelop-php
kdevelop-php-docs-l10n/stable 5.0.3-1 all
transitional package for kdevelop-php-l10n
…
:
برای اینکه دقیقتر هر ماژول و کارایی آن را بشناسید، میتوانید در اینترنت آن را جستجو کنید. به جای آن نیز میتوانید توضیحات مفصلتری راجع به هر یک بخوانید و برای این کار کافی است دستور زیر را وارد کنید:
$ apt show package_name
در اینجا به شما نتایج زیادی همراه با توضیحات جامعتری Description در اختیار شما قرار میدهد.
برای مثال، برای اینکه ماژول php-cli را بهتر درک کنید و بشناسید، باید دستور زیر را وارد نمایید:
$ apt show php-cli
با وارد کردن دستور بالا، علاوه بر اطلاعات بسیار زیاد دیگری که دریافت میکنید، نتیجهای شبیه به این را مشاهده خواهید کرد:
Output
…
Description: command-line interpreter for the PHP scripting language (default)
This package provides the /usr/bin/php command interpreter, useful for
testing PHP scripts from a shell or performing general shell scripting tasks.
.
PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
open source general-purpose scripting language that is especially suited
for web development and can be embedded into HTML.
.
This package is a dependency package, which depends on Debian’s default
PHP version (currently 7.0).
…
اگر بعد از بررسی های انجام شده تصمیم به نصب پکیجی داشتید، میتوانید این کار را با استفاده از دستور apt install انجام دهید.
مثلا اگر خواستید php-cli را نصب کنید، دستور زیر را وارد کنید:
$ sudo apt install php-cli
اگر میخواستید بیش از یک ماژول را نصب کنید، باید تک تک ماژول ها را با استفاده از یک فاصله (space) در یک لیست از هم جدا نمایید و دستور apt install را دنبال کنید، مانند زیر:
$ sudo apt install package1 package2 …
اکنون دیگر تمام مجموعه “LAMP” نصب و تنظیم شده است. در نهایت پیش از اعمال تغییرات بیشتر، به تست PHP میرسیم تا اگر مشکلی وجود داشت آن را نیز رفع نماییم.
برای آزمایش اینکه آیا سرور به درستی برای PHP پیکربندی شده است یا خیر، یک اسکریپت خیلی ساده PHP به نام info.php را ایجاد نمایید. برای اینکه Apache این فایل را پیدا کند و به آن دسترسی داشته باشد، باید آن فایل را در یک مسیر خاص ذخیره کنید
در Debian 9، این مسیر در /var/www/html/ قرار دارد. با اجرای دستور زیر، فایل را ایجاد کرده و در مسیر مورد نظر ذخیره کنید:
$ sudo nano /var/www/html/info.php
این دستور یک فایل خالی را باز میکند. متن زیر که یک کد PHP معتبر است را در فایل وارد نمایید:
<?php
phpinfo();
?>
هنگامی که تمام شد، ذخیره کنید و فایل را ببندید.
اکنون میتوانید آزمایش کنید و ببینید که آیا web server شما میتواند محتوای ایجاد شده را با این اسکریپت PHP نمایش دهد یا خیر. برای اینکه این موضوع را امتحان کنید، فقط کافی است صفحه زیر را در مرورگر خود مشاهده کنید. در اینجا شما مجددا به آدرس public IP خود احتیاج دارید.
آدرسی که باید مشاهده کنید لینک زیر است:
http://your_server_IP_address/info.php
صفحهای که با آن مواجه خواهید شد شبیه به عکس زیر است:
این صفحه به شما اطلاعات بسیاری در مورد تنظیمات php می دهد. این صفحه برای عیب یابی کردن و رفع ایرادات احتمالی مفید است و خیال شما را از بابت اعمال صحیح تنظیمات راحت میکند.
اگر این مرحله موفقیت آمیز بود PHP درست مطابق انتظارات کار خواهد کرد.
بعد از این آزمایش باید فایل را حذف کنید چون میتواند اطلاعات مهمی از سرور را در اختیار اشخاص بیگانه قرار دهد. برای این منظور دستور زیر را اجرا کنید:
sudo rm /var/www/html/info.php
اگر مجددا به این اطلاعات احتیاج داشتید، بارها میتوانید این صفحه را ایجاد کنید.
اکنون که مجموعه “LAMP” را نصب نمودید، بستری دارید که به شما اجازه میدهد هرگونه وبسایت یا نرمافزاری را که میخواهید روی سرور خود نصب و اجرا کنید و گزینههای زیادی را پیش روی شما قرار خواهد داد.