کانفیگ 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 به درستی نمایش داده بشه، کار تمومه.

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

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

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

۰ نظر
طراح قالب : عرفـــ ـــان قدرت گرفته از بلاگ بیان