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

194

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

Изменить

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

Теги:
lamp

14 ответов

160
Лучший ответ

Вам нужно изменить параметр 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.
Показать ещё 9 комментариев
213

Обратите внимание, что это относится только к версиям 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.
  • 0
    На моем Ubuntu 13.10 я не могу найти файлы * .conf в / etc / apache2 / sites-available /, это из-за другой версии?
  • 1
    @Paul Lo: я не пробовал это на Ubuntu 13.10, только на Ubuntu 14.04; Поскольку я почти уверен, что в первый раз, когда я настроил apache (который был на Ubuntu 12.04), такого каталога не было. Так что да, я думаю, что это доступно только на Ubuntu 14.04 LTS и новее. Тем не менее, вы можете посмотреть на другие ответы. Откровения говорят о том, что они помогали другим людям, возможно, они также работают с Ubuntu 13.10.
Показать ещё 11 комментариев
40

Мне пришлось отредактировать /etc/apache2/sites-available/default. Линии те же, что упоминалось в RDL.

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

Это для 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

  • 0
    Спасибо, приятель :) Это сработало для меня в Ubuntu 16.04
  • 2
    Он также работал на Debian 8
4

Для apache2 на Linux Mint 17.3 Корица 64-битная следующие работы:

  • В /etc/apache2/sites-available/ откройте файл 000-default.conf и измените корневой каталог документа на абсолютный путь к вашему каталогу.

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

  • В /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. Но, насколько я могу судить, это не требуется для создания общей среды разработки.

3

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

Для apache2 файлы конфигурации находятся в /etc/apache2 и не используют один файл конфигурации, как в старых версиях, но разделены на более мелкие файлы конфигурации, причем /etc/apache2/apache2.conf является основным конфигурационным файлом. Чтобы обслуживать файлы из другого каталога, нам нужен новый файл confhost. Файлы confhost для виртуального хоста расположены в /etc/apache2/sites-available (не редактируйте файлы в разрешенных сайтах). Установка apache по умолчанию использует файл confhost для conf 000-default.conf.

Начните с создания нового файла виртуального хоста, скопировав файл виртуального хоста по умолчанию, используемый установкой 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>

Я сократил ненужные строки из вышеуказанного файла для краткости.

Создайте каталог, из которого вы хотите обслуживать файлы, например: 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>

Теперь есть две команды для включения или отключения файлов конфигурации виртуального хоста, которые являются a2ensite и a2dissite соответственно. Теперь, поскольку наш файл example.com.conf использует тот же порт (80), который используется конфигурационным файлом по умолчанию (000-default.conf), мы должны отключить файл конфигурации по умолчанию, выпустив команду sudo a2dissite 000-default.conf и включив наш файл confhost virtualhost на sudo a2ensite example.com.conf

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

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

Не редактируйте файлы с поддержкой (или * -enabled) на сайтах, как указано в этом ответе https://stackoverflow.com/questions/21812360/what-is-the-difference-between-sites-enabled-and-sites-available-directory

Чтобы изменить порт и запустить из нескольких каталогов на разных портах:

Теперь, если вам нужно запустить каталог на другом порту, измените номер порта с 80 на 8080, отредактировав файл виртуального хоста следующим образом:

<VirtualHost *:8080>
    ServerAdmin user@localhost
    DocumentRoot /home/ubuntu/work
</VirtualHost>

и редактирование /etc/apache2/ports.conf и добавление Listen 8080 чуть ниже строки Listen 80

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

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

3

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

3

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

Перезапустите Apache с помощью sudo service apache2 restart

1

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

1.go в этот файл /etc/apache 2/apache2.conf найдите <Directory /var/www/> и замените на свой каталог......

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

  • 0
    Я сделал обе вещи. Это все еще показывает Запрещено. У вас нет разрешения на доступ к / на этом сервере.
  • 0
    проверьте разрешение вашей папки, если оно не находится в вашем домашнем каталоге.
1

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

Найдите httpd.conf файл в /opt/lampp/etc/httpd.conf.

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

0

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

1- Перейдите в /etc/apache 2/sites-available и отредактируйте 000-default.conf 2- Поиск DocumentRoot, например DocumentRoot/var/www/html, который вы меняете в соответствующий каталог; 3- Открытый терминал и тип: sudo service apache2 restart

EDITED ----- Я понимаю, что в Mint вы переходите на /etc/apache 2/apache.conf, замените/var/www на ваш соответствующий путь, а затем перезапустите сервер (шаг 3).

Что это.

0

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

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

0

В RedHat 7.0: /etc/httpd/conf/httpd.conf

-3

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

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

  • 3
    пожалуйста, опишите свой подробный ответ с помощью встроенного кода, а не указывайте на внешний файл.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню