تثبيت PHP

Alhoqbaniمنذ 6 سنوات

في القسم الثاني من الدورة نقوم بإعداد LEMP Stack والذي يشمل Linux, Nginx, MySQL, PHP ونبدأ بتثبيت php في هذا الدرس.

بسم الله الرحمن الرحيم

لا تترد في طرح أسئلتك المتعلقة بمواضيع الدورة في التعليقات.

سيرفر جديد

في حال لم يكن لديك سيرفر جاهز قمت بإنشائه من خلال متابعة الدروس السابقة، قم بإنشاء سيرفر جديد باتباع الخطوات الواردة في الدرس الأول من الدورة: "نحتاج إلى سيرفر"، وكذلك نحتاج إلى إنشاء مستخدم جديد على السيرفر ولديه صلاحيات إدراة السيرفر (sudo) وفي هذه الدورة سأفترض بأن اسم المستخدم الجديد هو (ubuntu) وعليه يجب عليك تغيير الاسم في حال نسخ الأكواد من الدروس إذا كان الاسم مختلفًا عن (ubuntu) ويمكن القيام بهذه الخطوات بمتابعة درس "دخول أكثر أمانًا"

بعد إنشاء السيرفر قم بالدخول إليه عن طريق الأمر:

# ubuntu والمستخدم ssh الدخول إلى السيرفر باستخدام 
# لا تنسى تغيير العنوان بحسب العنوان الخاص بخادمك
ssh [email protected]

تثبيت NGINX

خادم الويب الذي سوف نقوم باستخدام هو Nginx ولتثبيته على السيرفر نقوم بتنفيذ الأمر التالي:

# تحديث قاعدة البيانات الخاصة بمستودعات الحزم ثم تثبيت خادم الويب
sudo apt-get update && sudo apt-get install -y nginx

قم بزيارة  العنوان الرقمي للسيرفر IP Address بواسطة المتصفح، وسوف تظهر لك الصفحة الافتراضية لـNginx، وفي حال لم تظهر لك الصفحة تأكد من أن Nginx تم تشغيله بتنفيذ الأمر

# Nginx تشغيل
sudo service nginx start

# Nginx الاستعلام عن حالة
sudo service nginx status
# سيظهر لك الكثير من البيانات يفترض أن يكون أولها كما يلي

# ● nginx.service - A high performance web server and a reverse proxy server
#    Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
#    Active: active (running) since Sun 2018-07-01 23:52:20 UTC; 6s ago

تثبيت PHP

سوف نقوم بتثبيت النسخة 7.2 من php  والتي هي النسخة الأحدث في وقت كتابة هذا الدرس. وللحصول على آخر نسخة فإننا نحتاج إلى إضافة مستودع جديد للبرمجيات الخاصة بتوزيعة Ubuntu، وسنقوم بتنفيذ الأمرين التاليين:

# php لإضافة أحدث نسخة من ondrej/php إضافة مستودع 
sudo apt-add-repository ppa:ondrej/php

# تحديث قاعدة البيانات لجلب النسخة الجديدة
sudo apt-get update

 ومن الضروي تنفيذ الأمر sudo apt-get udpate لتحديث قاعدة البيانات.

بعد ذلك نقوم بتنفيذ الأمر التالي لتثبيت php 7.2

# ومجموعة من الملحقات الخاصة بها php تثبيت
sudo apt-get install -y php7.2-fpm php7.2-cli php7.2-sqlite3 php7.2-mysql php7.2-gd php7.2-curl php-memcached php7.2-mbstring php7.2-xml php7.2-zip php7.2-intl

سيقوم بهذه الأمر بتثبيت النسخة رقم 7.2 من php وكذلك مجموعة من الملحقات. يرجى ملاحظة أنه ينبغى ألا تقوم بتثبيت إلا ما تحتاجه من هذه الملحقات، فمثلًا إذا لم تكن ستستخدم memcached فلا تقم بثبيته. ولكن بما أن هذه السيرفر هو للتدريب والتجربة فلا ضرر من تثبيت هذه الملحقات. 

بعد الانتهاء من التثبيت يمكن التأكد من صحة تثبيت php بطريقتين: الأولى باستخدام الأمر التالي:

# php عرض النسخة المثبتة من 
php -v

