اذهب إلى المحتوى
  • 0

كيف أقوم بعملية رفع مشروع لارافل Laravel على الاستضافة وماهي الأمور التي يجب أن أتأكد منها

سعيد يوسف

السؤال

أريد شرح الخطوات لرفع مشروع موقع الكتروني مبني بواسطة لارافل Laravel بطريقة سليمة، كيفية وضع الملفات و المجلدات وضبط إعدادات المخدم، وهل نحتاج لأي تعديلات إضافية في جزء API

وكيف أعرف متطلبات تشغيل المشروع

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 4

إن متطلبات تشغيل المشروع، تعتمد على إصدار Laravel بالإضافة للمكتبات الخارجية التي قمت بتثبيتها في composer.json

متطلبات لارافيل العامة:

في مسار PHP في ملف php.ini أزل الفاصلة المنقوطة ; من أمام كل من الميزات التالية لأن لارافل تعتمد عليهم ثم احفظ الملف وأعد تشغيل المخدم.

على الأغلب تجد تنصيب PHP في مسار تثبيت المخدم الذي تستعمله أو نفذ سكربت 

<php
phpinfo();
?>

المتطلبات:

PHP    >= 7.3
BCMath    PHP Extension
Ctype     PHP Extension
Fileinfo  PHP Extension
JSON      PHP Extension
Mbstring  PHP Extension
OpenSSL   PHP Extension
PDO       PHP Extension
Tokenizer PHP Extension
XML       PHP Extension

بعد إنشائك لمشروع لارافل، احتفظ بالمجلد public بموقعه ضمن public_html ولا تبدله ولا تنقله المهم أن يكون متاح على الشبكة ، إنما باقي المشروع يمكن أن تضعه خارج public_html وتعدل السطرين التاليين في index.php ليدلا على مجلد الجذر للمشروع

require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';

إعداد ngnix الموصى به من لارافل:

server {
    listen 80;                    #  منفذ
    server_name example.com;      #  دومين
    root /srv/example.com/public; # مسار المشروع على الاستضافة

    add_header X-Frame-Options "SAMEORIGIN";      # إعدادات حماية
    add_header X-Content-Type-Options "nosniff";

    index 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$ {           # إعداد PHP
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

لرفع المشروع، ادخل مجلد المشروع ثم حدد جيمع الملفات والمجلدات بدون vendor ثم قم بعمل أرشيف أو ضغطه zip منهم، تحديد بزر الفأرة ثم add to archive ثم علينا رفع هذا الملف للاستضافة.

نسجل دخول للوحة التحكم في الاستضافة، ثم نفتح متصفح الملفات ثم نتوجه ل public_html ونرفع الملف المضغوط عليه، ثم نفك الضغط.

ننتقل لمسار المشروع ثم نقوم بتثبيت الاعتماديات:

composer install --optimize-autoloader --no-dev
                                       ^^^^^^^^ لاتثبت اعتماديات المطورين

نتأكد من أن المجلد public متاح للقراءة وله صلاحية  (يمكن 644 )  مناسبة (755 موصى بها) مثله مثل مجلد التخزين storage و cache.  

chmod -R o+w storage
chmod -R o+w bootstrap/cache

وربط التخزين 

php artisan storage:link

ln -s 
	/home/username/laravel-project/storage/app/public/ 
	/home/username/public_html/laravel-project/storage

إنشاء قاعدة بيانات فارغة، لأن لارافل تقوم بعملية تهجير وتبني الجداول (طبعا أنت يفترض أن تتبع هذه الطريق) 

يفضل أن يكون للمستخدم صلاحيات كالة على القاعدة ALL PREVILLAGE 

ثم يبقى تعديل ملف البيئة env وإدراج معلومات قاعدة البيانات التي أنشأناها مع معلومات المستخدم.

APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

ونقوم بإلغاء تفعيل app_debug

APP_DEBUG=false

وباقي الإعدادت

APP_NAME=Laravel اي اسم
APP_ENV=production  
APP_KEY= سيتم توليده من خلال أمر لاحق
APP_DEBUG=false
APP_URL=http://localhost  رابط الاستضافة لديك

ثم نولد مفتاح:

php artisan key:generate

نحذف الكاش:

php artisan config:cache
php artisan route:cache
php artisan view:cache

ثم نقوم بعمل التهجير

php artisan migrate
php artisan db:seed  في حال بيانات افتراضية

الآن الموقع جاهز للعمل، جزء API ليس له متطلبات إضافية

في حال اتصالك بقواعد بيانات خارجية تأكد من ضبط driver الخاص بها لكل خدمة laravel/config/database.php

...
    'connections' => [

        'sqlite' => [
            'driver' => 'sqlite',
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
        ],

        'mysql' => [
            'driver' => 'mysql',
            'host' => env('RDS_HOSTNAME', '127.0.0.1'),
            'port' => env('RDS_PORT', '3306'),
            'database' => env('RDS_DB_NAME', 'forge'),
            'username' => env('RDS_USERNAME', 'forge'),
            'password' => env('RDS_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],
...

لإضافة تعديلات، نطفي artisan ثم نعيد تشغيله بعد الانتهاء

php artisan down  إيقاف

php artisan up   تشغيل

في حال قمت بعدد من التعديلات الكثيرة، ولكي لارفع المجلد المضغوط عددة مرات، يمكن رفع المشروع على مستودع مثل github أو gitbucket ثم استنساخ المستودع git clone أول مرة ثم git pull.. بعد كل تحديث تقوم به (git push إلى المستودع) لكي تسحب التحديثات للاستضافة 

تابع المستجدات على توثيق لارافل.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...