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

السؤال

نشر

أريد شرح الخطوات لرفع مشروع موقع الكتروني مبني بواسطة لارافل 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 إلى المستودع) لكي تسحب التحديثات للاستضافة 

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

  • 0
نشر
بتاريخ On 26‏/7‏/2024 at 04:42 قال حيدر رزاق:

كيف يمكنني الوصول الى موجه الاوامر في استضافة هورستنجر المدفوعه ؟

للوصول الى موجه الاوامر في اي إستضافه يجب عليك الوصول إليه عن طريق ال ssh حيث جميع الاستضافات المدفوعة توفر لك طريقة الاتصال عبر ssh .

image.png.c95a374f6f09143e07e3bedc158cb481.png

قم بالبحث عن خانة ssh في لوحة التحكم لديك ومن ثم قم بتفعيل خاصية سيرفر ssh إذا كانت غير مفعلة بعد ذلك ستجد  البيانات كما الصورة السابقة يمكنك نسخ السطر ووضعه في cmd لديك وستجد انك الان بداهل موجه الاوامر في الاستضافه .

ويمكنك إستعمال برامج اخري للاتصال مثل PuTTy وغيرها او الإكتفاء فقط ب cmd لديك.

ولتفاصيل اكثر هذا يمكنك الدخول على الرابط النالى من موقع hostinger  يشرح لك طريقة الاتصال بال shh.

https://support.hostinger.com/en/articles/1583245-how-to-connect-to-a-hosting-plan-via-ssh

  • 0
نشر
بتاريخ 7 ساعة قال محمد عاطف17:

للوصول الى موجه الاوامر في اي إستضافه يجب عليك الوصول إليه عن طريق ال ssh حيث جميع الاستضافات المدفوعة توفر لك طريقة الاتصال عبر ssh .

image.png.c95a374f6f09143e07e3bedc158cb481.png

قم بالبحث عن خانة ssh في لوحة التحكم لديك ومن ثم قم بتفعيل خاصية سيرفر ssh إذا كانت غير مفعلة بعد ذلك ستجد  البيانات كما الصورة السابقة يمكنك نسخ السطر ووضعه في cmd لديك وستجد انك الان بداهل موجه الاوامر في الاستضافه .

ويمكنك إستعمال برامج اخري للاتصال مثل PuTTy وغيرها او الإكتفاء فقط ب cmd لديك.

ولتفاصيل اكثر هذا يمكنك الدخول على الرابط النالى من موقع hostinger  يشرح لك طريقة الاتصال بال shh.

https://support.hostinger.com/en/articles/1583245-how-to-connect-to-a-hosting-plan-via-ssh

شكرا لك ..
هل يمكن شرح طريقة رفع مشروع لارافل الاصدار الحديث ؟
لاني اواجه مشكله عدم التعرف على vite  في هوستنجر استضافة نوع بزنس شير

  • 0
نشر
بتاريخ 1 دقيقة مضت قال Mustafa Suleiman:

ما هو الخطأ الذي يظهر لك؟

شكرا لك استاذ مصطفى
في الامس قمت بجميع المحاولات التي قمت حضرتك بتوضيحها لي , لكن للاسف لم تحل المشكله و انا شعرت بالاحراج لكثرة اسألتي و حجم الموضوع .
مشاكل عديدة ابرزها ان النود ليس مثبت في الاستضافة و قد قمت بتنفيذ الاوامر التي اعطيتني اياها في الامس  و تم تثبيت النود , لكن لا يمكن عمل
npm run build
يتم تنفيذ الامر و لكن لا يتم نقل الملفات الخاصه ب css و كأن شيء لم يكن , عند عمل npm run dev
يعمل الموقع في الاستضافة لكن بدون ستايل تضهر فقط html

شكرا لك و انا اعتذر عن كثرة الاسالة

  • 0
نشر
بتاريخ 3 دقائق مضت قال حيدر رزاق:

شكرا لك استاذ مصطفى
في الامس قمت بجميع المحاولات التي قمت حضرتك بتوضيحها لي , لكن للاسف لم تحل المشكله و انا شعرت بالاحراج لكثرة اسألتي و حجم الموضوع .
مشاكل عديدة ابرزها ان النود ليس مثبت في الاستضافة و قد قمت بتنفيذ الاوامر التي اعطيتني اياها في الامس  و تم تثبيت النود , لكن لا يمكن عمل
npm run build
يتم تنفيذ الامر و لكن لا يتم نقل الملفات الخاصه ب css و كأن شيء لم يكن , عند عمل npm run dev
يعمل الموقع في الاستضافة لكن بدون ستايل تضهر فقط html

شكرا لك و انا اعتذر عن كثرة الاسالة

لا عليك، طالما حاولت يجب السؤال لكي تصل لحل للمشكلة، قم بتجربة تحزيم المشروع على حاسوبك وليس على الاستضافة، أي تجهيزه للنشر كما أخبرتك، ثم رفع النسخة الجاهزة للنشر على الاستضافة مباشرًة كما أوضحت لك ووضع المجلدات والملفات مباشرًة في public_html

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...