LEMP یک مجموعه از نرمافزارهایی است که میتوانند در صفحات و اپلیکیشنهای وب مورد استفاده قرار گیرند. این اصطلاح در واقع بیانگر سیستمعامل لینوکسی است که از وب سرور Nginx استفاده میکند. دادههای backend در Mysql دیتابیس و همچنین فرآیندهای پویا توسط Php مورد استفاده قرار میگیرند. حال به برسی نحوه نصب استک LEMP بر روی Ubuntu 16.04 میپردازیم :
قبل از اینکه شروع به آموزش کنیم، لازم است دسترسی (sudo) با دسترسیهای مجاز آن، بر روی سیستمعامل خود داشته باشید سپس با نام کاربری خود به سیستم وارد شوید.
گام اول:
تمام نرمافزارهایی که در این آموزش استفاده میشوند، بهطور مستقیم از پکیج اوبونتو (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) آن در یک مرورگر وب نتیجه را مشاهده کنید.
گام دوم:
حال ما دارای یک وب سرور هستیم و نیازمندیم که 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)های جدیدی که تعریف کردید را بارگذاری میکند.
حال دیتابیس سیستم ما تنظیم شد و ما میتوانیم کار خود را آغاز کنیم.
گام سوم:
تاکنون ما Nginx و همچنین دیتابیس MySQL را برای مدیریت و ذخیره دادهها بر روی سیستم خود نصب کردهایم. با اینحال ما هنوز چیزی برای تولید محتوا به صورت پویا نداریم. بههمین منظور از Php استفاده میکنیم.
Nginx شامل پکیج Php نمیشود. بنابراین میبایست (php-fpm) را نصب کنیم. میتوانیم این ماژول را نصب کنیم و همچنین از پکیجهای کمکی بیشتری استفاده کنیم که اجازه میدهد Php با دیتابیس ارتباط برقرار کند. این عمل با کد زیر قابل انجام است:
sudo apt-get install php-fpm php-mysql
ما درحال حاضر محتویات 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 استفاده کند.
ابتدا فایل زیر را باز میکنیم:
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;
}
}
لازم است تا تغییراتی را در این فایل انجام دهیم:
پس از اعمال تغییرات وضعیت به شرح زیر میگردد:
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) کنید.
گام پنجم:
اکنون استک 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 دارید که بر روی سرور اوبونتو ۱۶.۰۴ نصب گردیده است.
سینداد یعنی هدیهی سیمرغ، یا فرزند سیمرغ؛ به عبارتی یعنی خود سیمرغ، با همه ی شگفتی هایش، اما جوانتر و سرزنده تر. و این چیزی است که ما سعی می کنیم در سینداد باشیم. از سال ۱۳۸۵ دانش مان را به صورت خدماتی در حوزه ی هاستینگ، شبکه و تولید نرم افزار در اختیار مشتریان مان قرار داده ایم و به این افتخار می کنیم که تک تک آنها تا به امروز همراه ما مانده اند. باور داریم که سینداد صرفاً یک شرکت نیست، بلکه نوعی باور است به ارائه ی شگفت انگیز از هر چیز.