چگونه سایت های متعددی را بر روی سرور مجازی میزبانی کنیم؟

آبان ۷, ۱۳۹۷

چگونه سایت های متعددی را بر روی سرور مجازی میزبانی کنیم؟

سرور مجازی

در این مقاله, مرحله به مرحله دستورات مربوط به میزبانی چندین سایت  را بر روی سرور مجازی را مرور کنیم.

چگونه سایت های متعددی را بر روی سرور مجازی میزبانی کنیم؟

میزبانی چندین دامنه یا زیردامنه در سرور مجازی به کمک ویرچوال هاست در آپاچی یا بلوک سرور در NGINX بسیار ساده و اسان است.

ویرچوال هاست(Virtual Hosts) آپاچی:

ویرچوال هاست در آپاچی به کاربران اجازه می دهد سایت های متعددی را بر روی یک آی پی آدرس میزبانی کنند.تنظیمات خوبی را برای هر سایت فراهم آورند.

برای اینکه بتوانید آپاچی را برای میزبانی دامنه یا زیر دامنه های متعدد پیکربندی کنید:

از طریق SSH به سرور مجازی وصل شوید  و آپاچی را نصب نمایید.

بر روی سرور مجازی اوبونتو یا دبیان می توانید از دستور زیر استفاده کنید:

ptget update
aptget install apache2

 

بر روی سرور سنت او اس یا فدورا از دستور زیر بهره ببرید:

yum update

yum install httpd

 

بک آپی از پیکربندی های آپاچی تهیه کنید و سپس  دستوردهنده ویرچوال هاست را برای سایت تنظیم و راه اندازی نمایید:

 بر روی اوبونتو یا دبیان:

فایل پیکربندی اصلی آپاچی(etc/apache2/apache2.conf) را ویرایش کنید و خط زیر را پیدا کنید و uncomment نمایید.

vi /etc/apache2/apache2.conf

