جدول محتوایی
LEMP توسط چهار جزء منبع باز تشکیل شده است که برای ارائه صفحات وب پویا و برنامه های کاربردی وب استفاده می شود. LEMP دارای چهار علامت اختصاری سیستم عامل لینوکس در آن است. به ترتیب، L مخفف Linux، E برای Nginx (engine-x)، M برای MariaDB یا MySQL، و P مخفف PHP، Perl یا Python است.
می توانید متوجه شوید که MySQL در LEMP stack به عنوان سیستم مدیریت پایگاه داده در دسترس است. اما دبیان و برخی دیگر از توزیعهای لینوکس قرار است از MariaDB به جای MySQL استفاده کنند. قبل از همه، ابتدا باید VPS لینوکس خود را داشته باشید.
بخوانید: نحوه نصب MongoDB در اوبونتو 20.04
برای اینکه این آموزش بهتر عمل کند، لطفاً پیش نیازهای زیر را در نظر بگیرید:
یک کاربر non root با امتیازات sudo
نحوه نصب LEMP stack در Debian 10
با ما همراه باشید تا مراحل این راهنما را طی کنیم تا نحوه نصب LEMP stack روی سرور Debian 10 با استفاده از MariaDB به عنوان سیستم مدیریت پایگاه داده را به شما نشان دهیم. همچنین ممکن است علاقه مند به یادگیری نحوه نصب LEMP در CentOS 8 یا نحوه نصب LAMP در Debian 10 باشید.
مرحله 1: نحوه نصب وب سرور Nginx
شما Nginx محبوب را برای ارائه صفحات وب به بازدیدکنندگان خود انتخاب می کنید. مانند سایر نرم افزارهای این راهنما، مستقیماً از مخازن بسته پیش فرض Debian می آید. این بدان معنی است که می توانید از مجموعه مدیریت بسته apt برای تکمیل نصب استفاده کنید.
اگر قبلاً از apt استفاده نکردهاید، باید با بهروزرسانی فهرست بسته محلی خود شروع کنید. سپس سرور را نصب کنید:
sudo apt update sudo apt install nginx
Nginx پس از نصب شروع به اجرا می کند، همانطور که در Debian 10 طراحی شده است. اگر فایروال ufw در حال اجرا است، اتصال به Nginx را مجاز کنید. محدودترین نمایه را پیدا کنید که همچنان به ترافیکی که می خواهید آنها را فعال کند، اجازه می دهد. تا اینجا، شما SSL را برای سرور خود پیکربندی نکرده اید، بنابراین باید به ترافیک HTTP در پورت 80 اجازه دهید.
این را با استفاده از دستور زیر فعال کنید:
sudo ufw allow 'Nginx HTTP'
می توانید با تایپ کردن این تغییر را تأیید کنید:
sudo ufw status
Output
برای آزمایش اینکه آیا سرور در حال اجرا است یا خیر، با دسترسی به نام دامنه سرور یا آدرس IP عمومی در مرورگر وب خود، آن را بررسی کنید. ممکن است متوجه شوید که هیچ نام دامنهای به سمت سرور خود ندارید و آدرس IP عمومی سرور خود را نمیدانید. این راه حل برای پیدا کردن آن است:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
شما از دستور بالا برای چاپ چند آدرس IP استفاده می کنید تا هر کدام را به نوبه خود در مرورگر وب خود امتحان کنید. در ادامه می توانید یکی از آدرس هایی را که در مرورگر وب خود دریافت می کنید تایپ کنید تا شما را به آن ببرد
صفحه فرود پیش فرض Nginx:
http://your_domain_or_IP
اگر صفحه بالا را مشاهده کردید، Nginx را با موفقیت نصب کرده اید.
مرحله 2: نحوه نصب MariaDB
در این مرحله باید سیستم دیتابیس را نصب کنید تا بتوانید داده ها را برای سایت خود ذخیره و مدیریت کنید زیرا وب سرور دارید.
بسته متا mysql-server که به طور سنتی برای نصب سرور MySQL استفاده می شد، با پیش فرض mysql-server در Debian 10 جایگزین شد.
این متا بسته به MariaDB، یک انجمن از سرور اصلی MySQL توسط Oracle، ارجاع میدهد و در حال حاضر سرور پایگاه داده سازگار با MySQL پیشفرض است که در مخازن مدیریت بسته مبتنی بر دبیان موجود است.
با این حال، به شما توصیه می شود که با استفاده از بسته واقعی برنامه، سرور mariadb، با نصب MariaDB، متاپکیج را جایگزین کنید.
برای نصب این نرم افزار دستور زیر را تایپ کنید:
sudo apt install mariadb-server
به شما توصیه می شود پس از نصب، یک اسکریپت امنیتی را اجرا کنید که از قبل با MariaDB نصب شده است. می توانید از آن برای حذف برخی تنظیمات پیش فرض ناامن و قفل کردن دسترسی به سیستم پایگاه داده خود استفاده کنید. اسکریپت تعاملی را با اجرای زیر شروع کنید:
sudo mysql_secure_installation
از اسکریپت برای عبور از یک سری دستورات استفاده کنید که در آن می توانید تغییراتی در تنظیمات MariaDB خود ایجاد کنید. برای اولین درخواستی که از شما می خواهد رمز عبور ریشه پایگاه داده فعلی را وارد کنید، آماده باشید. این را نباید با ریشه سیستم اشتباه گرفت. کاربر ریشه پایگاه داده یک کاربر اداری با امتیازات کامل بر روی سیستم پایگاه داده است. از آنجایی که شما به تازگی MariaDB را نصب کرده اید و هنوز هیچ تغییری در پیکربندی انجام نداده اید، این رمز عبور خالی خواهد بود، بنابراین فقط کافیست ENTER را در هنگام درخواست فشار دهید.
بیایید ببینیم درخواست بعدی چه خواهد بود. از شما پرسیده می شود که آیا ترجیح می دهید رمز عبور ریشه پایگاه داده را تنظیم کنید. از آنجایی که MariaDB از یک روش احراز هویت ویژه برای کاربر root استفاده می کند که معمولاً ایمن تر از استفاده از رمز عبور است، نیازی به تنظیم آن ندارید. N را تایپ کرده و سپس ENTER را فشار دهید. برای پذیرش پیشفرضها برای تمام سؤالات بعدی، Y و سپس ENTER را فشار دهید.
با این کار کاربران ناشناس و پایگاه داده آزمایشی حذف می شوند، ورود به سیستم ریشه از راه دور غیرفعال می شود و این قوانین جدید بارگیری می شود تا MariaDB فوراً به تغییراتی که ایجاد کرده اید احترام بگذارد.
وقتی کارتان تمام شد، با تایپ کردن، وارد کنسول MariaDB شوید:
sudo mariadb
این به سرور MariaDB به عنوان ریشه کاربر پایگاه داده مدیریتی متصل می شود که با استفاده از sudo هنگام اجرای این دستور استنباط می شود.
Output
توجه: برای اتصال به عنوان کاربر روت مجبور به ارائه رمز عبور نیستید. این می تواند امکان پذیر باشد زیرا روش احراز هویت پیش فرض برای کاربر اداری MariaDB به جای رمز عبور unix_socket است. این به سرور پایگاه داده کمک می کند تا ایمن تر باشد زیرا تنها کاربرانی که مجاز به ورود به عنوان کاربر root MariaDB هستند، کاربران سیستمی هستند که دارای امتیازات sudo هستند که از کنسول یا از طریق برنامه ای که با همان امتیازات اجرا می شود متصل می شوند. لطفاً در نظر داشته باشید که از نظر عملی، به این معنی است که نمیتوانید از کاربر ریشه پایگاه داده مدیریتی برای اتصال از برنامه PHP خود استفاده کنید.
همچنین، میتوانید حسابهای کاربری را با امتیازات گستردهتر برای هر پایگاه داده برای افزایش امنیت اختصاص دهید. زمانی که قصد دارید چندین پایگاه داده روی سرور خود میزبانی کنید، توصیه می شود.
برای نشان دادن چنین تنظیماتی، ما یک پایگاه داده با نام example_database و یک کاربر با نام example_user ایجاد می کنیم، اما می توانید این نام ها را با مقادیر مختلف جایگزین کنید.
دستور زیر را از کنسول MariaDB خود تایپ کنید تا یک پایگاه داده جدید ایجاد کنید.
MariaDB [(none)] CREATE DATABASE example_database;
پس از آن، شما آماده ایجاد یک کاربر جدید و دادن امتیازات کامل در پایگاه داده سفارشی که به تازگی ایجاد کرده اید هستید. برای دانستن بیشتر در مورد رمز عبور این کاربر به عنوان رمز عبور. اما به یاد داشته باشید که این مقدار را با یک رمز عبور امن به انتخاب خود جایگزین کنید.
MariaDB [(none)]> GRANT ALL ON example_database.* TO 'example_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
این به کاربر example_user امتیازات کاملی نسبت به پایگاه داده example_database می دهد و در عین حال از ایجاد یا تغییر سایر پایگاه های داده در سرور شما توسط کاربر جلوگیری می کند.
و برای اطمینان از ذخیره و در دسترس بودن آنها در جلسه جاری:
MariaDB [(none)]> FLUSH PRIVILEGES;
برای خروج از پوسته MariaDB:
MariaDB [(none)]> Exit
سپس، برای آزمایش اینکه آیا کاربر جدید مجوزهای مناسب را دارد، با ورود مجدد به کنسول MariaDB، این بار با استفاده از اعتبار کاربری سفارشی:
mariadb -u example_user -p
به پرچم -p در این دستور توجه کنید، که از شما می خواهد پسوردی را که هنگام ایجاد کاربر example_user استفاده می کنید، انتخاب کنید. پس از ورود به کنسول MariaDB، تأیید کنید که به پایگاه داده example_database دسترسی دارید:
MariaDB [(none)]> SHOW DATABASES;
Output
برای خروج از پوسته MariaDB، تایپ کنید:
MariaDB [(none)]> Exit
در این مرحله، سیستم پایگاه داده شما راه اندازی می شود و می توانید به نصب PHP، جزء نهایی پشته LEMP بروید.
مرحله 3: نحوه نصب PHP برای پردازش
پس از نصب Nginx و MySQL، اجازه دهید PHP را برای پردازش کد و تولید محتوای پویا برای وب سرور نصب کنیم. Nginx به یک برنامه خارجی نیاز دارد تا پردازش PHP را مدیریت کند و به عنوان پلی بین خود مفسر PHP و وب سرور عمل کند، در حالی که می دانیم Apache مفسر PHP را در هر درخواست جاسازی می کند. برای ارائه عملکرد بهتر در اکثر وب سایت های مبتنی بر OHP پس از نیاز به تنظیمات اضافی
شما باید php-fpm را که مخفف «PHP fastCGI process manager» است نصب کنید و به Nginx بگویید درخواستهای PHP را برای پردازش به این نرمافزار ارسال کند. علاوه بر این، شما به php-mysql نیاز دارید، یک ماژول PHP که به PHP اجازه می دهد با پایگاه های داده مبتنی بر MySQL ارتباط برقرار کند. بسته های اصلی PHP به طور خودکار به عنوان وابستگی نصب می شوند.
برای نصب بسته های php-fpm و php-mysql دستور زیر را تایپ کنید:
sudo apt install php-fpm php-mysql
مرحله 4: نحوه پیکربندی Nginx برای استفاده از پردازنده PHP
می توانید از بلوک های سرور برای کپسوله کردن جزئیات پیکربندی و میزبانی بیش از یک دامنه در یک سرور استفاده کنید. توجه داشته باشید که ما از your_domain به عنوان یک نام دامنه استفاده می کنیم.
میتوانید یک بلوک سرور را بهطور پیشفرض فعال کنید و برای ارائه اسناد خارج از یک فهرست در /var/www/html برای Nginx در Debian 10 پیکربندی شده است. ممکن است ببینید اگر چندین سایت را میزبانی کنید، مدیریت آن دشوار است، حتی اگر به خوبی کار میکند. برای یک سایت همچنین، میتوانید یک ساختار دایرکتوری در /var/www برای وبسایت your_domain ایجاد کنید و در صورتی که درخواست مشتری با سایتهای دیگر مطابقت نداشته باشد، به جای تغییر /var، /var/www/html را به عنوان دایرکتوری پیشفرض باقی بگذارید تا ارائه شود. /www/html
اکنون دایرکتوری وب ریشه برای your_domain به صورت زیر ایجاد کنید:
sudo mkdir /var/www/your_domain
سپس، مالکیت دایرکتوری را با متغیر محیطی $USER اختصاص دهید، که باید به کاربر فعلی سیستم شما اشاره کند:
sudo chown -R $USER:$USER /var/www/your_domain
سپس، با استفاده از ویرایشگر خط فرمان دلخواه خود، یک فایل پیکربندی جدید را در دایرکتوری sites-available Nginx باز کنید. در اینجا از نانو استفاده خواهیم کرد:
sudo nano /etc/nginx/sites-available/your_domain
با این کار یک فایل خالی جدید ایجاد می شود. چسباندن در پیکربندی زیر:
/etc/nginx/sites-available/your_domain
پیکربندی اولیه ای را مشاهده می کنید که به پورت 80 گوش می دهد و فایل ها را از webroot که ایجاد کرده اید ارائه می دهد. این فقط به درخواست هاست یا آدرس IP ارائه شده پس از server_name پاسخ می دهد و هر فایلی که به php. ختم می شود قبل از اینکه Nginx نتایج را برای کاربر ارسال کند توسط php-fpm پردازش می شود.
وقتی ویرایش به پایان رسید، فایل را ذخیره کرده و ببندید. اگر از nano برای ایجاد فایل استفاده کرده اید، این کار را با تایپ CTRL+X و سپس y و ENTER برای تایید انجام دهید.
پیکربندی خود را با پیوند دادن به فایل پیکربندی از دایرکتوری فعال سایت های Nginx فعال کنید:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
این به Nginx میگوید که دفعه بعد که بارگذاری مجدد میشود از پیکربندی استفاده کند. برای تست پیکربندی برای خطاهای نحوی دستور زیر را اجرا کنید:
sudo nginx -t
ممکن است با خطا مواجه شوید. برای حل آن می توانید به فایل پیکربندی خود برگردید تا قبل از ادامه، محتویات آن را مرور کنید.
وقتی آماده شدید، Nginx را دوباره بارگیری کنید تا تغییرات را اعمال کنید:
sudo systemctl reload nginx
در نهایت، یک فایل در فهرست اصلی وب جدید خود برای آزمایش پردازش PHP ایجاد خواهید کرد.
مرحله 5: نحوه ایجاد یک فایل PHP برای تست پیکربندی
تا اینجا، شما LEMP stack خود را دارید که اکنون باید به طور کامل راه اندازی شود. میتوانید آن را آزمایش کنید تا تأیید کنید که Nginx میتواند به درستی فایلهای php. را به پردازنده PHP شما تحویل دهد.
برای انجام این کار یک فایل PHP آزمایشی در روت سند خود ایجاد کنید. یک فایل جدید به نام info.php را در روت سند خود در ویرایشگر متن خود باز کنید:
nano /var/www/your_domain/info.php
خطوط زیر را تایپ کرده یا در فایل جدید قرار دهید. این یک کد PHP معتبر است که اطلاعات مربوط به سرور شما را برمی گرداند:
/var/www/your_domain/info.php
<?php phpinfo(); ?>
فایل را با تایپ CTRL+X و سپس y و ENTER ذخیره کرده و ببندید تا زمانی که آن را تمام کردید، آن را تأیید کنید.
اکنون می توانید با مراجعه به نام دامنه یا آدرس IP عمومی که در فایل پیکربندی Nginx خود تنظیم کرده اید و به دنبال آن /info.php به این صفحه در مرورگر وب خود دسترسی پیدا کنید:
http://your_domain/info.php
یک صفحه وب حاوی اطلاعات دقیق در مورد سرور خود خواهید دید:
به شما توصیه می شود پس از بررسی اطلاعات مربوط به سرور PHP خود از طریق آن صفحه، فایلی را که ایجاد کرده اید حذف کنید زیرا حاوی اطلاعات حساس در مورد محیط PHP و سرور دبیان شما است.
برای این کار از دستور زیر استفاده کنید:
rm /var/www/your_domain/info.php
هنگامی که دوباره به آن نیاز دارید، می توانید فایل را دوباره تولید کنید.
مرحله 6: نحوه تست اتصال پایگاه داده از طریق PHP (اختیاری)
یک جدول آزمایشی داده های ساختگی و پرس و جو برای محتویات آن از یک اسکریپت PHP ایجاد کنید تا به شما کمک کند آزمایش کنید که PHP قادر به اتصال به MariaDB و اجرای کوئری های پایگاه داده است یا خیر.
اگر موافق هستید، اولین قدم این است که کنسول MariaDB را با کاربر پایگاه داده ای که در مرحله 2 این راهنما ایجاد کرده اید، متصل کنید:
mariadb -u example_user -p
جدولی به نام todo_list ایجاد کنید. از کنسول MariaDB، عبارت زیر را اجرا کنید:
چند ردیف از مطالب را در جدول تست درج کنید. ممکن است بخواهید دستور بعدی را چند بار با استفاده از مقادیر مختلف تکرار کنید:
سپس، باید تأیید کنید که داده ها را در جدول خود ذخیره کرده اید
MariaDB [(none)]> SELECT * FROM example_database.todo_list;
Output
پس از تأیید اینکه داده های معتبری در جدول آزمایشی خود دارید، می توانید از کنسول MariaDB خارج شوید:
MariaDB [(none)]> Exit
پس از این، می توانید اسکریپت PHP را ایجاد کنید که به MariaDB متصل می شود و محتوای شما را پرس و جو می کند. بنابراین، می توانید با استفاده از ویرایشگر دلخواه خود، یک فایل PHP جدید در فهرست وبرووت سفارشی خود ایجاد کنید. ما از نانو استفاده می کنیم:
nano /var/www/your_domain/todo_list.php
محتوای زیر را به اسکریپت PHP خود اضافه کنید:
پس از ویرایش فایل را ذخیره کرده و ببندید.
انتظار می رود اکنون با مراجعه به نام دامنه یا آدرس IP عمومی که در فایل پیکربندی Nginx خود تنظیم کرده اید و به دنبال آن /todo_list.php به این صفحه در مرورگر وب خود دسترسی داشته باشید:
http://your_domain/todo_list.php
شما باید صفحه ای مانند این را ببینید که محتوایی را که در جدول تست خود درج کرده اید نشان می دهد:
این بدان معناست که محیط PHP شما برای اتصال و تعامل با سرور MariaDB شما آماده است.