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

در این مقاله سعی می کنیم به صورت مرحله به مرحله دستورات مربوط به میزبانی چندین سایت بر روی سرور مجازی اوبونتو یا سنت او اس را با هم مرور کنیم. میزبانی چندین دامنه یا زیردامنه در سرور مجازی به کمک ویرچوال هاست در آپاچی یا بلوک سرور در NGINX بسیار ساده و اسان است. پس همراه وب ایده باشید تا این فرآیند را با هم مرور کنیم.
ویرچوال هاست(Virtual Hosts) آپاچی:
ویرچوال هاست در آپاچی به کاربران اجازه می دهد سایت های متعددی را بر روی یک آی پی آدرس میزبانی کنند و تنظیمات خوبی را برای هر سایت فراهم آورند. برای اینکه بتوانید ویرچوال هاست آپاچی را برای میزبانی دامنه یا زیر دامنه های متعدد پیکربندی کنید از طریق SSH به سرور مجازی وصل شوید و آپاچی را نصب نمایید.
بر روی سرور مجازی اوبونتو یا دبیان می توانید از دستور زیر استفاده کنید:
1 2 3 | apt-get update apt-get install apache2 |
بر روی سرور سنت او اس یا فدورا از دستور زیر بهره ببرید:
1 2 3 4 5 | yum update yum install httpd |
بک آپی از پیکربندی های آپاچی تهیه کنید و سپس دستوردهنده ویرچوال هاست را برای سایت تنظیم و راه اندازی نمایید:
بر روی اوبونتو یا دبیان:
فایل پیکربندی اصلی آپاچی(etc/apache2/apache2.conf) را ویرایش کنید و خط زیر را پیدا کنید و uncomment نمایید.
1 2 3 | vi /etc/apache2/apache2.conf IncludeOptional sites-enabled/*.conf |
سنت او اس یا فدورا:
فایل پیکربندی اصلی آپاچی(/etc/httpd/conf/httpd.conf) را ویرایش کنید و خط زیر را uncomment نمایید:
1 2 3 | vi /etc/httpd/conf/httpd.conf NameVirtualHost *:80 |
لطفا توجه داشته باشید که دستوردهنده NameVirtualHost در حال حاضر به طور پیش فرض بر روی اوبونتو ۱۶٫۰۴ و سنت او اس ۷ فعال شده است. ویرچوال هاست را در آپاچی برای هر دامنه یا زیردامنه ایجاد کنید. به عنوان مثال فرض کنید می خواهیم ویرچوال هاستی برای domain1.com و domain2.com ایجاد نماییم.
در اوبونتو یا دبیان:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | vi /etc/apache2/sites-available/domain1.conf <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 را در آپاچی به کمک دستور زیر فعال کنید:
1 2 3 | 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 برای فعالسازی این پیکربندی ها در آپاچی استفاده کنید:
1 2 3 | sudo a2ensite domain1.conf sudo a2ensite domain2.conf |
برای اینکه تغییرات اعمال شود آپاچی را ریستارت کنید:
1 | service apache2 restart |
سنت او اس یا فدورا:
فایل پیکربندی اصلی در آپاچی (/etc/httpd/conf/httpd.conf) را ویرایش کنید و ویرچوال هاست را در انتها بیفزایید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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> |
برای اینکه تغییرات اعمال شود آپاچی را ریستارت کنید:
1 | service httpd restart |
دایرکتوری های /var/www/html/domain1 و /var/www/html/domain2 را ایجاد کنید و سپس سایت خود را در آن ها آپلود نمایید. همه فایل های سایت باید توسط وب سرور قابل خواندن باشد پس مالکیت درستی را تنظیم کنید.
در اوبونتو یا دبیان:
1 | chown www-data:www-data -R /var/www/html/domain* |
سنت او اس یا فدورا:
1 | chown apache:apache -R /var/www/html/domain* |
بلوک سرور NGINX:
برای اینکه بلوک سرور در NGINX را به گونه ای تنظیم کنیم که بتواند دامنه یا زیر دامنه متعددی را میزبانی کند، از طریق SSH به سرور مجازی خود متصل شود:
در اوبونتو یا دبیان از دستور زیر استفاده کنید:
1 2 3 | apt-get update apt-get install nginx |
در سنت او اس یا فدورا:
1 2 3 | yum update yum install nginx |
از فایل پیکربندی NGINX بک آپ بگیرید و سپس بلوک سرور را برای اولین سایت ایجاد نمایید:
در اوبونتو یا دبیان:
فایل پیکربندی جدیدی برای اولین دامنه ایجاد کنید:
1 | vi /etc/nginx/sites-available/domain1.conf |
خطوط زیر را به آن اضافه کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 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; } |
سنت او اس یا فدورا:
دستورات زیر را اجرا کنید:
1 2 3 | mkdir /etc/nginx/sites-available mkdir /etc/nginx/sites-enabled |
خطوط زیر را به فایل پیکربندی اصلی NGINX(/etc/nginx/nginx.conf) در انتهای بلوک HTTP اضافه کنید:
1 2 3 | vi /etc/nginx/nginx.conf include /etc/nginx/sites-enabled/*.conf; |
برای اولین سایت فایل پیکربندی جدیدی ایجاد کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | vi /etc/nginx/sites-available/domain1.com 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; } |
پیکربندی domain1.conf در NGINX را به کمک دستور زیر فعال کنید:
1 | sudo ln -s /etc/nginx/sites-available/domain1.com /etc/nginx/sites-enabled/ |
برای اعمال تغییر، NGINX را ریستارت کنید:
1 | service nginx restart |
هر کدام از سایت ها را به دایرکتوری روت مشخص شده در بلوک سرور آپلود نمایید. به عنوان مثال:
1 | mkdir -p /var/www/html/domain1 |
دسترسی و مالکیت درستی برای فایل های سایت ایجاد کنید.
1 | chown -R www-data:www-data /var/www/html/domain1 |
خوب کار ما تمام شده است. شما می توانید همین فرآیند را برای سایت های دیگر تکرار کنید. فقط به خاطر داشته باشید برای هر دامنه یا زیردامنه ای که می خواهید بر روی سرور میزبانی کنید باید یک رکورد ایجاد کنید که به آی پی آدرس سرور اشاره دارد و بعد از اینکه تغییرات DNS به طور کامل در طول اینترنت پخش شد، بازدید کننده سایت باید بتواند از طریق مرورگر به سایت هایتان دسترسی داشته باشد.