نصب LEMP در Ubuntu 16.04

الناز منشاری ۰۷ خرداد ۱۳۹۶ ۰ دیدگاه

 چگونگی نصب Linux, Nginx, MySQL, PHP (LEMP stack) در Ubuntu 16.04

LEMP یک مجموعه از نرم­ افزار­هایی است که می­توانند در صفحات و اپلیکیشن­‌های وب مورد استفاده قرار گیرند. این اصطلاح در واقع بیانگر سیستم عمل لینوکسی است که از وب سرور  Nginx استفاده می­کند. داده‌های backend در My sql  دیتا بیس و همچنین فرآیند­های پویا توسط Php مورد استفاده قرار می­گیرند. حال به برسی نحوه نصب استک LEMP بر روی اوبونتو ۱۶٫۰۴ می­پردازیم :

نیازمندی­‌ها:

قبل از اینکه شروع به آموزش کنیم لازم است دسترسی sudo  (با دسترسی­‌های مجاز آن) بر روی سیستم عامل خود داشته باشید سپس با نام کاربری خود به سیستم وارد شوید.

گام اول:

نصب Nginx

تمام نرم افزارهایی که در این آموزش استفاده می­شوند به طور مستقیم از پکیج اوبونتو (repositories)گرفته می­شوند. این بدین معنا می­باشد که ما میتوانیم از  پکیج apt استفاده نمائیم.

ابتدا می­‌بایست این پکیج خود را به روز‌رسانی و سپس نصب نماید.

sudo apt-get update
sudo apt-get install nginx

لازم به ذکر است که Nginx به گونه‌­ای طراحی شده است که پس از نصب شروع به اجرا کند. اگر فایروال Ufw شما در حال اجرا باشد لازم است تا به Nginx اجازه اتصال و دسترسی دهید. Nginx پس از نصب خودش را با Ufw هماهنگ میکند. برای فعال کردن فایروال از کد زیر استفاده مینماییم:

sudo ufw enable

اگر ssl را بر روی سرور تنظیم نکرده­‌اید فقط لازم است تا به پورت ۸۰ (HTTP) اجازه عبور ترافیک بدهیم. با استفاده از کد زیر می‌توانیم آن را فعال نماییم:

sudo ufw allow 'Nginx HTTP'

برای مشاهده­ وضعیت میتوانید از کد زیر استفاده نمائید:

sudo ufw status

پس از آن اطلاعات به نمایش در می­‌آید و شما می­توانید ببینید که در پورت HTTP شما اجازه عبور ترافیک داده شده است:

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

میتوان با استفاده از نام دامنه سرور یا آدرس IP آن در یک مرورگر وب نتیجه را مشاهده نمایید.

گام دوم:

نصب My SQL

حال ما دارای یک وب سرور هستیم و نیازمندیم که MySQL را برای مدیریت داده­ ها بر روی سایت نصب نمائیم.

برای نصب MySQL به راحتی از دستور زیر استفاده می­‌کنیم:

sudo apt-get install mysql-server

از شما خواسته می­شود تا یک پسوورد برای دسترسی root به MySQL تنظیم نمائید، پس از آن از شما خواسته می­شود تا Validate Password Plugin را تنظیم نمائید.

هشدار: باید توجه داشت که فعال کردن این گزینه سبب می­‌شود که اگر از پسوورد ضعیف استفاده می‌کنید و آن پسوورد با قوانین پسوورد MySQL هم‌خوانی نداشته باشد به ارور بر می­خورید. پس بهتر است که این Validation را غیر فعال نمائید اما به یاد داشته باشید که همواره برای امنیت بیشتر باید یک پسوورد قوی داشت.

اگر پاسخ شما 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:

حال اگر شما Validation را فعال کرده باشید آنگاه از شما خواسته میشود تا درجه امنیت پسوورد را انتخاب نمائید. این نکته از یادتان نرود که اگر شما ۲ را وارد و انتخاب نمائید (قوی ترین درجه برای استحکام پسوورد) شما به ارورهای زیادی برای انتخاب کردن پسوورد برخواهید خورد که بیانگر عدم وجود عدد، کاراکترهای خاص و … است.

There are three levels of password validation policy: LOW    Length >= 8MEDIUM Length >= 8, numeric, mixed case, and special charactersSTRONG Length >= 8, numeric, mixed case, special characters and dictionary           file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

پس از آنکه Validation را فعال نمودید از شما سوال می­شود که آیا نیاز هست پسوورد root را نیز تغییر دهید یا خیر.

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  را وارد نمائید. این سبب می­گردد تا کاربران ناشناس و دیتابیس تست حذف گردند، ریموت لاگین را غیر فعال میکند و rule های جدیدی که تعریف کردید را بارگذاری میکند.

حال دیتابیس سیستم ما تنظیم شد و ما میتوانیم کار خود را آغاز کنیم.

گام سوم:

نصب Php برای پردازش

تاکنون ما Nginx  و همچنین دیتابیس MySQL را برای مدیریت و ذخیره داده­‌ها بر روی سیستم خود نصب کرده‌­ایم. با این‌حال ما هنوز چیزی برای تولید محتوا به صورت پویا نداریم به همین منظور از Php استفاده می­کنیم.

