Как мне изменить корневой каталог сервера apache? [закрыто]

241

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

редактировать

В итоге я понял это. Некоторые предлагали мне изменить httpd.confфайл, но в итоге я нашел файл /etc/apache2/sites-available/defaultи изменил корневой каталог с /var/wwwна, /home/myusername/projects_folderи это сработало.

Спенсер Кули
источник
Stack Overflow - сайт для вопросов программирования и разработки. Этот вопрос кажется не по теме, потому что он не касается программирования или разработки. Смотрите, какие темы я могу задать здесь, в Справочном центре. Возможно, будет лучше задать вопрос об отказе сервера или обмене стека для веб-мастеров .
18:30

Ответы:

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 и т. Д.).

RDL
источник
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 / path / to / my / project. (см. askubuntu.com/questions/337874/… )
sea26.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.

katze_sonne
источник
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. Они на самом деле пытаются тратить время людей? :)
Давидконрад
4
You don't have permission to access / on this server.Когда я нажимаю localhost: 80 в моем браузере, я получаю запрещенную ошибку . Нужно ли менять порт?
Коста
3
@ Коста Я решил проблему, добавив <Directory path_to_directory> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> в /etc/apache2/apache2.conf
Кинана Гебзе
42

Я должен был редактировать /etc/apache2/sites-available/default. Линии такие же, как указано в RDL.

Ник
источник
3
Предложенное редактирование @pabloab содержало следующее: «Apache 2.4 и выше требует .confв конце и по умолчанию имеет 000-префикс as». Результат есть /etc/apache2/sites-available/000-default.conf. Я не проверял это, но это может помочь некоторым людям.
Ник
^^ это исправлено. Где документально подтверждено, что мне требуется .conf в конце файлов, доступных на моих сайтах?!? У меня есть около 20 виртуальных хостов, которые были отключены и отключены после обновления, и через пару часов обнаружение этого и переименование файлов, доступных на моих сайтах, исправили это для меня.
Джеймс Перих
23

Это для Убунуту 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

androsfat
источник
Спасибо, приятель :) Это сработало для меня в Ubuntu 16.04
Магеш Кумаар
2
Он также работал на Debian 8
androsfat
15

Правильный способ изменить каталог или запустить его из нескольких каталогов под другим портом для apache2:

Для apache2 файлы конфигурации находятся под /etc/apache2и не используют один файл конфигурации, как в более старых версиях, но разбиты на более мелкие файлы конфигурации, /etc/apache2/apache2.confявляясь основным файлом конфигурации. Чтобы обслуживать файлы из другого каталога, нам нужен новый conf-файл virtualhost. Файлы conf виртуального хоста находятся в /etc/apache2/sites-available(не редактируйте файлы на сайтах с поддержкой). Установка Apache по умолчанию использует файл conf Virtualhost000-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введя команду, и включить наш conf файл virtualhost с помощью командыsudo a2ensite example.com.conf

Теперь перезагрузите или перезагрузите сервер с помощью команды sudo service apache2 restart. Теперь apache обслуживает файлы из директории example.comна localhostпорт по умолчанию 80.

Команда в a2ensiteосновном создает символическую ссылку на файл conf в каталоге с поддержкой сайта

Не редактируйте файлы в директориях с поддержкой сайтов (или * -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

Теперь мы можем включить файл conf Virtualhost по умолчанию, который работает на порту 80, так как каталог example.com использует порт 8080, так как sudo a2ensite 000-default.conf

Теперь перезагрузите или перезагрузите сервер с помощью команды sudo service apache2 restart. Теперь к обоим каталогам можно получить доступ localhostиlocalhost:8080

lordvcs
источник
4

Я работал с LAMP и для изменения папки Document Root я отредактировал файл по умолчанию, который находится в папке / 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 * .

Shashidhara
источник
4

Если вы не смогли найти http.conf и пошли по пути Ника.

Перезапустите Apache, используя sudo service apache2 restart

Нитин
источник
4

Для apache2 в Linux Mint 17.3 Cinnamon 64-bit работает следующее:

  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>

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

stackato
источник
2

В apache версии 2.4.18 (Ubuntu).

1. перейдите к этому файлу /etc/apache2/apache2.conf и найдите его <Directory /var/www/>в вашем каталоге ......

2. Перейдите в /etc/apache2/sites-available/000-default.conf DocumentRoot /var/www/htmlи найдите его в DocumentRoot и замените его ....

habibun
источник
Я сделал обе вещи. Он по-прежнему показывает, что запрещено. У вас нет прав доступа к этому серверу.
Программист
проверьте разрешение вашей папки, если оно не находится в вашем домашнем каталоге.
habibun
2

Incase вы используете Ubuntu 16.04. Пожалуйста, обновите 000-default.conf в каталоге / etc / apache2 / sites-available.

здесь -> ServerAdmin для веб-мастеров @ localhost DocumentRoot / var / www / html / YourFolder

Шашанк Саксена
источник
1

Я сделал /var/wwwмягкую ссылку на нужный каталог (например /users/username/projects), и все было хорошо после этого.

Однако, естественно, оригинал /var/wwwнеобходимо удалить или переименовать.

maan81
источник
0

Если кто-то установил LAMPв /optпапке, то/etc/apache2 это не то, что вы ищете.

Ищите httpd.confфайл в/opt/lampp/etc/httpd.conf .

Измените строку в этой папке и сохраните ее из терминала.

Йогеш Гупта
источник
0

Если вы используете Linux Mint (личное мнение, из всех дистрибутивов, который делает меня счастливым), следуйте этому:

1- Перейдите в / etc / apache2 / sites-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.

Проверьте, запустив образец сценария на сервере.

user1184294
источник
-3

Если вы (как и я) нашли это сообщение через Google:

Я нашел его в /etc/apache2/sites-available/000-default.conf

Borkee
источник
4
опишите ваш подробный ответ с помощью встроенного кода, а не указывайте на внешний файл.
Кристиан МИХОН