Як змінити кореневий каталог сервера apache? [зачинено]


241

Хтось знає, як змінити корінь документа сервера Apache? Я в основному хочу localhostприйти з /users/spencer/projectsкаталогу, а не з каталогу /var/www.

Редагувати

Я в кінцевому підсумку з’ясував це. Деякі запропонували мені змінити httpd.confфайл, але я в кінцевому підсумку знайшов файл /etc/apache2/sites-available/defaultі змінив кореневу директорію з /var/wwwна, /home/myusername/projects_folderі це спрацювало.


Переповнення стека - це сайт для програмування та питань розробки. Це питання видається поза темою, оскільки мова не йде про програмування чи розробку. Дивіться, які теми я можу запитати тут, у довідковому центрі. Можливо, помилка сервера або обмін стеками веб-майстрів буде кращим питанням.
jww

Відповіді:


209

Потрібно змінити DocumentRootналаштування у вашому httpd.confфайлі. Швидше за все, це буде під чимось подібним/etc/apache2/conf/httpd.conf

Скористайтесь улюбленим редактором (рекомендую Vim ) і знайдіть DocumentRootі змініть його /users/spencer/projects. Також погляньте трохи нижче на налаштування, яке виглядає так:

<Directory "/var/www">

Ви також захочете змінити те, що є в котируваннях, у свій новий каталог. Це дає доступ Apache читати з цього каталогу, коли користувач робить запит, який дзвонить йому.

Тепер перезапустіть свою службу apache ( httpd -k restart), і вам слід погодитися.

Редагувати : Конфігураційні файли сайту Apache2 зазвичай зберігаються в /etc/apache2/sites-available/ (Debian, Ubuntu тощо).


6
Я відкрив /etc/apache2/httpd.conf, але файл був порожнім. Я відкриваю це з gedit.
Спенсер Кулі

3
Файл може бути в /etc/httpd/conf/httpd.conf, залежно від вашого смаку Linux.
Кріс Генрі

3
файл httpd.conf порожній, але я знайшов файл у etc / apache2 / sites-available / default і змінив там кореневу директорію. Я повинен був зазначити, що це не на фактичному сервері. Я створюю місцеве середовище розвитку. Не впевнений, чи це має значення
Спенсер Кулі

3
Чи можна було б увімкнути одночасно і / var / www та / home / myusername / projects_folder? І як я повинен налаштувати? Дякую.
Пол Ло

3
"Відповідь" дійсно застаріла. Правильна відповідь згідно з документами Ubuntu 18.x - або змінити кореневий каталог Apache, або перемістити проект у / var / www / html. Щоб змінити кореневий каталог Apache, запустіть: cd / etc / apache2 / sites-available. Потім відкрийте файл 000-default.conf за допомогою команди: nano 000-default.conf. Відредагуйте параметр DocumentRoot: DocumentRoot / шлях / до / мій / проект. (див. askubuntu.com/questions/337874/… )
море26.2

263

Зауважте, що це стосується лише Ubuntu 14.04 LTS та новіших версій.

У моєму Ubuntu 14.04 LTS було встановлено корінь документа /var/www/html. Він був налаштований у наступному файлі:

/etc/apache2/sites-available/000-default.conf

Тому просто зробіть

sudo nano /etc/apache2/sites-available/000-default.conf

і змініть наступний рядок на те, що ви хочете:

DocumentRoot /var/www/html

Також зробіть

sudo nano /etc/apache2/apache2.conf

і знайди це

<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

і перейдіть /var/www/htmlдо вибраного каталогу

і збережіть його.

Після збереження змін просто перезапустіть веб-сервер apache2 і все буде завершено :)

sudo service apache2 restart


Якщо ви віддаєте перевагу графічний текстовий редактор, ви можете просто замінити sudo nanoна gksu gedit.


1
@Paul Lo: Я не пробував цього на Ubuntu 13.10, лише на Ubuntu 14.04; Я майже впевнений, що вперше, коли я встановив apache (який був на Ubuntu 12.04), такого каталогу не було. Так, я думаю, що це доступно лише на Ubuntu 14.04 LTS та новіших версіях. Однак ви можете подивитися на інші відповіді. Оголошення свідчать, що вони допомагали іншим людям, можливо, вони також працювали з Ubuntu 13.10.
mozzbozz

1
Однак спасибі за запитання, я щойно відредагував цю інформацію у відповідь, щоб більше ніхто не потрапляв у пастку, щоб спробувати це зі старими версіями Ubuntu (y)
mozzbozz

3
@mozzbozzm, ти маєш рацію. Тільки 14.04. Дійсно дивний вибір, тепер раптом маючи var/www/htmlяк root за замовчуванням. Вони насправді намагаються витрачати час людей? :)
davidkonrad

4
Я отримую заборонену помилку, You don't have permission to access / on this server.коли натискаю localhost: 80 у своєму браузері. Чи потрібно міняти порт?
Коста

3
@Costa Я вирішив проблему, додавши <Directory path_to_directory> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> в /etc/apache2/apache2.conf
Keenan Gebze

42

Довелося редагувати /etc/apache2/sites-available/default. Лінії такі ж, як згадується RDL.


3
Пропонована редакція @pabloab мала такий вислів: "Apache 2.4 і вище потрібно .confв кінці, а за замовчуванням мати 000-префікс". Результат - /etc/apache2/sites-available/000-default.conf. Я цього не перевіряв, але це може допомогти деяким людям.
Нік

