سرور مجازیمقالات وب
چگونه سایت های متعددی را بر روی سرور مجازی میزبانی کنیم؟
در این مقاله سعی می کنیم به صورت مرحله به مرحله دستورات مربوط به میزبانی چندین سایت بر روی سرور مجازی اوبونتو یا سنت او اس را با هم مرور کنیم. میزبانی چندین دامنه یا زیردامنه در سرور مجازی به کمک ویرچوال هاست در آپاچی یا بلوک سرور در NGINX بسیار ساده و اسان است. پس همراه وب ایده باشید تا این فرآیند را با هم مرور کنیم.
ویرچوال هاست(Virtual Hosts) آپاچی:
ویرچوال هاست در آپاچی به کاربران اجازه می دهد سایت های متعددی را بر روی یک آی پی آدرس میزبانی کنند و تنظیمات خوبی را برای هر سایت فراهم آورند. برای اینکه بتوانید ویرچوال هاست آپاچی را برای میزبانی دامنه یا زیر دامنه های متعدد پیکربندی کنید از طریق SSH به سرور مجازی وصل شوید و آپاچی را نصب نمایید.
بر روی سرور مجازی اوبونتو یا دبیان می توانید از دستور زیر استفاده کنید:
apt-get update apt-get 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 در حال حاضر به طور پیش فرض بر روی اوبونتو 16.04 و سنت او اس 7 فعال شده است. ویرچوال هاست را در آپاچی برای هر دامنه یا زیردامنه ایجاد کنید. به عنوان مثال فرض کنید می خواهیم ویرچوال هاستی برای domain1.com و domain2.com ایجاد نماییم.
در اوبونتو یا دبیان:
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 را در آپاچی به کمک دستور زیر فعال کنید:
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;
برای اولین سایت فایل پیکربندی جدیدی ایجاد کنید:
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 را به کمک دستور زیر فعال کنید:
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 به طور کامل در طول اینترنت پخش شد، بازدید کننده سایت باید بتواند از طریق مرورگر به سایت هایتان دسترسی داشته باشد.