دبیانسیستم عامل لینوکسمقالات وب

چگونه LEMP Stack را بر روی دبیان ۹ نصب و پیکربندی کنیم؟

همانطور که می دانید LEMP stack مخففی است که نشان دهنده گروهی از بسته هاست که با هم ترکیب شده اند. این بسته ها عبارتند از : کرنل لینوکس، وب سرور Nginx، پایگاه داده MariaDB یا پایگاه داده MYSQL؛ زبان برنامه نویسی سمت سرور PHP.  این بخش از نرم افزارها به طور گسترده ای بر روی سرورهای موجود در اینترنت استفاده می شوند تا بتوانند سایت ها و اپلیکیشن های پویا  و تعاملی ایجاد نمایند. در این مقاله قصد داریم نحوه نصب و پیکربندی LEMP stack را بر روی آخرین انتشار دبیان ۹  مورد بررسی قرار دهیم. پس همراه وب ایده باشید.

 نیازمندی های نصب:

 

  • آخرین نسخه از سیستم عامل دبیان ۹ که می توان آن را از سایت دبیان دانلود و نصب کرد.
  • دسترسی مستقیم به کنسول سرور یا ارتباط SSH ریموت
  • رابط شبکه که با آی پی آدرس استاتیک پیکربندی شده است.
  • نام دامنه ثبت شده با رکورد CNAME و A که در سمت  namesever پیکربندی شده است. در این مقاله ما cf به عنوان دامنه خود استفاده می کنیم. ای پی آدرس  سرور نیز با آی پی  کلاس C پیکربندی شده است.

مرحله اول: پیکربندی اولیه

در اولین گام، با اکانت روت یا کاربری که دسترسی روت به سیستم دارد وارد شوید و کامپوننت های دبیان ۹ همچون ارتقای کرنل؛ به روزرسانی بسته ها و بسته های امنیتی را به کمک دستور زیر  به روزرسانی کنید:

 

sudo apt  update

sudo apt upgrade

sudo apt dist-upgrade

در مرحله بعدی اطمینان حاصل نمایید که نام توصیفی برای Hostname دستگاه خود اضافه کرده اید. برای انجام اینکار می توانید از دستور زیر استفاده کنید. بعد از اینکار، باید سیستم خود را ریستارت کنید تا بتوانید  Hostname جدید را اعمال نمایید.

sudo hostnamectl set-hostname hostname.yourdomain.com

sudo init 6

 برای اینکه بتوانید کارهای مدیریتی سرور خود را به راحتی انجام دهید باید net-tools wget، curl و bash را نصب کنید. برای اینکار از دستور زیر استفاده نمایید:

sudo apt install net-tools sudo wget curl bash-completion

 

مرحله دوم: نصب وب سرور Nginx

همانطور که می دانید Nginx یک وب سرور مدرن و موثر است که برای نمایش صفحات سایت به بازدیدکنندگان موجود در اینترنت مورد استفاده قرار می گیرد. می توانید با اجرای دستور زیر در کنسول سرور، وب سرور Nginx را از مخزن رسمی دبیان ۹ نصب کنید:

sudo apt-get install nginx

 

apt package manager، سایر موارد را برای بسته بررسی می کند و فرایند نصب را در صورت موافق بودن شما ادامه می دهد. برای نصب این وب سرور، با yes پاسخ دهید. حالا باید دستور netstart را به منطور  نمایش سوکت های شبکه بر روی سیستم خود اجرا نمایید.  اگر nginx daemon در حال listening در پورت ۸۰/tcp است این موضوع را تایید کنید. ممکن است بخواهید از دستور systemctl برای بررسی nginx daemon استفاده کنید:

sudo netstat -tlp

sudo netstat –tlpn

sudo systemctl status nginx.service

 

بعد از اینکه سرورNginx شما بالا آمد و بر روی سیستم اجرا شد، می توانید از دستور Ifconfig به منظور نمایش رابط های شبکه و لیستی از آی پی آدرس های دستگاه خود استفاده نمایید. سپس مرورگر خود را باز کنید و صفحه پیش فرض Nginx را از طریق پروتکل HTTP و با اضافه کردن آی پی آدرس خود در مرورگر بازدید نمایید. پیام خوشامدگویی باید بر روی مرورگر نمایش داده شود:

 http://www.linuxbox.cf

