Categories
DNS

কিভাবে জিও-ডিএনএস ব্যবহার করে ওয়েব কনটেন্ট দ্রুত সার্ভ করবেন

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

আজকের এই আর্টিকেলে আমি আলোচনা করব যে কিভাবে এই জিওডিএনএস সিস্টেম ব্যবহার করতে হয়। আশাকরি এই আর্টিকেল পরার পর অনেকের কাছেই বিষয়টি ক্লিয়ার হয়ে যাবে। পাশাপাশি আপনারা বুঝতে পারবেন সিডিএন বা কনটেন্ট ডেলিভারী নেটওয়ার্ক গুলো কিভাবে কাজ করে।

যাই হোক, জিওডিএনএস এর সুবিধা নিতে হলে আপনার ডোমেইন অবশ্যই জিওডিএনএস সুবিধা আছে এমন ডিএনএস সার্ভারে হোস্ট করতে হবে। জিওডিএনএস এর জন্য রেজ-ফোর বা Rage4 বেশ ভালো একটি ডিএনএস সার্ভিস। আপনাকে প্রথমেই http://rage4.com এ গিয়ে রেজিস্টার করে নিতে হবে। মাসে প্রতিটি ডোমেইনের জন্য ২৫০,০০০ ইমপ্রেসন পুরো ফ্রি। সুতরাং এটা ব্যবহার করতে হলে আপনাকে শুরুতেই কোন কিছু পে করতে হচ্ছে না। রেজিস্টার করার পরে আপনার ডোমেইনের নেম সার্ভার পরিবর্তন করে ফেলুন Rage4 এর নেমসার্ভার দিয়ে। রেজ-ফোরের নেমসার্ভার দুটো হল

  • ns1.r4ns.com
  • ns2.r4ns.com

ডোমেইনের নেম সার্ভার পরিবর্তন করলে সেটা রিজলভ হতে বেশ কিছুক্ষন সময় নিতে পারে। সুতরাং আপনি মাঝে মাঝে whois কমান্ড দিয়ে চেক করে নিতে পারেন যে আপনার ডোমেইন এর নেমসার্ভারের পরিবর্তন টা রিজলভড হয়েছে কিনা। রিজলভ হয়ে গেলে এবার আমাদের জিওডিএনএস তৈরী করার পালা। আমি ধরে নিলাম যে আপনার ডোমাইন এর নাম abcd.com। এবার Rage4.com এ এসে লগইন করে আপনার ড্যাশবোর্ডে আসুন এবং রেগুলার ডোমেইন সেকশন থেকে আপনার ডোমেইন টি যোগ করে নিন।

Screen Shot 2014-07-03 at 7.46.52 PM

ডোমেইন যোগ করা হয়ে গেলে আপনার ড্যাশবোর্ডে আপনার ডোমেইনের নামের পাশে ম্যানেজ বাটনে ক্লিক করে আপনার ডোমেইন এর ডিএনএস প্যানেলে আসুন। এবার নিচে দেখতে পাবেন বেশ কয়েকটা সেকশন রয়েছে যেমন A Records, CNAME Records, MX Records ইত্যাদি। জিও-ডিএনএস এর জন্য আমাদের প্রয়োজন A রেকর্ড তৈরী করা। সুতরাং A Records সেকশনে NEW RECORD এ ক্লিক করুন। নিচের মত একটা স্ক্রিন ওপেন হবে।

Screen Shot 2014-07-03 at 7.53.50 PM

Record Name ফিল্ডে আপনি চাইলে আপনার ইচ্ছামত সাবডোমেইনের নাম দিতে পারেন, কিংবা মূল ডোমেইনের জন্য যা আছে, অর্থাৎ ডোমেইনের নাম যা আছে সেটাই রেখে দিতে পারেন। মনে করি যে আমরা এই রেকর্ডটা আমাদের এশিয়ান সার্ভারের জন্য তৈরী করব যার আইপি অ্যাড্রেস হল x.x.x.x।  এবার Record Value ফিল্ডে সেই আইপি অ্যাড্রেসটি দিন। নিচের জিওডিএনএস সেকশনে GeoDNS Region/Mode ড্রপডাউন থেকে Asia সিলেক্ট করে দিন।

Screen Shot 2014-07-03 at 7.58.22 PM

এবার আপনার ডিএনএস প্যানেলে দেখবেন নিচের মত করে A Record টি যোগ হয়ে গিয়েছে। এবার নতুন A Record না তৈরী করে, আপনার আগে তৈরী করা রেকর্ডটির পাশে ADD বাটনে ক্লিক করুন। এবার ঠিক আগের মতই আরেকটি রেকর্ড যোগ করুন, শুধু রেকর্ড ভ্যালুর জায়গায় আপনার ইউএস সার্ভারের আইপি দিন এবং GeoDNS Region/mode ড্রপডাউন থেকে Americas সিলেক্ট করুন নিচের ছবির মত

Screen Shot 2014-07-03 at 8.03.35 PM

ব্যাস, আমাদের জিও-ডিএনএস কনফিগার করার কাজ শেষ। এখন থেকে ইউএস ভিজিটর রা abcd.com ভিজিট করলে আপনার সাইট সার্ভ হবে y.y.y.y আইপি অ্যাড্রেস ওয়ালা সার্ভার থেকে, আর এশিয়ান ভিজিটর দের জন্য x.x.x.x আইপি অ্যাড্রেস ওয়ালা সার্ভার থেকে 🙂 পুরো বিষয়টা কিন্তু একেবারেই কঠিন নয়, বরং অনেক অনেক সহজ – তাই না?

যাদের মনে কৌতুহল যে রেজ-ফোর কিভাবে এই কাজ টা করে তাদের জন্য বলছি, Rage4.com তাদের এই ডিএনএস সার্ভারের জন্য PowerDNS নামে একটা ওপেন সোর্স অ্যাপ্লিকেশন এর মডিফায়েড ভার্সন ব্যবহার করে।

আশাকরি আর্টিকেল টা আপনার ভালো লেগেছে। তাও কমেন্ট করে জানালে খুশি হব। পাশাপাশি কোন প্রশ্ন থাকলে আমাকে টুইটারে জিজ্ঞেস করতে পারেন। আমার টুইটার আইডি হল @hasin

ধন্যবাদ সবাইকে

Categories
bangla programming

ভ্যাগর‍্যান্ট দিয়ে নিজের ইচ্ছামত ভার্চুয়াল সার্ভার কনফিগার ও ব্যবহার করা

Screen Shot 2014-07-02 at 7.01.57 PM

আমরা যারা বিভিন্ন ডেভেলপমেন্ট এনভায়রনমেন্ট নিয়ে কাজ করি তাদের অনেক সময়েই এমন টুল ইনস্টল করা লাগে যেটা একটার সাথে আরেকটা কনফ্লিক্ট করে। পিএইচপিএর জন্য টিউন করা একটা মেশিনে আবার রুবি বা পাইথন সেটআপ করে ওয়েবসার্ভার কনফিগার করতে গেলে অনেক সময় এটা কাজ করা বন্ধ করে দিতে পারে বা ওটার কোন একটা লাইব্রেরীর সাথে এর কোন লাইব্রেরী ঝামেলা করতে পারে। আবার দুই তিন ভার্সন একসাথে চালাতে গেলেও মুশকিল হয়। অথবা হয়তো চাইছেন দুই বা তিনটা ভার্চুয়াল মেশিন তৈরী করে মাইএসকিউএল এর রেপ্লিকেশন/শার্ডিং প্র‍্য্যাকটিস করতে। এইসব সমস্যা খুব সহজেই সমাধান করা যায় ভার্চুয়াল বক্স এবং ভ্যাগর‍্য্যান্ট ইনস্টল করে। ভ্যাগর‍্যান্ট মূলত ভার্চুয়াল বক্স এর একটা র‍্য্যাপার টুল হিসেবে কাজ করে ভার্চুয়াল ডেভেলপমেন্ট এনভায়রনমেন্ট তৈরী করার জন্য। এর মাধ্যমে আমরা একদম ঝামেলা ছাড়াই আমাদের পছন্দের অপারেটিং সিস্টেম (মূলত লিনাক্স বেজড) ব্যবহার করে ভার্চুয়াল সার্ভার বানাতে পারি, সেগুলোতে সফটওয়্যার প্যাকেজ ইনস্টল করতে পারি। এভাবে আমরা আমাদের প্রয়োজনমত একাদিক ভার্চুয়াল এনভায়রনমেন্ট তৈরী করে রাখতে পারি এবং যখন যেটাতে প্রয়োজন সেটাতে লগইন করে কাজ করতে পারি, কাজ না থাকলে শাটডাউনও করে রাখতে পারি। পুরো বিষয়টিই অনেকটা ভিপিএস সার্ভার হোস্ট করার মত 🙂

