Created
May 10, 2016 11:52
-
-
Save sharifbdp/9611a71d3d3e12e5edd5aa90708206e7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
সার্ভারের প্রাথমিক এবং ব্যাসিক কনফিগারেশন | |
1. নতুন তৈরি হওয়া সার্ভারে root ইউজার হিসেবে লগইন করুন নিচের কমান্ড দিয়ে | |
ssh root@SERVER_IP_ADDRESS | |
2. নতুন একটি ইউজার তৈরি করতে কমান্ড দিন নিচের মত। এখানে নতুন ইউজারের নাম demo | |
adduser demo | |
3. নতুন ইউজারকে root ইউজারের সমতুল্য অধিকার দিতে তাকে sudo গ্রুপে যুক্ত করুন | |
gpasswd -a demo sudo | |
4. পাসওয়ার্ডের পরিবর্তে পাবলিক কি দিয়ে অথেনটিকেশন এর ব্যবস্থা | |
আপনার লোকাল মেশিনে এক জোড়া কি তৈরি করতে কমান্ড দিন (~/.ssh ডিরেক্টরির মধ্যে তৈরি করা ভালো) | |
ssh-keygen | |
পাবলিক কি এর কন্টেন্টকে রিমোট সার্ভারে কপি করতে প্রথম এর কন্টেন্ট প্রিন্ট করতে কমান্ড দিন | |
cat ~/.ssh/id_rsa.pub | |
এরপর স্বাভাবিকভাবে পুরো আউটপুট সিলেক্ট করে কপি করুন | |
সার্ভারে root ইউজার হিসেবে লগডইন থাকা অবস্থায় নিচের কমান্ড দিয়ে নতুন ইউজার হিসেবে লগইন করুন | |
1 | |
su - demo | |
এ অবস্থায় আপনি demo ইউজারের home ডিরেক্টরিতে থাকবেন | |
demo ইউজারের home ডিরেক্টরিতে .ssh নামের একটি ডিরেক্টরি তৈরি করতে এবং সেটার যথাযথ পারমিশন সেট করতে নিচের দুটো কমান্ড পর পর দিন: | |
mkdir .ssh | |
chmod 700 .ssh | |
ওই ডিরেক্টরির মধ্যে authorized_keys নামের ফাইল তৈরি/এডিট করুন | |
vi .ssh/authorized_keys | |
এবার লোকাল মেশিনের পাবলিক কি এর কপি করা ভ্যালু এখানে পেস্ট করে ফাইলটি সেভ করুন | |
নতুন তৈরি হওয়া authorized_keys ফাইলের যথাযথ পারমিশন সেট করুন | |
chmod 600 .ssh/authorized_keys | |
এবার নিচের কমান্ড দিয়ে demo ইউজার থেকে লগআউট করে root ইউজারে সুইচ ব্যাক করুন: | |
exit | |
5. SSH কনফিগার করে root লগইন ডিস্যাবল করা | |
কফিগারেশন ফাইলটি ওপেন করার জন্য কমান্ড দিনঃ | |
vi /etc/ssh/sshd_config | |
নিচের লাইনটি খুঁজে বের করে এর ভ্যালু হিসেবে no সেট করে দিনঃ | |
PermitRootLogin no | |
SSH রিস্টার্ট করুনঃ | |
service ssh restart | |
##nginx, MySQL, PHP ইন্সটলেশন | |
1. ওয়েব সার্ভার হিসেবে Nginx ইন্সটল করা | |
ইন্সটলেশনঃ | |
sudo apt-get update | |
sudo apt-get install nginx | |
ইন্সটলেশন টেস্ট করতে নিচের ইউআরএল ব্রাউজ করুনঃ | |
http://server_domain_name_or_IP | |
2. DBMS হিসেবে MySQL ইন্সটল করা | |
ইন্সটলেশনঃ | |
sudo apt-get install mysql-server php5-mysql | |
MySQL এর প্রয়োজনীয় ডিরেক্টরি স্ট্রাকচার তৈরিঃ | |
sudo mysql_install_db | |
একটি সাধারণ সিকিউরিটি স্ক্রিপ্ট রান করে কিছু ডিফল্ট এবং ইন্সিকিউরড সেটিং চেক/পরিবর্তন করাঃ | |
sudo mysql_secure_installation | |
3. fpm টুলস | |
php5-fpm, যার পূর্ণ নাম “fastCGI process manager” এর ইন্সটলেশনঃ | |
sudo apt-get install php5-fpm | |
PHP প্রসেসর এর ব্যাসিক কনফিগারেশনঃ | |
কফিগারেশন ফাইল ওপেন করুনঃ | |
sudo nano /etc/php5/fpm/php.ini | |
নিচের লাইনে শূন্য সেট করে পরিবর্তন আনুনঃ | |
cgi.fix_pathinfo=0 | |
php5-fpm কে রিস্টার্ট করুনঃ | |
sudo service php5-fpm restart | |
4. PHP প্রসেসরকে ব্যাবহারের জন্য Nginx এর ব্যাসিক কনফিগারেশন | |
Nginx এর ডিফল্ট সার্ভার ব্লক কনফিগারেশন ফাইল ওপেন করুনঃ | |
sudo nano /etc/nginx/sites-available/default | |
যথাযথ এবং সাধারণ কিছু পরিবর্তন শেষে ফাইলটি নিচের মত হওয়া বাঞ্ছনীয়ঃ | |
server { | |
listen 80 default_server; | |
listen [::]:80 default_server ipv6only=on; | |
root /usr/share/nginx/html; | |
index index.php index.html index.htm; | |
server_name server_domain_name_or_IP; | |
location / { | |
try_files $uri $uri/ =404; | |
} | |
error_page 404 /404.html; | |
error_page 500 502 503 504 /50x.html; | |
location = /50x.html { | |
root /usr/share/nginx/html; | |
} | |
location ~ \.php$ { | |
try_files $uri =404; | |
fastcgi_split_path_info ^(.+\.php)(/.+)$; | |
fastcgi_pass unix:/var/run/php5-fpm.sock; | |
fastcgi_index index.php; | |
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | |
include fastcgi_params; | |
} | |
} | |
Nginx ওয়েব সার্ভারকে রিস্টার্ট করুনঃ | |
sudo service nginx restart | |
5. একটি PHP ফাইল দিয়ে সেটআপ টেস্ট করা | |
Nginx এর ডকুমেন্ট রুটে info.php নামের একটি নতুন ফাইল তৈরি করুনঃ | |
sudo nano /usr/share/nginx/html/info.php | |
ওই নতুন ফাইলের কন্টেন্ট/কোড হিসেবে নিচের ব্লক পেস্ট করুনঃ | |
<?php | |
phpinfo(); | |
?> | |
এবার ব্রাইজারে নিচের অ্যাড্রেস ব্রাউজ করুনঃ | |
http://server_domain_name_or_IP/info.php | |
যদি আপনি উপরের স্টেপে বলা অ্যাড্রেস এ গিয়ে পিএইচপি এর কনফিগারেশন সম্পর্কিত (এই সার্ভার মোতাবেক) একটি ওয়েব পেজ দেখতে পান তাহলে ধরে নেয়া যায় সব কিছু ঠিক ঠাক মতই হয়েছে। এখনকার মত info.php ফাইলকে রিমুভ করুনঃ | |
sudo rm /usr/share/nginx/html/info.php | |
##Nginx সার্ভার ব্লক (ভার্চুয়াল হোস্ট) সেটআপ | |
1. একাধিক সাইটের জন্য প্রয়োজনীয় ডকুমেন্ট ডিরেক্টরি তৈরি করা | |
সাধারণভাবে Ubuntu 14.04 এ ইন্সটল হওয়া Nginx এর একটি ডিফল্ট সার্ভার ব্লক এনাবেল থাকে। এটার কনফিগারেশনে /usr/share/nginx/html ডিরেক্টরি থেকে ডকুমেন্ট ডেলিভারির কথা বলা থাকে। আমরা এই লোকেশন ব্যবহার না করে বরং /var/www ডিরেক্টরিকে ব্যবহার করবো আমাদের একাধিক সাইটের কন্টেন্ট রাখার জন্য. | |
নিচের মত করে দুটো ডিরেক্টরি তৈরি করুনঃ | |
sudo mkdir -p /var/www/example.com/html | |
sudo mkdir -p /var/www/test.com/html | |
অ্যাক্সেস পারমিশন ঠিক করে সাধারণ ইউজারকে দিয়ে দিনঃ | |
sudo chown -R $USER:$USER /var/www/example.com/html | |
sudo chown -R $USER:$USER /var/www/test.com/html | |
ওয়েব রুট ডিরেক্টরির পারমিশন নিচের মত করে সেট করুনঃ | |
sudo chmod -R 755 /var/www | |
2. উদাহরণ হিসেবে প্রত্যেকটি সাইটের জন্য একটি করে ওয়েব পেজ তৈরি | |
প্রথম সাইটের জন্য একটি index.html তৈরি করুনঃ | |
ফাইল তৈরি করুনঃ | |
nano /var/www/example.com/html/index.html | |
ফাইলের কন্টেন্ট হিসেবে নিচের কোড ব্যবহার করতে পারেনঃ | |
<html> | |
<head> | |
<title>Welcome to Example.com!</title> | |
</head> | |
<body> | |
<h1>Success! The example.com server block is working!</h1> | |
</body> | |
</html> | |
দ্বিতীয় সাইটের জন্যও আগের মতই একটি সাধারণ পেজ হলেই চলবে। আর তাই আগের ফাইলকে কপি করে দ্বিতীয় সাইটের জন্য ঠিক করা ডকুমেন্ট রুটে রাখুন | |
আগের ফাইলকে কপি করুনঃ | |
cp /var/www/example.com/html/index.html /var/www/test.com/html/ | |
নতুন ফাইলকে একটু মডিফাই করে পরিবর্তন আনুন যাতে চিন্তে সুবিধা হয়ঃ | |
nano /var/www/test.com/html/index.html | |
নিচের মত কন্টেন্ট ব্যবহার করতে পারেনঃ | |
<html> | |
<head> | |
<title>Welcome to Test.com!</title> | |
</head> | |
<body> | |
<h1>Success! The test.com server block is working!</h1> | |
</body> | |
</html> | |
3. প্রত্যেক ডোমেইনের জন্য Nginx এ সার্ভার ব্লক তৈরি | |
প্রথম সাইটের জন্য প্রথম সার্ভার ব্লক তৈরি করতে ডিফল্ট ফাইলটিকেই কপি করতে পারেন | |
কপি করুনঃ | |
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com | |
নতুন ফাইলে প্রয়োজনীয় পরিবর্তন আনতে নিচের মত কমান্ড দিনঃ | |
sudo nano /etc/nginx/sites-available/example.com | |
পরিবর্তন আনা শেষে ফাইলের কন্টেন্ট নিচের মত করে নিনঃ | |
server { | |
listen 80 default_server; | |
listen [::]:80 default_server ipv6only=on; | |
root /var/www/example.com/html; | |
index index.html index.htm; | |
server_name example.com www.example.com; | |
location / { | |
try_files $uri $uri/ =404; | |
} | |
} | |
দ্বিতীয় সাইটের জন্য দ্বিতীয় সার্ভার ব্লক তৈরি | |
কাজের সুবিধার জন্য প্রথম সার্ভার ব্লক ফাইলকেই কপি করুনঃ | |
sudo cp /etc/nginx/sites-available/example.com /etc/nginx/sites-available/test.com | |
নতুন ফাইলে প্রয়োজনীয় পরিবর্তন আনতে নিচের মত কমান্ড দিনঃ | |
sudo nano /etc/nginx/sites-available/test.com | |
এই ফাইলের listen ডিরেক্টীভের দিকে একটু মনোযোগ দিতে হবে। যদি প্রথম ফাইলে default_server অপশন এনাবেল থাকে, তাহলে এই ফাইলে সেটি থাকা চলবে না। উপরন্তু এই ফাইলে ipv6only=on কেও রাখা যাবে না। | |
অর্থাৎ প্রয়োজনীয় পরিবর্তন শেষে নিচের মত হয়েছে কিনা লক্ষ্য করুনঃ | |
server { | |
listen 80; | |
listen [::]:80; | |
root /var/www/test.com/html; | |
index index.html index.htm; | |
server_name test.com www.test.com; | |
location / { | |
try_files $uri $uri/ =404; | |
} | |
} | |
4. সার্ভার ব্লক এনাবেল এবং সার্ভার রিস্টার্ট | |
নতুন তৈরি হওয়া দুটি সার্ভার ব্লককে এনাবেল করতে এগুলোর সিম্বোলিক লিঙ্ক তৈরি করে sites-enabled ডিরেক্টরিতে রাখুনঃ | |
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ | |
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/ | |
আগের জমা থাকা ডিফল্ট সার্ভার ব্লককে ডিজ্যাবল রাখতে সেই ফাইলকে শুধুমাত্র sites-enabled ডিরেক্টরি থেকে রিমুভ করুনঃ | |
sudo rm /etc/nginx/sites-enabled/default | |
আবার Nginx কনফিগারেশন ফাইলকে আপডেট করুন | |
ফাইল ওপেন করুনঃ | |
sudo nano /etc/nginx/nginx.conf | |
নিচের লাইনকে খুঁজে বের করে সেটিকে আনকমেন্ট করুন যাতে স্টেটমেন্টটি একটিভ থাকেঃ | |
server_names_hash_bucket_size 64; | |
Nginx রিস্টার্ট করুনঃ | |
sudo service nginx restart | |
5. ফলাফল টেস্ট করা | |
সার্ভার ব্লক ঠিক ঠাক কাজ করছে কিনা তা চেক করতে নিচের দুটো সাইটের অ্যাড্রেস ভিজিট করুনঃ | |
http://example.com | |
http://test.com | |
@Credit "Nuhil Mehdy" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment