লারাভেল ডেপ্লয়মেন্ট (Laravel Deployment)

Web Development - লারাভেল (Laravel) - লারাভেল কি এবং কেন? || Laravel বাংলা টিউটোরিয়াল |
6
6

আপনি যখন আপনার Laravel অ্যাপ্লিকেশনকে Production Server এ deployment করবেন, তখন আপনার অ্যাপ্লিকেশনটি যতটা সম্ভব দক্ষতার সাথে চলছে কিনা তা নিশ্চিত করতে আপনাকে কিছু গুরুত্বপূর্ণ  বিষয়ের প্রতি বিশেষ দৃষ্টি দিতে হবে। 


Laravel Deployment: একটি বিস্তারিত গাইড

Laravel অ্যাপ্লিকেশনকে উৎপাদন(production) পরিবেশে ডেপ্লয় করার জন্য কিছু নির্দিষ্ট ধাপ ও কনফিগারেশন প্রয়োজন হয়। সঠিকভাবে ডেপ্লয় করলে আপনার অ্যাপ্লিকেশন দ্রুত, নিরাপদ এবং নির্ভরযোগ্য হবে। এখানে Laravel ডেপ্লয়মেন্ট প্রক্রিয়া সম্পর্কে একটি বিস্তারিত নির্দেশিকা দেওয়া হলো।

1. পরিচিতি (Introduction)

ডেভেলপমেন্ট এবং ডেপ্লয়মেন্টের জন্য Laravel  একটি অত্যন্ত জনপ্রিয় PHP ফ্রেমওয়ার্ক। উৎপাদন পরিবেশে ডেপ্লয় করার সময়, সার্ভারের সঠিক কনফিগারেশন এবং অপ্টিমাইজেশনের বিষয়গুলো অত্যন্ত গুরুত্বপূর্ণ।


2. সার্ভার প্রয়োজনীয়তা (Server Requirements)

Laravel চালানোর জন্য আপনার সার্ভারে নিম্নলিখিত সিস্টেমের উপাদানগুলো থাকা প্রয়োজন:

PHP >= 8.2
Ctype PHP Extension
cURL PHP Extension
DOM PHP Extension
Fileinfo PHP Extension
Filter PHP Extension
Hash PHP Extension
Mbstring PHP Extension
OpenSSL PHP Extension
PCRE PHP Extension
PDO PHP Extension
Session PHP Extension
Tokenizer PHP Extension
XML PHP Extension

3. সার্ভার কনফিগারেশন (Server Configuration)

3.1 Nginx

যদি আপনি এমন একটি সার্ভারে আপনার অ্যাপ্লিকেশন হোস্ট করতে চান যেখানে Nginx চালু আছে, তাহলে ওয়েব সার্ভার কনফিগার করতে নিচের কনফিগারেশন ফাইলটি প্রাথমিকভাবে ব্যবহার করতে পারেন। তবে, আপনার সার্ভারের নির্দিষ্ট সেটআপ অনুযায়ী ফাইলটি কিছুটা পরিবর্তন করা লাগতে পারে। যদি সার্ভার পরিচালনা করতে সহায়তার প্রয়োজন হয়, তাহলে Laravel Forge-এর মতো Laravel-এর অফিসিয়াল সার্ভার ম্যানেজমেন্ট এবং ডেপ্লয়মেন্ট সেবা ব্যবহার করার কথা চিন্তা করতে পারেন।

এটা নিশ্চিত করুন যে, নিচের কনফিগারেশনের মতো আপনার ওয়েব সার্ভার সমস্ত রিকোয়েস্টকে অ্যাপ্লিকেশনের  public/index.php ফাইলে পাঠায়। কখনই index.php ফাইলটিকে আপনার প্রজেক্টের মূল ডিরেক্টরিতে সরানোর চেষ্টা করবেন না, কারণ এতে করে অ্যাপ্লিকেশনের অনেক গুরুত্বপূর্ণ কনফিগারেশন ফাইল ইন্টারনেটে প্রকাশিত হয়ে যেতে পারে।