IncludeOptional sites-enabled/*.conf

سنت او اس یا فدورا:

فایل پیکربندی اصلی آپاچی(/etc/httpd/conf/httpd.conf) را ویرایش کنید و خط زیر را uncomment نمایید:

vi /etc/httpd/conf/httpd.conf

NameVirtualHost *:80

 

لطفا توجه داشته باشید که دستوردهنده NameVirtualHost در حال حاضر به طور پیش فرض بر روی اوبونتو ۱۶٫۰۴ و سنت او اس ۷ فعال شده است. ویرچوال هاست را در آپاچی برای هر دامنه یا زیردامنه ایجاد کنید. به عنوان مثال فرض کنید می خواهیم ویرچوال هاستی برای domain1.com و domain2.com ایجاد نماییم.

در اوبونتو یا دبیان:

<VirtualHost *:80>
DocumentRoot “/var/www/html/domain1”
ServerName domain1.com
ServerAlias www.domain1.com

# enter other directives here

<Directory /var/www/html/domain1/>
Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all

</Directory>
ErrorLog /var/log/apache2/domain1.com-error_log
CustomLog /var/log/apache2/domain2.com-access_log common
</VirtualHost>

vi /etc/apache2/sites-available/domain2.conf

<VirtualHost *:80>
DocumentRoot “/var/www/html/domain2”
ServerName domain2.com
ServerAlias www.domain2.com

# enter other directives here

</VirtualHost>

پیکربندی domain1.conf و domain2.conf را در آپاچی به کمک دستور زیر فعال کنید:

 

ln -s /etc/apache2/sites-available/domain1.conf /etc/apache2/sites-enabled/domain1.conf

ln -s /etc/apache2/sites-available/domain2.conf /etc/apache2/sites-enabled/domain2.conf

 

یا اینکه می توانید از دستور a2ensite برای فعالسازی این پیکربندی ها در آپاچی استفاده کنید:

sudo a2ensite domain1.conf

sudo a2ensite domain2.conf

برای اینکه تغییرات اعمال شود آپاچی را ریستارت کنید:

 

service apache2 restart

سنت او اس یا فدورا:

فایل پیکربندی اصلی در آپاچی (/etc/httpd/conf/httpd.conf) را ویرایش کنید و ویرچوال هاست را در انتها بیفزایید:

 

vi /etc/httpd/conf/httpd.conf

<VirtualHost *:80>
DocumentRoot “/var/www/html/domain1”
ServerName domain1.com
ServerAlias www.domain1.com
# enter other directives here
</VirtualHost>
<VirtualHost *:80>
DocumentRoot “/var/www/html/domain2”
ServerName domain2.com
ServerAlias www.domain2.com
# enter other directives here

</VirtualHost>

برای اینکه تغییرات اعمال شود آپاچی را ریستارت کنید:

service httpd restart
دایرکتوری های /var/www/html/domain1 و /var/www/html/domain2 را ایجاد کنید و سپس سایت خود را در آن ها آپلود نمایید. همه فایل های سایت باید توسط وب سرور قابل خواندن باشد پس مالکیت درستی را تنظیم کنید.

 در اوبونتو یا دبیان:

chown www-data:www-data -R /var/www/html/domain*

سنت او اس یا فدورا:

chown apache:apache -R /var/www/html/domain*

بلوک سرور NGINX:

برای اینکه بلوک سرور در NGINX را به گونه ای تنظیم کنیم که بتواند دامنه یا زیر دامنه متعددی را میزبانی کند، از طریق SSH به سرور مجازی خود متصل شود:

در اوبونتو یا دبیان از دستور زیر استفاده کنید:

apt-get update

apt-get install nginx

در سنت او اس یا فدورا:

yum update

yum install nginx

از فایل پیکربندی NGINX بک آپ بگیرید و سپس بلوک سرور را برای اولین سایت ایجاد نمایید:

 

vi /etc/nginx/sites-available/domain1.conf

 در اوبونتو یا دبیان:

فایل پیکربندی جدیدی برای اولین دامنه ایجاد کنید:

خطوط زیر را به آن اضافه کنید:

server {

listen 80

server_name domain1.com

root /var/www/html/domain1.com

index index.html index.htm index.php;

location / {

try_files $uri $uri/ =404;

:add other directives here

سنت او اس یا فدورا:

دستورات زیر را اجرا کنید:

mkdir /etc/nginx/sites-available

mkdir /etc/nginx/sites-enabled

 

خطوط زیر را به فایل پیکربندی اصلی NGINX(/etc/nginx/nginx.conf) در انتهای بلوک HTTP اضافه کنید:

vi /etc/nginx/nginx.conf

include /etc/nginx/sites-enabled/*.conf

 

برای اولین سایت فایل پیکربندی جدیدی ایجاد کنید:

server {
   : listen    ۸۰
:    server_name  domain1.com
:    root   /var/www/html/domain1.com/
  :  index  index.html index.htm index.php
  } / location
      :  try_files $uri $uri/ =404
{:add other directives here #
پیکربندی domain1.conf در NGINX را به کمک دستور زیر فعال کنید:
sudo ln -s /etc/nginx/sites-available/domain1.com /etc/nginx/sites-enabled
برای اعمال تغییر، NGINX را ریستارت کنید:
service nginx restart
هر کدام از سایت ها را به دایرکتوری روت مشخص شده در بلوک سرور آپلود نمایید. به عنوان مثال:
mkdir p /var/www/html/domain1
دسترسی و مالکیت درستی برای فایل های سایت ایجاد کنید.
chown -R www-data:www-data /var/www/html/domain1
خوب کار ما تمام شده است. شما می توانید همین فرآیند را برای سایت های دیگر تکرار کنید. فقط به خاطر داشته باشید برای هر دامنه یا زیردامنه ای که می خواهید بر روی سرور میزبانی کنید باید یک رکورد ایجاد کنید که به آی پی آدرس سرور اشاره دارد و بعد از اینکه تغییرات DNS به طور کامل در طول اینترنت پخش شد، بازدید کننده سایت باید بتواند از طریق مرورگر به سایت هایتان دسترسی داشته باشد.