আজকে এই আর্টিকেলে আমরা দেখবো কিভাবে আমরা ভ্যাগর‍্যান্ট এবং ভার্চুয়াল বক্স নিয়ে কাজ করতে পারি। এর জন্য আমাদের যা যা লাগবে তা হল

১. ভার্চুয়াল বক্স – যেটা আমরা ডাউনলোড করে নিতে পারি https://www.virtualbox.org/wiki/Downloads এখান থেকে
২. ভ্যাগর‍্যান্ট – যা ডাউনলোড করা যাবে http://www.vagrantup.com/downloads.html থেকে
৩. একটা লিনাক্স অপারেটিং সিস্টেম টেমপ্লেট

আপনি http://vagrantbox.es এখানে গেলে অনেক টেমপ্লেট দেখতে পাবেন। নামানোর সময় অবশ্যই খেয়াল রাখবেন ঠিক টেমপ্লেটটি যেন বাছাই করেন। ভার্চুয়ালাইজেশন টুল হিসেবে যেটার পাশে VirtualBox লেখা আছে সেগুলো থেকে নামাবেন। আপনার সুবিধার জন্য আমি প্রচলিত কয়েকটি টেমপ্লেটের ডাউনলোড লিংক দিয়ে দিলাম

  • ডেবিয়ান ৭.২ হুইজি ৬৪ বিট – https://dl.dropboxusercontent.com/u/197673519/debian-7.2.0.box
  • ডেবিয়ান ৭.৩ হুইজি ৩২ বিট – https://dl.dropboxusercontent.com/s/60pv9an852jx9y0/Debian-7.3.0-i386b.box?dl=1
  • উবুন্তু ১৪.০৪ ৬৪ বিট – https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box
  • উবুন্তু ১৪.০৪ ৩২ বিট – https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-i386-vagrant-disk1.box

আমি নিজে ডেবিয়ান ৭.২ এর ৬৪ বিট টেমপ্লেট টি ব্যবহার করি। এই আর্টিকেলেও আমি সেটাই ব্যবহার করে উদাহরণগুলো দেখাবো। তবে পুরো বিষয়টি একই রকম, যেই টেমপ্লেটই ব্যবহার করে থাকেন না কেন 🙂

আপনি যদি প্রথম লিংকটি থেকে ডেবিয়ান ৭.২ টেমপ্লেটটি নামিয়ে থাকেন তাহলে দেখবেন যে debian-7.2.0.box নামে একটা ফাইল সেভ হয়েছে। এটার সাইজ তেমন বেশী না, মাত্র ৩১০ মেগাবাইট। এবার আপনি প্রথমে ভার্চুয়ালবক্স ইনস্টল করুন এবং তারপর ভ্যাগর‍্য্যান্ট ইনস্টল করুন। ইনস্টলেশন টা একদম স্ট্রেইট ফরোয়ার্ড – শুধু নেক্সট নেক্সট ক্লিক করে গেলেই হয়ে যায়। ইনস্টলেশন হয়ে গেলে এবার আমাদের ডাউনলোড করা ডেবিয়ান টেমপ্লেটটি ভ্যাগর‍্যান্টে ইমপোর্ট করতে হবে। এজন্য আপনার টার্মিনাল ওপেন করুন এবং নিচের মত করে কমান্ড দিন