Nginx একটি হালকা ও উচ্চ-দক্ষতাসম্পন্ন ওয়েব সার্ভার যা Laravel অ্যাপ্লিকেশন চালানোর জন্য উপযুক্ত। একটি সাধারণ Nginx কনফিগারেশন নিচে দেওয়া হলো:

server {
    listen 80;
    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$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
 
    location ~ /\.(?!well-known).* {
        deny all;
    }
}

এই Nginx কনফিগারেশন একটি লারাভেল অ্যাপ্লিকেশন সার্ভ করতে ব্যবহৃত হয়। এখানে প্রতিটি অংশের ব্যাখ্যা দেওয়া হলো:

  • Listen: listen 80; এবং listen [::]:80; নির্দেশনা IPv4 ও IPv6 উভয়ের জন্য পোর্ট 80-এ সংযোগ গ্রহণ করবে।
  • Server Name & Root: ডোমেইনের জন্য server_name example.com; এবং Laravel এর public ডিরেক্টরির জন্য root /srv/example.com/public;
  • Security Headers: X-Frame-Options এবং X-Content-Type-Options হেডারগুলো সিকিউরিটি বাড়াতে যুক্ত করা হয়েছে।
  • Main Block: try_files Laravel এর রাউটিং সিস্টেম অনুযায়ী ফাইল বা URL রিডাইরেক্ট করে।
  • PHP Processing: .php ফাইলগুলো php8.2-fpm.sock মাধ্যমে প্রসেস করা হয়।
  • Security: .well-known ব্যতীত সকল হিডেন ফাইল অ্যাক্সেস বন্ধ থাকে।

এটি Laravel অ্যাপ্লিকেশনটি সুরক্ষিতভাবে সার্ভ করতে সাহায্য করে।

 

3.2 FrankenPHP

FrankenPHP একটি নতুন PHP-সার্ভার যা Laravel এবং অন্যান্য ওয়েব অ্যাপ্লিকেশনগুলিকে দ্রুততার সঙ্গে চালাতে সাহায্য করে। এটি WebSockets সমর্থন করে, যা রিয়েল-টাইম অ্যাপ্লিকেশনের জন্য বিশেষভাবে কার্যকর।

এটি PHP, Nginx, এবং অন্যান্য ওয়েব টেকনোলজির মধ্যে একটি সেতুবন্ধন তৈরি করে, যা আপনার অ্যাপ্লিকেশনকে উন্নত পারফরম্যান্স এবং স্কেলেবিলিটি প্রদান করে।

প্রধান বৈশিষ্ট্য:

  • সার্ভার র‍্যাপার: এটি Nginx-এর সঙ্গে PHP-এর মধ্যে যোগাযোগের জন্য একটি সহজ এবং দ্রুত উপায় প্রদান করে।
  • এ্যাসিঙ্ক্রোনাস প্রসেসিং: একাধিক কাজের জন্য নন-ব্লকিং এ্যাসিঙ্ক্রোনাস ফিচার, যা পারফরম্যান্স বাড়ায়।
  • সহজ কনফিগারেশন: ব্যবহারকারী বান্ধব কনফিগারেশন ফাইল, যা সেটআপ করা সহজ।
  • মডিউলার আর্কিটেকচার: বিভিন্ন প্রয়োজন অনুসারে আপনার অ্যাপ্লিকেশনকে কাস্টমাইজ করার সুবিধা।
  • এপিআই সাপোর্ট: RESTful API তৈরি করা সহজ।

ব্যবহার শুরু করা:

  • ইনস্টলেশন: আপনার সিস্টেমে FrankenPHP ইনস্টল করতে হবে। ডকুমেন্টেশনে বিস্তারিত পদক্ষেপ দেয়া হয়েছে।
  • কনফিগারেশন: আপনি আপনার Nginx সার্ভারে FrankenPHP কনফিগার করতে পারেন, যাতে আপনার PHP স্ক্রিপ্টগুলো সঠিকভাবে সার্ভ হয়।
  • অ্যাপ্লিকেশন ডেভেলপমেন্ট: এরপর আপনি আপনার PHP অ্যাপ্লিকেশন তৈরি করতে শুরু করতে পারেন, আধুনিক ফিচারগুলোর সুবিধা নিয়ে।

