Menu
৪.৫ সার্ভারে গিট – গিট ড্যামন
গিট ড্যামন
এখন আমরা “গিট” প্রটোকল ব্যবহার করে রিপোজিটরি সার্ভ করার জন্য গিট ড্যামন সেটআপ করবো। কোনো ধরনের অথেনটিকেশন ছাড়া খুব দ্রুত গিট ডেটা পাবার একটি জনপ্রিয় উপায় এটি। কিন্তু এটা মনে রাখা জরুরী যে এটি একটি অথেন্টিকেটেড সার্ভিস না হওয়ায় এই প্রটোকল ব্যবহার করে পাঠানো সবকিছুই ওর নিজস্ব নেটোয়ার্কের মধ্যে পাবলিক।যদি এটি আপনার ফায়ারওয়ালের বাইরে কোনো সার্ভারে চলে, তাহলে এটি শুধুমাত্র ওইসব প্রজেক্টে ব্যবহার করা উচিৎ যেইগুলো পুরো পৃথিবীর সকলের কাছে উন্মুক্ত। আর যদি এটি আপনার ফায়ারওয়ালের ভেতরের কোনো সার্ভারে চলে, তাহলে আপনি ওইসব প্রজেক্টের জন্য এটি ব্যবহার করতে পারবেন যেখানে অনেক সংখ্যক মানুষ অথবা কম্পিউটারের শুধু “রিড-অনলি” অনুমতি আছে, যখন আপনি ওদের সবাইকে আলাদা করে এসএসএইচ কি দিতে চান না। এর উদাহরণ হতে পারে কন্টিনিউয়াস ইন্টিগ্রেশন বা বিল্ড সার্ভার।
গিট প্রটোকল সেট আপ করা অনেক সহজ। আপনাকে নিচের এই কমান্ডটিকে ড্যামনাইজড ভাবে চালাতে হবে –
$ git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
এখানে “–reuseaddr” অপশনটি সার্ভারকে পুরনো কানেকশনগুলোর জন্য অপেক্ষা করতে করতে টাইম আউট হবার আগেই পুনরায় চালু হতে দেয়, “-base-path” অপশনটি ব্যবহারকারীদের পুরো পাথ না বলেই প্রজেক্ট ক্লোন করতে সাহায্য করে, আর শেষের পাথটি গিট ড্যামনকে বলে দেয় রেপজিটরিগুলোকে এক্সপোর্ট করার জন্য কোথায় খুঁজতে হবে। যদি আপনি কোনো ফায়ারওয়াল ব্যবহার করে থাকেন, তাহলে আপনি যেই মেশিনে এটি সেটআপ করছেন তার ৯৪১৮ পোর্টে অনুমতি দিতে হবে।
এই প্রসেসটিকে ড্যামনাইজ করার কয়েকটি উপায় আছে, এটি নির্ভর করে আপনি কোন অপারেটিং সিস্টেম চালাচ্ছেন।
আধুনিক লিনাক্স ডিস্ট্রিবিউশনগুলোর মধ্যে যেহেতু “সিস্টেমডি” ইনিট সিস্টেম হিসেবে সবচেয়ে বেশি ব্যবহার করা হয়, তাই এটিকে আপনি ব্যবহার করতে পারেন। আপনাকে শুধু নিচের লাইনগুলো নিয়ে “/etc/systemd/system/git-daemon.service” ফাইলে লিখতে হবে –
এই প্রসেসটিকে ড্যামনাইজ করার কয়েকটি উপায় আছে, এটি নির্ভর করে আপনি কোন অপারেটিং সিস্টেম চালাচ্ছেন।
আধুনিক লিনাক্স ডিস্ট্রিবিউশনগুলোর মধ্যে যেহেতু “সিস্টেমডি” ইনিট সিস্টেম হিসেবে সবচেয়ে বেশি ব্যবহার করা হয়, তাই এটিকে আপনি ব্যবহার করতে পারেন। আপনাকে শুধু নিচের লাইনগুলো নিয়ে “/etc/systemd/system/git-daemon.service” ফাইলে লিখতে হবে –
[Unit]
Description=Start Git Daemon
[Service]
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
Restart=always
RestartSec=500ms
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=git-daemon
User=git
Group=git
[Install]
WantedBy=multi-user.target
আপনি বোধহয় দেখতে পেয়েছেন যে গিট ড্যামন এখানে চালু হচ্ছে গিটকে গ্রুপ এবং ইউজার হিসেবে নিয়ে। এটা আপনি নিজের প্রয়োজন মতো বদলে নিয়ে এমন কোনো ইউজার দিয়ে নিবেন যা আপনার সিস্টেমে উপস্থিত আছে। একইসাথে এইটাও খেয়াল রাখতে হবে যে গিট বাইনারিটি “/usr/bin/git” পাথে আছে, এটি আপনি নিজের মতো বদলে নিতে পারেন যদি দরকার হয়।
এখন আপনাকে “systemctl enable git-daemon” কমান্ডটি চালাতে হবে যেন সার্ভিসটি বুটিং এর সময় নিজেই চালু হয়ে যায়। “systemctl start git-daemon” কমান্ডটি ব্যবহার করে আপনি সার্ভিসটি শুরু এবং “systemctl stop git-daemon” কমান্ডটি ব্যবহার করে আপনি সার্ভিসটি বন্ধ করতে পারবেন।
অন্য সিস্টেমের জন্য আপনি ব্যবহার করতে পারেন “xinetd”, আপনার sysvinit সিস্টেমের কোনো স্ক্রিপ্ট, অথবা অন্য কোনো কিছু যা ড্যামনাইজ এবং ওয়াচ করা যাবে।
এরপরে আপনার গিটকে বলতে হবে কোন রেপজিটরিগুলোকে কোনো অথেনটিকেশন ছাড়াই গিট সার্ভার-বেজড এক্সেস দিতে চান। আপনি এই কাজটি করতে পারেন প্রত্যেকটি রেপজিটরিতে গিয়ে “git-daemon-export-ok” নামের একটি ফাইল তৈরি করার মাধ্যমে।
এখন আপনাকে “systemctl enable git-daemon” কমান্ডটি চালাতে হবে যেন সার্ভিসটি বুটিং এর সময় নিজেই চালু হয়ে যায়। “systemctl start git-daemon” কমান্ডটি ব্যবহার করে আপনি সার্ভিসটি শুরু এবং “systemctl stop git-daemon” কমান্ডটি ব্যবহার করে আপনি সার্ভিসটি বন্ধ করতে পারবেন।
অন্য সিস্টেমের জন্য আপনি ব্যবহার করতে পারেন “xinetd”, আপনার sysvinit সিস্টেমের কোনো স্ক্রিপ্ট, অথবা অন্য কোনো কিছু যা ড্যামনাইজ এবং ওয়াচ করা যাবে।
এরপরে আপনার গিটকে বলতে হবে কোন রেপজিটরিগুলোকে কোনো অথেনটিকেশন ছাড়াই গিট সার্ভার-বেজড এক্সেস দিতে চান। আপনি এই কাজটি করতে পারেন প্রত্যেকটি রেপজিটরিতে গিয়ে “git-daemon-export-ok” নামের একটি ফাইল তৈরি করার মাধ্যমে।
$ cd /path/to/project.git
$ touch git-daemon-export-ok
এই ফাইলটি থাকার মানে হচ্ছে গিটকে বলা যে এই প্রজেক্টটি কোনো অথেনটিকেশন ছাড়া ব্যবহার করা যায়।