یا

http://192.168.1.14

 

مرحله سوم: پروتکل HTTP/2.0وب سرور را فعال کنید:

به طور پیش فرض، آخرین نسخه و انتشار از باینری های Nginx توسط مخزن دبیان ۹ فراهم شده و با پروتکل HTTP/2.0 ساخته شده است. این پروتکل می تواند سرعت بارگذاری صفحات وب را از طریق ارتباط امن شده بهبود ببخشد. تمامی مرورگرهای مدرن همچون فایرفاکس یا کروم باید به طور پیش فرض از این پروتکل پشتیبانی کنند. با اینحال باید بدانید که مایکروسافت اینترنت اکسپلورر و برخی از مرورگرها این پروتکل را هنوز پشتیبانی نمی کنند. برای فعال کردن این پروتکل بر روی دبیان ۹، باید تغییراتی را در پیکربندی پیش فرض Nginx و فایل های ان انجام دهید تا بتوانید فایل پیکربندی تازه ای ایجاد نمایید و بلوک TLS کدها را برای سرور اضافه نمایید. برای دستیابی به این هدف، ابتدا بک آپی از پیکربندی های پیش فرض وب سرور خود  بگیرید. برای اینکار از دستور زیر استفاده نمایید:

sudo cp /etc/nginx/sites-available/default{,.backup}

ls /etc/nginx/sites-available/

حالا فایل پیکربندی TLS وب سرور  را به کمک نرم افزار ویرایشگر متن و با اضافه کردن کد زیر ایجاد نمایید.

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

بخشی از فایل default-ssl:

   server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
#server_name 
www.domain.tld;
server_name _;

root /var/www/html;

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

#SSL Certificates
ssl_certificate “/etc/nginx/ssl/cert.pem”;
ssl_certificate_key “/etc/nginx/ssl/privekey.pem”;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers  on;

add_header Strict-Transport-Security “max-age=31536000;
#includeSubDomains” always;

location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args $uri/ =404;
}

set $cache_uri $request_uri;

location ~ /.well-known {
allow all;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
#             # With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
#             # With php-cgi (or other tcp sockets):
#             fastcgi_pass 127.0.0.1:9000;
}

# deny access to .htaccess files, if Apache’s document root
# concurs with nginx’s one
#
#location ~ /\.ht {
#             deny all;
#}
}

عبارتی که استفاده از پروتکل HTTP/2.0 را فعال می سازد، توسط واژه http2 از خط زیر نمایش داده شده است:

listen 443 ssl http2 default_server;

اگر مرورگر بازدیدکننده شما از این پروتکل پشتیبانی نکند،می توانید واژه Http2 را از پیکربندی سرور پاک کنید و سرویس Nginx را دوباره ریستارت نمایید تا تغییرات اعمال شود.  در مواردی که دامنه ثبت شده دارید یا از هاست مجازی بر اساس آی پی آدرس استفاده می کنید باید نام دامنه یا آی پی آدرس را بعد از server_name اضافه کنید:

server_name www.linuxbox.cf linuxbox.cf;

بعد از اینکه ویرایش پیکربندی های پیش فرض وب سرور را با تنظیمات بالا تمام کردید، می توانید به ادامه کار بپردازید.  در بالای فایل پیکربندی TLS، مسیری را برای گواهینامه TLS و key مشخص کرده ایم. از آنجایی که ما در حال حاضر Key  نصب شده بر روی سیستم نداریم،  به کمک دستور زیر گواهینامه و Key را تولید می کنیم. زمانی که در حال تولید گواهینامه SSL هستید باید به یک سری از سوالات پاسخ دهید. برای کشور، استان، نام شهر، نام سازمان، نام واحد در سازمان  کد دو حرفی اضافه کنید. باید توجه ویژه ای به تنظیمات Common name داشته باشید تا با رکورد FQDN دی ان اس سرور یا ای پی ادرس سروری که برای دسترسی به صفحات وب مورد استفاده قرار می دهید همخوانی داشته باشد.  گواهینامه و KEY در دایرکتوری جدید ذخیره خواهند شد:

sudo mkdir /etc/nginx/ssl

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/privekey.pem -out /etc/nginx/ssl/cert.pem

ls /etc/nginx/ssl/

 

به کمک دستور زیر می توانید Diffie-Hellman cipher جدیدی ایجاد کنید:

sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

 

در نهایت پس از تولید Diffie-Hellman key،  فایل پیکربندی TLS را به کمک ایجاد یک لینک سمبولیک برای فایل پیکربندی defult-ssl  از دایرکتوری sites-available برای دایرکتوری sites-enabled فعال نمایید.

ln -s /etc/nginx/sites-available/default-ssl /etc/nginx/sites-enabled/

فایل پیکربندی Nginx را تست کنید اگر همه چیز اوکی بود می توانید Nginx daemon را به منظور اعمال تمامی تغییرات ریستارت نمایید. برای اینکار دستور زیر را اجرا کنید:

sudo nginx -t

sudo systemctl restart nginx.service

 از دستور netstat استفاده کنید تا ببینید پورت ۴۴۳ در listening mode نشان داده می شود یا خیر:

netstat –tlpn | grep nginx

 

حالا به سراغ نام دامنه یا آی پی آدرس سرور خود بروید. برای اینکار از مرورگرتان استفاده نمایید. از آنجایی که شما از گواهینامه self-signed استفاده می کنید باید خطایی بر روی مرورگر نمایش داده شود. خطا را تایید کنید تا به صفحه اصلی nginx بروید. در مواردی که Nginx ، صفحه index.html پیش فرض را در دایرکتوری webroot فراهم نمی کند، از دستور زیر برای ایجاد این صفحه استفاده کنید:

echo “test page” | tee /var/www/html/index.html

به منظور تایید حضور پروتکل HTTP/2.0، دستور زیر را تایپ کنید. به دنبال واژه H2 بگردید.

 openssl s_client -connect localhost:443 -nextprotoneg ”

 

مرحله چهارم: نصب PHP7.0

وب سرور Nginx می تواند به کمک مفسر  زبان برنامه نویسی PHP از طریق PHP FastCGI process manager،  از صفحات پویای وب پشتیبانی کند.با نصب  بسته php-fpm که توسط مخزن رسمی دبیان ۹ ارائه شده است، می توان به FastCGI process manager نیز دست یافت.  برای نصب FastCGI process manager و مفسر PHP7.0 در سیستم به همراه سایر بسته های اضافی که به ارتباط بین PHP و وب سرور کمک می کند می توانید دستور زیر را نصب کنید:

 

sudo apt install php7.0 php7.0-fpm php7.0-curl php7.0-gd

 بعد از اینکه مفسر PHP7.0 با موفقیت بر روی سیستم نصب شد، php7.0-fpm daemon را به کمک دستور زیر استارت کرده و بررسی نمایید:

sudo systemctl start php7.0-fpm

sudo systemctl status php7.0-fpm

 

در فایل بالا، بلوک پیکربندی رابرای PHP FastCGI process manager اضافه کرده ایم تا به عنوان محتوای پویا عمل کند. بلوک  کدهایی که Nginx را  قادر می سازد از مفسر PHP استفاده کند در نمونه زیر نشان داده شده است. به همین خاطر مرحله اضافی برای اصلاح فایل پیکربندی  Nginx TSL وجود نخواهد داشت.  خط فرمان از فایل پیکربندی، به طور پیش فرض توسط وب سرور نادیده گرفته می شود.

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

 

برای اینکه بتوانید وب سرور را تست کنید و ببینید می تواند به درستی فایل PHP را به مفسر PHP ارسال کند، باید یک فایل پیکربندی تست به نام info.php ایجاد کنید. برای اینکار از دستور زیر استفاده نمایید.

sudo su -c ‘echo “<?php phpinfo(); ?>” > /var/www/html/info.php’

حالا مرورگر خود را باز کنید، به نام دامنه یا آی پی آدرس خود بروید و از صفحه Php info بازدید نمایید:

https://www.linuxbox.cf/info.php

یا

http://192.168.1.14/info.php

 

 

برای نصب سایر ماژول های PHP7.0، دستور apt search php7.0 را اجرا کنید تا بتوانید ماژول خاصی که باید نصب شود را پیدا کنید. اگر می خواهید سیستم مدیریت محتوایی همچون وردپرس را نصب کنید، دستور زیر را تایپ نمایید:

sudo apt install php7.0-mcrypt php7.0-mbstring

فقط به خاطر داشته باشید که ماژول های تازه نصب شده بر روی سیستم به صورت پیش فرض فعال نیستند.  برای فعال کردن آن ها باید سروس PHP-FPM را ریستارت کنید. برای اینکار از دستور زیر استفاده نمایید:

sudo systemctl restart php7.0-fpm.service

 

مرحله پنجم:  نصب پایگاه داده MariaDB

خوب حالا باید اخرین تکه از پازل LAMP Stack را نیز نصب کنیم.  کامپوننت LEMP پایگاه داده MariaDB برای ذخیره سازی رکوردها در جداول و ستون ها مورد استفاده قرار  می گیرد و به طور پویا، داده های اپلیکیشن وب را مدیریت می کند. برای نصب  سیستم مدیریت پایگاه داده در دبیان ۹ با ماژول های PHP مورد نیاز، می توانید از دستور زیر استفاده کنید. سپس PHP-FPM daemon را ریستارت کنید تا بتوانید ماژول PHP MySQL را فعال سازید.

sudo apt install mariadb-server mariadb-client php7.0-mysql

sudo systemctl restart php7.0-fpm.service

به طور پیش فرض، اکانت روت سیستم یا کاربرانی که دسترسی روت دارند می توانند بدون فراهم آوردن پسورد به پایگاه داده دسترسی داشته باشند. برای اینکه بتوانید چنین شرایطی را تغییر دهید، می توانید دستور زیر را در کنسول MySQL  اجرا کنید:

sudo mysql

MariaDB> use mysql;
MariaDB> update user set plugin=” where User=’root’;
MariaDB> flush privileges;
MariaDB> exit

 

در مرحله بعدی باید اطمینان حاصل کنید که پایگاه داده با اجرای اسکریپت امنیتی mysql_secure_installation که با نصب بسته حاصل از مخزن دبیان فراهم شده است امن گشته است.  اسکریپت را به کمک دستور زیر اجرا کنید و اطمینان حاصل نمایید به تمامی سوال های آن با Yes پایخ می دهید.

sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB

 SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

 

In order to log into MariaDB to secure it, we’ll need the current

password for the root user.  If you’ve just installed MariaDB, and

you haven’t set the root password yet, the password will be blank,

so you should just press enter here.

 

Enter current password for root (enter for none):

OK, successfully used password, moving on…

 

Setting the root password ensures that nobody can log into the MariaDB

root user without the proper authorisation.

 

You already have a root password set, so you can safely answer ‘n’.

 

Change the root password? [Y/n] y

New password:

Re-enter new password:

Password updated successfully!

Reloading privilege tables..

 … Success!

 

 

By default, a MariaDB installation has an anonymous user, allowing anyone

to log into MariaDB without having to have a user account created for

them.  This is intended only for testing, and to make the installation

go a bit smoother.  You should remove them before moving into a

production environment.

 

Remove anonymous users? [Y/n] y

 … Success!

 

Normally, root should only be allowed to connect from ‘localhost’.  This

ensures that someone cannot guess at the root password from the network.

 

Disallow root login remotely? [Y/n] y

 … Success!

 

By default, MariaDB comes with a database named ‘test’ that anyone can

access.  This is also intended only for testing, and should be removed

before moving into a production environment.

 

Remove test database and access to it? [Y/n] y

 – Dropping test database…

 … Success!

 – Removing privileges on test database…

 … Success!

 

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

 

Reload privilege tables now? [Y/n] y

 … Success!

 

Cleaning up…

 

All done!  If you’ve completed all of the above steps, your MariaDB

installation should now be secure.

 

Thanks for using MariaDB!

 

در نهایت، برای تست و بررسی عملکرد پایگاه داده؛ از طریق کنسول وارد پایگاه داده شوید و دستور زیر را اجرا نمایید.  فهرستی از پایگاه داده های پیش فرض باید در کنسول MariaDB به نمایش در اید. می توانید با تایپ واژه EXIT،  از این کنسول خارج شوید:

mysql -u root –p

MariaDB [(none)]> show databases;
+——————–+
| Database           |
+——————–+
| information_schema |
| mysql              |
| performance_schema |
+——————–+
۳ rows in set (0.00 sec)

MariaDB [(none)]> exit

 

خوب کار شما تمام شده است. امیدواریم از این آموزش لذت برده باشید.

برچسب ها

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

بستن