آموزش نحوه نصب LEMP stack بر روی Debian 9

مقدمه

بهتر است تا قبل از بررسی نحوه نصب (Linux، Nginx، MySQL وPHP)  LEMP stack روی Debian 9 درباره دسته نرم‌افزاری  LEMP اطلاعات بیشتری داشته باشید.  LEMP stack یک گروه از نرم‌افزارهایی است که برای صفحات وب و وب اپلیکیشن­‌ها مورد استفاده قرار می‌گیرد. این نام مخفف برای سیستم عامل لینوکس با وب سرور Nginx در نظر گرفته شده است. داده‌هایی که در اینجا وجود دارند در پایگاه‌داده MySQL ذخیره شده و PHP پردازش پویا (dynamic processing) را بر عهده دارد.

در ادامه نحوه نصب (Linux، Nginx، MySQL و PHP ) LEMP stack بر روی Debian 9 برای علاقه‌مندان ارائه شده است.

پیش نیازهای اولیه

قبل از شروع نصب LEMP stack بر روی Debian 9، نیاز به یک حساب کاربری معمولی غیر root با دسترسی sudo بر روی سرور دارید. با وجود کاربری که از این دسترسی برخوردار است، برای این کار به راحتی می‌توانید تنظیمات اولیه کاربری با این مشخصات را با استفاده از راهنمای تنظیمات اولیه سرور با Debian 9 انجام دهید.

مرحله اول- نصب وب سرور Nginx

در این قسمت برای این که صفحات وب به خوبی برای بازدیدکنندگان به نمایش گذاشته شوند، از یک وب سرور جدید و کارآمد به نام Nginx استفاده خواهیم کرد.
تمام نرم‌افزارهایی که در اینجا استفاده می‌کنیم مستقیماً از منابع پیش فرض Debian بوده و برای تکمیل مراحل نصب می‌توانید از دستور apt برای مدیریت پکیج‌ها (package management) بهره بگیرید.

از آنجایی که برای اولین بار است که از apt در این session استفاده می‌کنید، باید local package index آن را آپدیت یا بروز رسانی کنید. سپس می‌توانید سرور را راه‌اندازی نمایید.

$ sudo apt update
$ sudo apt install nginx

پیکر‌بندی Nginx روی بستر Debian به گونه‌ای انجام می‌شود که به محض نصب اجرا شود.
در این مرحله اگر از فایروال ufwاستفاده می‌کنید، باید امکان ارتباط با Nginx را فراهم نمایید. همچنین با توجه به این که از SSL برای پیکر‌بندی سرور استفاده نشده است، تنها نیاز به عبور ترافیک روی پورت 80 خواهید داشت.

برای فعال کردن این حالت دستور زیر را تایپ کنید.

 $ sudo ufw allow 'Nginx HTTP'

با تایپ دستور زیر می‌توانید تغییر ایجاد شده را تایید کنید.

$ sudo ufw status

باید HTTP traffic را در خروجی نمایش داده شده مجاز ببینید.

Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)
 

حال باید به وسیله نام دامنه سرور یا public IP address در مرورگر وب خود بررسی کنید که وب سرور فعال شده است یا خیر؟

در صورتی که دارای یک نام دامنه نشان داده شده به سرور خود نیستید ولی نام public IP address سرور را نمی‌دانید، با تایپ دستور زیر می‌توانید اطلاعاتی درباره این موضوع به دست بیاورید.

$ ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

این دستور چندین IP address چاپ می‌کند که می‌توانید تک تک آن‌ها را روی مرورگر وب خود امتحان نمایید.
در این قسمت از نصب (Linux، Nginx، MySQL و PHP) LEMP stack روی Debian 9، یکی از آدرس‌هایی را که دریافت کرده‌اید در مرورگر وب خود تایپ کنید. این آدرس باید شما را به صفحه پیش فرض Nginx هدایت کند.

http://your_domain_or_IP
تصویرمرحله نصب موفق آمیز Nginx

نمایش صفحه فوق به این معنی است که Nginx با موفقیت نصب شده است.

مرحله دوم- نصب MySQL برای مدیریت داده‌های سایت

