تركيب واعداد PHP-FPM مع Apache على Ubuntu 16.04

daifمنذ 8 سنوات

مقدمة:

في عالم البرمجة بشكل عام تحتاج الى إعداد بيئة التطوير بشكل صحيح لتسهيل البرمجة بدون اشكاليات, في هذا المقال سوف نشرح خطوة بخطوة طريقة تركيب PHP بطريقة FPM والذي يعنى (FastCGI Process Manager) وهذه الطريقة افضل من PHP FastCGI العادية والتى تعتبر قديمة.

أيضا سوف تتعلم في هذا المقال كيفية تحرير الملفات باستخدام محرر النصوص Nano من خلال نافذة سطر الاوامر Terminal وهذا المحرر يمكن التعامل معه بسهوله اكثر من محرر النصوص العريق vi او vim حيث يحتوى الاخير على مميزات لا نحتاجها دوما.

سوف يكون هناك بعض الاوامر الخاصة بعملية تغيير الصلاحيات للملفات وتغيير المالك الاساسي للملف وكذلك امر اضافة مستخدم جديد للنظام وبعض الاوامر الاخرى الخاصة بخادم الويب اباتشي.

سوف نفترض في هذا المقال انك قمت بتركيب او لديك نظام ابونتو النسخة Ubuntu 16.04 LTS ولا يهم اذا كان لديك اصدار desktop او server  حيث ان الاعدادات نفسها تماما.

 

تحديث النظام:

ان اول ما نقوم به عند تركيب اي نظام تشغيل هو تحديث جميع البرمجيات الى اخر اصدارة متوفرة حيث يتم اضافة بعض المميزات او اصلاح بعض الاشكاليات , سنقوم الان بتحديث قائمة البرمجيات للنظام بشكل كامل عبر الامر التالي:

sudo apt-get update

ثم عمل تركيب لهذه البرمجيات

sudo apt-get upgrade

 

مرحلة تركيب الويب سرفر Apache:

سنقوم الان بتركيب اخر نسخة من خادم الويب Apache عبر الامر التالي:

sudo apt-get install apache2

تركيب وحدة  fastcgi التى تدعم PHP-FPM :

sudo apt-get install libapache2-mod-fastcgi

تفعيل بعض الوحدات الاساسية في Apache

sudo a2enmod actions alias fastcgi proxy_fcgi rewrite

الغاء تفعيل بعض الوحدات  في Apache

sudo a2dismod status autoindex

اعادة تشغيل خادم الويب Apache لتطبيق الاعدادات الجديدة

sudo service apache2 restart

 

مرحلة تركيب قاعدة البيانات MySQL:

تركيب قاعدة البيانات ماي اس كيو ال لا يتطلب الكثير, سوف يتم طلب رقم سري خاص بالمستخدم الرئيسي root والخاص بقاعدة البيانات نفسها وليس مستخدم النظام.

sudo apt-get install mysql-server

سوف يتم سؤالك عن كلمة مرور خلال عملية التركيب.

 

مرحلة تركيب PHP:

تركيب نسخة بي اتش بي الاساسية

sudo apt-get install php php-cli php-fpm

تركيب المكتبات الاضافية والتى تحتاج اليها اغلب برامج بي اتش بي ومن اهمها مكتبة الاتصال بقواعد البيانات php-mysql

php-mysql php-zip php-curl php-gd php-mcrypt php-imap php-mbstring php-soap php-gettext php-json php-phpseclib

تعديل لزيادة الامان  لقيمة cgi.fix_pathinfo في ملف php.ini وسوف نستخدم محرر النصوص nano لسهولة استخدامه .

sudo nano /etc/php/7.0/fpm/php.ini

ثم البحث عن عبارة cgi.fix وذلك بالضغط على Crtl+w ثم كتابة cgi.fix ثم اضغط Enter واستخدم الاسهم للوصول الى سطر التالي

cgi.fix_pathinfo=1

وقم يتعديل القيمة من 1 الى 0 ولحفظ الملف  اضغط على Crtl+o ثم Enter و للخروج من المحرر اضغط Crtl+x

الان نقوم باعادة تشغيل خدمة PHP  لتطبيق الاعدادات التى تمت , علما انك لاتحتاج الى اعادة تشغيل Apache

sudo service php7.0-fpm restart

نقوم الان بتفعيل اعدادات بي اتش بي

sudo a2enconf php7.0-fpm

اذا لم نقم بتنفيذ الامر السابق سوف تظهر لنا اكواد بي اتش بي في المتصفح

 

مرحلة اعداد المشروع:

من أفضل الممارسات في اعداد المشروع على البيئة الانتاجية بشكل خاص والبيئة التطويرية بشكل عام هي انشاء مستخدم خاص لكل مشروع بحيث يعمل كل نظام بالمستخدم الخاص به وسيتم تنفيذ ذلك عبر تشغيل خدمة بي اتش بي PHP-FPM بنفس المستخدم الخاص بالمشروع.

انشاء مستخدم جديد على النظام باسم developer  , يمكن تجاهل هذه الخطوة اذا كنت ترغب في استخدام نفس اسم المستخدم الخاص بك

sudo adduser developer

