بسته LEMP (یا Linux, NginX, MariaDB, PHP) ترکیبی از نرم افزارهای متن باز است که به نوعی برای توسعه نرم افزارهای داینامیک روی یک سرور لینوکس نصب میشود. در این مقاله، ما به شما نحوه نصب و راه اندازی وب سرور Nginx، سیستم مدیریت دیتابیس MariaDB و PHP (در غالب مجموعه LEMP) در محیط دبیان 10 را شرح خواهیم داد.
همچنین توصیه میشود مطالعه کنید :
آموزش نصب LAMP در Debian 10 Server
اگر چه LEMP به صورت نرمال از MySQL به عنوان سیستم مدیریت دیتابیس استفاده میکند، اما یکسری از توزیع های لینوکسی مانند دبیان از MariaDB به عنوان جایگزینی برای MySQL استفاده میکنند.
محیط عملیاتی مورد نیاز :
نصب مینیمال Debian 10 (Buster)
نحوه نصب وب سرور Nginx در Debian 10
انجین ایکس اوپن سورس، سبک، قدرتمند و راحت برای پیکربندی HTTP و همچنین سرور reverse proxy، سرور mail proxy و یک سرور TCP/UDP proxy با یک ساختار ماژولار میباشد.
بعضی از قابلیت های ابتدایی آن شامل پشتیبانی از فایل های static و index همچنین ساپورت از عملیات کش سریع برای FastCGI، uwsgi، SCGI و سرورهای Memcached میباشد، همچنین برای load balance مورد استفاده قرار میگیرد و از پروتکل های SSL و TLS SNI پشتیبانی میکند علاوه بر این با اولویت بالاتر علاوه بر HTTP1 از HTTP2 هم پشتیبانی میکند.
برای نصب پکیج Nginx از پکیج منیجر apt در دبیان همانند زیر استفاده کنید.
به محض تکمیل عملیات نصب، این سرویس روی systemd فعال خواهد شد تا بتوان آنرا استارت کرد و به منظور بالا آمدن اتوماتیک سرویس بعد از ریبوت سیستم enable میشود.
همچنین توصیه میشود مقالات زیر را مطالعه کنید :
پشت صحنه داستان init و systemd - چرا در لینوکس systemd باید جایگزین init شود
systemd جایگزین init در لینوکس
شما همچنین میتوانید از دستورات مهم زیر برای start, restart, stop, و reload تنظیمات سرور انجین ایکس تحت systemd استفاده کنید.
سپس اگر فایروال UFW روی سیستم تان در حال اجراست (که معمولا به صورت پیش فرض غیرفعال است) شما نیاز دارید که پورت 80 (HTTP) و 443 (HTTPS) را به منظور مجاز کردن ترافیک ورودی روی انجین ایکس باز کنید. برای این کار از دستورات زیر استفاده کنید.
در اینجا نیاز هست که از درست نصب شدن nginx مطمئن شوید که آیا در حال اجرا میباشد و همچنین قادر به سرویس دهی به صفحات وب را دارد یا خیر. برای این منظور یک مرورگر وب باز کنید و آدرس زیر را برای دسترسی به صفحه وب پیش فرض انجین ایکس روی دبیان وارد کنید.
نصب MariaDB روی Debian 10
اکنون، شما نیاز دارید که یک سیستم مدیریت دیتابیس نصب کنید تا قادر به ذخیره و مدیریت اطلاعات وب سایت خود یا اپلیکیشن وب خود باشید. Debian 10 به صورت پیش فرض MariaDB را به عنوان جایگزینی برای MySQL پشتیبانی میکند.
برای نصب دیتابیس MariaDB دستور زیر را اجرا کنید.
همچنین توصیه میشود مطالعه کنید :
بررسی احراز هویت و تغییرات جدید در MariaDB 10.04
دستورات MySQL/MariaDB (بخش 1)
سپس وضعیت سرویس MariaDB را با توجه به اینکه به صورت اتوماتیک توسط systemd استارت شده بررسی میکنیم تا از در حال اجرا بودن آن مطمئن شویم.
برای مدیریت سرویس MariaDB (عملیات start, restart, stop و reload) تحت systemd میتوانید از دستورات زیر استفاده کنید.
سرویس MariaDB به صورت پیش فرض امنیتی ندارد. شما نیاز دارید که یک شل اسکریپت که در پکیج موجود میباشد را اجرا کنید که شما را قادر میسازد امنیت دیتابیس را بهبود ببخشید.
بعد از اجرای اسکریپت یک سری سوال های زیر را برای تغییر تنظیمات پیش فرض MariaDB همانند تصاویر زیر از شما خواهد پرسید. در صورتیکه تنظیمات خاصی مد نظر ندارید با "y" به همه سوالات پاسخ دهید.
نصب PHP-FPM (مخفف Fast Process Manager) در Debian 10
بر خلاف آپاچی و سایر وب سرورها، انجین ایکس به صورت پیش فرض پشتیبانی برای PHP ندارد و از PHP-FPM برای بررسی کردن درخواست های صفحات PHP استفاده میکند. سرویس PHP-FPM در حقیقت جایگزینی برای سرویس FastCGI پی اچ پی میباشد که امکان بررسی و رسیدگی کردن درخواست های یک وب سایت با لود بالا را با استفاده از پروسس های worker فراهم میآورد.
برای نصب PHP-FPM ورژن 7.3 و همچنین یک ماژول PHP برای برقراری ارتباط با سیستم دیتابیس MariaDB/MySQL دستور زیر را اجرا کنید.
بعد از اینکه PHP-FPM نصب شد، اسکریپت systemd نیز برای آن فعال خواهد شد که بتوان با آن سرویس PHP-FPM را استارت کرد و همچنین بعد از ریبوت سیستم برای استارت اتوماتیک آن، سرویس را enable میکند که بعد از بوت شدن سیستم به صورت اتوماتیک اجرا شود. برای بررسی در حال اجرا بود سرویس دستور زیر را اجرا کنید.
همچنین شما میتوانید تنظیمات سرویس PHP-FPM را تحت systemd همانند زیر start, restart stop, و reload کنید.
سپس شما نیاز دارید که با ایجاد یکسری تغییرات در فایل کانفیگ /etc/php/7.3/fpm/php.ini سرویس PHP-FPM را امن کنید. توسط یک ویرایشگر متن دلخواه خود فایل زیر را باز کنید.
به دنبال عبارت ;cgi.fix_pathinfo=1 بگردید و آنرا با حذف کردن ; از ابتدای خط از کامنت در بیاورید، سپس مقدار آنرا برابر با 0 بگذارید. این گزینه از اینکه انجین ایکس صفحات غیر PHP را همانند صفحات PHP اجرا کند، جلوگیری میکند.
همچنین توصیه میشود : 5 نمونه از بهترین روش ها برای امنیت و نگهداری سرورهای لینوکس
به صورت پیش فرض PHP-FPM کانفیگ شده است تا روی یک سوکت unix در اینجا /run/php/php7.3-fpm.sock در حال گوش دادن (listen) باشد، که در فایل کانفیگ /etc/php/7.3/fpm/pool.d/www.conf تعریف شده است. شما باید همه بلاک های سرور خود را (یا virtual host ها) به گونه ای کانفیگ کنید که در صورت پردازش و سرویس دادن به صفحات PHP، از این سوکت استفاده کنند.
شما میتوانید از تنظیمات پیش فرض server block موجود در انجین ایکس در فایل /etc/nginx/sites-available/default استفاده کنید و آنرا تست کنید.
به دنبال بخش زیر بگردید و برای پاس دادن اسکریپت های PHP به سرور FastCGI همانطور که در تصویر زیر میبینید آنها را از کامنت در بیاورید.
سپس از اوکی بودن ساختار تنظیمات انجین ایکس با استفاده از دستور زیر مطمئن شوید.
اگر تنظیمات انجین اکس اوکی بود به منظور اعمال آخرین تغییرات سرویس های nginx و php7.3-fpm را همانند زیر ریست کنید.
تست عملکرد PHP-FPM روی Nginx
بعد از تنظیمات PHP-FPM و Nginx شما نیاز دارید که کارایی هر دو را برای سرویس دهی صفحات PHP به کلاینت ها تست کنید. برای این منظور یک اسکریپت ساده PHP در داکیومنت روت اصلی وب سرور خود همانند زیر ایجاد کنید.
در نهایت یک مرورگر باز کنید و آدرس زیر را وارد کنید تا تنظیمات PHP روی سیستم خود که توسط فانکشن phpinfo() تولید میشوند را مشاهده کنید.
نتیجه :
در این مقاله ما به شما نحوه نصب و تنظیمات یک سرور LEMP روی Debian 10 را شرح دادیم. اگر هر گونه نظر یا سوالی دارید آنرا با ما مطرح کنید.
همچنین توصیه میشود مطالعه کنید :
آموزش نصب LAMP در Debian 10 Server
اگر چه LEMP به صورت نرمال از MySQL به عنوان سیستم مدیریت دیتابیس استفاده میکند، اما یکسری از توزیع های لینوکسی مانند دبیان از MariaDB به عنوان جایگزینی برای MySQL استفاده میکنند.
محیط عملیاتی مورد نیاز :
نصب مینیمال Debian 10 (Buster)
نحوه نصب وب سرور Nginx در Debian 10
انجین ایکس اوپن سورس، سبک، قدرتمند و راحت برای پیکربندی HTTP و همچنین سرور reverse proxy، سرور mail proxy و یک سرور TCP/UDP proxy با یک ساختار ماژولار میباشد.
بعضی از قابلیت های ابتدایی آن شامل پشتیبانی از فایل های static و index همچنین ساپورت از عملیات کش سریع برای FastCGI، uwsgi، SCGI و سرورهای Memcached میباشد، همچنین برای load balance مورد استفاده قرار میگیرد و از پروتکل های SSL و TLS SNI پشتیبانی میکند علاوه بر این با اولویت بالاتر علاوه بر HTTP1 از HTTP2 هم پشتیبانی میکند.
برای نصب پکیج Nginx از پکیج منیجر apt در دبیان همانند زیر استفاده کنید.
کد PHP:
# apt update
# apt install nginx
به محض تکمیل عملیات نصب، این سرویس روی systemd فعال خواهد شد تا بتوان آنرا استارت کرد و به منظور بالا آمدن اتوماتیک سرویس بعد از ریبوت سیستم enable میشود.
کد PHP:
# systemctl status nginx
همچنین توصیه میشود مقالات زیر را مطالعه کنید :
پشت صحنه داستان init و systemd - چرا در لینوکس systemd باید جایگزین init شود
systemd جایگزین init در لینوکس
شما همچنین میتوانید از دستورات مهم زیر برای start, restart, stop, و reload تنظیمات سرور انجین ایکس تحت systemd استفاده کنید.
کد PHP:
# systemctl start nginx
# systemctl restart nginx
# systemctl stop nginx
# systemctl reload nginx
# systemctl status nginx
سپس اگر فایروال UFW روی سیستم تان در حال اجراست (که معمولا به صورت پیش فرض غیرفعال است) شما نیاز دارید که پورت 80 (HTTP) و 443 (HTTPS) را به منظور مجاز کردن ترافیک ورودی روی انجین ایکس باز کنید. برای این کار از دستورات زیر استفاده کنید.
کد PHP:
# ufw allow 80
# ufw allow 443
# ufw status
در اینجا نیاز هست که از درست نصب شدن nginx مطمئن شوید که آیا در حال اجرا میباشد و همچنین قادر به سرویس دهی به صفحات وب را دارد یا خیر. برای این منظور یک مرورگر وب باز کنید و آدرس زیر را برای دسترسی به صفحه وب پیش فرض انجین ایکس روی دبیان وارد کنید.
کد PHP:
http://SERVER_IP/
OR
http://localhost/
نصب MariaDB روی Debian 10
اکنون، شما نیاز دارید که یک سیستم مدیریت دیتابیس نصب کنید تا قادر به ذخیره و مدیریت اطلاعات وب سایت خود یا اپلیکیشن وب خود باشید. Debian 10 به صورت پیش فرض MariaDB را به عنوان جایگزینی برای MySQL پشتیبانی میکند.
برای نصب دیتابیس MariaDB دستور زیر را اجرا کنید.
کد PHP:
# apt install mariadb-server
همچنین توصیه میشود مطالعه کنید :
بررسی احراز هویت و تغییرات جدید در MariaDB 10.04
دستورات MySQL/MariaDB (بخش 1)
سپس وضعیت سرویس MariaDB را با توجه به اینکه به صورت اتوماتیک توسط systemd استارت شده بررسی میکنیم تا از در حال اجرا بودن آن مطمئن شویم.
کد PHP:
# systemctl status mariadb
برای مدیریت سرویس MariaDB (عملیات start, restart, stop و reload) تحت systemd میتوانید از دستورات زیر استفاده کنید.
کد PHP:
# systemctl start mariadb
# systemctl restart mariadb
# systemctl stop mariadb
# systemctl reload mariadb
سرویس MariaDB به صورت پیش فرض امنیتی ندارد. شما نیاز دارید که یک شل اسکریپت که در پکیج موجود میباشد را اجرا کنید که شما را قادر میسازد امنیت دیتابیس را بهبود ببخشید.
کد PHP:
# mysql_secure_installation
نصب PHP-FPM (مخفف Fast Process Manager) در Debian 10
بر خلاف آپاچی و سایر وب سرورها، انجین ایکس به صورت پیش فرض پشتیبانی برای PHP ندارد و از PHP-FPM برای بررسی کردن درخواست های صفحات PHP استفاده میکند. سرویس PHP-FPM در حقیقت جایگزینی برای سرویس FastCGI پی اچ پی میباشد که امکان بررسی و رسیدگی کردن درخواست های یک وب سایت با لود بالا را با استفاده از پروسس های worker فراهم میآورد.
برای نصب PHP-FPM ورژن 7.3 و همچنین یک ماژول PHP برای برقراری ارتباط با سیستم دیتابیس MariaDB/MySQL دستور زیر را اجرا کنید.
کد PHP:
# apt install php-fpm php-mysqli
بعد از اینکه PHP-FPM نصب شد، اسکریپت systemd نیز برای آن فعال خواهد شد که بتوان با آن سرویس PHP-FPM را استارت کرد و همچنین بعد از ریبوت سیستم برای استارت اتوماتیک آن، سرویس را enable میکند که بعد از بوت شدن سیستم به صورت اتوماتیک اجرا شود. برای بررسی در حال اجرا بود سرویس دستور زیر را اجرا کنید.
کد PHP:
# systemctl status php7.3-fpm
همچنین شما میتوانید تنظیمات سرویس PHP-FPM را تحت systemd همانند زیر start, restart stop, و reload کنید.
کد PHP:
# systemctl start php7.3-fpm
# systemctl restart php7.3-fpm
# systemctl stop php7.3-fpm
# systemctl reload php7.3-fpm
# systemctl status php7.3-fpm
سپس شما نیاز دارید که با ایجاد یکسری تغییرات در فایل کانفیگ /etc/php/7.3/fpm/php.ini سرویس PHP-FPM را امن کنید. توسط یک ویرایشگر متن دلخواه خود فایل زیر را باز کنید.
کد PHP:
# vi /etc/php/7.3/fpm/php.ini
کد PHP:
cgi.fix_pathinfo=0
همچنین توصیه میشود : 5 نمونه از بهترین روش ها برای امنیت و نگهداری سرورهای لینوکس
به صورت پیش فرض PHP-FPM کانفیگ شده است تا روی یک سوکت unix در اینجا /run/php/php7.3-fpm.sock در حال گوش دادن (listen) باشد، که در فایل کانفیگ /etc/php/7.3/fpm/pool.d/www.conf تعریف شده است. شما باید همه بلاک های سرور خود را (یا virtual host ها) به گونه ای کانفیگ کنید که در صورت پردازش و سرویس دادن به صفحات PHP، از این سوکت استفاده کنند.
شما میتوانید از تنظیمات پیش فرض server block موجود در انجین ایکس در فایل /etc/nginx/sites-available/default استفاده کنید و آنرا تست کنید.
کد PHP:
# vi /etc/nginx/sites-available/default
به دنبال بخش زیر بگردید و برای پاس دادن اسکریپت های PHP به سرور FastCGI همانطور که در تصویر زیر میبینید آنها را از کامنت در بیاورید.
کد PHP:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}
سپس از اوکی بودن ساختار تنظیمات انجین ایکس با استفاده از دستور زیر مطمئن شوید.
کد PHP:
# nginx -t
اگر تنظیمات انجین اکس اوکی بود به منظور اعمال آخرین تغییرات سرویس های nginx و php7.3-fpm را همانند زیر ریست کنید.
کد PHP:
# systemctl restart php7.3-fpm
# systemctl restart nginx
تست عملکرد PHP-FPM روی Nginx
بعد از تنظیمات PHP-FPM و Nginx شما نیاز دارید که کارایی هر دو را برای سرویس دهی صفحات PHP به کلاینت ها تست کنید. برای این منظور یک اسکریپت ساده PHP در داکیومنت روت اصلی وب سرور خود همانند زیر ایجاد کنید.
کد PHP:
# echo '<?php phpinfo(); ?>' | tee /var/www/html/info.php
در نهایت یک مرورگر باز کنید و آدرس زیر را وارد کنید تا تنظیمات PHP روی سیستم خود که توسط فانکشن phpinfo() تولید میشوند را مشاهده کنید.
کد PHP:
http://SERVER_IP/info.php
OR
http://localhost/info.php
نتیجه :
در این مقاله ما به شما نحوه نصب و تنظیمات یک سرور LEMP روی Debian 10 را شرح دادیم. اگر هر گونه نظر یا سوالی دارید آنرا با ما مطرح کنید.