مقدمة
Laravel هو إطار عمل لتطبيقات الويب يأتي مع مجموعة من الأدوات والموارد المدمجة لتطوير تطبيقات PHP الحديثة. وهو معروف بموثوقيته وأدائه وكفاءته ونمطيته وأمانه. وبسبب ميزاته المدمجة المتنوعة، شهد Laravel نموًا هائلاً في شعبيته. يعتمد العديد من المطورين Laravel لتبسيط عملية تطوير الويب.
سيوضح هذا الدليل كيفية تثبيت وتكوين تطبيق Laravel جديد على Ubuntu 20.04.
Laravel على Ubuntu
سنستخدم Composer، وهو مدير اعتماديات لـ PHP، لتنزيل Laravel وإدارته. لـ تثبيت Composer، اتبع الإرشادات الواردة في هذا البرنامج التعليمي. سيقوم خادم Nginx بتقديم التطبيق. سيقوم بإنشاء تطبيق Laravel تجريبي باستخدام قاعدة بيانات MySQL.
يتطلب هذا الدليل بعض الشروط المسبقة. نفترض أن لديك بالفعل خادم Ubuntu 20.04 تم تكوينه بشكل صحيح ويعمل بالفعل. كمرجع، إليك دليل سريع حول إعداد خادم Ubuntu. من المطلوب أيضًا تثبيت وتكوين حزمة LEMP (Linux و Nginx و MySQL و PHP). لدينا دليل مفصل حول تثبيت وتكوين حزمة LEMP.
نظرًا لأننا سنقوم بتثبيت حزم مختلفة، فإن ذلك يتطلب صلاحيات root. في حالة Ubuntu، يتم تعطيل مستخدم root افتراضيًا. لذلك، نحتاج إلى الوصول إلى مستخدم غير root يتمتع بصلاحيات sudo. إليك كيفية منح صلاحية sudo للمستخدمين الآخرين.
الخطوة 1 – تثبيت وحدات PHP
قبل تثبيت Laravel، نحتاج إلى بعض وحدات PHP المهمة لإطار العمل. تتوفر هذه الوحدات مباشرة من مستودعات حزم Ubuntu الافتراضية. تدعم هذه الوحدات ميزات مثل ترميز الأحرف، و XML، والرياضيات الدقيقة.
أولاً، قم بتحديث ذاكرة التخزين المؤقت لـ APT وتثبيت الحزم:
|
1 2 |
$ sudo apt update $ sudo apt install php-mbstring php-xml php-bcmath |
الخطوة 2 – إنشاء قاعدة بيانات للتطبيق
لتوضيح وظائف Laravel، سنقوم بإنشاء تطبيق قائمة سفر يعرض قائمة بالأماكن التي يرغب المستخدم في زيارتها، وقائمة بالأماكن التي تم زيارتها بالفعل. يمكننا تخزين هذه البيانات في جدول place مع الحقول name (اسم الموقع) و visited (تحديد كـ visited أو nonvisited). سيتضمن حقل إضافي معرفًا فريدًا لكل إدخال. لتوصيل البيانات بتطبيق Laravel الخاص بنا، سنقوم بإنشاء مستخدم MySQL مخصص، ونمنحه الصلاحية الكاملة على قاعدة البيانات travellist.
مكتبة MySQL PHP الأصلية mysqlnd لم تعد تدعم caching_sha2_authentication. وبالتالي، نحتاج إلى إعداد قاعدة البيانات الخاصة بنا باستخدام طريقة المصادقة mysql_native_password. قم بالوصول إلى واجهة تفاعل MySQL كمستخدم root:
|
1 |
$ sudo mysql |
بعد ذلك، قم بإنشاء قاعدة بيانات جديدة باسم travellist:
|
1 |
> CREATE DATABASE travellist; |
بعد ذلك، قم بإنشاء مستخدم مخصص travellist_user بكلمة مرور مناسبة:
|
1 |
> CREATE USER 'travellist_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
امنح المستخدم travellist_user الصلاحية الكاملة على قاعدة البيانات travellist. سيمنع هذا أيضًا المستخدم من إنشاء أو تعديل أي قاعدة بيانات أخرى على الخادم:
|
1 |
> GRANT ALL ON travellist.* TO 'travellist_user'@'%'; |
اخرج من واجهة تفاعل MySQL:
|
1 |
> exit |
دعنا نختبر المستخدم الجديد. سيقوم الأمر التالي بتسجيل الدخول إلى واجهة تفاعل MySQL كمستخدم travellist_user. ستطلب العلامة -p كلمة مرور المستخدم:
|
1 |
$ mysql -u travellist_user -p |
قم بطباعة جميع قواعد البيانات المتاحة. كما تم تكوينه سابقًا، يجب أن يظهر travellist و information_schema فقط:
|
1 |
> SHOW DATABASES; |
بعد ذلك، نحتاج إلى إنشاء جدول البيانات places. قم بتشغيل بيان MySQL التالي:
|
1 2 3 4 5 6 |
> CREATE TABLE travellist.places ( id INT AUTO_INCREMENT, name VARCHAR(255), visited BOOLEAN, PRIMARY KEY(id) ); |
دعونا نملأ الجدول ببعض البيانات التجريبية:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
> INSERT INTO travellist.places (name, visited) VALUES ("Tokyo", false), ("Delhi", true), ("Shanghai", false), ("Moscow", true), ("Lisbon", true), ("Denver", false), ("Berlin", false), ("Istanbul", false), ("Rio", true), ("Beijing", false), ("Helsinki", false); |
دعونا نرى ما إذا كان قد تم تخزين البيانات بنجاح في قاعدة البيانات:
|
1 |
> SELECT * FROM travellist.places; |
كما نرى، تم ملء جدول الاختبار ببيانات صالحة. يمكننا الآن الخروج من واجهة MySQL:
|
1 |
> exit |
الخطوة 3 – إنشاء تطبيق Laravel جديد
نحن جاهزون الآن لإنشاء تطبيق Laravel جديد باستخدام Composer. سنستخدم travellist كتطبيق تجريبي. سيعرض هذا التطبيق قائمة المواقع من قاعدة بيانات MySQL، مما يوضح التكوين الأساسي لـ Laravel. انتقل إلى الدليل الرئيسي للمستخدم:
|
1 |
$ cd ~ |
الخطوة التالية هي إنشاء تطبيق Laravel جديد باستخدام Composer. سيؤدي ذلك إلى إنشاء دليل مخصص travellist يحتوي على تطبيق Laravel أساسي بالإعدادات الافتراضية. قم بتشغيل الأمر التالي:
|
1 |
$ composer create-project --prefer-dist laravel/laravel travellist |
بمجرد إنشاء التطبيق، يمكننا التحقق مما إذا كان قد تم تثبيت جميع المكونات بنجاح:
|
1 2 |
$ cd travellist $ php artisan |
يؤكد المخرج أن جميع ملفات التطبيق في مكانها الصحيح. كما يضمن أن جميع أدوات سطر أوامر Laravel تعمل بشكل صحيح. ومع ذلك، فإنه لا يزال يتطلب تكوين التطبيق لإعداد قاعدة البيانات وبعض التعديلات الإضافية.
الخطوة 4 – تكوين Laravel
يتم تخزين جميع ملفات تكوين Laravel داخل دليل يسمى config داخل دليل التطبيق الرئيسي. بالإضافة إلى ذلك، عند تثبيت Laravel باستخدام Composer، فإنه ينشئ أيضًا ملف بيئة. يحتوي هذا الملف على إعدادات مختلفة خاصة بالبيئة الحالية. القيم المعلنة داخله ستكون لها الأسبقية على القيم المحددة في ملفات التكوين العادية في config.
سيتطلب كل تثبيت فريد ملف بيئة خاص به لتحديد قيم مثل إعدادات الاتصال بقاعدة البيانات، ورابط التطبيق (URL)، وخيارات تصحيح الأخطاء، وما إلى ذلك. لاحظ أن ملف البيئة يحتوي على معلومات حساسة مثل بيانات اعتماد قاعدة البيانات، ومفاتيح الأمان، وما إلى ذلك. ولهذا السبب يُوصى بشدة بعدم مشاركة هذا الملف علنًا أبدًا.
افتح ملف البيئة باستخدام محرر نصوص:
|
1 |
$ nano .env |
إليك نموذج لكود البيئة:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
APP_NAME=TravelList APP_ENV=development APP_KEY=<unique_app_key> APP_DEBUG=true APP_URL=http://<domain_or_ip> LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=travellist DB_USERNAME=travellist_user DB_PASSWORD=password123 |
دعونا نفصل هذه القيم:
APP_NAME: يصف هذا الحقل اسم التطبيق. سيتم استخدام هذا الاسم للإشعارات والرسائل.APP_ENV: البيئة الحالية للتطبيق.APP_KEY: يتم إنشاء هذا المفتاح تلقائيًا عند تثبيت Laravel من خلال Composer. ويُستخدم لإنشاء قيم عشوائية (salts) وتجزئات (hashes). لا داعي لتغييره.APP_DEBUG: مفتاح تبديل وضع تصحيح الأخطاء. عند تفعيله، سيعرض معلومات تصحيح الأخطاء على جانب العميل.APP_URL: رابط التطبيق الأساسي. يُستخدم أيضًا لإنشاء روابط التطبيق.DB_DATABASE: اسم قاعدة البيانات. في هذه الحالة، ستكون قاعدة البيانات المخصصة التي أنشأناها.DB_USERNAME: اسم المستخدم للاتصال بقاعدة البيانات.DB_PASSWORD: كلمة المرور للاتصال بقاعدة البيانات.
بمجرد إجراء التغييرات، احفظ الملف وأغلق المحرر.
الخطوة 5 – إعداد Nginx
لقد قمنا بتثبيت Laravel بنجاح في مجلد محلي داخل الدليل الرئيسي للمستخدم. يعمل هذا التكوين بشكل جيد في بيئة التطوير المحلية. ومع ذلك، لا يُنصح بتطبيقه على خوادم الويب المفتوحة لشبكة الإنترنت العامة.
خطوتنا التالية هي نقل التطبيق إلى /var/www حيث أنه الموقع المعتاد لتطبيقات الويب التي تعمل على Nginx. استخدم الأمر mv لنقل travellist إلى /var/www/travellist:
|
1 |
$ sudo mv ~/travellist /var/www/travellist |
بعد ذلك، قم بتعيين صلاحية الوصول للكتابة للمستخدم إلى مجلدات storage و cache. هذه هي مواقع الملفات التي تم إنشاؤها بواسطة تطبيق Laravel:
|
1 2 |
$ sudo chown -R www-data.www-data /var/www/travellist/storage $ sudo chown -R www-data.www-data /var/www/travellist/bootstrap/cache |
ملفات التطبيق أصبحت الآن في مكانها الصحيح. ومع ذلك، نحتاج إلى إخبار Nginx بتقديم المحتوى. قم بإنشاء ملف تكوين مضيف افتراضي جديد:
|
1 |
$ sudo nano /etc/nginx/sites-available/travellist |
إليك نموذجًا للإعدادات الموصى بها لتطبيق Laravel يعمل على Nginx:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
server { listen 80; server_name <domain_or_ip>; root /var/www/travellist/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; index index.html index.htm index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } } |
حان الوقت لتنشيط ملف تكوين المضيف الافتراضي الجديد. قم بإنشاء رابط رمزي إلى دليل sites-enabled :
|
1 |
$ sudo ln -s /etc/nginx/sites-available/travellist /etc/nginx/sites-enabled/ |
سيقوم أمر Nginx التالي باختبار ملفات التكوين بحثًا عن أخطاء في بناء الجملة:
|
1 |
$ sudo nginx -t |
بعد ذلك، أعد تحميل Nginx:
|
1 |
$ sudo systemctl reload nginx |
يجب أن يكون التطبيق متاحًا الآن باستخدام اسم المجال أو عنوان IP (كما هو محدد بواسطة توجيه server_name ):
الخطوة 6 – تخصيص الصفحة الرئيسية
بعد تكوين تطبيق Laravel، يمكننا الآن البدء في العمل عليه. للتوضيح، حان الوقت لإنشاء صفحة نموذجية تعرض البيانات التجريبية من جدول قاعدة البيانات places. أولاً، افتح ملف المسار الرئيسي في محرر نصوص:
|
1 |
$ nano routes/web.php |
سيحتوي الملف على بعض المحتوى افتراضيًا. هنا، يتم تعريف المسارات باستخدام الطريقة الثابتة (Route::get). وهي تستقبل path و callback function كمعاملات.
استبدل الكود بالكود التالي:
|
1 2 3 4 5 6 7 |
<?php use Illuminate\Support\Facades\DB; Route::get('/', function () { $visited = DB::select('select * from places where visited = ?', [1]); $togo = DB::select('select * from places where visited = ?', [0]); return view('travellist', ['visited' => $visited, 'togo' => $togo ] ); }); |
احفظ الملف وأغلق المحرر. بعد ذلك، سنقوم بإنشاء التخطيط لعرض نتائج استعلام قاعدة البيانات للمستخدم. أنشئ ملفًا جديدًا داخل resource/views:
|
1 |
$ nano resources/views/travellist.blade.php |
في الكود التالي، قمنا بإنشاء قائمتين من الأماكن اعتمادًا على قيمة visited و togo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<html> <head> <title>قائمة السفر</title> </head> <body> <h1>قائمة أمنيات السفر الخاصة بي</h1> <h2>أماكن للزيارة</h2> <ul> @foreach ($togo as $newplace) <li>{{ $newplace->name }}</li> @endforeach </ul> <h2>تمت زيارتها بالفعل</h2> <ul> @foreach ($visited as $place) <li>{{ $place->name }}</li> @endforeach </ul> </body> </html> |
احفظ الملف وأغلق المحرر. الآن، قم بالوصول إلى صفحة تطبيق الويب مجددًا:
ها قد انتهينا! لدينا الآن تطبيق Laravel فعال يستخدم قاعدة بيانات MySQL للمحتويات.
أفكار نهائية
في هذا البرنامج التعليمي، شرحنا كيفية إعداد تطبيق Laravel على حزمة LEMP التي تعمل على خادم Ubuntu 20.04. كما أوضحنا كيفية تخصيص المسار الافتراضي للاستعلام عن محتوى قاعدة البيانات وعرض النتائج في عرض مخصص. لمزيد من المعلومات حول Laravel، راجع الوثائق الرسمية الخاصة بـ views, routes، و دعم قاعدة البيانات.
يتم إجراء التثبيت في هذا البرنامج التعليمي على جهاز افتراضي مستقل. ومع ذلك، يمكنك أيضًا نشر Laravel على حزم LEMP على Docker.
نتمنى لك تجربة حوسبة ممتعة!









التعليقات
لا توجد تعليقات بعد. كن أول من يعلق.