گروه کاربران لینوکس دانشگاه شهید مدنی آذربایجان

لاگ دانشگاه آذربایجان :: Azarbaijan University Linux User Group

گروه کاربران لینوکس دانشگاه شهید مدنی آذربایجان

لاگ دانشگاه آذربایجان :: Azarbaijan University Linux User Group

نصب LEMP برروی CentOS7



LEMP به گروهی از نرم افزارهای آزاد گفته میشود که معمولا کنار هم برای میزبانی وبسایت‌ها و وب اپ‌های داینامیک نصب میشوند. این اصطلاح در واقع ترکیبی از حروف اول نرم افزارهای: سیستم عامل Linux، وب سرور ENginx، دیتابیس MySQL(MariaDB) و PHP است.

 

 

پیش نیازها:

 

قبل از شروع به خواندن راهنما ابتدا باید یک اکانت جداگانه‌ی غیر root برروی سرور خود داشته باشید.

 

نکته: اگر مشکلی هنگام اجرای Nginx داشتید مطمئن شوید قسمت SELinux فایل تنظیمات Nginx صحیح باشد یا حالت SELinuxرا به permissive یا disabled تغییر دهید. برای تغییر به حالت permissive میتوانید دستور زیر را در ترمینال اجرا کنید


$ setenforce 0


قدم اول – نصب Nginx

 

برای نمایش صفحات وب به بازدیدکنندگان از وب سرور مدرن و کارآمد Nginx استفاده خواهیم کرد.

 

برای افزودن مخزن EPEL دستور زیر را در ترمینال اجرا کنید


$ sudo yum install epel-release


پس از نصب مخزن EPEL بر روی سرور، میتوانید با استفاده از دستور زیر Nginx را نصب کنید


$ sudo yum install nginx


پس از اتمام نصب وب سرور Nginx میتوانید با کد زیر آنرا برروی سرور اجرا کنید


$ sudo systemctl start nginx


اکنون میتوانید با مراجعه به IP Public یا دامنه‌ی سرور از طریق مرورگر وب از اجرای Nginx مطمئن شوید. در صورت انجام مراحل بطور صحیح باید با صفحه‌ی زیر مواجه شوید



الان باید Nginx را برای اجرا بعد از boot سیستم عامل فعال کنید


$ sudo systemctl enable nginx

 

قدم دوم – نصب MySQL

 

پس از نصب و اجرای Nginx الان زمان نصب MariaDB جایگزین MySQL است. MariaDB نسخه‌ای توسعه داده شده توسط جامعه برنامه نویسان از MySQL است.

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


sudo yum install mariadb-server mariadb


زمانی که نصب تمام شد، با دستور زیر MariDB را اجرا خواهیم کرد.


$ sudo systemctl start mariadb


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


$ sudo mysql_secure_installation


از شما رمز عبور root درخواست خواهد شد که چون نرم افزار را به تازگی نصب کرده‌اید احتمالا رمز عبوری ندارید بنابراین آن را با زدن دکمه‌ی Enter خالی بذارید.دوباره از شما برای تعیین رمز root درخواست میشود. با زدن دکمه‌ی Y و ادامه‌ی مراحل رمز عبور خود را تعیین کنید


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.

New password: password
Re-enter new password: password
Password updated successfully!
Reloading privilege tables..
 ... Success!


برای ادامه‌ی سوالات کافی است هربار کلید Enter را برای پذیرش حالت پیش فرض بزنید. این عملیات کاربران و دیتابیس‌های نمونه را پاک کرده، دسترسی remote کاربر root را غیرفعال میکند. در آخر باید MariaDB را برای اجرا پس از boot فعال کنید


sudo systemctl enable mariadb


در این مرحله سیستم دیتابیس شما آماده است و میتوانیم به مرحله‌ی بعد برویم.

 

قدم سوم – نصب PHP

 

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

بار دیگر از yum برای نصب کامپوننت مورد نیاز استفاده میکنیم. اینبار پکیج‌های php-mysql و php-fpm را نیز نصب میکنیم


sudo yum install php php-mysql php-fpm

 

پیکربندی پردازشگر PHP

 

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

 با دسترسی root فایل پیکربندی اصلی php-fpm را باز کنید


$ sudo vi /etc/php.ini


در این فایل بدنبال پارامتری میگردیم که مقدار cgi.fix_pathinfo را تعیین میکند که بصورت پیش فرض کامنت شده و مقدار ۱ را دارد. این تنظیم بسیار غیرامنی است چرا که باعث میشود نزدیک ترین فایل را در صورتی که فایل PHP پیدا نشد اجرا کند. این امکان اجازه میدهد کاربران درخواست‌های PHP طوری بسازند که دسترسی آنها را به اجرای اسکریپت‌هایی که نباید دسترسی داشته باشند، فراهم کند.

 

با تغییر کد به حالت زیر این مشکلات رفع خواهد شد

 

cgi.fix_pathinfo=0

 

فایل را ذخیره کرده و خارج شوید. سپس فایل پیکربندی www.confphp-fpm را باز کنید


