Правильний спосіб змінити каталог або запустити з декількох каталогів під різним портом для apache2 такий:
Для apache2 файли конфігурації знаходяться під /etc/apache2
і не використовують єдиний файл конфігурації, як у старих версіях, але розділяється на більш дрібні конфігураційні файли, /etc/apache2/apache2.conf
будучи основним файлом конфігурації. Для обслуговування файлів з іншого каталогу нам потрібен новий конфіденційний файл virtualhost. Конфігураційні файли virtualhost розташовані в /etc/apache2/sites-available
(не редагуйте файли в межах включених сайтів). Установка apache за замовчуванням використовує файл virtualhost conf 000-default.conf
.
Почніть зі створення нового файла virtualhost, скопіювавши файл за замовчуванням virtualhost, який використовується установкою за замовчуванням apache (той, який працює у localhost на порту 80). Перейдіть у каталог, /etc/apache2/sites-available
а потім зробіть копію sudo cp 000-default.conf example.com.conf
, відредагуйте файл sudo gedit example.com.conf
у:
<VirtualHost *:80>
ServerAdmin example@localhost
DocumentRoot /home/ubuntu/example.com
</VirtualHost>
Для стислості я видалив непересічні рядки з наведеного вище файлу. Ось DocumentRoot
шлях до каталогу, з якого слід подавати файли веб-сайту, такі як index.html
.
Створіть каталог, з якого ви хочете обслуговувати файли, наприклад; mkdir example.com
а також змінити власника та групу за замовчуванням у каталозі, наприклад, якщо ваше ім’я користувача увійшло до ubuntu
дозволу змінити як sudo chown ubuntu:www-data example.com
. Це надає повний доступ користувачеві ubuntu
та дозволяє читати та виконувати доступ до групи www-data
.
Тепер відредагуйте файл apache conf /etc/apache2/apache2.conf
, видавши команду, sudo gedit apache2.conf
знайдіть рядок <Directory /var/www/>
і під тегом </Directory>
, що закривається , додайте нижче:
<Directory /home/ubuntu/example.com>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
Тепер є дві команди для включення або відключення файлів конфігурації virtualhost, які є a2ensite
і a2dissite
відповідно. Оскільки наш example.com.conf
файл використовує той же порт ( 80
), який використовується у файлі конфігурації за замовчуванням ( 000-default.conf
), ми мусимо вимкнути файл конфігурації за замовчуванням, видавши команду sudo a2dissite 000-default.conf
та включивши наш файл virtualhost conf за допомогоюsudo a2ensite example.com.conf
Тепер перезавантажте або перезавантажте сервер командою sudo service apache2 restart
. Тепер апач обслуговує файли з каталогу example.com
на localhost
за замовчуванням порту 80
.
a2ensite
Команда в основному створює символічне посилання на файл конф в директорії сайту з підтримкою
Не редагуйте файли в прямому режимі з увімкненими веб-сайтами (або *-Enabled), як зазначено у цій відповіді https://stackoverflow.com/a/41568701/2532763
Щоб змінити порт і запустити з декількох каталогів на різних портах:
Тепер, якщо вам потрібно запустити каталог на інший порт, змініть номер порту з 80 на 8080, відредагувавши файл virtualhost таким чином:
<VirtualHost *:8080>
ServerAdmin user@localhost
DocumentRoot /home/ubuntu/work
</VirtualHost>
і редагування /etc/apache2/ports.conf
та додавання Listen 8080
трохи нижче рядкаListen 80
Тепер ми можемо включити типовий файл virtualhost conf, який працює на порт 80, оскільки каталог каталог.com використовує порт 8080, як sudo a2ensite 000-default.conf
Тепер перезавантажте або перезавантажте сервер командою sudo service apache2 restart
. Тепер доступ до обох каталогів можна отримати з localhost
таlocalhost:8080