نصب (LEMP) در (Ubuntu 16.04)

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

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

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

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

قبل از اینکه شروع به آموزش کنیم، لازم است دسترسی (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) هم‌خوانی نداشته باشد، به «ارور» (error) بر می­‌خورید. پس بهتر است که این (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 نصب گردیده است.

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

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