FrankenPHP ব্যবহার করার ফলে আপনার PHP অ্যাপ্লিকেশনগুলো হবে দ্রুততর এবং আরও কার্যকর।


4. ডিরেক্টরি অনুমতিসমূহ (Directory Permissions)

Laravel অ্যাপ্লিকেশন সঠিকভাবে কাজ করার জন্য কিছু ডিরেক্টরিতে লেখার অনুমতি থাকতে হবে। প্রধানত, storage এবং bootstrap/cache ডিরেক্টরিগুলিতে লেখার অধিকার প্রদান করতে হবে।

sudo chown -R www-data:www-data /path/to/your/laravel/storage
sudo chown -R www-data:www-data /path/to/your/laravel/bootstrap/cache

5. অপ্টিমাইজেশন (Optimization)

5.1 ক্যাশিং কনফিগারেশন (Caching Configuration)

উৎপাদন পরিবেশে আপনার অ্যাপ্লিকেশন দ্রুত চালানোর জন্য কনফিগারেশন ক্যাশ করা উচিত:

php artisan config:cache

5.2 ইভেন্ট ক্যাশিং (Caching Events)

Laravel ইভেন্টস ক্যাশ করে অ্যাপ্লিকেশন কর্মক্ষমতা বাড়ানো সম্ভব:

php artisan event:cache

5.3 রুট ক্যাশিং (Caching Routes)

রাউটিং সিস্টেমের কার্যকারিতা উন্নত করতে আপনি রুট ক্যাশ করতে পারেন:

php artisan route:cache

5.4 ভিউ ক্যাশিং (Caching Views)

ভিউ ফাইলগুলিকে ক্যাশ করতে নিচের কমান্ডটি চালান:

php artisan view:cache

6. ডিবাগ মোড (Debug Mode)

Laravel অ্যাপ্লিকেশন উৎপাদন পরিবেশে ডেপ্লয় করার সময় APP_DEBUG অপশনটি .env ফাইলে false করতে হবে, যাতে আপনার অ্যাপ্লিকেশনের ত্রুটিগুলি প্রকাশ না হয়:

APP_DEBUG=false

7. Health Route

Laravel অ্যাপ্লিকেশনের একটি সাধারণ "health check" রুট সেটআপ করে সার্ভারের অবস্থা পর্যালোচনা করতে পারেন। উদাহরণস্বরূপ:

Route::get('/health', function () {
    return response()->json(['status' => 'ok']);
});

8. সহজ ডেপ্লয়মেন্ট Forge / Vapor এর মাধ্যমে (Easy Deployment With Forge / Vapor)

Laravel অ্যাপ্লিকেশন সহজে ডেপ্লয় করতে Laravel Forge এবং Vapor দুটি শক্তিশালী টুলস।

  • Laravel Forge: এটি আপনাকে সার্ভার কনফিগার করতে এবং স্বয়ংক্রিয় ডেপ্লয়মেন্ট সেটআপ করতে সাহায্য করে।
  • Laravel Vapor: এটি একটি সার্ভারলেস ডেপ্লয়মেন্ট প্ল্যাটফর্ম, যা AWS Lambda ব্যবহার করে আপনার অ্যাপ্লিকেশনগুলো ডেপ্লয় করতে দেয়।

Laravel ডেপ্লয়মেন্ট সঠিকভাবে সম্পন্ন করার মাধ্যমে আপনার অ্যাপ্লিকেশনটি আরও দ্রুত, নিরাপদ এবং নির্ভরযোগ্য হয়ে উঠবে।

Content added || updated By
Promotion