Virtual Hosts XAMPP [Linux Ubuntu] not working
I tried to create a virtual host magento.developers.com in Ubuntu 12.04 using XAMPP.
First I have edited the /opt/lampp/etc/extra/httpd-vhosts.conf and added the following lines:
ServerAdmin webmaster@magento.developers.com DocumentRoot "/opt/lampp/htdocs/magento" ServerName magento.developers.com ErrorLog "logs/magento.developers.com-error_log" CustomLog "logs/magento.developers.com-access_log" common
I have restarted XAMPP using the command sudo /opt/lampp/lampp restart and then I have edited
the hosts file and added:
127.0.0.1 magento.developers.com
3 Answers 3
The virtual hosts conf by defualt is disabled in httpd.conf, in order to allow virtual hosts
in XAMPP under Ubuntu you have to uncomment line 480 in httpd.conf :
MAINSTEP: Uncomment line 480 as below:
479. # Virtual hosts 480. Include etc/extra/httpd-vhosts.conf
The httpd.conf file is located under /opt/lampp/etc , to modify it just follow these steps:
1. run sudo gedit /opt/lampp/etc/httpd.conf
2. apply MAINSTEP
@AmitGarg: does your htdocs work after you enable virtual hosts? My projects inside htdocs don’t show up if I enable virtual hosts.. thats wierd :/
@GhazanfarMir My other projects on localhost was not working after creating vartualhost. So I have desabled virtual host.
@AmitGarg: Ok — I have figured out why my virtual hosts weren’t working.. I had missed the entry for default htdocs directory which is
Once I put this entry for htdocs on top of other virtual hosts it started working.. I hope this would be of help
Do not forget to setup correctly your /etc/hosts file (equivalent to DNS entry). When adding vistual hosts, DNS table must be edited by you, then system do not do it automatically!
Step 1: Edit apache configuration
sudo nano /opt/lampp/etc/httpd.conf
and find below the line and uncomment (remove #) and save
Step 2: Edit vhost configuration to Add Virtual Host
sudo nano /opt/lampp/etc/extra/httpd-vhosts.conf
and add below code with your DocumentRoot (/opt/lampp/htdocs/example) and ServerName (URL)(example.local)
Step 3: Edit host file to add your URL (example.local)
and add this line to the bottom with your URL (example.local) and save
sudo /opt/lampp/lampp restart
Httpd vhosts conf xampp linux
Как настроить виртуальный хост — XAMPP + Windows / Ubuntu
Как по мне, работать гораздо удобнее, когда для каждого разрабатываемого сайта создан виртуальный хост. Кратко рассмотрим настройку хостов в XAMPP под Windows и Linux Ubuntu.
Настройка виртуального хоста в Windows
Шаг 1
Если мы создаём первый виртуальный хост, то надо открыть файл httpd.conf (в моём случае путь к нему D:\xampp\apache\conf\httpd.conf ), найти строку
Include conf/extra/httpd-vhosts.conf
и раскомментировать её, (т.е. убрать символ решётки перед строкой). Повторюсь, это действие выполняется однократно, и для настройки последующих виртуальных хостов не потребуется.
Шаг 2
Открываем файл httpd-vhosts.conf , который находится в поддиректории extra (опять-таки, в моём случае путь D:\xampp\apache\conf\extra\httpd-vhosts.conf ) и описываем наш виртуальный хост. Если разрабатываемый сайт будет располагаться в директории xampp/htdocs , то достаточно и минимальных настроек:
DocumentRoot "D:/xampp/htdocs/blog" ServerName blog.local
Если же мы хотим расположить сайт в какой-либо иной директории, то при таких настройках скорее всего получим ошибку 403:
You don’t have permission to access the requested directory. There is either no index document or the directory is read-protected.
Посему, понадобится добавить ещё несколько строк (предположим, что сайт находится на диске D в директории web ):
DocumentRoot "D:/web/blog" ServerName blog.local Require all granted
Директива Require all granted в Apache 2.4 аналогична директиве Allow from all в предыдущих версиях Apache и разрешает доступ к указанной директории.
Есть ещё один важный нюанс. Если мы хотим в имени сайта использовать что-то вроде доменной зоны – в примере выше local – название этой «доменной зоны» не должно совпадать с реально существующими зонами. В противном случае получим ошибку а-ля «Подключение не защищено» и будем долго думать, в чём проблема. Я раньше часто использовал .dev , но сейчас это уже недопустимо.
Шаг 3
Открываем файл C:\Windows\System32\drivers\etc\hosts и вставляем строку:
Перезапускаем XAMPP, вводим в адресной строке браузера blog.local и готово. Случается, браузер воспринимает наш адрес как поисковой запрос. В этому случае просто введём http://blog.local . Для создания других виртуальных хостов надо просто повторить шаги 1 и 2.
Настройка виртуального хоста в Ubuntu 16.04
По большому счёту, мы повторим практически те же шаги, что и для Windows, но есть свои нюансы.
Шаг 1
Открываем терминал и переходим в режим root , т.е. вводим команду:
Шаг 2
Отредактируем файл httpd.conf . Можно использовать любой редактор, я буду пользоваться nano . Выполним в терминале команду:
В файле найдём строку с DocumentRoot и после допишем следующее:
Options Indexes FollowSymLinks ExecCGI Includes AllowOverride All Require all granted
Где YourDirectory – путь к директории, где будут находиться разрабатываемые сайты. Например /home/serhii/web . И снова – этот шаг требуется только при настройке первого виртуального хоста.
Шаг 3
Так же, как и в случае с Windows, опишем виртуальный хост. Открываем нужный файл в nano командой:
nano /opt/lamp/etc/extra/httpd-vhosts.conf
И вставляем следующие строки:
DocumentRoot "/home/serhii/web/blog" ServerName blog.local
Шаг 4
И последним отредактируем файл hosts , для чего выполним команду:
Перезапускаем XAMPP и можно приступать к работе.
P.S. В описисании хоста (шаг 2 для Windows и шаг 3 для Ubuntu) по желанию можно было бы также прописать и другие директивы, такие как псевдоним сервера, путь к логам и т.д., о чём подробнее можно почитать в документации.
ibrahimtuzlak0295 / xampp-virtualhost.md
I’ll go step-by-step on how to create a virtual host in the XAMPP environment. As we know, the default http://localhost points to /opt/lampp/htdocs as the root directory. The desired result is to be able to visit http://examplevhost.local, with the root directory being /opt/lampp/htdocs/examplevhost .
Note: The steps below are done on Ubuntu 16.04, but they should also work on most other Linux distributions (Debian, Mint, Arch).
Note: I’ll assume that XAMPP is installed in /opt/lampp/ . If it’s different on your setup, please read carefully and adjust accordingly.
Enable virtual hosts in apache configuration file
Note: This should be done only once per XAMPP installation. If you want to add another virtual host later you can skip to the next step.
$ sudo gedit /opt/lampp/etc/httpd.conf
# Virtual hosts # Include etc/extra/httpd-vhosts.conf
# Virtual hosts Include etc/extra/httpd-vhosts.conf
$ mkdir /opt/lampp/htdocs/examplevhost $ gedit /opt/lampp/htdocs/examplevhost/index.html
Add the host to /opt/lampp/etc/extra/httpd-vhosts.conf
VirtualHost *:80> DocumentRoot "/opt/lampp/htdocs/examplevhost" ServerName examplevhost.local ErrorLog "logs/examplevhost.local-error_log" CustomLog "logs/examplevhost.local-access_log" common VirtualHost>
Note: You can re-use this snipped for any number of virtual hosts. The directives that need changing are DocumentRoot and ServerName ( ServerName must exist as an entry in /etc/hosts , and DocumentRoot must exist as a directory in /opt/lampp/htdocs/ ) and that’s it to see the site working. However, consider adjusting ErrorLog and CustomLog to find your error and access logs easily.
Note: It’s safe to remove the example virtual hosts that come by default.
$ sudo /opt/lampp/lampp restart
Use this(without comment line):
ServerName examplevhost.local
instead of:
ServerName examplevhost.local # entry in /etc/hosts
if you are getting this error:
AH00526: Syntax error on line 44 of /opt/lampp/etc/extra/httpd-vhosts.conf: ServerName takes one argument, The hostname and port of the server
Use this(without comment line):
ServerName examplevhost.local
instead of:
ServerName examplevhost.local # entry in /etc/hosts
if you are getting this error:
AH00526: Syntax error on line 44 of /opt/lampp/etc/extra/httpd-vhosts.conf: ServerName takes one argument, The hostname and port of the server
I updated the snipped to be without the comment and put the note elsewhere. The syntax error shouldn’t happen anymore.
Thank you!
Access forbidden!
You don’t have permission to access the requested directory. There is either no index document or the directory is read-protected.
If you think this is a server error, please contact the webmaster.
Error 403
localhost
Apache/2.4.41 (Unix) OpenSSL/1.1.1d PHP/7.4.1 mod_perl/2.0.8-dev Perl/v5.16.3
Access forbidden!
You don’t have permission to access the requested directory. There is either no index document or the directory is read-protected.If you think this is a server error, please contact the webmaster.
Error 403
localhost
Apache/2.4.41 (Unix) OpenSSL/1.1.1d PHP/7.4.1 mod_perl/2.0.8-dev Perl/v5.16.3
Please refer to my other Gist regarding htdocs/ permission setting for XAMPP at https://gist.github.com/ibrahimtuzlak0295/5332ff369393bf8f35d2650cdee02fe1
(Note: It’s only meant for development environments, NOT production)
127.0.0.1 localhost 127.0.1.1 tradebook.local
DocumentRoot "/opt/lampp/htdocs" ServerName localhost ErrorLog "logs/localhost-error.log" CustomLog "logs/localhost-access.log" combined
127.0.0.1 localhost 127.0.1.1 tradebook.local
DocumentRoot "/opt/lampp/htdocs" ServerName localhost ErrorLog "logs/localhost-error.log" CustomLog "logs/localhost-access.log" combined
@bravotanmoy looking at the /etc/hosts file, your /opt/lampp/etc/extra/httpd-vhosts.conf would look like this:
VirtualHost *:80> DocumentRoot "/opt/lampp/htdocs" ServerName localhost ErrorLog "logs/localhost-error.log" CustomLog "logs/localhost-access.log" combined VirtualHost> VirtualHost *:80> DocumentRoot "/opt/lampp/htdocs/tradebook" ServerName tradebook.local ErrorLog "logs/tradebook.local-error.log" CustomLog "logs/tradebook.local-access.log" combined VirtualHost>
Assuming that you’ve created the DocumentRoot (and index.html inside) like so: /opt/lampp/htdocs/tradebook/index.html