کانفیگ nginx با php

nginx+php

انجینکس به طور پیش فرض از php پشتیبانی نمی کنه. برای اجرای کدهای php باید تغییراتی در تنظیمات nginx و php داده بشه.

این تنظیمات برای php ورژن 7.2معتبره با این فرض پیش میریم که nginx و php رو از قبل نصب کردید

  • با دستور زیر باید user و group ی رو که nginx و پروسس های اون اجرا می شه ، پیدا کنیم.

      ps -aux | grep nginx 
    

برای من خروجی به این صورت بود برای شما ممکنه فرق کنه:

root     18131  0.0  0.0 141112  1388 ?        Ss   09:14   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 18133  0.0  0.1 143736  6068 ?        S    09:14   0:00 nginx: worker process
www-data 18134  0.0  0.1 144072  7156 ?        S    09:14   0:00 nginx: worker process
www-data 18135  0.0  0.1 143736  6068 ?        S    09:14   0:00 nginx: worker process
www-data 18136  0.0  0.1 143736  6068 ?        S    09:14   0:00 nginx: worker process

همانطوری که می بینید پروسس اصلی nginx با یوزر root اجرا شده و پروسس های به اصطلاح worker با یوزر www-data. خب این دوتا رو مد نظر داشته باشید فعلا.

  • مسیر نصب php رو پیدا کنید. معمولا php در ‍etc/php/ نصب میشه. با توجه به ورژنی که نصب شده ممکنه پوشه بعدی 7.0 یا ‍7.2 باشه. همانطور که قبلا هم گفتم این کانفیگ برای php ورژن 7.2 معتبره و ممکنه برای ورژن های قبل از 7.2 و بعد از اون فرق کنه. پس به مسیر زیر برید

      /etc/php/7.2/fpm/pool.d
    

و فایل www.conf رو با دسترسی روت باز کنید. متغیر های listen.owner و listen.group رو پیدا کنید. برای listen.owner باید یوزری که پروسس اصلی nginx با اون اجرا شده رو قرار بدید و در listen.group باید گروهی که پروسس های ورکر nginx با اون اجرا شدن رو قرار بدید.

listen.owner = root
listen.group = www-data
  • به مسیر زیر برید:

      /etc/php/7.2/fpm/
    

و فایل php.ini رو با دسترسی روت اجرا کنید. بعد به دنبال cgi.fix_pathinfo بگردید. سمی کولن رو از اول اون بردارید تا از حالت کامنت شده در بیاد و بعد مقدارش رو به 0 تغییر بدید.

  • سرویس php رو ریستارت کنید.

      sudo service php7.2-fpm restart
    

حالا باید nginx رو تنظیم کنید.

به مسیر نصب nginx برید. برای من انجینکس توی این مسیر نصب شده ولی برای شما ممکنه فرق داشته باشه:

    /etc/nginx

وارد sites-available بشید و با دسترسی روت فایل default رو باز کنید.

در قسمت server این کد ها رو اضافه کنید:

    location ~* \.php$ {
    fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    include         fastcgi_params;
    fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
      }

نکته : به ورژن php در قسمت fastcgi_pass دقت کنید. با این تکه کد به انجینکس می فهمونیم که هر فایلی رو که پسوندش php هست رو برای اجرا به php7.2-fpm.sock بفرسته

  • سرویس nginx رو ریستارت کنید

      sudo service nginx restart
    

    حالا در مسیر var/www/html/ فایلی به اسم sample.php می سازیم و در این فایل تکه کد زیر رو می نویسیم:

<?php
phpinfo();
?>

حالا مرور گرتون رو باز کنید و به مسیر localhost برید و اسم فایل رو وارد کنید.

    localhost/sample.php

اگر صفحه PHP Information به درستی نمایش داده بشه، کار تمومه.

نکته خیلی مهم -> اگر با صفحه سفید رو به رو شدید باید یک بار سیستم رو ریستارت کنید.

آموزش اصلی رو می تونید در این لینک پیدا کنید

امیدوارم به دردتون خورده باشه

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی
طراح قالب : عرفـــ ـــان قدرت گرفته از بلاگ بیان