$ sudo vi /etc/php-fpm.d/www.conf



خطی را پیدا کنید که پارامتر listen را تعیین میکند و آن را به شکل زیر تغییر دهید

 

listen = /var/run/php-fpm/php-fpm.sock

 

سپس خطی را پیدا کنید که listen.ownerو listen.group را تعیین میکند و آن را از حالت کامنت در بیاورید

 

listen.owner = nobody
listen.group = nobody

 

و در آخر قسمتی را پیدا کنید که پارامترهای user و group را تعیین میکند و آن را مانند زیر تغییر دهید

 

user = nginx
group = nginx

 

سپس ذخیره کرده و فایل را ببندید. اکنون باید پردازشگر PHP را اجرا کنیم


sudo systemctl start php-fpm


سپس php-fpm را برای اجرا پس boot  فعالسازی میکنیم.


$ sudo systemctl enable php-fpm

 

قدم چهارم  پیکربندی Nginx برای پردازش صفحات PHP

 

حالا ما تمام اجزای مورد نیاز را نصب کرده ایم. تنها تغییر پیکربندی که ما باید انجام دهیم این است که Nginx را برای استفاده از پردازشگر پی اچ پی برای محتوای پویا تعیین کنیم.

 

ما این کار را در سطح بلوک سرور انجام می دهیم (بلوک های سرور شبیه به میزبان مجازی آپاچی هستند). فایل پیکربندی بلوک سرور Nginx پیش فرض را باز کنید:

 

$ sudo vi /etc/nginx/conf.d/default.conf

 

 

حال با حذف شدن کامنت Nginx  شروع به کار میکند:

 

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}


ما نیاز به اعمال تغییراتی برای سایت خود داریم که عبارتند از :

 

·    درابتدا باید فایل index.php را ایجاد کنیم و به عنوان پیشفرض تعریف کنیم تا فایل های php را دراین فایل بارگذاری کنیم.


·    ما همچنین باید دستورالعمل server_name را اصلاح کنیم تا به نام دامنه سرور یا آدرس IP عمومی ما اشاره شود.


·    فایل پیکربندی واقعی شامل برخی از خطوط وکامنت هایی است که روال پردازش خطا را تعریف می کنند. ما این خطوط را که شامل این قابلیت هستند را از حالت کامنت خارج میکنیم.


·  برای پردازش واقعی PHP، ما باید بخشی از قسمت های دیگر را از حالت کامنت خارج کنیم. ما همچنین باید یک دایرکتوری try_filesاضافه کنیم تا مطمئن شویم Nginx درخواست های بدی را به پردازنده پی اچ پی ما ارسال نمیکند.


تغییراتی که باید انجام دهید، در متن زیر با رنگ قرمز مشخص شده است. در صورت نیاز می توانید همه چیز را کپی و جایگذاری کنید، سپس مقدار نام سرور را با نام دامنه مناسب یا آدرس IPجایگزین کنید:


server {
    listen       80;
    server_name  server_domain_name_or_IP;

    # note that these lines are originally from the "location /" block
    root   /usr/share/nginx/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}


وقتی تغییرات بالا را انجام دادید، می توانید فایل را ذخیره و بسته کنید.

 

راه اندازی مجدد Nginx برای اعمال تغییرات انجام شده لازم است:

$ sudo systemctl restart nginx

قدم پنجم – تست پردازش پی اچ پی در وب سرور شما

 

برای تست اینکه سیستم ما به درستی برای پی اچ پی پیکربندی شده است، می توانیم یک اسکریپت بسیار ساده PHP ایجاد کنیم.

ما  این اسکریپت info.php نامگذاری میکنیم. برای اینکه آپاچی فایل را پیدا کند و به درستی آن را اجرا کند، باید آن را به یک پوشه بسیار خاصی که "web root" نامیده می شود، ذخیره کند.

 

در CentOS 7این پوشه در / usr/share/nginx/html/ واقع شده است. با تایپ کردن دستور زیر می توانیم فایل را در آن محل ایجاد کنیم:


$ sudo vi /usr/share/nginx/html/info.php


این یک فایل خالی را باز می کند که ما می خواهیم متن زیر را که کد PHPاست، قرار دهیم:


<?php phpinfo(); ?>


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

اکنون می توانید آزمایش کنید که آیا وب سرور ما می تواند به طور صحیح محتوای تولید شده توسط یک اسکریپت PHPنمایش دهد. برای امتحان کردن این، ما فقط باید از این صفحه در مرورگر وب ما بازدید کنیم. شما دوباره به آدرس IP عمومی سرور خود نیاز دارید.

آدرس ای که می خواهید بازدید کنید عبارت است از:


http://your_server_IP_address/info.php


صفحه ای که به آن می روید باید چیزی شبیه به این باشد:



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

 

اگر بارگذاری این صفحه موفقیت آمیز بود به این معنا است که phpشما به درستی نصب شده است.

 

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


$ sudo rm /usr/share/nginx/html/info.php


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

 

 

 

 

ترجمه : حانیه عاصمیامیر پناهنده


نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد