مقدمه
پشته “LAMP” گروهی از نرمافزارهای منبع باز است که معمولاً با هم نصب میشوند تا سرور را قادر به میزبانی وبسایتهای پویا و برنامههای وب نوشته شده با PHP کند. این اصطلاح مخفف سیستم عامل لینوکس با وب سرور آپاچی است. داده های سایت در پایگاه داده MySQL ذخیره می شود و محتوای پویا توسط PHP پردازش می شود.
در این راهنما، شما یک پشته LAMP را در سرور اوبونتو 22.04 راه اندازی خواهید کرد. این مراحل برای اوبونتو نسخه 18.04 و بالاتر ثابت هستند.
پیش نیازها
برای تکمیل این آموزش، باید یک سرور در حال اجرا Ubuntu، به همراه یک کاربر غیر ریشه با امتیازات sudo و یک فایروال فعال داشته باشید. برای راهنمایی در مورد نحوه تنظیم این موارد، لطفاً توزیع خود را از این لیست انتخاب کنید و راهنمای نصب اولیه سرور ما را دنبال کنید.
مرحله 1 – نصب آپاچی و به روز رسانی فایروال
وب سرور آپاچی یکی از محبوب ترین وب سرورهای جهان است. به خوبی مستند شده است، دارای یک جامعه فعال از کاربران است، و در بسیاری از تاریخچه وب مورد استفاده گسترده قرار گرفته است، که آن را به یک انتخاب عالی برای میزبانی وب سایت تبدیل می کند.
با به روز رسانی کش مدیر بسته شروع کنید. اگر این اولین باری است که از sudo در این جلسه استفاده میکنید، از شما خواسته میشود رمز عبور کاربر خود را ارائه کنید تا تأیید کنید که از امتیازات مناسب برای مدیریت بستههای سیستم با apt برخوردار هستید:
sudo apt update
سپس آپاچی را با استفاده از:
sudo apt install apache2
از شما خواسته می شود که نصب آپاچی را تأیید کنید. با فشردن Y و سپس ENTER تایید کنید.
پس از اتمام نصب، باید تنظیمات فایروال خود را برای اجازه دادن به ترافیک HTTP تنظیم کنید. ابزار پیکربندی فایروال پیش فرض اوبونتو فایروال بدون عارضه (UFW) نام دارد. دارای پروفایل های کاربردی مختلفی است که می توانید از آنها استفاده کنید. برای فهرست کردن تمام پروفایل های برنامه UFW موجود، این دستور را اجرا کنید:
sudo ufw app list
Output
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
در اینجا معنی هر یک از این پروفایل ها آمده است:
- آپاچی: این نمایه فقط پورت 80 (ترافیک وب عادی و رمزگذاری نشده) را باز می کند.
- Apache Full: این نمایه هم پورت 80 (ترافیک وب عادی و رمزگذاری نشده) و هم پورت 443 (ترافیک رمزگذاری شده TLS/SSL) را باز می کند.
- Apache Secure: این نمایه فقط پورت 443 (ترافیک رمزگذاری شده TLS/SSL) را باز می کند.
در حال حاضر، بهتر است فقط اتصالات را در پورت 80 مجاز کنید، زیرا این یک نصب آپاچی جدید است و شما هنوز یک گواهی TLS/SSL پیکربندی نشدهاید تا ترافیک HTTPS روی سرور خود را مجاز کند.
برای مجاز کردن ترافیک فقط در پورت 80، از نمایه آپاچی استفاده کنید:
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 عمومی سرور خود در مرورگر وب، مطمئن شوید که همه چیز طبق برنامه پیش رفته است (یادداشت زیر عنوان بعدی را مشاهده کنید تا در صورت نداشتن این اطلاعات، آدرس IP عمومی شما چیست. قبلا، پیش از این):
http://your_server_ip
صفحه وب پیشفرض آپاچی اوبونتو برای مقاصد اطلاعاتی و آزمایشی وجود دارد. در زیر نمونه ای از صفحه وب پیش فرض آپاچی برای اوبونتو 22.04 آمده است:
اگر بتوانید این صفحه را مشاهده کنید، وب سرور شما به درستی نصب شده و از طریق فایروال شما قابل دسترسی است.
چگونه آدرس IP عمومی سرور خود را پیدا کنیم
اگر نمیدانید آدرس IP عمومی سرورتان چیست، راههای مختلفی برای پیدا کردن آن وجود دارد. معمولاً این آدرسی است که برای اتصال به سرور خود از طریق SSH استفاده می کنید.
چند راه مختلف برای انجام این کار از خط فرمان وجود دارد. ابتدا می توانید از ابزار iproute2 برای دریافت آدرس IP خود با تایپ این استفاده کنید:
ip addr show ens3 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
این به شما دو یا سه خط را پس می دهد. همه آنها آدرس های صحیحی هستند، اما رایانه شما ممکن است فقط بتواند از یکی از آنها استفاده کند، بنابراین هر کدام را امتحان کنید.
یک روش جایگزین استفاده از ابزار curl برای تماس با یک طرف خارجی است تا به شما بگوید چگونه سرور شما را می بیند. این کار با پرسیدن از یک سرور خاص انجام می شود که آدرس IP شما چیست:
curl http://icanhazip.com
هر روشی را که انتخاب می کنید، آدرس IP خود را در مرورگر وب خود تایپ کنید تا بررسی کنید که سرور شما در حال اجرا است.
مرحله 2 – نصب MySQL
اکنون که یک وب سرور دارید، باید سیستم پایگاه داده را نصب کنید تا بتوانید داده ها را برای سایت خود ذخیره و مدیریت کنید. MySQL یک سیستم مدیریت پایگاه داده محبوب است که در محیط های PHP استفاده می شود.
مجدداً از apt برای تهیه و نصب این نرم افزار استفاده کنید:
sudo apt install mysql-server
وقتی از شما خواسته شد، نصب را با تایپ Y و سپس ENTER
تأیید کنید.
هنگامی که نصب به پایان رسید، توصیه می شود یک اسکریپت امنیتی که از قبل با MySQL نصب شده است را اجرا کنید. این اسکریپت برخی از تنظیمات پیش فرض ناامن را حذف می کند و دسترسی به سیستم پایگاه داده شما را قفل می کند.
اسکریپت تعاملی را با اجرای زیر شروع کنید:
sudo mysql_secure_installation
این سؤال از شما میپرسد که آیا میخواهید VALIDATE PASSWORD PLUGIN
را پیکربندی کنید.
برای ادامه دادن بدون فعال کردن، به 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 را تنظیم کنید، سرور شما در مرحله بعدی از شما می خواهد که یک رمز عبور برای کاربر ریشه MySQL انتخاب و تأیید کنید. این را نباید با ریشه سیستم اشتباه گرفت. کاربر ریشه پایگاه داده یک کاربر اداری با امتیازات کامل بر روی سیستم پایگاه داده است. حتی اگر روش احراز هویت پیشفرض برای کاربر ریشه MySQL شامل استفاده از رمز عبور نیست، حتی زمانی که یک رمز عبور تنظیم شده است، باید یک رمز عبور قوی را در اینجا به عنوان یک اقدام ایمنی اضافی تعریف کنید.
اگر تأیید گذرواژه را فعال کرده باشید، قدرت رمز عبور رمز عبور ریشه ای که به تازگی وارد کرده اید به شما نشان داده می شود و سرور شما از شما می پرسد که آیا می خواهید با آن رمز عبور ادامه دهید یا خیر. اگر از رمز عبور فعلی خود راضی هستید، 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
این به سرور MySQL به عنوان ریشه کاربر پایگاه داده مدیریتی متصل می شود که با استفاده از sudo هنگام اجرای این دستور استنباط می شود. در زیر یک نمونه خروجی آورده شده است:
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 رمز عبور را تعریف کرده باشید. دلیل آن این است که روش احراز هویت پیشفرض برای کاربر MySQL اداری، unix_socket به جای رمز عبور است. اگرچه ممکن است این یک نگرانی امنیتی به نظر برسد، اما سرور پایگاه داده را ایمنتر میکند زیرا تنها کاربرانی که مجاز به ورود به عنوان کاربر ریشه MySQL هستند، کاربران سیستمی هستند که دارای امتیازات sudo هستند که از کنسول یا از طریق برنامهای که با همان امتیازات اجرا میشود متصل میشوند. . از نظر عملی، این بدان معناست که شما نمی توانید از کاربر ریشه پایگاه داده مدیریتی برای اتصال از برنامه PHP خود استفاده کنید. در صورتی که روش احراز هویت پیشفرض از unix_socket به رمز عبور تغییر کند، تنظیم یک رمز عبور برای حساب ریشه MySQL به عنوان یک محافظت عمل میکند.
برای افزایش امنیت، بهتر است حسابهای کاربری اختصاصی با امتیازات کمتر گسترده برای هر پایگاه داده تنظیم شده باشد، به خصوص اگر قصد دارید چندین پایگاه داده روی سرور خود میزبانی کنید.
سرور MySQL شما اکنون نصب و ایمن شده است. در مرحله بعد، PHP، کامپوننت نهایی در پشته LAMP را نصب خواهید کرد.
مرحله 3 – نصب PHP
شما Apache را برای ارائه محتوای خود و MySQL را برای ذخیره و مدیریت داده های خود نصب کرده اید. PHP جزء تنظیمات ما است که کد را برای نمایش محتوای پویا به کاربر نهایی پردازش می کند. علاوه بر بسته php، به php-mysql نیاز دارید، یک ماژول PHP که به 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
تغییر فهرست راهنمای آپاچی (اختیاری)
در برخی موارد، شما می خواهید روشی را که آپاچی فایل ها را هنگام درخواست دایرکتوری ارائه می کند، تغییر دهید. در حال حاضر، اگر کاربری از سرور درخواست دایرکتوری کند، آپاچی ابتدا به دنبال فایلی به نام index.html می گردد. میخواهیم به وب سرور بگوییم که فایلهای PHP را بر سایرین ترجیح دهد تا ابتدا آپاچی را به دنبال یک فایل index.php بگردد. اگر این کار را انجام ندهید، یک فایل index.html قرار داده شده در ریشه سند برنامه همیشه بر فایل index.php اولویت دارد.
برای انجام این تغییر، فایل پیکربندی dir.conf را در یک ویرایشگر متن انتخابی خود باز کنید. در اینجا، از نانو استفاده خواهیم کرد:
sudo nano /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 (که در بالا مشخص شده است) را به اولین موقعیت بعد از مشخصات DirectoryIndex منتقل کنید، مانند این:
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
وقتی کارتان تمام شد، فایل را ذخیره کرده و با فشار دادن CTRL+X ببندید. ذخیره را با تایپ Y تایید کنید و سپس ENTER را بزنید تا محل ذخیره فایل را تایید کنید.
پس از این، وب سرور آپاچی را مجددا راه اندازی کنید تا تغییرات شما شناسایی شود. با دستور زیر می توانید این کار را انجام دهید:
sudo systemctl restart apache2
همچنین می توانید با استفاده از systemctl وضعیت سرویس apache2 را بررسی کنید:
sudo systemctl status apache2
Sample Output
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Thu 2021-07-15 09:22:59 UTC; 1h 3min ago
Main PID: 3719 (apache2)
Tasks: 55 (limit: 2361)
CGroup: /system.slice/apache2.service
├─3719 /usr/sbin/apache2 -k start
├─3721 /usr/sbin/apache2 -k start
└─3722 /usr/sbin/apache2 -k start
Jul 15 09:22:59 ubuntu1804 systemd[1]: Starting The Apache HTTP Server...
Jul 15 09:22:59 ubuntu1804 apachectl[3694]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' di
Jul 15 09:22:59 ubuntu1804 systemd[1]: Started The Apache HTTP Server.
برای خروج از این وضعیت، Q
را فشار دهید.
نصب برنامه های افزودنی PHP (اختیاری)
برای گسترش عملکرد PHP، می توانید چند ماژول اضافی را نصب کنید. برای مشاهده گزینههای موجود برای ماژولها و کتابخانههای PHP، نتایج جستجوی apt را به کمتری وارد کنید، پیجری که به شما امکان میدهد در خروجی دستورات دیگر پیمایش کنید:
apt search php- | less
از کلیدهای جهت دار برای حرکت به بالا و پایین استفاده کنید و برای خروج از دکمه Q را فشار دهید.
نتایج همه اجزای اختیاری هستند که می توانید نصب کنید. توضیحات مختصری برای هر کدام به شما می دهد:
bandwidthd-pgsql/bionic 2.0.1+cvs20090917-10ubuntu1 amd64
Tracks usage of TCP/IP and builds html files with graphs
bluefish/bionic 2.2.10-1 amd64
advanced Gtk+ text editor for web and software development
cacti/bionic 1.1.38+ds1-1 all
web interface for graphing of monitoring systems
ganglia-webfrontend/bionic 3.6.1-3 all
cluster monitoring toolkit - web front-end
golang-github-unknwon-cae-dev/bionic 0.0~git20160715.0.c6aac99-4 all
PHP-like Compression and Archive Extensions in Go
haserl/bionic 0.9.35-2 amd64
CGI scripting program for embedded environments
kdevelop-php-docs/bionic 5.2.1-1ubuntu2 all
transitional package for kdevelop-php
kdevelop-php-docs-l10n/bionic 5.2.1-1ubuntu2 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 Ubuntu's default
PHP version (currently 7.2).
…
اگر پس از تحقیق، تصمیم گرفتید که میخواهید بستهای را نصب کنید، میتوانید با استفاده از دستور apt install مانند سایر نرمافزارها این کار را انجام دهید.
اگر تصمیم گرفتید که php-cli چیزی است که به آن نیاز دارید، می توانید تایپ کنید:
sudo apt install php-cli
اگر میخواهید بیش از یک ماژول را نصب کنید، میتوانید این کار را با فهرست کردن هر یک از ماژولها، جدا از یک فاصله، به دنبال دستور apt install انجام دهید، مانند این:
sudo apt install package1 package2 ...
در این مرحله، پشته LAMP شما نصب و پیکربندی می شود. قبل از انجام هر کار دیگری، توصیه می کنیم یک میزبان مجازی آپاچی راه اندازی کنید تا بتوانید جزئیات پیکربندی سرور خود را ذخیره کنید.
در این مرحله، پشته LAMP شما کاملاً عملیاتی است، اما قبل از آزمایش تنظیمات خود با یک اسکریپت PHP، بهتر است یک میزبان مجازی آپاچی مناسب برای نگهداری فایل ها و پوشه های وب سایت خود راه اندازی کنید.
مرحله 4 – ایجاد یک میزبان مجازی برای وب سایت شما
هنگام استفاده از وب سرور آپاچی، میتوانید میزبانهای مجازی (مشابه بلوکهای سرور در Nginx) ایجاد کنید تا جزئیات پیکربندی را کپسوله کنید و بیش از یک دامنه را از یک سرور واحد میزبانی کنید. در این راهنما، ما دامنه ای به نام 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 Apache باز کنید. در اینجا، از نانو استفاده خواهیم کرد:
sudo nano /etc/apache2/sites-available/your_domain.conf
با این کار یک فایل خالی جدید ایجاد می شود. با نام دامنه خود پیکربندی bare-bones زیر را اضافه کنید:
<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>
پس از اتمام، فایل را ذخیره کرده و ببندید. اگر از نانو استفاده می کنید، این کار را با فشار دادن CTRL+X، سپس Y و ENTER انجام دهید.
با این پیکربندی VirtualHost، به آپاچی میگوییم که your_domain را با استفاده از /var/www/your_domain بهعنوان دایرکتوری ریشه وب سرویس دهد. اگر میخواهید آپاچی را بدون نام دامنه آزمایش کنید، میتوانید گزینههای ServerName و ServerAlias را با اضافه کردن یک علامت پوند (#) در ابتدای خطوط هر گزینه حذف یا نظر دهید.
اکنون، از a2ensite برای فعال کردن میزبان مجازی جدید استفاده کنید:
sudo a2ensite your_domain
ممکن است بخواهید وب سایت پیش فرض نصب شده با آپاچی را غیرفعال کنید. اگر از نام دامنه سفارشی استفاده نمی کنید، این مورد ضروری است، زیرا در این مورد تنظیمات پیش فرض آپاچی میزبان مجازی شما را لغو می کند. برای غیرفعال کردن وبسایت پیشفرض آپاچی، تایپ کنید:
sudo a2dissite 000-default
برای اطمینان از اینکه فایل پیکربندی شما حاوی خطاهای نحوی نیست، دستور زیر را اجرا کنید:
sudo apache2ctl configtest
در نهایت، Apache را دوباره بارگیری کنید تا این تغییرات اعمال شوند:
sudo systemctl reload apache2
وب سایت جدید شما اکنون فعال است، اما ریشه وب /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 ارجحیت دارد.
نکته ای درباره DirectoryIndex در آپاچی
با تنظیمات پیشفرض DirectoryIndex در آپاچی، فایلی با نام index.html همیشه بر فایل index.php اولویت دارد. این برای راه اندازی صفحات تعمیر و نگهداری در برنامه های PHP، با ایجاد یک فایل index.html موقت حاوی یک پیام آموزنده برای بازدیدکنندگان مفید است. از آنجایی که این صفحه بر صفحه index.php ارجحیت دارد، سپس به صفحه فرود برنامه تبدیل می شود. پس از پایان تعمیر و نگهداری، 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
در مرحله بعد، یک اسکریپت PHP ایجاد می کنیم تا آزمایش کنیم که PHP به درستی روی سرور شما نصب و پیکربندی شده است.
مرحله 5 – پردازش PHP را روی سرور وب خود آزمایش کنید
اکنون که یک مکان سفارشی برای میزبانی فایلها و پوشههای وبسایت خود دارید، یک اسکریپت تست PHP ایجاد کنید تا تأیید کنید که آپاچی قادر به رسیدگی و پردازش درخواستها برای فایلهای PHP است.
یک فایل جدید با نام info.php در پوشه ریشه وب سفارشی خود ایجاد کنید:
nano /var/www/your_domain/info.php
با این کار یک فایل خالی باز می شود. متن زیر را که کد PHP معتبر است، داخل فایل اضافه کنید:
<?php
phpinfo();
وقتی کارتان تمام شد، فایل را ذخیره و ببندید.
برای آزمایش این اسکریپت، به مرورگر وب خود بروید و به نام دامنه یا آدرس IP سرور خود دسترسی پیدا کنید و به دنبال آن نام اسکریپت، که در این مورد info.php است:
http://server_domain_or_IP/info.php
در اینجا نمونه ای از صفحه وب پیش فرض PHP آمده است:
این صفحه اطلاعاتی در مورد سرور شما از دیدگاه PHP ارائه می دهد. برای اشکال زدایی و اطمینان از اینکه تنظیمات شما به درستی اعمال می شوند مفید است.
اگر این صفحه را در مرورگر خود می بینید، نصب PHP شما همانطور که انتظار می رود کار می کند.
پس از بررسی اطلاعات مربوط به سرور PHP خود از طریق آن صفحه، بهتر است فایلی را که ایجاد کرده اید حذف کنید زیرا حاوی اطلاعات حساسی در مورد محیط PHP و سرور اوبونتو شما است. برای این کار از rm استفاده کنید:
sudo rm /var/www/your_domain/info.php
در صورت نیاز به دسترسی مجدد به اطلاعات، همیشه می توانید این صفحه را دوباره ایجاد کنید.
مرحله 6 – آزمایش اتصال پایگاه داده از PHP (اختیاری)
اگر می خواهید آزمایش کنید که آیا PHP قادر به اتصال به MySQL و اجرای پرس و جوهای پایگاه داده است یا خیر، می توانید یک جدول آزمایشی با داده های تست و پرس و جو برای محتویات آن از یک اسکریپت PHP ایجاد کنید. قبل از انجام این کار، باید یک پایگاه داده آزمایشی و یک کاربر MySQL جدید که به درستی برای دسترسی به آن پیکربندی شده است ایجاد کنید.
یک پایگاه داده با نام example_database و یک کاربر با نام example_user ایجاد کنید. می توانید این نام ها را با مقادیر مختلف جایگزین کنید.
ابتدا با استفاده از اکانت root به کنسول MySQL متصل شوید:
sudo mysql
برای ایجاد یک پایگاه داده جدید، دستور زیر را از کنسول MySQL خود اجرا کنید:
CREATE DATABASE example_database;
اکنون یک کاربر جدید بسازید و در پایگاه داده سفارشی که به تازگی ایجاد کرده اید، امتیازات کامل به او بدهید.
دستور زیر یک کاربر جدید به نام example_user ایجاد می کند که با متد caching_sha2_password احراز هویت می شود. ما رمز عبور این کاربر را به عنوان رمز عبور تعریف می کنیم، اما شما باید این مقدار را با یک رمز عبور ایمن به انتخاب خود جایگزین کنید.
CREATE USER 'example_user'@'%' IDENTIFIED 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)
سپس یک جدول آزمایشی با نام todo_list ایجاد کنید. از کنسول MySQL عبارت زیر را اجرا کنید:
CREATE TABLE example_database.todo_list (
item_id INT AUTO_INCREMENT,
content VARCHAR(255),
PRIMARY KEY(item_id)
);
چند ردیف از مطالب را در جدول تست درج کنید. دستور بعدی را چند بار با استفاده از مقادیر مختلف تکرار کنید تا جدول تست خود را پر کنید:
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
اکنون می توانید اسکریپت PHP را ایجاد کنید که به MySQL متصل می شود و محتوای شما را جستجو می کند. یک فایل PHP جدید در فهرست اصلی وب سفارشی خود با استفاده از ویرایشگر دلخواه خود ایجاد کنید:
nano /var/www/your_domain/todo_list.php
اسکریپت PHP زیر به پایگاه داده MySQL متصل می شود و محتوای جدول todo_list را جستجو می کند و نتایج را در یک لیست نمایش می دهد. اگر در اتصال پایگاه داده مشکلی وجود داشته باشد، یک استثنا ایجاد می کند.
این محتوا را به اسکریپت todo_list.php خود اضافه کنید، به یاد داشته باشید که example_user و رمز عبور خود را جایگزین کنید:
<?php
$user = "example_user";
$password = "password";
$database = "example_database";
$table = "todo_list";
try {
$db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
echo "<h2>TODO</h2><ol>";
foreach($db->query("SELECT content FROM $table") as $row) {
echo "<li>" . $row['content'] . "</li>";
}
echo "</ol>";
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
پس از اتمام ویرایش فایل را ذخیره کرده و ببندید.
اکنون می توانید با مراجعه به نام دامنه یا آدرس IP عمومی پیکربندی شده برای وب سایت خود و به دنبال آن /todo_list.php به این صفحه در مرورگر وب خود دسترسی پیدا کنید:
http://your_domain_or_IP/todo_list.php
این صفحه وب باید محتوایی را که در جدول آزمایشی خود درج کرده اید برای بازدیدکننده خود نشان دهد:
این بدان معناست که محیط PHP شما آماده اتصال و تعامل با سرور MySQL شما است.
نتیجه
در این راهنما، شما با استفاده از Apache به عنوان وب سرور و MySQL به عنوان یک سیستم پایگاه داده، پایه ای انعطاف پذیر برای ارائه وب سایت ها و برنامه های کاربردی PHP به بازدیدکنندگان خود ایجاد کرده اید.
بهعنوان گام بعدی فوری، باید اطمینان حاصل کنید که اتصالات به وب سرور خود، با سرویس دهی از طریق HTTPS، ایمن هستند. برای انجام این کار، می توانید از Let’s Encrypt در اوبونتو 22.04 / 20.04 / 18.04 استفاده کنید تا سایت خود را با یک گواهی رایگان TLS/SSL ایمن کنید.