آموزش کانفیگ PHP 7 و Nginx در Ubuntu 16.04 : رقابتی سختی میان Apache و Nginx بر سر مقام محبوب ترین وب سرور وجود دارد. زبان های Ruby و Python سازگاری بسیار خوبی با Nginx و PHP سازگاری خوبی با آپاچی دارد, اما با آمدن PHP7 امکان ترکیب PHP و Nginx نتیجه پر سرعتی خواهد داشت.
آموزش کانفیگ PHP 7 و Nginx در Ubuntu 16.04 با نوین هاست
ابتدا بسته های لازم را نصب میکنیم:
# sudo apt-get update && sudo apt-get -y upgrade
# sudo apt-get -y install nginx php7.0 php7.0-fpm
پس از اتمام نصب با systemd اطمینان حاصل کنید که هر دو در حال اجرا هستند
# sudo systemctl status nginx
# sudo systemctl status php7.0-fpm
در صورتی که انجین ایکس با موفقیت نصب و اجرا شده باشد, با باز کردن آدرس localhost در مرور گر, صفحه خوشامد گویی انجین ایکس را مشاهده خواهدی نمود.
در غیر این صورت بت دستور systemctl start nginx میتوانید وب سرور را آتش کنید.
Nginx هم مثل آپاچی فایل کانفیگ خود را در آدرس /etc/nginx نگه میدارد, کانفیگ پیشفرض به خوبی کار میکند مگر اینکه بخواهید فشرده سازی Gzip را فعال کنید. برای بهبود امنیت وب سرور بهتر است چهار خط زیر را به فایل کانفیگ اضافه کنید:
- add_header X-Frame-Options SAMEORIGIN;
- add_header X-Content-Type-Options nosniff;
- mode=block”;
- add_header X-XSS-Protection “1;
لازم نیست بگویم که با دستور systemctl restart nginx فایل کانفیگ بازخوانی میشود.
برای پیکربندی سایت به پوشه روت انجین ایکس که معمولا در مسیر /etc/nginx قرار دارد مراجعه کنید.
دو پوشه با نام های sites-available و sites-enabled وجود خواهد داشت, پوشه اول پیکربندی سایت های شما را نگهداری میکند و دومی لینک های symlink به پوشه قبلی ارجاع میدهند, با این کار, تنها با حذف و اضافه کردن لینک ها میتوانید سایت ها را فعال یا غیر فعال کنید.
با ویرایشگر متن خود فایلی با نام و آدرس
/etc/nginx/sites-available/yoursite
ایجاد کنید
server { #Nginx should listen on port 80 for requests to yoursite.com listen 80; server_name yoursite.com; #Create access and error logs in /var/log/nginx access_log /var/log/nginx/yoursite.access_log main; error_log /var/log/nginx/yoursite.error_log info; #Nginx should look in /var/www/yoursite for your website root /var/www/yoursite/; #The homepage of your website is a file called index.php index index.php; #Specifies that Nginx is looking for .php files location ~ \.php$ { #If a file isn’t found, 404 try_files $uri =404; #Include Nginx’s fastcgi configuration include /etc/nginx/fastcgi.conf; #Look for the FastCGI Process Manager at this location fastcgi_pass unix:/run/php/php7.0-fpm.sock; } }
خط
root /var/www/yoursite/;
مشخص میکند که وب سرور در آدرس /var/www/yoursite/ باید محتویات سایت شما را پیدا کند.
حالا باید یک لینک از فایل کانفیگ ایجاد شده, در پوشه sites-enabled ایجاد کنید.
# cd /etc/nginx/sites-enabled
# sudo ln -s /etc/nginx/sites-available/yoursite
افزایش امنیت
حالا برای امنیت بیشتر بهتر است نگاهی به php.ini بیندازیم.
فایل پیکربندی پی اچ پی ۷ در آدرس /etc/php/7.0/fpm/php.ini قرار دارد, آنرا با ویرایشگر متن مورد علاقه تان باز کرده و در خط disable_functions گزینه های phpinfo,system,mail,exec را اضافه کنید. بعد در مقابل file_uploads مقدار Off در مقابل sql.safe_mode مقدار On و در مقابل خط allow_url_fopen مقدار Off را جایگزین کنید.
اضافه کردن خط
register_globals = Off
به این فایل هم به امنیت سرور می افزاید.
حالا با ریستارت php و nginx سرور شما آمده است:
# sudo systemctl restart php7.0-fpm
# sudo systemctl restart nginx
حالا با ارسال درخواست مشاهده سایت به سرور انجین ایکس در پوشه /var/www/yoursite به دنبال فایل index.php خواهد گشت تا به کاربر نمایش دهد.