Nginx شامل پکیج Php نمی‌­شود بنابراین و می­‌بایست php-fpm را نصب نمائیم.می­توانیم این ماژول را نصب نمائیم و همچنین از پکیج­‌های کمکی بیشتری استفاده کنیم که اجازه می­دهد Php با دیتابیس ارتباط برقرار کند. این عمل با کد زیر قابل انجام است:

sudo apt-get install php-fpm php-mysql

تنظیمات پردازشگر Php :

ما درحال حاضر محتویات Php را نصب نموده‌­ایم با اینحال نیاز است تا کمی تنظیمات برای امنیت بیشتر انجام دهیم.

تنظیمات php-fpm را با دسترسی root انجام می­دهیم:

sudo nano /etc/php/7.0/fpm/php.ini

چیزی که ما بدنبال آن در این فایل هستیم پارامتر cgi.fix_pathinfo می­باشد که با “؛ ” مشخص میگردد و به طور پیش فرض در شماره ۱ درج گردیده است.

این یک تنظیم بسیار نا امن است که به Php دستور میدهد در صورت پیدا نکردن فایلی که درخواست کرده، نزدیکترین فایلی را که میتواند پیدا کند را اجرا نماید. این ویژگی به کاربران اجازه می­دهد تا برای اجرای خط فرمان­‌هایی که اجازه اجرای مستقیم آن را ندارند استفاده کنند و آن­‌ها را اجرا کنند.

ما می­‌توانیم هر دو این شرایط را با کد زیر تغییر دهیم:

cgi.fix_pathinfo=0

سپس فایل را save کرده و می­‌بندیم و  پردازشگر Php را restart میکنیم.

گام چهارم:

تنظیم Nginx برای استفاده از پردازشگر Php

حال ما همه­‌ی تنظیمات و برنامه‌­هایی که نیاز داشتیم را در اختیار داریم و تنها باقیست تا به Nginx اجازه دهیم که از پردازشگر  Phpاستفاده کند.

ابتدا فایل زیر را باز میکنیم:

 sudo nano /etc/nginx/sites-available/default

اطلاعات زیر به نمایش درمی­‌آید:

server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;

location / {

try_files $uri $uri/ =404;
}
}

لازم است تا تغییراتی را در این فایل انجام دهیم:

  • ابتدا لازم است که php را بعنوان اولین مقدار برای index وارد کنیم.
  • می­توانیم نام سرور server_name را مستقیما به server’s domain name و یا  public IP address تغییر دهیم.
  • برای پردازش واقعی Php تنها لازم است که (#) را از ابتدای هر خط حذف نمائیم. location ~\.php$ این قطعه کد محل می­باشد که شامل قطعه fastcgi-php.conf و سوکت مرتبط php-fpm. است.
  • خطی که شامل .htaccess هست را نیز به همین روش تصحیح می­کنیم.

پس از اعمال تغییرات وضعیت به شرح زیر می­گردد:

server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name server_domain_or_IP;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}

پس از ذخیره save کردن تغییرات می‌توانید فایل را ببندید.

برای تست کردن تغییرات و دیدن ارورها از کد زیر استفاده می­کنیم:

sudo nginx -t

اگر اروری گزارش داده شد به مراحل قبل باز گردید و دوباره چک کنید در غیر اینصورت Nginx را reload کنید.

گام پنجم:

ایجاد یک فایل Php برای تست تنظیمات

اکنون استک LEMP شما به طور کامل راه اندازی شده است.

می‌توانیم برای تست یک فایل Php را در داکیومنت root ایجاد کنیم. یک فایل جدید به نام info.php که در داخل آن فایل ما وجود دارد ایجاد می­‌کنیم.

sudo nano /var/www/html/info.php

متن زیر را در آن تایپ کنید:

<?php

phpinfo();

وقتی کارتان به اتمام رسید کار خود را save  کنید و سپس آن را ببندید.

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

http://server_domain_or_IP/info.php

اگر صفحه­‌ای همانند شکل بالا به نمایش درآمد یعنی پردازشگر Php شما با Nginx به خوبی کار میکند. پس از اطمینان از درست کار کردن فایل بهتر است که آن را با دستور زیر پاک کنیم.

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

حال شما یک استک LEMP دارید که بر روی سرور اوبونتو 16.04 نصب گردیده است.

فناوران شبکه سینداد (آهنگ نوآوری)

سینداد یعنی هدیه‌ی سیمرغ، یا فرزند سیمرغ؛ به عبارتی یعنی خود سیمرغ، با همه ی شگفتی هایش، اما جوانتر و سرزنده تر. و این چیزی است که ما سعی می کنیم در سینداد باشیم. از سال ۱۳۸۵ دانش مان را به صورت خدماتی در حوزه ی هاستینگ، شبکه و تولید نرم افزار در اختیار مشتریان مان قرار داده ایم و به این افتخار می کنیم که تک تک آنها تا به امروز همراه ما مانده اند. باور داریم که سینداد صرفاً یک شرکت نیست، بلکه نوعی باور است به ارائه ی شگفت انگیز از هر چیز.