Monday, June 2, 2014

আমাজন EC2 instance এ রেডহ্যাট 6.00 সার্ভারে Apache, Mysql, PhpMyAdmin, FTP, CMS wordpress কনফিগার করার নিয়ম

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


আমাজনে একাউন্ট করতে ১ ডলার লাগে এবং ক্রেডিট কার্ড লাগে। প্রথম বছরের জন্য অনেককিছুই ফ্রী। এইলিঙ্কে বিস্তারিত দেখতে পারেন। একাউন্ট তৈরি করার পর খেয়াল রাখবেন উপরে আপনার অঞ্চল Oregon যেন সিলেক্ট থাকে। তাহলে টাকা কাটবে না। অনেক অঞ্চল আছে যেগুলোর জন্য চার্জ কাটে।

১। প্রথমে Service- EC2 তে যাবেন। instances - Lunch intances -


২। Red Hat Enterprise Linux 6.5 (PV)- select


৩। Micro instances এ সিলেক্ট করুন।
 


next-configure instance details এ ক্লিক দিন।

৪। এখানে কিছু করা লাগবে না। তবে আপনি যদি বুঝেন তাহলে প্রয়োজনমত পরিবর্তন করতে পারেন।


৫। স্টোরেজ বাড়াতে পারে। free tier user রা ৩০ জিবি পর্যন্ত ব্যবহার করতে পারবে। 


 next add storage এ ক্লিক দিন। তারপর tag instance এ ক্লিক দিন।


৬। এখন সিকিরিটি গ্রুপ আসবে। এই জায়গাটি খুব সাবধানে কনফিগার করতে হবে।
Create a new security group সিলেক্ট থাকা অবস্থায়  Security group name এ লিখুন mashpygroup । তারপর add rule এ ক্লিক করে নিচের মত পোর্ট রেঞ্জগুলো দিন।

 বড় করে দেখতে ছবিতে ক্লিক দিন। 


review and lunch এ ক্লিক দিন।

৭। create new key pair এ সিলেক্ট করে key pair name "newmashpy" দিলাম। download key pair এ ক্লিক দিন।



এই newmashpy.pem ফাইলটি সযতনে রেখে দিন। কারন এটা খুবই গুরুত্বপূর্ণ। আপনার ভিপিএস এ ssh লগিন করার জন্য লাগবে। 

 ৮। এখন আবার ec2 - instances এ যান। আপনার ইন্সটেন্সটি তৈরি হতে কমপক্ষে ৫ মিনিট সময় লাগবে। এরপর আপনাকে public dns এবং পাবলিক আইপি দেয়া হবে। ধরে নিতে পারেন public dns আমাদের ডোমেইনের নাম। এটা দিয়ে আমরা আমাদের সাইট চেক করব। এখন আমরা ssh লগিন করব।

newmashpy.pem ফাইলটি home ফোল্ডারে রাখুন। অন্য ফোল্ডারে রাখলে আবার টার্মিনালে cd দিয়ে ডায়রেক্টোরি চেঞ্জ করতে হবে। এখন টার্মিনালে কমান্ড লিখুন -
$ sudo chmod 600 newmashpy.pem
$ ssh -i newmashpy.pem ec2-user@54.187.244.182
(54.187.244.182 হল আমার পাবলিক আইপি)

আপনি এখন ssh লগিন এক্সেস দেয়া হবে। আমি রুট মুডে ঢুকব।

$ sudo -i

৯। আমরা apache ইন্সটল করব। প্যাকেজ ইন্সটলের জন্য yum ইউজ করব।
$ yum install httpd
$ service httpd start

আপনি আপনার পাবলিক dns এ গিয়ে চেক করুন apache এর পেজ এসেছে কিনা। আমার পাবলিক dns
http://ec2-54-187-244-182.us-west-2.compute.amazonaws.com

আমারটাতে সুন্দরভাবে এসেছে।

আরো টেস্ট করতে চাইলে /var/www/html ডায়রেক্টোরিতে index.php ফাইলে কিছু পিএইচপি কোড লিখুন এবং public dns এ যান। তাহলে index.php এক্সিকিউট হয়ে আউটপুট দেখাবে।

১০। এখন php ও অন্যান্য লাইব্রেরী ইন্সটল করব। তার আগে প্যাকেজ লিস্ট আপডেট করে নেই।
$ 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
$ sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
$ yum update (এটা হতে একটু টাইম লাগবে। ধৈর্য ধরে অপেক্ষা করুন।)
$ yum install php libmcrypt libmcrypt-devel php-mcrypt php-mbstring php5-gd

ইন্সটল হওয়ার পর আমরা একটা পিএইচপি ফাইল তৈরি করে টেস্ট করে দেখতে পারি।
$ cd /var/www/html
$ vim mashpy.php

