Fixing phpmyadmin not found problem and AllowNoPassword in ubuntu

Every time I installed phpmyadmin in my ubuntu desktop, navigating to http://localhost/phpmyadmin simply displays a 404 message. This is how I fix everytime -

$ sudo ln -s /usr/share/phpmyadmin /var/www

Fixing AllowNoPassword

I don’t use any password for mysql in my development invironment. But by default phpmyadmin doesn’t allow you to login without a password. You can overcome it by editing the /etc/phpmyadmin/config.inc.php. Open the file with root previledge -

$ sudo gedit /etc/phpmyadmin/config.inc.php

And uncomment this line

$cfg['Servers'][$i]['AllowNoPassword'] = TRUE;

Changing apache document root in ubuntu

In my development machine I always like to move the default /var/www directory to my home directory, e.g. /home/tareq/www . It’s very simple to do. Open the /etc/apache2/sites-available/default file with administrator previledge and change the document root as you want

$ sudo gedit /etc/apache2/sites-available/default

Now change the file like this:

DocumentRoot /home/tareq/www
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /home/tareq/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

Now restart your apache

$ sudo /etc/init.d/apache2 restart

Update

According to Nasim vai, there is a more elegant solution with a single line command :-

$ sudo rm -r /var/www; sudo ln -s /home/${USER}/www /var/www

Deploying PHP apps with git and git submodule

I used to work in my projects like editing a file and uploading the changed files back to the server every time when it feels like those changes are OK. But when the number of files gets bigger, I loose track which files I’ve edited. In that case I had to upload all the files again to the server via FTP.

I am using Git as my primary SCM tool. Although I wasn’t using any SCM until I realized how essential it was when developing the plugin WP User Frontend. Some clients asked me to modify the plugin to fit in their project, others asked about other requirements. So every time I had to modify that plugin to suit their needs from the beginning. And It was a pain in the ass to track where I changed for that custom work. Because I had to update the plugin again to release in the public without the custom modification. So, it was a nightmare.

Anyway, back to the topic. I thought I can easily track those changed files and can only upload those change sets and it’ll be very tiny. So I am writing the process as a future reference for myself and might help others too.

1. initialize your project

$ mkdir awesome-project
$ cd awesome-project
$ git init

As I was also working with git submodules, I’ll add the submodule to my newly created awesome project. If you don’t know what a submodule is, it’s usually an another git repository that can be used under another git project.

2. Adding git submodule

$ git submodule add ~/www/tiny-framework lib/framework

Here I am using another git project ~/www/tiny-framework inside my awesome-project in path awesome-project/lib/framework. This command will clone my tiny-framework project in the awesome-project/lib/framework folder.

You can skip the submodule part if you are not using any.

3. pulling changes from the framework

In case you have updated your tiny-framework project, obviously you’ll want to bring the changes to your awesome-project too, but those changes will not automatically pulled down in your awesome project. You’ve to pull it manually.

$ cd lib/framework
$ git pull

Now you’ve worked in your project and ready to deploy to the server for test or production usage. It’s time to add a remote branch to your project.

4. Add remote repo to deploy the app

Now add a remote repository to your awesome project.

$ git remote add production ssh://example.com/~/git/app

I have shell access to my server, so I am adding the server as the remote repository. The trailing ~/git/app is the path where I’ll be pushing my local repo. In case you don’t know what the ~ sign means, it’s a shortcut to your home directory path.

5. Create the app bare repo in server

Now that you’ve added the remote repository to your local machine, you’ve to create the actual remote repository to the server. Log in to your server and create the folder and initialize the empty git repo.

$ mkdir git/app
$ cd git/app
$ git init --bare

You might have noticed, I am creating a bare repo here. There are some reasons behind why I am using bare repo.

The bare repo is not like a normal git repo, it doesn’t and will not contain any files that you’ll be pushing from your local repo. What we’ll be doing is :-

  • we will create a post-receive hook in this bare repo
  • we will push the local repo to this bare repo
  • the post-receive hook in this bare repo will checkout our local repo and will copy our local files to another folder in the server

6. Add post receive hook to the server

Now in this bare repo, we’ll add the post receive hook to checkout our local repo

$ cd hooks
$ vi post-receive.sample

7. Add the details of the folder to clone

You’ve to add this line in the post-receive.sample file. I am using vi/vim, you can you nano or emacs or whatever editor you want. But make sure you are providing the right path to the folder. In my case, my local repo will be copied to the awesome-project folder in public_html directory

GIT_WORK_TREE=~/public_html/awesome-project git checkout -f

8. Rename and make executable

To make the hook work, you’ve to rename the post-receive.sample file to post-receive and make it executable

$ mv post-receive.sample post-receive
$ chmod +x post-receive

9. Now push the changes

Now everything is done, we are finally able to push our local git repo to the server. The files will be placed in public_html/awesome-project folder in the server.

$ cd awesome-project
$ git push production master

Now, you might have noticed, the submodule has not been deployed to your server, why is that? Because git consider the submodule as another git repo and if you want to push the submodule too, you’ve to create an another bare repo in the server, configure the post-receive hook, adding the remote repo in the submodule and push them again as you did for your awesome-project, damn! But you’ve to do it :(

10. Push the submodule

Repeat the process 4 to 9 again. That means:

  1. cd into the “framework” folder
  2. add remote repo
  3. create bare repo in server (e.g: ~/git/framework)
  4. add the post-receive hook in path: ~/public_html/awesome-project/lib/framework
  5. push the local changes

Thats pretty much it.

Skipping the password prompt

Now your system is ready and you can always push your changes to the server. But, every time it’ll ask your ssh password when pushing the changes. You can skip this problem too. Generate a private/public key for your laptop/computer. Log in to your cpanel. Goto the SSH/Shell Access => Manage SSH Keys. Then import your public key and authorize it. From now on, you’ll not be asked to enter your password every time you push you changes.

Extra: Removing a git submodule

If you want/have to remove the submodule from the project, here’s how to do it

git rm --cached path/to/submodule

Things to do after installing Ubuntu 11.10 Oneiric Ocelot

The new Ubuntu is here 2 days ago. I was using Natty Narwhal (11.04) and didn’t take any risk to use Gnome 3 there. But I couldn’t resist myself to switch to Gnome 3 this time. Here is some things I did after installing 11.10 -

[Note: If you are in Bangladesh, change the default mirror to Main Server or Server for United States, it'll save a lot of troubles]

1. Update your repository first

sudo apt-get update

2. Install resticted extras package for audio/video codec support and Vlc

sudo apt-get install ubuntu-restricted-extras vlc

3. Surely you want switch to Gnome 3, aren’t you?

sudo apt-get install gnome-shell

4. Install Gnome shell Tweak tool

sudo apt-get install gnome-tweak-tool

Gnome tweak Tool Continue reading

উবুন্টুর মুশকিল আসানঃ উবুন্টুর সব ঝামেলার বাংলা সমাধান

প্রথমেই একটা কথা বলে নেই, এই লেখাটা একইসাথে বিজ্ঞাপনধর্মী এবং আবেদনধর্মী। আপনি যদি বিজ্ঞাপনকে অতিশয় ঘৃণা করেন তবে আমরা দুঃখিত এই বিজ্ঞাপন প্রচারের জন্য, তারপরও অনুরোধ করবো সামান্য সময় নষ্ট করে একটু কষ্ট করে পড়ুন। আর যদি বিজ্ঞাপনের ফ্যান হন তাহলেও আমরা দুঃখিত, কারন এইটা আমাদের লেখা জীবনের প্রথম বিজ্ঞাপন (জীবনের প্রথম আবিষ্কারে বিজ্ঞানী এডিসনও হোঁচট খেয়েছেন, আর আমরাতো গোনাতেই পড়িনা), তাই এই লেখায় আহামরি কিছু পাবেননা, তারপরও একই অনুরোধ করবো যে সামান্য সময় নষ্ট করে একটু কষ্ট করে পড়ুন। এখন আসুন কেন আমরা একে বিজ্ঞাপনধর্মী এবং আবেদনধর্মী বললাম। এই লেখাটা বিজ্ঞাপনধর্মী তাদের জন্য যারা “উবুন্টু” শব্দটার সাথে পরিচিত না। আর “আবেদনধর্মী” তাদের জন্য যারা “উবুন্টু ব্যবহারকারি”। আপনি যদি প্রথমভাগে পড়েন অর্থাৎ যদি আপনি একজন উবুন্টু ইউজার হন তবে ইচ্ছা করলে এই লেখাটার প্রথমভাগকে উপেক্ষা করে সরাসরি দ্বিতীয়ভাগে যেতে পারেন, তবে না যেতেই পরামর্শ দেব। আর যদি দ্বিতীয় ভাগে পড়েন অর্থাৎ উবুন্টু কি তা জানেননা তবে প্রথম ভাগটা অবশ্যই পড়বেন কিন্তু।

প্রথম ভাগঃ
উবুন্টু হচ্ছে বর্তমান বিশ্বের সবচেয়ে জনপ্রিয় একটা লিনাক্স ডিস্ট্র। লিনাক্স নিয়ে আমাদের সবারই একটা ভুল ধারনা যে এটি অতি কঠিন জিনিস। অস্বীকার করবনা, এককালে এটা অপারেট করা আমার আপনার মত সাধারন মানুষের কম্ম ছিলনা, কিন্তু এখন দিন পাল্টেছে। লিনাক্সকে ভিত্তি করে গড়ে উঠা উবুন্টু নামের এই অপারেটিং সিস্টেমটি লিনাক্সের কঠিন ভাবমূর্তিকে একেবারে দূর করে দিয়ে সাধারনের ব্যবহারের উপযোগী করে ফেলেছে। এটি দিয়ে অফিসের (লেখালেখি, হিসেবনিকেশ, প্রেজেনটেশন) কাজ কর্ম, গান শোনা, ভিডিও দেখা, গেম খেলা, ইন্টারনেট ব্রাউজ করা, আঁকাআঁকি করা – সবই করতে পারবেন। বোনাস হিসেবে পাবেন ভাইরাস, স্পাইওয়ার, এডওয়ার ইত্যাদি হাবিজাবি মেজাজ খারাপ করা জিনিস থেকে মুক্ত থাকার আনন্দ! সবচেয়ে বড় কথা হল, এই উবুন্টু একেবারে ফ্রি। এইবার একটু আঁতলামি কথাবার্তা, কিন্তু কথাবার্তাগুলো চিন্তার বিষয়। আমরা যেসব সফটওয়ার ব্যবহার করি বাংলাদেশে সেগুলোকে ইংলিশে বলা হয় “পাইরেটেড সিডি” বা বাংলায় যেটাকে বলা হয় “চোরাই সিডি”। সোজা কথায় আমরা চুরি করা জিনিস ব্যবহার করছি। অন্যদিকে উবুন্টু হচ্ছে একদমই মাগনা এবং সেটা বৈধভাবেই। তাই এটা ব্যবহার করলে কেউ আমাকে চোরও বলবেনা। তাছাড়া উবুন্টু হচ্ছে লিনাক্সবেজড অপারেটিং সিস্টেম অর্থাৎ যে স্ট্যাবিলিটি আর পার্ফরম্যান্সের জন্য লিনাক্স আজ বিশ্বের সিংহভাগ সুপার কম্পিউটার আর সার্ভারে ব্যবহার করা হয় সেই স্ট্যাবিলিটি আর পার্ফরম্যান্সকে পাচ্ছেন আপনার ডেস্কটপে। সত্যিকারের এক অপারেটিং সিস্টেম হচ্ছে উবুন্টু।

এই উবুন্টুকে নিয়েই আমরা একটা ব্লগ খুলেছি, যেখানে বাংলায় উবুন্টু নিয়ে সবরকম কথা বার্তা হবে। ব্লগটির নাম উবুন্টুর মুশকিল আসান। তাই আপনি যদি উবুন্টুর জগতে নতুন হন বা উবুন্টুর জগতে যোগ দিতে চান তবে অবশ্যই একটু ঘুরে যান ব্লগটি থেকে।

দ্বিতীয় ভাগঃ

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

আপনি ইচ্ছে করলেই যেকোন সমস্যার সমাধান বা উবুন্টু সম্পর্কিত বিভিন্ন লেখা লিখে এই ব্লগে অবদান রাখতে পারেন। বিস্তারিত পাবেনএখানে। হতে পারে লেখাটি আগে বিভিন্ন ফোরামে অথবা সাইটে প্রকাশিত হয়েছে, অথবা হতে পারে আপনার স্বকীয় কোন লেখনী। যেটাই হোক, আপনি তথ্যসূত্র উল্লেখ করে উবুন্টু/লিনাক্স সম্পর্কিত যেকোন লেখা এখানে প্রকাশ করতে পারেন। এতে করে সাধারণ অনেক উবুন্টু ব্যবহারকারিরাই উপকৃত হবে।

তাহলে আর কথা বাড়াচ্ছিনা। ব্লগটার একটা ফাইনাল এ্যাড দিয়ে শেষ করছি এই লেখাটা। উবুন্টুর মুশকিল আসান ব্লগে আপনার সাথে দেখা হচ্ছে তাহলে!

ফাইনাল এ্যাডঃ
আপনি উবুন্টুকে জানতে চান?
উবুন্টুতে আসতে চাচ্ছেন কিন্তু ভয়ে আসতে পারছেন না?
আপনি উবুন্টুতে সমস্যায় পড়েছেন?
আপনার উবুন্টু সম্পর্কিত জ্ঞান কারো সাথে শেয়ার করতে পারছেন না?
তাহলে আপনার জন্যই রয়েছে “উবুন্টুর মুশকিল আসান”।
এটি সম্পুর্ন রঙ্গীন এবং বাংলা ভাষায় ইউনিকোড সমর্থিত উবুন্টু বিষয়ক ব্লগ!
আপনি আসুন। আপনার বন্ধুদেরও আসতে বলুন।

লিখেছেনঃ অভ্রনীল

উবুন্টু লিনাক্স সম্বন্ধে পোস্ট সমূহের কৃতজ্ঞতা প্রকাশ

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

লিনাক্স কি?

লিনাক্স একটি শক্তিশালী ওপেন সোর্স অপারেটিং সিস্টেম। ওপেন সোর্স বলতে বোঝায়, এটার সোর্স কোড উন্মুক্ত। আপনিও এটার বিভিন্ন ফিচার পরিবর্তন করতে পারেন। ১৯৯১ সালের দিকে লিনাক্সের সাথে আমাদের পরিচিত করেন লিনাস টরভেল্টস নামে এক প্রোগ্রামার। লিনাক্স মূলত তৈরী হয়েছে ইউনিক্স কার্নেল থেকে আপনার পিসি তে হার্ডওয়্যারের পর পর-ই যে জিনিসটি আপনাকে পিসি চালাতে সাহায্য করে সেটাই হলো অপারেটিং সিসটেম। । কার্নেল হল একটি অপারেটিং সিস্টেমের প্রাণ। আপনি উইনডোজে যেই “Welcome Screen” দেখেন সেটার পিছনের কাজ কর্ম গুলো অনেক জটিল; আর, সেই জটিল কাজ কর্মগুলোর ভিত্তি হলো , কার্ণেল।

লিনাক্স কেন ব্যবহার করবেন?

  • লিনাক্স একটি ফ্রি অপারেটিং সিস্টেম। এটি ব্যবহার করার জন্য আপনাকে এটি পয়সা দিয়ে কিনতে হবে না, যেটি করতে হয় উইন্ডোজ অপারেটিং সিস্টেম ব্যবহার করার জন্য। এটি সম্পূর্ণ বিনামূল্যে এবং এখানে যেসব সফটওয়ার ব্যবহার করা হয় সেগুলোও বিনামূল্যে পাওয়া যায়। সুতরাং এটি ব্যবহার করলে আমাদের সফটওয়ার পাইরেসি করতে হয় না।
  • লিনাক্স এমন একটি অপারেটিং সিস্টেম যেটি তৈরী হয়েছে সারা বিশ্বের বাঘা বাঘা প্রোগ্রামারদের দ্বারা, যারা কোন টাকা ছাড়াই এগুলো তৈরী করছেন। লিনাক্সের জন্য কিছু স্বেচ্ছাসেবক টিম আছে, তাদের দ্বারাই এসব কাজ সম্পাদিত হচ্ছে। যেহেতু এটি তৈরী হচ্ছে অনেকগুলো কমিউনিটির সমন্বয়ে, তাই এখানে সফটওয়ারের দূর্বল স্থান কম। তাই, এসব সফটওয়ারে বাগ প্রায় নেই বললেও চলে। পক্ষান্তরে, উইন্ডোজে বাগের পরিমাণ অনেক বেশি। ফলে সহজেই ভাইরাস এসব দূর্বল স্থানে হামলা করে, আর আমরা ভাইরাস অ্যাটাকে পড়ি। আমাদের সিস্টেম পড়ে যায় বিশাল সব ভাইরাসের মুখে। তাই লিনাক্সে ভাইরাসের অস্তিত্ব নেই বললেও চলে।
  • এটি হচ্ছে ওপেন সোর্স। আপনি যদি একজন প্রোগ্রামার হন, তবে চাইলে এখানে আপনার পছন্দমত ফিচার যোগ-বিয়োগ করতে পারেন এবং লিনাক্স অত্যন্ত শক্তিশালী।
  • অনেকেই মনে করেন, লিনাক্সে শুধুই কমান্ড দিয়ে কাজ করতে হয়। হ্যাঁ একথাও সত্যি। তবে উবুন্টু আসার ফলে এ ধারনারও পরিবর্তন ঘটেছে। আপনি উবুন্টুতে উইন্ডোজের মত করেই কাজ করতে পারবেন। লেখালেখি করতে চান? আছে মাইক্রোসফট অফিসের বিকল্প ওপেন অফিস, এবি ওয়ার্ড, কে রাইট সহ ডজন খানেক ওয়ার্ড প্রসেসর। ডাটাবেস দরকার? ডাউনলোড আর ইন্সটল করে ফেলুন মাইএস কিউ এল, পোস্ট গ্রে এস কিউ এল সহ অনেক কিছু। গ্রাফিক্সের কাজ করতে চান? আছে ফটোশপের বিকল্প মুক্ত সফটওয়ার গিম্প। এই রকমভাবে একটির বিকল্প অনেকগুলো করে অপশন আছে আপনার কাছে। তাই কোন চিন্তা নেই এবং এগুলো সম্পূর্ণ ফ্রি।
  • কোন কর্পোরেট প্রতিষ্ঠান চালাতে চান? তাহলে লিনাক্স আপনার জন্য বেস্ট। আপনাকে লাখ লাখ টাকা খরচ করে উইন্ডোজ কিনতে হবে না। লিনাক্স ব্যবহার করুন একদম ফ্রি।