نحوه نصب Linux, Apache, MySQL, PHP (LAMP) در اوبونتو ۱۶٫۰۴
معرفی
LAMP مجموعهای از نرمافزارهای منبع باز است که معمولاً با هم نصب میشوند تا سرور را قادر به میزبانی وبسایتها و برنامههای وب پویا کند. این عبارت مخفف سیستم عامل لینوکس با وب سرور آپاچی است. داده های سایت در پایگاه داده MySQL ذخیره می شود و محتوای پویا توسط PHP پردازش می شود.
در این راهنما، ما یک پشته LAMP را روی سرور اوبونتو ۱۶٫۰۴ نصب می کنیم. اوبونتو اولین نیاز ما را برآورده خواهد کرد: یک سیستم عامل لینوکس.
پیش نیازها
قبل از شروع با این راهنما، باید یک حساب کاربری جداگانه و غیر root با امتیازات sudo روی سرور خود تنظیم کنید. میتوانید با تکمیل مراحل ۱ تا ۴ در راهاندازی سرور اولیه ما برای آموزش اوبونتو ۱۶٫۰۴، نحوه انجام این کار را بیاموزید.
مرحله ۱ – نصب آپاچی و تنظیم فایروال
وب سرور آپاچی یکی از محبوب ترین وب سرورهای جهان است. این به خوبی مستند است و در بسیاری از تاریخچه وب مورد استفاده گسترده قرار گرفته است، که آن را به یک انتخاب پیش فرض عالی برای میزبانی وب سایت تبدیل می کند.
ما می توانیم آپاچی را به راحتی با استفاده از مدیریت بسته اوبونتو نصب کنیم. مدیرت بسته به ما این امکان را می دهد که اکثر نرم افزارها را بدون دردسر از مخزن نگهداری شده توسط اوبونتو نصب کنیم. در اینجا می توانید در مورد نحوه استفاده از apt اطلاعات بیشتری کسب کنید.
برای نتیجه ، ما می توانیم با تایپ این دستورات شروع به کار کنیم:
sudo apt-get update $
sudo apt-get install apache2 $
از آنجایی که ما از دستور sudo استفاده می کنیم، این عملیات با امتیازات root اجرا می شود. برای تأیید قصد شما از شما رمز عبور کاربر معمولی خود را می خواهد.
هنگامی که رمز عبور خود را وارد کردید، apt به شما می گوید که کدام بسته ها را در نظر دارد نصب کند و چه مقدار فضای اضافی دیسک را اشغال می کند. برای ادامه، y را فشار دهید و ENTER را فشار دهید و نصب ادامه خواهد یافت.
تنظیم Global ServerName برای سرکوب هشدارهای نحوی
در مرحله بعد، یک خط به فایل /etc/apache2/apache2.conf اضافه می کنیم تا یک پیام هشدار را سرکوب کنیم. در حالی که بی ضرر است، اگر ServerName را به صورت سراسری تنظیم نکنید، هنگام بررسی تنظیمات Apache خود برای خطاهای نحوی، اخطار زیر را دریافت خواهید کرد:
sudo apache2ctl configtest $
Output
AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message
Syntax OK
فایل پیکربندی اصلی را با ویرایش متن خود باز کنید:
sudo nano /etc/apache2/apache2.conf $
در داخل، در پایین فایل، دستور ServerName را اضافه کنید که به نام دامنه اصلی شما اشاره می کند. اگر نام دامنه مرتبط با سرور خود ندارید، می توانید از آدرس IP عمومی سرور خود استفاده کنید:
توجه: اگر آدرس IP سرور خود را نمیدانید، به بخش نحوه یافتن آدرس IP عمومی سرور خود بروید تا آن را پیدا کنید.
پس از اتمام کار فایل را ذخیره کرده و ببندید.
در مرحله بعد، خطاهای نحوی را با تایپ کردن بررسی کنید:
sudo nano apache2ctl configtest $
از آنجایی که ما دستور جهانی ServerName را اضافه کردیم، تمام چیزی که باید ببینید این است:
Output
Syntax OK
برای پیاده سازی تغییرات خود، آپاچی را مجددا راه اندازی کنید:
sudo nano systemctl restart apache2 $
اکنون می توانید شروع به تنظیم فایروال کنید.
تنظیم فایروال برای اجازه دادن به ترافیک وب
در مرحله بعد، با فرض اینکه دستورالعمل های اولیه راه اندازی سرور را برای فعال کردن فایروال UFW دنبال کرده اید، مطمئن شوید که فایروال شما به ترافیک HTTP و HTTPS اجازه می دهد. میتوانید مطمئن شوید که UFW یک نمایه برنامه برای Apache مانند این دارد:
sudo nano ufw app list $
Output
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
اگر به نمایه کامل آپاچی نگاه کنید، باید نشان دهد که ترافیک پورت های ۸۰ و ۴۴۳ را فعال می کند:
$ sudo ufw app info “Apache Full”
Output
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.
Ports:
۸۰,۴۴۳/tcp
اجازه ترافیک ورودی برای این نمایه:
$ sudo ufw allow in “Apache Full”
میتوانید با مراجعه به آدرس IP عمومی سرور خود در مرورگر وب خود فوراً یک بررسی دقیق انجام دهید تا مطمئن شوید که همه چیز طبق برنامه پیش رفته است (در صورت نداشتن این اطلاعات، به یادداشت زیر عنوان بعدی مراجعه کنید تا متوجه شوید که آدرس IP عمومی شما قبلا، پیش از این چیست.):
http://your_server_IP_address
صفحه وب پیشفرض اوبونتو ۱۶٫۰۴ آپاچی را مشاهده خواهید کرد که برای اهداف اطلاعاتی و آزمایشی در آنجا وجود دارد. باید چیزی شبیه این باشد:
اگر این صفحه را می بینید، اکنون وب سرور شما به درستی نصب شده و از طریق فایروال شما قابل دسترسی است.
پیدا کردن آدرس IP عمومی سرور شما
اگر نمی دانید آدرس IP عمومی سرورتان چیست، چند راه وجود دارد که می توانید آن را پیدا کنید. معمولاً این آدرسی است که برای اتصال به سرور خود از طریق SSH استفاده می کنید.
از خط فرمان، می توانید این را به چند روش پیدا کنید. ابتدا می توانید از ابزار iproute2 برای به دست آوردن آدرس خود با تایپ زیر استفاده کنید:
$ ip addr show eth0 | grep inet | awk ‘{ print $2; }’ | sed ‘s/\/.*$//’
این به شما دو یا سه خط را تحویل می دهد. همه آنها آدرس های صحیحی هستند، اما رایانه شما ممکن است فقط بتواند از یکی از آنها استفاده کند، بنابراین هر کدام را امتحان کنید.
یک روش جایگزین استفاده از ابزار curl برای تماس با یک طرف خارجی است تا به شما بگوید چگونه سرور شما را می بیند. می توانید این کار را با پرسیدن آدرس IP شما از یک سرور خاص انجام دهید:
$ sudo apt-get install curl
$ curl http://icanhazip.com
صرف نظر از روشی که برای دریافت آدرس IP خود استفاده می کنید، می توانید آن را در نوار آدرس مرورگر وب خود تایپ کنید تا به سرور خود دسترسی پیدا کنید.
مرحله ۲ – نصب MySQL
اکنون که وب سرور خود را راه اندازی کرده ایم، زمان نصب MySQL فرا رسیده است. MySQL یک سیستم مدیریت پایگاه داده است. اساساً، پایگاههای دادهای را میتواند اطلاعات را در آن ذخیره کند، سازماندهی کرده و امکان دسترسی به آنها را فراهم میکند.
باز هم می توانیم از apt برای بدست آوردن و نصب نرم افزار خود استفاده کنیم. این بار، ما همچنین برخی از بستههای کمکی دیگر را نصب میکنیم که به ما در برقراری ارتباط اجزای خود با یکدیگر کمک میکنند:
$ sudo apt-get install mysql-server
توجه: در این مورد، لازم نیست قبل از دستور، بهروزرسانی sudo apt-get را اجرا کنید. این به این دلیل است که ما اخیراً آن را در دستورات بالا برای نصب آپاچی اجرا کردیم. فهرست بسته در رایانه ما باید از قبل به روز باشد.
مجدداً، لیستی از بسته هایی که نصب خواهند شد، به همراه مقدار فضای دیسکی که آنها اشغال می کنند به شما نشان داده می شود. برای ادامه، Y را وارد کنید.
در حین نصب، سرور شما از شما می خواهد که یک رمز عبور برای کاربر “روت” MySQL انتخاب و تأیید کنید. این یک حساب مدیریتی در MySQL است که امتیازات را افزایش داده است. فکر کنید که شبیه به حساب ریشه برای خود سرور است (البته اکانتی که اکنون پیکربندی می کنید یک حساب ویژه MySQL است). مطمئن شوید که این یک رمز عبور قوی و منحصر به فرد است و آن را خالی نگذارید.
وقتی نصب کامل شد، میخواهیم یک اسکریپت امنیتی ساده را اجرا کنیم که برخی از پیشفرضهای خطرناک را حذف میکند و دسترسی به سیستم پایگاه داده ما را کمی قفل میکند. اسکریپت تعاملی را با اجرای زیر شروع کنید:
$ mysql_secure_installation
از شما خواسته می شود رمز عبوری را که برای حساب روت MySQL تعیین کرده اید وارد کنید. در مرحله بعد، از شما پرسیده می شود که آیا می خواهید VALIDATE PASSWORD PLUGIN را پیکربندی کنید.
هشدار: فعال کردن این ویژگی چیزی شبیه به قضاوت است. در صورت فعال بودن، پسوردهایی که با معیارهای مشخص شده مطابقت ندارند توسط MySQL با خطا رد می شوند. اگر از رمز عبور ضعیف همراه با نرم افزاری استفاده کنید که به طور خودکار اطلاعات کاربری MySQL مانند بسته های اوبونتو برای phpMyAdmin را پیکربندی می کند، مشکلاتی ایجاد می کند. غیرفعال کردن اعتبارسنجی بی خطر است، اما همیشه باید از رمزهای عبور قوی و منحصر به فرد برای اعتبار پایگاه داده استفاده کنید.
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:
از شما خواسته می شود که سطح اعتبارسنجی رمز عبور را انتخاب کنید. به خاطر داشته باشید که اگر ۲ را برای قوی ترین سطح وارد کنید، هنگام تلاش برای تنظیم رمز عبوری که حاوی اعداد، حروف بزرگ و کوچک و کاراکترهای خاص نباشد یا بر اساس کلمات فرهنگ لغت رایج باشد، خطا دریافت خواهید کرد.
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
اگر تأیید رمز عبور را فعال کرده باشید، یک رمز عبور قوی برای رمز عبور ریشه موجود نشان داده می شود و از شما می پرسد که آیا می خواهید آن رمز عبور را تغییر دهید. اگر از رمز عبور فعلی خود راضی هستید، n را برای “نه” در اعلان وارد کنید:
Using existing password for root.
Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n
برای بقیه سوالات، باید Y را فشار دهید و در هر اعلان کلید Enter را بزنید. با این کار برخی از کاربران ناشناس و پایگاه داده آزمایشی حذف می شود، ورود به سیستم ریشه از راه دور غیرفعال می شود و این قوانین جدید بارگیری می شود تا MySQL فوراً به تغییراتی که ما ایجاد کرده ایم احترام بگذارد.
در این مرحله، سیستم پایگاه داده شما اکنون راه اندازی شده است و می توانیم ادامه دهیم.
مرحله ۳ – نصب PHP
PHP جزء تنظیمات ما است که کد را برای نمایش محتوای پویا پردازش می کند. میتواند اسکریپتها را اجرا کند، برای دریافت اطلاعات به پایگاههای داده MySQL متصل شود و محتوای پردازش شده را برای نمایش به سرور وب ما تحویل دهد.
ما یک بار دیگر می توانیم از سیستم apt برای نصب اجزای خود استفاده کنیم. ما قصد داریم تعدادی بسته کمکی را نیز اضافه کنیم تا کد PHP بتواند در سرور آپاچی اجرا شود و با پایگاه داده MySQL ما صحبت کند:
$ sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql
اینجا باید بدون هیچ مشکلی PHP را نصب کند. ما این را در یک لحظه آزمایش می کنیم.
در بیشتر موارد، ما می خواهیم روشی را که آپاچی فایل ها را هنگام درخواست دایرکتوری ارائه می کند، تغییر دهیم. در حال حاضر، اگر کاربری از سرور درخواست دایرکتوری کند، آپاچی ابتدا به دنبال فایلی به نام index.html می گردد. ما می خواهیم به وب سرور خود بگوییم که فایل های PHP را ترجیح دهد، بنابراین ابتدا آپاچی را به دنبال یک فایل index.php می کنیم.
برای انجام این کار، این دستور را تایپ کنید تا فایل dir.conf در یک ویرایشگر متنی با حقوق ریشه باز شود:
$ sudo nano /etc/apache2/mods-enabled/dir.conf
شبیه این خواهد شد:
ما می خواهیم فایل فهرست PHP را که در بالا برجسته شده است، به اولین موقعیت بعد از مشخصات DirectoryIndex منتقل کنیم، مانند این:
وقتی کارتان تمام شد، فایل را ذخیره کرده و با فشار دادن Ctrl-X ببندید. شما باید ذخیره را با تایپ Y و سپس Enter بزنید تا مکان ذخیره فایل را تایید کنید.
پس از این، باید وب سرور آپاچی را مجددا راه اندازی کنیم تا تغییرات ما شناسایی شوند. می توانید این کار را با تایپ این انجام دهید:
$ sudo systemctl restart apache2
همچنین می توانیم با استفاده از systemctl وضعیت سرویس apache2 را بررسی کنیم:
$ sudo systemctl status apache2
Sample Output
● apache2.service – LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Wed 2016-04-13 14:28:43 EDT; 45s ago
Docs: man:systemd-sysv-generator(8)
Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
Tasks: 6 (limit: 512)
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
Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Stopped LSB: Apache2 web server.
Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Starting LSB: Apache2 web server…
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: * Starting Apache httpd web server apache2
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerNam
Apr 13 14:28:43 ubuntu-16-lamp apache2[13605]: *
Apr 13 14:28:43 ubuntu-16-lamp systemd[1]: Started LSB: Apache2 web server.
ماژول های PHP را نصب کنید
برای افزایش عملکرد PHP، می توانیم به صورت اختیاری ماژول های اضافی را نصب کنیم.
برای مشاهده گزینههای موجود برای ماژولها و کتابخانههای PHP، میتوانید نتایج جستجوی apt-cache را به کمتری وارد کنید، صفحهگری که به شما امکان میدهد در خروجی دستورات دیگر پیمایش کنید:
$ apt-cache search php- | less
از کلیدهای جهت دار برای حرکت به بالا و پایین و از q برای خروج استفاده کنید.
نتایج همه اجزای اختیاری هستند که می توانید نصب کنید. شرح مختصری برای هر کدام به شما می دهد:
libnet-libidn-perl – Perl bindings for GNU Libidn
php-all-dev – package depending on all supported PHP development packages
php-cgi – server-side, HTML-embedded scripting language (CGI binary) (default)
php-cli – command-line interpreter for the PHP scripting language (default)
php-common – Common files for PHP packages
php-curl – CURL module for PHP [default]
php-dev – Files for PHP module development (default)
php-gd – GD module for PHP [default]
php-gmp – GMP module for PHP [default]
…
:
برای دریافت اطلاعات بیشتر در مورد کارهایی که هر ماژول انجام می دهد، می توانید در اینترنت جستجو کنید یا می توانید با تایپ کردن به توضیحات طولانی بسته نگاه کنید:
$ apt-cache show package_name
خروجی های زیادی وجود خواهد داشت، با یک فیلد به نام Description-en که توضیح طولانی تری از عملکرد ماژول ارائه می دهد.
به عنوان مثال، برای اینکه بفهمیم ماژول php-cli چه کاری انجام می دهد، می توانیم این را تایپ کنیم:
$ apt-cache show php-cli
همراه با حجم زیادی از اطلاعات دیگر، چیزی شبیه به این پیدا خواهید کرد:
Output
…
Description-en: 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-get این کار را انجام دهید، همانطور که برای نرمافزارهای دیگر خود انجام میدادیم.
اگر تصمیم گرفتیم که php-cli چیزی است که به آن نیاز داریم، میتوانیم تایپ کنیم:
$ sudo apt-get install php-cli
اگر میخواهید بیش از یک ماژول را نصب کنید، میتوانید این کار را با فهرست کردن هر یک از آنها، جدا از یک فاصله، به دنبال دستور نصب apt-get انجام دهید، مانند این:
$ sudo apt-get install package1 package2 …
در این مرحله، زمینه LAMP شما نصب و پیکربندی می شود. ما هنوز باید PHP خود را آزمایش کنیم.
مرحله ۴ – پردازش PHP را روی سرور وب خود آزمایش کنید
برای اینکه آزمایش کنیم که سیستم ما به درستی برای PHP پیکربندی شده است، می توانیم یک اسکریپت PHP بسیار ابتدایی ایجاد کنیم.
ما این اسکریپت را info.php می نامیم. برای اینکه آپاچی فایل را پیدا کند و به درستی آن را ارائه کند، باید آن را در یک پوشه بسیار خاص که به آن روت وب می گویند ذخیره شود.
در اوبونتو ۱۶٫۰۴، این دایرکتوری در /var/www/html/ قرار دارد. ما می توانیم فایل را در آن مکان با تایپ کردن ایجاد کنیم:
$ sudo nano /var/www/html/info.php
با این کار یک فایل خالی باز می شود. می خواهیم متن زیر را که کد PHP معتبر است در داخل فایل قرار دهیم:
وقتی کارتان تمام شد، فایل را ذخیره و ببندید.
اکنون می توانیم آزمایش کنیم که آیا وب سرور ما می تواند محتوای تولید شده توسط اسکریپت PHP را به درستی نمایش دهد. برای امتحان کردن این، فقط باید از این صفحه در مرورگر وب خود بازدید کنیم. شما دوباره به آدرس IP عمومی سرور خود نیاز خواهید داشت.
آدرسی که می خواهید بازدید کنید این خواهد بود:
http://your_server_IP_address/info.php
صفحه ای که به آن می آیید باید چیزی شبیه به این باشد:
صفحه ای که به آن می آیید باید چیزی شبیه به این باشد:
این صفحه اساساً اطلاعاتی در مورد سرور شما از دیدگاه PHP به شما می دهد. برای اشکال زدایی و اطمینان از اینکه تنظیمات شما به درستی اعمال می شوند مفید است.
اگر این موفقیت آمیز بود، PHP شما همانطور که انتظار می رود کار می کند.
احتمالاً می خواهید این فایل را پس از این آزمایش حذف کنید زیرا در واقع می تواند اطلاعات مربوط به سرور شما را به کاربران غیرمجاز بدهد. برای این کار می توانید این را تایپ کنید:
$ sudo rm /var/www/html/info.php
در صورت نیاز به دسترسی مجدد به اطلاعات، همیشه می توانید این صفحه را دوباره ایجاد کنید.