<?php
echo "hello world";
?>
সেভ করে বেরিয়ে আসুন। পাবলিক dns এ গিয়ে টেস্ট করে দেখুন helllo wold এসেছে কিনা।
http://ec2-54-187-244-182.us-west-2.compute.amazonaws.com/mashpy.php

১১। আমরা এখন mysql ইন্সটল করব।

$ yum install mysql mysql-server php-mysql
$ service mysqld start

mysql এর জন্য আমরা পাসওয়ার্ড সেট করে দিব। এর জন্য কমান্ড লিখুন
$ mysql_secure_installation

আপনাকে বলা হবে রুটে পাসওয়ার্স বসাতে। যেহেতু আমরা নতুনভাবে পাসওয়ার্ড সেট করব সেহেতু কিছু না লিখে enter চাপুন। তারপর বলা হবে আপনাকে পাসওয়ার্ড ইনপুট দিতে। পাসওয়ার্ড ইনপুট দিন।
আপনাকে নিচের কুশ্চেয়ান করা হতে পারে। বুঝে বুঝে উত্তর দিবেন।
Remove anonymous users? [Y/n] => Y
Disallow root login remotely? [Y/n] => N
Remove test database and access to it? [Y/n] =>Y
Reload privilege tables now? [Y/n] => Y

১২। আমরা এখন phpmyadmin ইন্সটল করব। তাই কমান্ড লিখুন
$ cd /usr/share
$ wget http://kent.dl.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.2.1/phpMyAdmin-4.2.1-all-languages.tar.bz2

ফাইলটাকে extract করব। tar.bz2 ফাইলকে এক্সাক্ট করার কমান্ড
$ tar -xjvf phpMyAdmin-4.2.1-all-languages.tar.bz2 -C /usr/share

ফাইল রিনেম করছি -
$ mv phpMyAdmin-4.2.1-all-languages phpmyadmin

ডাউনলোড করা ফাইলকে সরিয়ে দিচ্ছি।
$ rm -rf phpMyAdmin-4.2.1-all-languages.tar.bz2

সঠিক পারমিশন দিয়ে দিচ্ছি -
$ cd phpmyadmin
$ chown -R apache:apache .
$ chmod -R 755 .

$ cd /etc/httpd/conf.d
$ vim phpMyAdmin.conf
এই ফাইলে লিখি - <Directory "/usr/share/phpmyadmin">
Order Deny,Allow
Deny from None
Allow from All
</Directory>

Alias /phpmyadmin /usr/share/phpmyadmin
Alias /phpMyAdmin /usr/share/phpmyadmin

সেভ করে বেরিয়ে আসুন। তারপর সার্ভিস রিস্টার্ট দিন।
$ service httpd restart

১৩। পিএইচপি মাইএডমিনের জন্য আমরা কিছু মেনুয়্যাল কনফিগার করব এবং apace রিস্টার্ট করব।

$ cd /usr/share/phpmyadmin/
$ mv config.sample.inc.php config.inc.php
$ vi config.inc.php

blowfish_secret এ কিছু একটা লিখুন এবং সেভ করে বেরিয়ে আসুন।
cfg['blowfish_secret'] = 'mashpy';

$ rm -rf setup
$ service httpd restart

এখন public_dns/phpmyadmin/ এ যান। আমার ক্ষেত্রে এই লিঙ্কে যাচ্ছি -
http://ec2-54-187-244-182.us-west-2.compute.amazonaws.com/phpmyadmin
ইউজার নেম লিখুন : root এবং পাসওয়ার্ড হল mysql এর ক্ষেত্রে যে পাসওয়ার্ড দিয়েছিলেন সেটা।

১৪। এবার আমরা পারমিশন সেট কর। এই অংশটা অনেক গুরুত্বপূর্ণ। ভুল পারমিশনের কারনে ওয়ার্ডপ্রেস ঝামেলা করতে পারে।
এই পারমিশনটা অনেক গুরুত্বপূর্ণ।
groupadd www
$ usermod -a -G www apache

$ chgrp -R www /var/www/html
$ setfacl -Rdm g:www:rwx /var/www/html
$ setfacl -Rm g:www:rwx /var/www/html

১৫। অনেক ক্ষেত্রে সার্ভার .htaccess ফাইলে ঝামেলা করে। সেই জন্য এই কাজ গুলো করুন =>
$ cd /etc/httpd/conf/
$ vim httpd.conf

এই ফাইলটির একেবারে নিচে দেখবেন (অনেক নিচে স্ক্রল করুন)
AllowOverride none সেটাকে All করে দিবেন।
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>

 এর আরেকটু নিচে দেখুন আবার লিখা আছে 
 AllowOverride none এটাকেও All করবেন।

 মনে করে ২ বার কাজটা করবেন।

$ service httpd restart

