Декілька сайтів на локальному сервері

Як запустити декілька незалежних сайтів на локальному сервері Linux Mint/Ubuntu, якщо Ви працюєте одночасно з кількома проектами? Традиційно розширений опис та готовий скрипт вкінці.

У попередній статті ми встановлювали на систему Linux Mint (Ubuntu) локальний сервер. Без жодних зусиль таким способом можна створити один сайт, але не більше. Щоб розгорнути на своєму локальному сервері кілька сайтів, потрібно зробити ще декілька речей. Розглянемо їх детально.

Редагуємо хости

У першу чергу заглянемо у файл /etc/hosts – у ньому потрібно знайти стрічку 127.0.0.1 localhost і додати після неї назву свого додатково сайту (чи декількох). Допустимо, Ви хочете додати ще один сайт, доступ до якого буде за адресою http://test. В такому випадку редагуємо вищезгаданий рядок так, щоб він мав отакий вигляд:

127.0.0.1 localhost test

Розташування сайту

Тепер створимо папку для нашого нового сайту. Папку теж назвемо test, щоб не було плутанини:

sudo mkdir /var/www/test

Новій папці бажано змінити права, оскільки дуже часто бувають проблеми із роботою сайтових двигунців, якщо неправильно розподілені права. Тому виставляємо права по правилу “все всім”:

sudo chmod -R 777 /var/www/test

Для швидкого доступу можна створити символічне посилання на дану папку у домашній папці. Це справа особиста, даний крок можна пропустити. Якщо ж ні, то вводимо наступну команду:

suno ln -s /var/www/test ~/test

Файл налаштувань для сайту

Створимо де-небудь у домашній папці файл test.conf із наступним вмістом:

<VirtualHost *:80>
    ServerAlias test www.test
    DocumentRoot /var/www/test
    <Directory var/www/test/>
        AllowOverride All
    </Directory>
</VirtualHost>

Його потрібно скопіювати із правами суперкористувача у папку /etc/apache2/sites-available:

sudo mv ./test.conf /etc/apache2/sites-available

Даний сайт не буде працювати, поки ми його не активуємо:

sudo a2ensite test

Для увімкнення семантичних посилань (friendly URL) активуємо ще модуль mod-rewrite:

sudo a2enmod rewrite

Тепер перезапустимо сервер:

sudo service apache2 restart

Все готово, можете перевірити: сайт, який розміщений у папці /var/www/test, буде доступний у браузері за адресою http://test.

А нижче наведений скрипт, який автоматично створює п’ять сайтів у різних каталогах та виводить посилання на загальну папку із сайтами в домашній папці користувача:

#!/bin/bash

sudo sed -i 's/127.0.0.1 localhost/& test1 test2 test3 test4 test5/' '/etc/hosts'

sudo mkdir /var/www/test1 /var/www/test2 /var/www/test3 /var/www/test4 /var/www/test5

sudo chmod -R 777 /var/www

sudo ln -s /var/www ~/www

touch ./test1.conf ./test2.conf ./test3.conf ./test4.conf ./test5.conf

echo '<VirtualHost *:80>
    ServerAlias test1 www.test1
    DocumentRoot /var/www/test1
    <Directory var/www/test1/>
        AllowOverride All
    </Directory>
</VirtualHost>' > ./test1.conf
echo '<VirtualHost *:80>
    ServerAlias test2 www.test2
    DocumentRoot /var/www/test2
    <Directory var/www/test2/>
        AllowOverride All
    </Directory>
</VirtualHost>' > ./test2.conf
echo '<VirtualHost *:80>
    ServerAlias test3 www.test3
    DocumentRoot /var/www/test3
    <Directory var/www/test3/>
        AllowOverride All
    </Directory>
</VirtualHost>' > ./test3.conf
echo '<VirtualHost *:80>
    ServerAlias test4 www.test4
    DocumentRoot /var/www/test4
    <Directory var/www/test4/>
        AllowOverride All
    </Directory>
</VirtualHost>' > ./test4.conf
echo '<VirtualHost *:80>
    ServerAlias test5 www.test5
    DocumentRoot /var/www/test5
    <Directory var/www/test5/>
        AllowOverride All
    </Directory>
</VirtualHost>' > ./test5.conf

sudo mv ./test1.conf ./test2.conf ./test3.conf ./test4.conf ./test5.conf /etc/apache2/sites-available

sudo a2ensite test1
sudo a2ensite test2
sudo a2ensite test3
sudo a2ensite test4
sudo a2ensite test5

sudo a2enmod rewrite

sudo service apache2 restart

Якщо ви виявили орфографічну помилку, будь ласка, повідомте мені. Виділіть текст із помилкою та натисніть Ctrl+Enter.

19.02.2018 Linux, PHP, HTML, CSS

Прокоментувати