کانفیگ 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 به درستی نمایش داده بشه، کار تمومه.
نکته خیلی مهم -> اگر با صفحه سفید رو به رو شدید باید یک بار سیستم رو ریستارت کنید.
آموزش اصلی رو می تونید در این لینک پیدا کنید
امیدوارم به دردتون خورده باشه