[sourcecode language=”shell”]
vagrant box add wheezy64 debian-7.2.0.box
[/sourcecode]

Screen Shot 2014-07-02 at 6.08.09 PM

এখানে নাম হিসেবে আমি দিয়েছি wheezy64, আপনি আপনার যা ইচ্ছা দিতে পারেন। তবে আমি সাজেস্ট করব প্রাসঙ্গিক নাম দেয়ার। এবার আমরা ভার্চুয়াল সার্ভার তৈরী করব আর সেজন্য কোথাও একটা নতুন ফোল্ডার তৈরী করুন। ধরে নিলাম আপনি ফোল্ডার তৈরি করেছেন যার পাথ হল /path/to/my/folder

এবার আপনার টার্মিনাল ওপেন করে নিচের কমান্ড গুলো দিন

[sourcecode language=”shell”]
cd /path/to/my/folder
vagrant init wheezy64
[/sourcecode]

Screen Shot 2014-07-02 at 6.12.56 PM

এবার নিচের কমান্ড দিন

[sourcecode language=”shell”]
vagrant up
[/sourcecode]

কিছুক্ষনের মাঝেই আপনার ভার্চুয়াল সার্ভার রেডী হয়ে যাবে 🙂

Screen Shot 2014-07-02 at 6.16.24 PM

ব্যাস, আপনার সার্ভার রেডী। চলুন এখন লগইন করে দেখা যাক এই সার্ভারে। এজন্য এই ফোল্ডারে থাকা অবস্থায়ই নিচের কমান্ড টি দিন

[sourcecode language=”shell”]
vagrant ssh
[/sourcecode]

Screen Shot 2014-07-02 at 6.18.14 PM

আপনি আপনার সার্ভারে লগইন হয়ে গেছেন। মজা না? একদম নিমেষেই নিজের একটা আইসোলেটেড সার্ভার। চলুন দেখি এতে রিসোর্সের অ্যালোকেশন কেমন

Screen Shot 2014-07-02 at 6.21.25 PM

উপরের ছবিটা থেকে আমরা দেখতে পারছি যে আমাদের এই সার্ভারে ২৫৬ মেগাবাইট র‍্য্যাম এবং হার্ডডিস্কে ১০ গিগাবাইট স্পেস অ্যালোকেটেড হয়েছে। আপনি এখন এখানে apt-get দিয়ে নিজের ইচ্ছামত প্রয়োজনীয় প্যাকেজ ইনস্টল করে নিতে পারেন। এছাড়াও আমরা চাইলেই এসব রিসোর্স অ্যালোকেশন বাড়াতে পারি। হার্ডডিস্কের স্পেস বাড়ানোর দরকার নাই কারন এটা প্রয়োজনের উপর ভিত্তি করে নিজে থেকে এক্সপ্যান্ড করবে। চলুন আমরা দেখি কিভাবে মেমোরী বাড়াবো এবং কিভাবে আমাদের এই সার্ভারে একটা স্ট্যাটিক আইপি অ্যাড্রেস অ্যাসাইন করবো। এজন্য আগে আমাদের দরকার এই মেশিন থেকে লগআউট করে আমরা যেই ফোল্ডারে ছিলাম সেখানে যাওয়া।

ভ্যাগর‍্য্যান্ট এর যেকোন ভার্চুয়াল এনভায়রনমেন্ট থেকে লগ আউট করতে লিখবেন exit, আর ভার্চুয়াল মেশিন কে স্লিপ মোডে নিতে লগ আউট করার পর লিখবেন vagrant suspend, আর শাটডাউন করাতে চাইলে লগ আউট করার পর লিখবেন vagrant halt ।

আমরা আপাতত লগ আউট করি exit লিখে

Screen Shot 2014-07-02 at 6.28.19 PM

এবার এই ফোল্ডারে আপনি দেখবেন Vagrantfile নামে একটা ফাইল রয়েছে। এই ফাইলটি ওপেন করে “IP” দিয়ে সার্চ করুন, দেখবেন নিচের মত একটা লাইন কমেন্ট করা আছে # দিয়ে। এই লাইনটি আন কমেন্ট করুন # মুছে দিয়ে। উল্লেখ্য যে এখানে আপনার পছন্দ মত যেকোন প্রাইভেট আইপি দিতে পারেন

config.vm.network “private_network”, ip: “192.168.33.10”

ফাইলটি সেভ করে টার্মিনালে কমান্ড দিন vagrant reload এবং পিং করে দেখুন যে মেশিনে আপনার অ্যাসাইন করা আইপি অ্যাড্রেসটি রিজলভ হয়েছে কিনা। আমার মেশিনে আমি আইপি অ্যাড্রেস দিয়েছিলাম ১৯২.১৬৮.৩৩.১১ – বাই দ্য ওয়ে, আপনি আইপি অ্যাড্রেস অ্যাসাইন করার পর আপনার ভার্চুয়াল মেশিনে লগইন করে অ্যাপাচি/এনজিনএক্স সেটআপ করার পরে আপনার ব্রাউজারের অ্যাড্রেস বারে সেই আইপি অ্যাড্রেস দিলেই দেখবেন আপনার ভার্চুয়াল মেশিনের অ্যাপাচি/এনজিনএক্সের ডিফল্ট স্ক্রিন। কত সহজ পুরো বিষয়টিই, তাই না?

Screen Shot 2014-07-02 at 6.34.40 PM

ঠিক একই ভাবে মেমোরী অ্যালোকেশন বাড়াতে চাইলে Vagrantfile এ নিচের লাইন টি খুঁজে বের করুন আর আনকমেন্ট করে ১০২৪ এর জায়গায় নিজের পছন্দ মত ভ্যালু বসিয়ে vagrant reload করুন

vb.customize [“modifyvm”, :id, “–memory”, “1024”]

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

আপনার প্রয়োজন শেষ হয়ে গেলে যেকোন ভার্চুয়াল সার্ভারকে ডেস্ট্রয় করে দিতে পারেন। সেক্ষেত্রে সার্ভারটি আপনার মেশিন থেকে ডিলেট হয়ে যাবে। আপনি যদি এই সার্ভারে কোন প্রয়োজনীয় ফাইল তৈরী করে থাকেন, তাহলে ডেস্ট্রয় করার আগে তার ব্যাকআপ নিতে ভুলবেন না

[sourcecode language=”shell”]
vagrant destroy
[/sourcecode]

আশাকরি ভ্যাগর‍্যান্ট নিয়ে এই আর্টিকেলটি আপনাদের ভালো লেগেছে। তারপরেও কমেন্টে জানালে খুশি হব। আর কোন প্রশ্ন থাকলে আমাকে টুইটারে জিজ্ঞেস করতে পারেন যেকোন সময়, আমার টুইটার আইডি হল @hasin 🙂

ধন্যবাদ সবাইকে

Categories
centos PHP

Upgrading PHP to 5.5 in a CentOS 6 server with Vesta CP

Vesta CP comes with PHP 5.4 by default. If you want to upgrade it to 5.5, follow these steps

1. Stop Apache and Remove current PHP
[sourcecode language=”shell”]
service httpd stop
yum -y remove php
[/sourcecode]

2. Add remi repository
[sourcecode language=”shell”]
#For 32 Bit OS
wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm

