Правильний спосіб змінити каталог або запустити з декількох каталогів під різним портом для 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