در این مرحله، حال که یک وب سرور دارید باید پایگاه ‌داده MySQL را روی آن نصب کنید تا بتوانید داده‌ها را ذخیره‌سازی و مدیریت نمایید.
با تایپ کردن دستور زیر می‌توانید به راحتی آن را نصب کنید.

$ sudo apt install mysql-server

در اینجا با وجود این که نصب MySQL به پایان رسیده اما مرحله پیکربندی آن کامل نشده است.
برای ایمن سازی نصب، می‌توانید یک اسکریپت امنیتی را اجرا کنید که از شما سؤال می‌کند که آیا می‌خواهید برخی از پیش فرض‌های ناامن را تغییر دهید یا خیر. با دستور زیر شروع کنید:

$ sudo mysql_secure_installation

در این مرحله از نصب LEMP stack روی Debian 9، اسکریپت نصب شده و از شما خواسته می‌شود که رمز عبور حساب MySQL root را وارد نمایید. با توجه به این که هنوز رمز عبور تنظیم نشده است، باید ENTER را بزنید. حال از شما سوال می‌شود که آیا می‌خواهید یک رمز عبور برای پایگاه‌داده داشته باشید که جهت تنظیم آن باید y را تایپ کرده و یک رمز عبور root تنظیم نمایید.

برای بقیه سوالاتی که توسط اسکریپت مطرح می‌شود باید y و سپس ENTER را فشار دهید. این امر سبب حذف شدن کاربران ناشناس و پایگاه‌داده آزمایشی می‌شود، سیستم از راه‌دور root را غیر فعال می‌کند و قوانینی جدید بارگیری می‌کند که پس از آن MySQL با تغییرات ایجاد شده قابل استفاده خواهد بود.
در اینجا مراحل راه‌اندازی پایگاه‌داده به پایان رسیده است و باید به سراغ راه‌اندازی PHP بروید.

مرحله سوم- نصب PHP برای پردازش

اینک که Nginx را برای ارائه صفحات وب و MySQL را برای مدیریت و ذخیره‌سازی داده‌ها راه‌اندازی کردید، حال به گزینه‌ای نیاز دارید که Dynamic content تولید کند. اینجاست که PHP وارد عرصه می‌شود. با وجود این که Nginx مانند وب سرورهای دیگر دارای پردازنده‌های بومی متعلق به PHPنیست، باید fpm که مختصر شده عبارت fastCGI process manager است را نصب کنید.

در این مرحله، از Nginx برای ارسال درخواست‌های PHP به این نرم‌افزار برای پردازش کمک بگیرید.

همچنین نیاز به یک package کمکی دارید تا امکان برقراری ارتباط PHP را با MySQL database backend فراهم کند. هنگام نصب فایل‌های PHP core تمام مواردی که نیاز دارید فراهم می‌شود. سپس با استفاده از دستور زیر بسته‌های php-fpm و php-mysql را نصب کنید.

$ sudo apt install php-fpm php-mysql

حال که اجزاء php را نصب کردید، در مرحله بعدی Nginx را برای استفاده از آن‌ها پیکربندی خواهید کرد.

مرحله چهارم-پیکر‌بندی Nginx برای استفاده از پردازنده PHP

اکنون تمامی اجزاء مورد نظر نصب شده‌اند. در این مرحله پردازنده PHP را برای Dynamic Content در Nginx انتخاب کنید. تمام این کارها را روی سطح server block انجام دهید (server block ها شباهت زیادی به hostهای مجازی Apache دارند). حال، تنظیمات پیش فرض Nginx را تغییر داده و یک فایل پیکربندی جدید و web root directory ایجاد کنید تا فایل‌های PHP خود را نگه دارید. سپس فایل‌های پیکر‌بندی شده و دایرکتوری آن‌ها را نام‌گذاری کنید و پس از آن نام دامنه و hostname ای را که سرور باید به آن پاسخ دهد مشخص نمایید.

ابتدا یک دایرکتوری جدید در /var/www برای نگهداری آدرس سایت ایجاد کنید.

$ sudo mkdir /var/www/your_domain

حال یک فایل پیکربندی جدید در دایرکتوری sites-available متعلق به Nginx باز نمایید.

$ sudo nano /etc/nginx/sites-available/your_domain

سپس یک فایل خالی ایجاد کرده و سپس آن را مانند تصویر در محل مورد نظر Paste کنید.