^^ це виправили. Де задокументовано, що мені потрібен .conf в кінці файлів, доступних для моїх сайтів?!? У мене близько 20 віртуальних хостів, які були відключені та в автономному режимі після оновлення, і через пару годин, знайшовши це і перейменувавши наявні на моїх сайтах файли, виправили це для мене.
Джеймс Перих

23

Це для Ubunutu 14.04:

У файлі /etc/apache2/apache2.confвоно повинно бути, як показано нижче, без імені каталогу:

<Directory /home/username>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

а у файл /etc/apache2/sites-available/000-default.confслід вказати ім'я користувальницького каталогу, тобто www:

DocumentRoot /home/username/www

Якщо не так, як вище, це призведе до помилки при завантаженні сервера: Forbidden You don't have permission to access / on this server


Дякую приятелю :) Це працювало для мене в Ubuntu 16.04
Magesh Kumaar

2
Він також працював над Debian 8
androsfat

15

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


4

Я працював з LAMP і щоб змінити папку Root Document, я відредагував файл за замовчуванням, який знаходиться в папці / etc / apache2 / sites-available . Якщо ви хочете зробити те саме, відредагуйте наступним чином

DocumentRoot /home/username/new_root_folder
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/username/new_root_folder>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

Після цього, якщо ви введете localhost у браузері, він завантажить * / home / username / new_root_folder * вміст.


4

Якщо ви не змогли знайти http.confі пішли шляхом Ніка.

Перезапустіть Apache за допомогою sudo service apache2 restart


4

Для apache2 на Linux Mint 17.3 Cinnamon 64-біт працює наступне:

  1. У /etc/apache2/sites-available/відкритому 000-default.confфайлі та змініть корінь документа на абсолютний шлях вашого каталогу.

    sudo vim /etc/apache2/sites-available/000-default.conf

  2. У /etc/apache2/відкритій httpd.conf, і додати <Directory>тег , який посилається свій каталог і містить ті ж параметри , як тег для var/www.

    sudo vim /etc/apache2/apache2.conf

    На моїй машині це виглядало так:


<Directory /home/my_user_name/php/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

Примітка. На першому кроці ви, ймовірно, хочете змінити Document Root у default-ssl.confфайлі також для цілей SSL. Але наскільки я можу сказати, це не потрібно для загального середовища розробки.


2

У версії апач 2.4.18 (Ubuntu).

1. перейдіть до цього файлу /etc/apache2/apache2.conf знайдіть <Directory /var/www/>і замініть у своєму каталозі ......

2.go перейти до /etc/apache2/sites-available/000-default.conf шукати DocumentRoot /var/www/htmlта замінювати у DocumentRoot ....


Я зробив і те, і інше. Це все ще показує Заборонено Ви не маєте дозволу на доступ / на цьому сервері.
Програміст

перевірте дозвіл на папку, якщо він не знаходиться у вашому домашньому каталозі.
habibun

2

Якщо ви використовуєте Ubuntu 16.04. Оновіть 000-default.conf в каталозі / etc / apache2 / sites-available.

тут -> Сервер Admin webmaster @ localhost DocumentRoot / var / www / html / YourFolder


1

Я зробив /var/wwwм'яке посилання на потрібний каталог (напр. /users/username/projects) І після цього все було добре.

Однак, природно, оригінал /var/wwwпотрібно видалити - або перейменувати.


0

Якщо хтось встановив LAMPу /optпапці, то /etc/apache2це не те, що ви шукаєте.

Шукайте httpd.confфайл у /opt/lampp/etc/httpd.conf.

Змініть рядок у цій папці та збережіть її з терміналу.



0

Якщо ви використовуєте Linux Mint (особиста думка, з усіх дистрибутивів, це мене робить щасливим), дотримуйтесь цього:

1- Перейдіть до / etc / apache2 / available-available та відредагуйте 000-default.conf 2- Шукайте DocumentRoot, наприклад DocumentRoot / var / www / html, який ви змінюєте у відповідному каталозі; 3- Відкрийте термінал і введіть: sudo service apache2 restart

ЗДОРОВАНО ----- Я розумію, що в Mint ви йдете на /etc/apache2/apache.conf, замініть / var / www на відповідний шлях, ніж перезавантажте сервер (крок 3).

Це воно.


0

Застосовується до Ubuntu 14.04 та пізніших версій. Не забудьте зробити резервну копію наступних файлів, перш ніж вносити будь-які зміни.

1. Відкрийте /etc/apache2/apache2.confі знайдіть <Directory /var/www/>директиву та замініть шлях на /home/<USERNAME>/public_html. Ви можете використовувати * замість.

2. Відкрийте /etc/apache2/sites-available/000-default.confта замініть DocumentRootзначення властивості з /var/www/htmlна /home/<USERNAME>/public_html. Також <Directory /var/www/html>до <Directory /home/<USERNAME>/public_html.

3.Відкрити /etc/mods-available/php7.1.conf. Знайдіть і коментуйте наступний код

<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>

Не вмикайте php_admin_flag engine OFFпрапор, оскільки причина вказується в коментарі вище коду Директиви. Також версія php може бути 5.0, 7.0 або будь-що, що ви встановили.

Створення public_htmlкаталогу в home/<USERNAME>.

Перезапустіть службу apache, виконавши команду sudo service apache2 restart.

Перевірка, запустивши зразок сценарію на сервері.


-3

Якщо ви (як і я) знаходите цю публікацію через Google:

Я знайшов це на /etc/apache2/sites-available/000-default.conf


4
опишіть, будь ласка, свою детальну відповідь із вбудованим кодом, а не вказуючи на зовнішній файл.
Крістіан МІХОН
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.