# وستظهر لك بيانات مشابهة للتالي
PHP 7.2.7-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Jun 22 2018 08:44:50) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.7-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

 والطريقة الثاني بعرض بيانات وإعدادات php من خلال المتصفح. وقبل ذلك لا بد أن نقوم بالربط ما بين Nginx و php

Nginx و PHP

يتم الربط بين php وnginx عن طريق استخدام php-fpm، وذلك من خلال تغيير اعدادات Nginx لإرسال الطلبات التي تحتاج إلى معالجة من قبل php إلى ملف مشترك بينهما. وسنقوم بذلك عن طريق تغيير الإعدادات في ملف الموقع المفعل لدينا /etc/nginx/sites-enabled/default

# Nginx قم بتغيير مسارك إلى مجلد إعدادات 
cd /etc/nginx
# استعراض ملفات المواقع المفعلة
ll /etc/nginx/sites-enabled

# أخذ نسخة احتياطية من الملف للرجوع إليها في حالة الخطأ
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.original

# default نقوم بفتح ملف إعدادات الموقع المفعل والافتراضي
sudo nano /etc/nginx/sites-available/default

# ابحث عن السطر التالي في الملف وقم بتعديله
index index.html index.htm index.nginx-debian.html;
# ليصبح كالتالي index.php بإضافة 
index index.php index.html index.htm index.nginx-debian.html;

# بإضافة التالي أسفل السطر السابق مباشرة php توجيه الطلبات إلى 
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.2-fpm.sock; # لاحظ تغيير النسخة إلى 7.2
        }

# الخروج من المحرر وحفظ التعديلات
# Ctrl + o  احفظ التغييرات بالضغط على 
# enter ثم الضغط على
# Ctrl + x وللخروج من المحرر

# أو بإمكانك استبدال كامل محتويات الملف بالتالي
server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name _;
        location / {
                try_files $uri $uri/ =404;
        }
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        }
}

وما قمنا بتعديله في الملف السابق هو كالتالي:

1. أضافة index.php لإعداد index حيث يقوم Nginx بإعادة الملف index.php إلى المتصفح في حال عدم طلب ملف معين مثل زيارتك للموقع: www.3alam.pro

2. أي طلب لملف php أي عندما ينتهي الرابط بـ (.php) مثل زيارتك لـ www.3alam.pro/about.php سنقوم بتحويل الطلب إلى php وذلك بارساله إلى الملف  /run/php/php7.2-fpm.sockوالذي يستمع إليه php لتلقي الطلبات.

إعادة تحميل Nginx

ليقوم Nginx بقراءة وتحميل الاعدادات الجديدة نقوم تنفيذ الأمر التالي:

# Nginx إعادة تحميل
sudo service nginx reload

اختبار الإعدادات

سوف نتأكد من صحة الإعدادات بعرض إعدادات php على المتصفح وسيكون ذلك بزيارة الملف info.php من المتصفح.

ويمكننا القيام بذلك بإضافة ملف info.php إلى الموقع الرئيسي root للموقع الافتراضي والذي هو غالبًا  /var/www/html

هذا الملف سوف يحتوي على سطر php واحد ودالة وحيدة phpinfo(); والتي ستقوم بعرض الاعدادات الحالية لنسخة php.

ويمكن القيام بذلك بتنفيذ الأمر التالي:

# php إنشاء ملف جديد لعرض بيانات 
echo "<?php phpinfo();" | sudo tee /var/www/html/info.php

وأخيرًا يمكنك زيارة الصفحة بالدخول إلى الرابط: http://178.128.162.156/info.php بالطبع بعد تغيير العنوان إلى عنوان خادمك.

وسوف تظهر لك صفحة مشابهة للتالي

phpinfo
صفحة إعدادات PHP

 

وبذلك نكون انتهينا من تثبيت php على السيرفر، وفي الدرس القادم سوف نقوم بتثبيت تطبيق php باستخدام  Laravel وربطه مع قاعدة البيانات MySQL.

 

الدرس السابق       الدرس التالي
         
شهادة SSL       تطبيق Laravel

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

MesterPerfect:

جميل جدا سأقوم بالتجربة قريبا

دروس مميزة جدا شكرا لكم

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

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