سوف يتم سؤالك عن كلمة مرور وبعض البيانات الاخرى الغير اجبارية خلال عملية انشاء المستخدم.

سوف ننشيء مجلد باسم public داخل المشروع  باسم site.dev  حيث يمكن لنا  لاحقا انشاء اكثر من عنوان وذلك داخل المجلد الرئيسي للمستخدم.

sudo mkdir -p /home/developer/www/site.dev/public

مجلد اخر لوضع سجلات الاخطاء وسجلات الزيارات بداخله وهذا المجلد سيكون غير قابل للوصول من متصفح.

sudo mkdir -p /home/developer/www/site.dev/logs

نحن نقوم بتنفيذ الاوامر السابقة باستخدام sudo وهذا يعني ان جميع الملفات تم انشاء بالمستخدم root سنقوم الان بتعديل جميع الملفات للمستخدم developer وللمجموعة developer

sudo chown -R developer:developer /home/developer/www

تعديل خدمة PHP-FPM لتعمل بالمستخدم developer

sudo nano /etc/php/7.0/fpm/pool.d/www.conf

ثم تعديل سطر المستخدم وسطر المجموعة الى developer يمكن استخدام Ctrl+w للبحث عن كلمة user وكلمة group ليكون التعديل بهذا الشكل

user = developer
group = developer

اعادة تشغيل بي اتش بي لتطبيق التغييرات الجديدة.

sudo service php7.0-fpm restart

انشاء عنوان افتراضيsite.dev  ليعمل داخل جهازنا فقط بالتعديل على ملف hosts

sudo nano /etc/hosts

ثم اضف عنوان الاي بي الخاص بك غالبا ما يكون للنطاق كما يلي

127.0.0.1  site.dev

اعداد نطاق انترنت في خادم الويب Apache وذلك لنتمكن من الوصول الى المشروع عبر الرابط site.dev

sudo nano /etc/apache2/sites-available/site.dev.conf

انسخ المحتوى التالي والصقه في المحرر , يمكن الضغط على Ctrl+Shif+v لعملية اللصق

NameVirtualHost site.dev:80
<VirtualHost site.dev:80>
    ServerName site.dev
    DocumentRoot "/home/developer/www/site.dev/public"
    
    <Directory "/home/developer/www/site.dev/public/">
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride all
        Require all granted
    </Directory>
    
    LogLevel warn
    CustomLog /home/developer/www/site.dev/logs/apache2_access.log combined
    ErrorLog /home/developer/www/site.dev/logs/apache2_error.log
</VirtualHost>

احفظ الملف بالضغط على Ctrl+o ثم Enter ثم Ctrl+x

الان يجب علينا تفعيل site.dev باستخدام a2ensite والتى تعني Apache2 Enable Site

sudo a2ensite site.dev

تطبيق التعديلات الجديد عن طريق اعادة تحميل الاعدادات بدون ان يتم اعادة تشغيل خادم الويب

sudo service apache2 reload

يمكن الان انشاء ملف php لتجربة عبر المتصفح, لا ننسى امر تغير المستخدم للملفات

sudo nano /home/developer/www/site.dev/public/phpinfo.php
sudo chown -R developer:developer /home/developer/www

لصق المحتوى التالي في ملف php


<?php
phpinfo();
?>

الوصول الى الملف عبر الرابط التالي

http://site.dev/phpinfo.php

سنقوم الان بانشاء قاعدة بيانات للمشروع وانشاء مستخدم خاص بها

mysql -u root -p

سيقوم الامر السابق بالاتصال بقاعدة البيانات و سيتم سؤالك عن كلمة المرور التى ادخلتها سابقا عند تركيب قاعدة البيانات, بعد الاتصال بقاعدة البيانات سوف يظهر لك سطر اوامر MySQL .

نفذ امر انشاء قاعدة بيانات باسم site_db


CREATE DATABASE site_db;

ثم امر انشاء مستخدم site_user واعطائه كامل الصلاحيات على قاعدة البيانات مع استبدال كلمة project-passwd بكلمة مرور انت تحددها.


GRANT ALL PRIVILEGES ON site_db.* TO site_user@localhost IDENTIFIED BY 'project-passwd';

الان نقوم بعمل تفعيل للصلاحيات والمستخدم بامر FLUSH


FLUSH PRIVILEGES;

يمكن الان تطبيق هذه الاعدادات بشكل كامل لاي مشروع سواء على البيئة التطويرية او البيئة الانتاجية.

 

الخلاصة:

أنت قادر الان على تركيب واعداد خادم ويب متكامل بالخصائص التالية:

  1. تحديث برمجيات نظام التشغيل الى اخر نسخة.
  2. تركيب واعداد خادم الويب Apache.
  3. تركيب واعداد خادم قواعد البيانات MySQL.
  4. تركيب واعداد لغة PHP.
  5. انشاء نطاق انترنت Domain واعداده في Apache.
  6. انشاء مستخدم على النظام خاص بالنطاق.
  7. انشاء قاعدة بيانات ومستخدم خاص بالنطاق.
كلمات دليلية:
2
إعجاب
3127
مشاهدات
1
مشاركة
1
متابع
متميز
محتوى رهيب

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !