تركيب واعداد PHP-FPM مع Apache على Ubuntu 16.04
مقدمة:
في عالم البرمجة بشكل عام تحتاج الى إعداد بيئة التطوير بشكل صحيح لتسهيل البرمجة بدون اشكاليات, في هذا المقال سوف نشرح خطوة بخطوة طريقة تركيب 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;
يمكن الان تطبيق هذه الاعدادات بشكل كامل لاي مشروع سواء على البيئة التطويرية او البيئة الانتاجية.
الخلاصة:
أنت قادر الان على تركيب واعداد خادم ويب متكامل بالخصائص التالية:
- تحديث برمجيات نظام التشغيل الى اخر نسخة.
- تركيب واعداد خادم الويب Apache.
- تركيب واعداد خادم قواعد البيانات MySQL.
- تركيب واعداد لغة PHP.
- انشاء نطاق انترنت Domain واعداده في Apache.
- انشاء مستخدم على النظام خاص بالنطاق.
- انشاء قاعدة بيانات ومستخدم خاص بالنطاق.
التعليقات (0)
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !