ওপেন সোর্স ল্যারাভেল প্রজেক্ট ব্যবহার করা

আমরা যখন গিটহাবে কোন প্রজেক্ট আপলোড করি, তখন প্রজেক্টের সব গুলো ফাইল কিন্তু আপলোড হয় না। যেমন কনফিগারেশন, ডিফেন্ডেন্সি প্রজেক্ট গুলো ইত্যাদি। তাই অন্য যে কোন প্রজেক্টের মত কোন ওপেন সোর্স ল্যারাভেল প্রজেক্ট ডাউনলোড করে নেওয়ার পর রান করা যায় না। কনিফাগ করে নিতে হয়।

ধাপ একঃ ধরকারি টুল গুলো

  • যেহেতু বেশির ভাগ ক্ষেত্রেই আমরা গিটহাব বা এমন কোথাও থেকে প্রজেক্ট ডাউনলোড করব। তাই কম্পিউটারে গিট না থাকলে গিট ইন্সটল করে নিতে হবে। গিট ও গিটহাব সম্পর্কে গিট সম্পর্কে ধারণা, গিট ইন্সটল, ব্যবহার লেখাটিতে বিস্তারিত আলোচনা করা হয়েছে।
  • কম্পিউটারে কম্পোজার ইন্সটল করা থাকতে হবে। আমরা যে কমান্ড গুলো লিখব, বেশির ভাগই কম্পোজার রিলেটেড। ল্যারাভেল ইন্সটল এবং প্রজেক্ট তৈরি লেখাটিতে বিস্তারিত আছে।
  • ল্যারাভেলের অনেক প্রজেক্টে এখন টেলউইন্ড সিএসএস ব্যবহার করা হয়। যা আবার রান করতে npm লাগবে। তাই কম্পিউটারে Node JS ইন্সটল করে নিতে হবে।

ধাপ দুইঃ প্রজেক্ট ডাউনলোড

যে কোন ল্যারাভেল প্রজেক্ট নিজ কম্পিউটারে ডাউনলোড করে নিতে হবে। যেমন সিম্পল এই ল্যারাভেল গ্যালারি অ্যাপ দিয়ে শুরু করতে পারেন। এই গ্যালারি অ্যাপ নিয়ে বিস্তারিত একটা আর্টিকেল লিখেছি। ল্যারাভেলে একটা গ্যালারি অ্যাপ তৈরি। তাই এই প্রজেক্ট দিয়ে প্র্যাকটিস করতে পারেন। কোথাও বুঝতে অসুবিধা হলে আর্টিকেল থেকে কোন কোডের কি কাজ, তা দেখে নিতে পারবেন। ডাউনলোড করে আনজিপের পাশা পাশি গিট ব্যবহার করেও প্রজেক্ট ক্লোন করে নিতে পারেনঃ

git clone https://github.com/jakirseu/Laravel-Gallery

ধাপ তিনঃ ডিপেন্ডেন্সি ইন্সটল

    আগেই জেনেছি ল্যারাভেল যখন আমরা গিটহাবে আপলোড করি, তখন ডিপেন্ডেন্সি গুলো আপলোড হয় না। একটা ল্যারাভেল প্রজেক্টে অনেক ধরণের লাইব্রেরী ব্যবহার করে। সেগুলো ইন্সটল করে নিতে হবে। তার জন্য টার্মিনাল বা কমান্ডলাইনে প্রজেক্ট ডিরেক্টরিতে গিয়ে নিচের কমান্ড লিখবঃ

    composer install
    

    ভিজ্যুয়াল স্টুডিও কোড ব্যবহার করে থাকলে Terminal > New Terminal থেকেও নতুন টার্মিনাল ওপেন করলে প্রজেক্ট ডিরেক্টরিতে টার্মিনাল ওপেন হবে।

    ধাপ চারঃ এনভারনমেন্ট সেটআপ

    .env ফাইল তৈরিঃ .env ফাইলে প্রজেক্টের বিভিন্ন ইনফরমেশন যেমন ডেটাবেজ, অ্যাপলিকেশন কী সহ আরো অনেক গুরুত্বপূর্ণ তথ্য সেভ করা থাকে। আমাদেরকে এই .env ফাইল তৈরি করতে হবে। তার জন্য প্রথমে .env এক্সটেনশনে একটা ফাইল তৈরি করে নিব প্রজেক্টের রুট ফোল্ডারে। এরপর .env.example নামে একটা ফাইল রয়েছে, এই ফাইলের কন্টেন্ট কপি পেস্ট করব এই ফাইলে।

    ডেটাবেজঃ ডেটাবেজ হিসেবে সাধারণত SQLite সিলেক্ট করা থাকে। আমরা SQLite দিয়েই কাজ করব। তাই কোন কিছু পরিবর্তন করতে হবে না। তবে আমরা ডেটাবেজ মাইগ্রেট করে নিব। এতে ডেটাবেজের কলাম গুলো তৈরি হবে।

    php artisan migrate
    

    আমরা চাইলে ডেটাবেজ সিড করে নিতে পারি। তাহলে সিডার ক্লাসে থাকা কোড অনুযায়ী ডামি ডেটা ডেটাবেজে যোগ হবে।

    php artisan db:seed
    

    অথবা চাইলে আগের ডেটা ডিলিট করে পুনরায় ডেটাবেজের কলাম গুলো তৈরি করতে পারিঃ

    php artisan migrate:fresh --seed
    

    উপরের কমান্ডটা বুঝে শুনে রান করতে হবে। ডেটাবেজে কোন ডেটা থাকলে ডেটা ডিলেট হয়ে যাবে। পুনরায় ডেটাবেজ তৈরি হবে। এই লেখার উদাহরণের ক্ষেত্রে যদিও সমস্যা হবে না।

    অ্যাপলিকেশন কীঃ প্রতিটা ল্যারাভেল অ্যাপে একটা করে ইউনিক কী থাকে। আর তা থাকে এই .env ফাইলে, APP_KEY=… নামে। আমাদের এই কী দিতে হবে। তা এভাবে জেনারেট করতে পারিঃ

    php artisan key:generate
    

    তাহলে একটা ইউনিক কী জেনারেট হবে। যদি এই কী জেনারেট না করি, তাহলে নিচের মত করে এরর দেখাবে।

    No Application Encryption Key Has Been Specified
    

    ধাপ পাঁচঃ প্রজেক্ট সার্ভ

    উপরের স্টেপ গুলো পার করলে আমরা প্রজেক্ট সার্ভ করতে প্রস্তুত। তার জন্য লিখবঃ

    php artisan serve
    

    এরপর ব্রাউজারে http://127.0.0.1:8000/ এড্রেসে প্রজেক্টটা দেখতে পাবো।

    সমস্যা এবং সমাধান

    Vite manifest not found এররঃ সাধারণ যে সব প্রজেক্টে Node ব্যবহার করে কোন লাইব্রেরী যোগ করা হয়েছে, সেগুলোতে এই সমস্যা দেখা দেয়। ল্যারাভেলের ডিফল্ট ইউজার অথেনটিকেশন টেলউইন্ড সিএসএস ব্যবহার করে। আর তা আবার ভিট সার্ভার ব্যবহার করে। তাই অথেনটিকেশন থাকলে ঐ প্রজেক্টে এই সমস্যা দেখা দিতে পারে। এর সমাধান হচ্ছে প্রথমে নোড ডিপেন্ডেন্সি গুলো ইন্সটল করে নিতে হবেঃ

     npm install
    

    এরপর npm run dev কমান্ড রান করলে প্রজেক্টে ভিট সার্ভার রান হবে এবং প্রজেক্টের ভিট সার্ভার রিলেটেড সমস্যা গুলোর সমাধান হবে।

    npm run dev
    

    500 এররঃ সাধারণত ডেটাবেজ রিলেটেড কোন সমস্যা থাকলে এই এরর বেশি দেখা দেয়। তাই দেখতে হবে ঠিক মত ডেটাবেজ কনফিগার করা হয়েছে কিনা।

    ইমেজ লোড না হওয়াঃ

    সাধারণত স্টোরেজ ডিরেক্টরি লিঙ্ক না করায় এই সমস্যা দেখা দেয়। নিচের কমান্ড রান করলে সমাধান হবে আশা করিঃ

     php artisan storage:link
    

    Leave a Reply