/etc/nginx/sites-available/your_domain
server {
    listen 80;
    listen [::]:80;

    root /var/www/your_domain;
    index index.php index.html index.htm;

    server_name your_domain;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    }
}

این یک پیکربندی بسیار اساسی است که به Port 80 گوش فرا می‌دهد و به فایل‌هایی که از web root تازه ایجاد کردید، خدمت می‌کند. مطابق این پیکر‌بندی تنها به دستوراتی پاسخ داده می‌شود که نام آن‌ها پس از نام سرور قرار دارد و هر فایلی که توسط php به پایان می‌رسد، پیش از این که Nginxنتایج را برای کاربر ارسال کند توسط php-fpm پردازش می‌شود.

در این قسمت از نصب، پس از ایجاد تغییرات مورد نظر، آن‌ها را ذخیره کرده و صفحه را ببندید.
پیکر‌بندی ایجاد شده را از طریق لینک دادن config file ‌ها از دایرکتوری sites-enabled متعلق به Nginx فعال کنید.

$ sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/

این امر به Nginx اعلام می‌کند که از تنظیمات در زمان بارگذاری مجدد استفاده نماید. حال برای تست پیکر‌بندی خود برای syntax error ها دستور زیر را تایپ نمایید.

$ sudo nginx -t

اگر در این بخش خطایی مشاهده شد، به عقب برگشته و مجدداً فایل خود را چک نمایید. سپس مراحل را ادامه دهید.
وقتی بستر آماده شد، Nginx را reload کنید تا تغییرات اعمال شود.

$ sudo systemctl reload nginx

سپس در این مرحله از نصب LEMP stack یک فایل در web root directory جدید ایجاد نمایید تا بتوانید پردازش‌های PHP خروجی را بررسی کنید.

مرحله پنجم- ایجاد یک فایل PHP برای آزمایش پیکربندی

در این مرحله باید تنظیمات LEMP را کامل کنید. می‌توانید در این مرحله وضعیت را بررسی کرده و اطمینان حاصل نمایید که Nginx توانایی مدیریت درست فایل‌های php و انتقال آن‌ها به پردازنده PHP را دارد.

می‌توانید با ایجاد یک فایل PHP آزمایشی در document root خود این کار را انجام دهید. یک فایل جدید با نام info.php داخل document root در ویرایشگر متنی خود باز کنید.

$ sudo nano /var/www/your_domain/info.php

اسکریپت زیر را در یک فایل جدید تایپ یا کپی کرده تا بررسی نمایید که کد PHP معتبر بوده و اطلاعات را در مورد سرور بر می‌گرداند.

/var/www/your_domain/info.php
<?php
  phpinfo();
?>

پس از اتمام این مرحله، فایل را ذخیره کرده و آن را ببندید.
اکنون می‌توانید صفحه زیر را در مرورگر خود ببینید. برای مشاهده این صفحه، نام دامنه سرور یا public IP address را به همراه /info.php وارد کنید.

http://your_domain/info.php

 در این مرحله باید صفحه وب را که به وسیله  PHP با اطلاعات وب سرور شما ایجاد شده است، مشاهده نمایید.

تصویر اطلاعات وب سرور شما

در این گام از نصب (Linux، Nginx، MySQL و PHP) LEMP stack روی Debian 9، اگر صفحه‌ای مشابه تصویر فوق را مشاهده کردید، تنظیمات پردازش PHP با Nginx با موفقیت انجام شده است.

پس از این که متوجه شدید Nginx به درستی عمل می‌کند، باید فایلی که ایجاد کرده‌اید را حذف نمایید، تا اطلاعات پیکربندی سرور به دست کاربران غیر مجاز نیافتد.
برای حذف فایل از دستور زیر استفاده نمایید.

$ sudo rm /var/www/html/info.php

توجه داشته باشید که هر زمان نیاز به این فایل داشته باشید به راحتی می‌توانید آن را مجدداً بازگردانید

نتیجه‌گیری

اکنون شما یک LEMP stack پیکربندی شده بر روی سرور 9.0  Debian خود تنظیم کرده‌اید. برای یادگیری بیشتر به سایت کلادینو مراجعه نمایید.

منبع :
https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-debian-9