ইন্টারনেটে আপনি অনেক বড় URL (Uniform Resource Locator) দেখতে পাবেন। অনেক সাইট আপনার ভিজিট সংক্রান্ত তথ্য—যেমন ভাষা, লোকেশন, আইডেন্টিফিকেশন, রেফারেন্স কোড ইত্যাদি—URL-এ যুক্ত করে দেয়, ফলে URL খুব বড় হয়ে যায়।
Code Canyon-এ Premium URL Shortener হলো লম্বা URL গুলো ছোট করার একটি টুল। এই টিউটোরিয়ালে আমি দেখাবো কিভাবে আপনার নিজের সিস্টেমে URL শর্টেনার সেটআপ করে ব্যবহার করতে হয়।
URL শর্টেনার কী?
ইন্টারনেট ব্রাউজ করার সময় আপনি URL ব্যবহার করেন। এটি নির্দিষ্ট ওয়েব পেজ ও কনটেন্টকে চিহ্নিত করে। যেহেতু এই URL-গুলো ফর্ম প্যারামিটার বা সার্চ ইঞ্জিন কোয়েরি ধারণ করতে পারে, তাই অনেক সময় এগুলো খুব বড় হয়ে যায়।
https://tutsplus.com/tutorials/search/How%20to%20Draw%20Animals:%20Horses,%20Their%20Anatomy%20and%20Poses
উপরোক্ত URL টি Tuts+ ওয়েবসাইটে "How to Draw Animals: Horses, Their Anatomy and Poses" স্ট্রিং খুঁজে বের করার জন্য। এর দৈর্ঘ্য ৭৪ ক্যারেক্টার। আমি ২০০ ক্যারেক্টারেরও বেশি URL দেখেছি।
https://bit.ly/2oO8BqO
যখন আপনি bit.ly এর মতো URL শর্টেনিং সার্ভিস ব্যবহার করেন, তখন একই URL খুব ছোট হয়ে যায় (১৫ ক্যারেক্টার)। কেউ এই লিংকে ক্লিক করলে bit.ly সার্ভার ব্রাউজারকে পুরো URL-এ রিডাইরেক্ট করে দেয়। এই এক্সট্রা লুকআপের জন্য সাইট লোড হতে কিছুটা দেরি হয়, তবে তা নগণ্য।
Docker ইনস্টল করা
স্থানীয় সার্ভার তৈরির সবচেয়ে সহজ উপায় হচ্ছে ভার্চুয়ালাইজড এনভায়রনমেন্ট ব্যবহার করা। কিন্তু ফুল সিস্টেম ভার্চুয়ালাইজার খুব রিসোর্স খায়। Docker হলো টার্মিনাল-ভিত্তিক সিস্টেমের জন্য একটি মিনিমাল ভার্চুয়ালাইজার। Docker কন্টেইনার (একটি ছোট ইউনিক্স সার্ভার) কম সিস্টেম রিসোর্সে চলে।
আপনার সিস্টেমে কন্টেইনার চালাতে Docker ইনস্টল করতে হবে। আপনার অপারেটিং সিস্টেমের জন্য উপযুক্ত ডাউনলোড Docker ওয়েবসাইট থেকে বেছে নিন।
Docker ইনস্টল হলে, আপনার সিস্টেমকে তৈরি করার যাবে ওয়েব সার্ভিসটি খুঁজে বের করার জন্য প্রস্তুত করতে হবে। এর জন্য একটি সিস্টেম ফাইল পরিবর্তন করতে হবে। Linux বা macOS-এ /etc/hosts ফাইলে এবং Windows-এ c:\windows\System32\drivers\etc\lmhosts ফাইলে নিচের লাইনটি যোগ করুন:
127.0.0.1 s.dev
এই পরিবর্তন করলে https://s.dev এর সব রিকোয়েস্ট লোকাল সিস্টেমে যাবে। এটি সার্ভিসকে একটি সঠিক হোস্টনেম দেয় কনফিগার করার আগে।
ডেভেলপমেন্ট এরিয়া তৈরির জন্য একটি ডিরেক্টরি বানান এবং সেখানে Premium URL Shortener জিপ ফাইলটি রেখে এক্সট্রাক্ট করুন। এরপর আপনি নিচের ডিরেক্টরি স্ট্রাকচার পাবেন:
এটি ডকুমেন্টেশন ফাইল main.zip সহ। এই ফাইলটিও এক্সট্রাক্ট করুন। এক্সট্রাক্ট করার পর নিচের স্ট্রাকচার পাবেন:
main.zip ফাইলে সার্ভিসের সকল সোর্স কোড ও রিসোর্স থাকে। এই ডিরেক্টরিই Docker ইন্সট্যান্সে যোগ করা হবে।
এখন fauria-র Docker LAMP স্ট্যাক পেতে হবে। Docker রানিং অবস্থায় টার্মিনালে নিচের কমান্ডটি চালান:
docker pull fauria/lamp
এটি Fauria LAMP (Linux, Apache, MySQL, PHP) স্ট্যাক আপনার Docker-এ ডাউনলোড করবে। ডাউনলোড হলে কন্টেইনার তৈরি করতে নিচের কমান্ডটি ব্যবহার করুন:
docker run --rm --name linkshort -p 80:80 -e LOG_STDOUT=true -e LOG_STDERR=true -e LOG_LEVEL=debug -v {{service source directory}}:/var/www/html fauria/lamp
{{service source directory}} এর জায়গায় সোর্স ফাইলগুলো রয়েছে এমন ডিরেক্টরির পূর্ণ পথ দিন। এই কমান্ডটি linkshort নামে একটি কন্টেইনার তৈরি করবে যা পোর্ট ৮০-এ কাজ করবে এবং সব লগ/এরর স্ট্যান্ডার্ড আউটপুটে দেখাবে।
ফিলহাল, প্রতিবার কন্টেইনার স্টপ ও রিলাঞ্চ করলে আপনার সকল তথ্য হারিয়ে যাবে। ডেটাবেস ইনফরমেশন আপনার সোর্স কোড ডিরেক্টরিতে সরিয়ে রাখলে রিবুটের পরও ডেটা সংরক্ষিত থাকবে। টার্মিনালে নিচের কমান্ডগুলো চালান:
docker exec -i -t linkshort bash mkdir /var/www/html/data cp -R /var/lib/MySQL/* /var/www/html/data exit
প্রথম কমান্ডটি কন্টেইনারে একটি bash শেল খোলে। দ্বিতীয় কমান্ডটি আপনার সোর্স কোড ডিরেক্টরিতে data ডিরেক্টরি তৈরি করে। কন্টেইনার সোর্স কোড ডিরেক্টরিকে /var/www/html হিসেবে দেখে। তৃতীয় কমান্ডটি ডেটাবেস ইনফো কপি করে সেখানে রাখে। exit কমান্ডটি কন্টেইনার থেকে বের করে।
এখন কন্টেইনারটি স্টপ করুন:
docker stop linkshort
প্রতিবার কন্টেইনার স্টপ করতে এই কমান্ডটি ব্যবহার করুন।
এখন সঠিক ডেটা ডিরেক্টরি দিয়ে কন্টেইনার রিস্টার্ট করতে নিচের কমান্ডটি ব্যবহার করুন:
docker run --rm --name linkshort -p 80:80 -e LOG_STDOUT=true -e LOG_STDERR=true -e LOG_LEVEL=debug -v {{service source directory}}:/var/www/html -v {{service source directory}}/data:/var/lib/mysql fauria/lamp
এবার আপনি আপনার কম্পিউটারে সংরক্ষিত ডেটাবেস ডেটা ব্যবহার করে মেরিয়াডিবি সার্ভার সহ কন্টেইনার তৈরি করেছেন। সার্ভিস চালু করার জন্য এই কমান্ডটি ব্যবহার করুন। আমি Typinator কিবোর্ড এক্সপ্যান্ডার ব্যবহার করি এটি টাইপ করার জন্য।
এখন URL শর্টেনারের ডেটাবেস তৈরি করতে হবে। কন্টেইনারে একটি শেল খুলুন। নতুন একটি টার্মিনালে নিচের কমান্ডটি চালান:
docker exec -i -t linkshort bash
এই কমান্ডটি কন্টেইনারে একটি bash শেল তৈরি করে। কন্টেইনারে কিছু অ্যাডজাস্ট করতে হলে এই কমান্ডটি লাগবে। এরপর মেরিয়াডিবি প্রোগ্রামে একটি কমান্ড শেল খুলুন:
mysql -u root
এখন মেরিয়াডিবিতে ডেটাবেস তৈরি করুন এবং ওয়েব সার্ভারকে অ্যাক্সেস দিন:
create database urlshort;
create user 'www-data'@'localhost' identified by '{{password}}';
grant all on urlshort.* to 'www-data'@'localhost';
quit;
{{password}} হলো আপনার দেওয়া ডেটাবেস ইউজারের পাসওয়ার্ড। এটি মনে রাখুন কনফিগারেশনের সময় লাগবে।
কন্টেইনারে সার্ভিস রান করলে ব্রাউজারে https://s.dev খুলুন।
যদি কনফিগারেশন ঠিক থাকে তবে আপনি এই পেজটি দেখবেন। এটি URL Shortener সার্ভিসের আয়োজনীয়তা এবং আপনার সেটআপের স্ট্যাটাস দেখাবে। Fauria কন্টেইনার ব্যবহার করলে সব ডিপেন্ডেন্সি ইতিমধ্যে পূরণ হয়েছে। পেজের নিচে নীল বাটনে ক্লিক করুন।
পরবর্তী পেজটি সার্ভিসের কনফিগারেশন ফাইল ক্রিয়েটর। এখানে আপনি আগে তৈরি করা ডেটাবেসের নাম ও পাসওয়ার্ড দিতে পারবেন।
উপরে দেখানো মতো ফিল্ডগুলো পূরণ করুন। Database Host হলো কন্টেইনারের localhost। Database Name হলো urlshort। Database User হলো www-data, এবং পাসওয়ার্ড হলো ডেটাবেস সেটআপের সময় দেওয়া পাসওয়ার্ড। Database Prefix হলো সার্ভিসের জন্য তৈরি হ্রেসব ডেটাবেসের শুরুতে থাকা নাম। আমি short_ ব্যবহার করেছি। Security Key ইনস্টলেশন প্রোগ্রাম সেট করে দেয়। ভবিষ্যতের জন্য কীটি কপি করে রাখুন।
যদি আপনি এটি Virtual Private Server (VPS)-এ ইনস্টল করতেন, তবে এই মানগুলো সেই সার্ভিস অনুযায়ী হতো। কিছু একই থাকবে, কিছু পরিবর্তন হবে।
সঠিক তথ্য দিয়ে পেজের নিচে নীল বাটনে ক্লিক করুন স্টেপ ৩-এ যেতে।
Basic Configuration স্ক্রিনে অ্যাডমিন ইউজারনেম, ইমেইল ও পাসওয়ার্ড সেট করুন। Site URL অবশ্যই https://s.dev সেট করতে হবে, যা আপনি আগে hosts ফাইলে সেট করেছিলেন। সেট করলে নীল বাটনে ক্লিক করুন।
পরবর্তী স্ক্রিনে বলা হবে সার্ভিস সেটআপ hoàn্য হয়েছে। Delete install.php লেখা নীল বাটনে ক্লিক করুন। এটি রিয়েল ওয়েব সার্ভারের জন্য সিকিউরিটি ফিচার, লোকাল ইনস্টলে এটা দরকার নয়, কিন্তু এটি না করলে ইনস্টলেশন শেষ হবena।
অভিনন্দন—সার্ভিসটি এখন ফাংশনাল! উপরের স্ক্রিনটি দেখতে পাবেন। Paste a long url ইনপুট ফিল্ডে একটি লম্বা URL দিয়ে নীল Shorten বাটনে ক্লিক করলে একটি শর্টেনড URL পাবেন। URL টি ডেটাবেসে সংরক্ষিত থাকবে ভবিষ্যতে ব্যবহার করার জন্য। এটি একটি দুর্দান্ত বুকমার্কিং টুল।
API ব্যবহার করা
এখন আপনার URL শর্টেনার সার্ভিস রান করছে, আপনি এটি ভালোভাবে ব্যবহার করতে চান। কিন্তু বারবার ওয়েব পেজ খোলা (লোকাল হলেও) আপনাকে ধীর করে দেবে। তभी API (Application Programming Interface) কাজে লাগে। আপনি পূর্ণ ডকুমেন্টেশন দেখতে পারেন।
সার্ভিস রান করছেই https://s.dev/user/settings পেজটি খুলুন।
এই পেজটি দেখতে আপনাকে আপনার একাউন্টে লগইন করতে হবে। সাইডবারের নিচে ডানপাশে Your API Key: লেখার পাশে একটি অ্যালফা-নিউমেরিক নম্বর থাকবে। সেই নম্বরটি কপি করে রাখুন। এটি API-তে অ্যাক্সেস দেয়।
API ব্যবহার করতে আপনি একটি Ruby প্রোগ্রাম লিখতে পারেন। macOS এবং Linux-এ Ruby সাধারণত প্রি-ইনস্টলড থাকে। Windows-এ আলাদা করে ইনস্টল করতে হয়।
শর্ট লিংক তৈরির জন্য ন্যূনতম Ruby প্রোগ্রাম:
require 'net/http'
require 'json'
API = '{YourAPIKey}'
short = JSON.parse(Net::HTTP.get('s.dev', '/api?api=' + API + '&url=' + ARGV[0]))
if short["error"] == 0 then
print short["short"]
else
print "An error happened: "
print short["error"]
print "\n"
end
স্ক্রিপ্টটি shortener.rb নামে সংরক্ষণ করুন, {YourAPIKey} এর জায়গায় আগে কপি করা API কীটি বসিয়ে দিন, এবং কমান্ড লাইনে নিচের কমান্ডটি চালান:
ruby shortener.rb 'google.com'
আপনি সেই URL-এর জন্য একটি শর্টেনড লিংক পাবেন। এটি শর্টেনড URL তৈরি করে, কিন্তু এখনও সুবিধাজনক নয়।
PopClip এক্সটেনশন তৈরি করা
Mac-এ PopClip হলো হাইলাইট করা টেক্সট প্রসেস করার একটি চমৎকার প্রোগ্রাম। শর্টেনড লিংক তৈরি করা আরও সহজ করার জন্য আপনি একটি PopClip এক্সটেনশন তৈরি করবেন। এক্সটেনশন তৈরির সব ডিটেইল আমি এখানে ব্যাখ্যা করব না, কিন্তু আপনি আমার PopClip: Scripting Extensions টিউটোরিয়াল পড়তে পারেন।
PremiumURLShortener.popclipext নামে একটি PopClip এক্সটেনশন তৈরি করুন। এক্সটেনশন ডিরেক্টরির ভেতরে Config.plist ফাইলে নিচের কন্টেন্ট ব্যবহার করুন:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Actions</key>
<array>
<dict>
<key>After</key>
<string>paste-result</string>
<key>Image File</key>
<string>PremiumURLShortener.png</string>
<key>Script Interpreter</key>
<string>/usr/bin/ruby</string>
<key>Shell Script File</key>
<string>PremiumURLShortener.rb</string>
<key>Title</key>
<string>Shortener</string>
</dict>
</array>
<key>Options</key>
<array>
<dict>
<key>Option Identifier</key>
<string>apikey</string>
<key>Option Type</key>
<string>string</string>
<key>Option Label</key>
<string>API Key: </string>
</dict>
</array>
<key>Credits</key>
<array>
<dict>
<key>Name</key>
<string>Richard Guay</string>
<key>Link</key>
<string>https://customct.com</string>
</dict>
</array>
<key>Extension Description</key>
<string>Create shortened URLs with PremiumURLShortener locally</string>
<key>Extension Identifier</key>
<string>com.customct.popclip.extension.premiumurlshortener</string>
<key>Extension Name</key>
<string>Shortener</string>
<key>Required Software Version</key>
<integer>701</integer>
</dict>
</plist>
এরপর এক্সটেনশনের স্ক্রিপ্ট ফাইল PremiumURLShortener.rb তৈরি করুন এবং নিচের কোডটি রাখুন:
#!/usr/bin/ruby
require 'net/http'
require 'json'
Encoding.default_internal = Encoding::UTF_8
Encoding.default_external = Encoding::UTF_8
input = ENV['POPCLIP_TEXT'].to_s.strip()
API = ENV['POPCLIP_OPTION_APIKEY'].to_s.strip()
short = JSON.parse(Net::HTTP.get('s.dev', '/api?api=' + API + '&url=' + input))
if short["error"] == 0 then
print short["short"]
else
print "An error happened: "
print short["error"]
print "\n"
end
নতুন এক্সটেনশন লোড করলে এটি API কী চাইবে। API কী দিয়ে Okay প্রেস করলে এটি PopClip-এ ব্যবহার যোগ্য হয়।
যখন আপনি একটি লিংক সিলেক্ট করবেন, PopClip অপশনগুলো দেখাবে। সেখানে Shortener অপশনটি সিলেক্ট করুন। কিছুক্ষণ চিন্তা করলে সঠিক শর্টেনড URL পেস্ট করে দেবে। পুরো এক্সটেনশন এই টিউটোরিয়ালের ডাউনলোডে আছে। এখন আপনি আরও অনেক কিছু করতে পারবেন!
উপসংহার
এখন আপনার নিজস্ব একটি URL শর্টেনার আছে, সাথে সাথে আপনি জানতে পারলেন Docker ব্যবহার করে লোকাল কন্টেইনার চালানো, URL ট্র্যাক করার সহজ পদ্ধতি, এবং শর্টেনড লিংক তৈরির উপায়।
Ruby স্ক্রিপ্টটি Alfred 3 বা Keyboard Maestro-ও ব্যবহার করা যায়। আপনার নতুন সার্ভিস এবং এর অন্যান্য ফিচার ব্যবহার করে উপভোগ করুন।