#For 64Bit OS
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
[/sourcecode]

3. Enable Remi Repository
open /etc/yum.repos.d/remi.repo and add 1 beside enabled for both [remi] and [remi-php55], as shown in the screenshot
Screen Shot 2014-06-03 at 8.44.47 PM

4. Install PHP 5.5
[sourcecode language=”shell”]
yum -y install php php-bcmath php-cli php-common php-gd php-imap php-mbstring php-mcrypt php-mysql php-pdo php-soap php-tidy php-xml php-xmlrpc php-pecl-apc phpMyAdmin roundcubemail php-opcache php-xdebug
[/sourcecode]

Step 5: Cleanup, linking and finishing
[sourcecode language=”shell”]
mv -f /etc/php.ini.rpmsave /etc/php.ini
mv -f /etc/roundcubemail/db.inc.php.rpmsave /etc/roundcubemail/db.inc.php
mv -f /etc/roundcubemail/main.inc.php.rpmsave /etc/roundcubemail/main.inc.php
mv -f /etc/phpMyAdmin/config.inc.php.rpmsave /etc/phpMyAdmin/config.inc.php
mv -f /etc/httpd/conf.d/roundcubemail.conf.rpmsave /etc/httpd/conf.d/roundcubemail.conf
mv -f /etc/httpd/conf.d/phpMyAdmin.conf.rpmsave /etc/httpd/conf.d/phpMyAdmin.conf
service httpd start
[/sourcecode]

And you’re done 🙂 Enjoy!

Categories
General git PHP

Remote deploy your project using git's server side hooks

6Icr9fARMmTjTHqTzK8z_DSC_0123
Git hooks are very useful to perform tasks during different states of the codebase. Sometime you can cancel your commit if jshint throws some error on your javascript files, or you can deploy your current working directory somewhere in the server. In this article we will be discussing how to deploy code using git’s server side hooks.

Step 1: Add a git repository somewhere in your server
Create a blank git repository somewhere in your server. For example, see the following code

[sourcecode language=”shell”]
cd /path/to/your/folder
git –bare init myrepo.git
[/sourcecode]

You will see that a new directory named myrepo.git has been created. Inside that folder you will find a few other folders named “hooks”, “branches” and so on. However, sometime, this command may give you unexpected result by creating those child folders outside the myrepo.git. In that case the following commands are helpful

[sourcecode language=”shell”]
cd /path/to/your/folder
mkdir myrepo.git
cd myrepo.git
git –bare init
[/sourcecode]

Now everything will be inside this myrepo.git folder. Lets move to the next step.

Step 2: Add this newly created git repo as a remote to your current project
This part is easy, just follow these commands from inside your current project. We are going to add the repository we created in step 1 as a remote named “server”

[sourcecode language=”shell”]
cd /your/current/project/directory
git remote add server ssh://user@serveraddress/path/to/your/folder/myrepo.git
[/sourcecode]

Once added, you can push to this git repo like you did with origin, like
[sourcecode language=”shell”]
git commit -am "Some Commit Message"
git push server master
# (or simply git push server)
[/sourcecode]

You may want to add your local machine’s public key in the ~/.ssh/authorized_keys file so that you won’t have to input username and password every time you push your code.

Step 3: Add the git hook
To deploy your code after a push, we need to deal with post-receive hook. Log into your remote server and go to the repository that we had created in step 1 (i.e /path/to/your/folder/myrepo.git). Now go to the hooks directory and create a file named post-receive. If you want to deploy your code to a directory accessible by web server, for example /usr/share/nginx/www/myproject then the code of post-receive will be like this

[sourcecode language=”shell”]
#!/bin/bash
export GIT_WORK_TREE=/usr/share/nginx/www/myproject
git checkout -f
[/sourcecode]

The code above will checkout current HEAD of master branch inside the directory specified by GIT_WORK_TREE. But sometime, you may have another project which is cloned from your git repo. In those directories, instead of checking out, we will do a git pull. So our post-receive file’s code will be like this

[sourcecode language=”shell”]
#!/bin/bash
cd /usr/share/nginx/www/myproject
unset GIT_DIR
git pull
[/sourcecode]

remember to unset GIT_DIR which is very important for a git pull from post-receive hook.

Step 4: Give the executable permission to this post-receive hook
In this last step, just give executable permission to this post-receive file and you’re done
[sourcecode language=”shell”]
chmod +x /path/to/your/folder/myrepo.git/hooks/post-receive
[/sourcecode]

That’s mainly it 🙂 Now whenever you push your code from local machine to this remote git repository, your code will be deployed instantly.

I hope you’ve enjoyed this article and I would love to hear your comments.

Categories
PHP

With 1.1GB/s IO, Ramnode is possibly one of the best VPS providers out there

When you search for low end boxes, you may think that services are not up to the mark with these providers. Guess what, You are WRONG, so WRONG indeed. There are a few providers who gives you a top class services, despite their price point.

Ramnode

I have been using Ramnode for almost 6 months by now, had used Rackspace and Amazon EC2 before and I am not a big fan of them except the instant resource modification feature. When I purchased my first box from Ramnode, I was just thinking let’s give a try. And once I started, I totally loved their services. From 1Gbit network to an amazing RAID10 setup that gives you upto 1.3 GB/s in SSD and 800MB/s in SSD Cached VPSes. Here is the result of dd test in one of my SSD boxes.

[sourcecode language=”shell”]
d if=/dev/zero of=iotest bs=64k count=16k conv=fdatasync && rm -rf iotest
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB) copied, 1.01694 s, 1.1 GB/s
[/sourcecode]

and here is the result from one of my SSD cached boxes

[sourcecode language=”shell”]
dd if=/dev/zero of=iotest bs=64k count=16k conv=fdatasync && rm -rf iotest
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB) copied, 1.37957 s, 778 MB/s
[/sourcecode]

Ramnode has been a great provider to many people out there for last 2 years, and several time won the quarterly poll arranged by LEB community. Give it a shot anytime without worrying much, you won’t be disappointed. And beside enjoying such a great servcie, enjoy an additional discount of 38% by using the coupon code WOWNUM1 for any of their plans.

Categories
General lemp

এসো নিজে করি – ডেবিয়ানে এঞ্জিনএক্স ইনস্টলেশন এবং কনফিগারেশন

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

এঞ্জিনএক্স ইনস্টল করা

প্রথমেই যেটা করতে হবে সেটা হল এপিটি প্যাকেজ ম্যানেজার লেটেস্ট রিপো ইনফরমেশন দিয়ে আপডেট করা। এটা আমরা কমবেশী সবাই জানি কিভাবে করতে হয়। আপনার সার্ভারের টার্মিনালে নিচের কমান্ড দিন। আপনি রুট ইউজার হিসেবে লগইন না করলে না করলে এবং সুডুয়ার্স লিস্টে আপনার ইউজার অ্যাড করা থাকলে কমান্ডের আগে sudo ব্যবহার করতে হবে 🙂

[sourcecode language=”shell”]
apt-get update
[/sourcecode]

এবার আমরা নিচের কমান্ড দিয়ে এঞ্জিনএক্স ইনস্টল করব। কমান্ড দেয়ার কিছুক্ষনের মাঝেই দেখতে পাবেন এঞ্জিনএক্স ইনস্টল হয়ে গেছে

[sourcecode language=”shell”]
apt-get install nginx
[/sourcecode]

ইনস্টল হয়ে গেলে চলুন এঞ্জিনএক্স কে স্টার্ট করি নিচের কমান্ড দিয়ে। যদি এঞ্জিনএক্স চালু হতে ব্যর্থ হয়, বা আগে থেকে অ্যাপাচি সার্ভার চালু থাকে তবে আগে অ্যাপাচিকে অফ করে নিন