১৬। ইউজার যেন ফাইল ভালমত আপলোড করতে পারে সেই জন্য আমাদের ftp এক্সেস দেয়া দরকার। ftp সাপোর্টের জন্য প্যাকেজ হল vsftpd
$ yum install vsftpd
$ vim /etc/vsftpd/vsftpd.conf
ফাইলটা সাবধানে এডিট করবেন। এডিট করতে গিয়ে উল্টাপাল্টা স্পেস বা অন্য কিছু রাখবেন না। সাবধানে দেখুন আমি কি লিখেছি -
anonymous_enable=NO (এটা yes করা থাকবে। no করে দিবেন)
chroot_local_user=YES (এটা # করা থাকবে। # উঠিয়ে দিবেন)

এবার ফাইলটির সবচেয়ে নিচে যান এবং এগুলো যোগ করে দিন। 

userlist_file=/etc/vsftpd/vsftpd.userlist
userlist_deny=NO
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=54.187.244.182 (এখানে আপনার পাবলিক IP এড্রেসটি লিখবেন)

ফাইলটি সেভ করে বের হয়ে আসুন।
১৭। আমরা ftp ইউজার তৈরি করব এবং তার নির্দিষ্ট এক্সেস দিয়ে দিব ।
sudo useradd -d /var/www/html -s /usr/sbin/nologin mashpy
sudo passwd mashpy

নতুন একটা ফাইল ক্রিয়েট করব। কমান্ড লিখুন =>
$ vim /etc/vsftpd/vsftpd.userlist

এখানে ftp ইউজারের নাম লিখুন -
mashpy

সেভ করে বের হয়ে আসুন।

$ vim /etc/shells ফাইলে লিখুন 
 
/usr/sbin/nologin

সেভ করে বেরিয়ে আসুন।

১৮। mashpy ইউজার নেমকে www গ্রুপে ঢুকিয়ে দিলাম।
$ usermod -G www mashpy

ftp ইউজারকে ফুল এক্সেস দিলাম।
$ setsebool -P allow_ftpd_full_access 1
apache রিস্টার্ট করুন।
$ service vsftpd restart

এখন filezilla দিয়ে আমরা টেস্ট করব।
hostname: পাবলিক DNS
username: mashpy
password: ftp এর জন্য আমরা যে পাসওয়ার্ড দিলাম।

১৯। এখন যে বিষয়টা নিয়ে আলোচনা করব তা অনেক গুরুত্বপূর্ণ। আমরা যদি সার্ভার রিস্টার্ট দেই তাহলে আমাদের সাইট আর লোড হবে না। কারন রিস্টার্টের ফলে apache, mysql, ftp এর সার্ভিসগুলো বন্ধ হয়ে যাবে। তাই আমাদের সেট করে দিতে হবে যেন সার্ভিস গুলো সার্ভার অন হওয়ার সাথে সাথে আবার চালু হয়।
$ ntsysv

এখান গ্রাফিক্যাল মুড চালু হবে। যেগুলোর পাশে * আছে সেগুলো হল টিক চিহ্ন। তাই আমরা httpd, mysqld, vsftpd এই তিনটা সার্ভিসকে * করে দিব। Space বাটন চাপ দিলেই স্টার হয়ে যায়।

এখান সার্ভার রিস্টার্স্ট হলেও আমাদের কোন কিছুই বন্ধ হবে না।

২০। আমরা এখন ওয়ার্ডপ্রেস ইন্সটল করব। কমান্ড লিখুন -

$ cd /var/www/html/

লেটেস্ট ওয়ার্ডপ্রেস ডাউনলোড করছি।
$ wget http://wordpress.org/latest.tar.gz
$ tar -xzvf latest.tar.gz -C /var/www/html
$ cp -avr /var/www/html/wordpress/* /var/www/html
$ rm -rf /var/www/html/wordpress
$ chmod 2775 /var/www/html
$ find /var/www/html -type d -exec sudo chmod 2775 {} +
$ find /var/www/html -type f -exec sudo chmod 0664 {} +


এখন phpmyadin থেকে ডাটাবেজ তৈরি করে নিন। তারপর পাবলিক DNS এ গিয়ে ইন্সটল করুন ওয়ার্ডপ্রেস। আপনি যদি কমান্ড ঠিকমত চালিয়ে থাকেন তাহলে ওয়ার্ডপ্রেস ইন্সটলে কোন সমস্যাই হবে না।


ধন্যবাদ সবাইকে। অনেকদিন পরে এত বড় লেখা লিখলাম। কোথাও বুঝতে সমস্যা হলে বা আমার লেখায় কোন ভুল থাকলে অবশ্যই জানাবেন।

No comments:

Post a Comment

এখানে আপনি আপনার মূল্যবান মতামতটি প্রকাশ করতে পারেন।