How to create virtual hosts in MAMP?
Asked Answered
I

8

33

I am new to Mac but used Ubuntu for development for a long time. I know how to create virtual hosts in Ubuntu but have no idea about Mac. I have created a hosts entry like below :

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost mysite.loc
255.255.255.255 broadcasthost
::1             localhost

But what to do next?

Interleave answered 7/2, 2016 at 7:45 Comment(1)
Also make sure that port 80 is specified in the /Applications/MAMP/conf/apache/httpd.conf Listen 80 Listen 8888 ```Hominoid
I
80

While googling, I found these steps to easily create virtual hosts on MAMP:

  1. Open your console in mac and edit your hosts file like this

    sudo vim /etc/hosts

This opens a system file that contains the following line:

127.0.0.1    localhost

add your desired host name after local host:

127.0.0.1    localhost mysite.loc

press ESC, then :wq! to overwrite and close the file.

  1. Now go to your MAMP directory and open apache config file located at /Applications/MAMP/conf/apache/httpd.conf in any text editor and locate the following lines:
# Virtual Hosts
# Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

Remove the hash (pound) sign from the beginning of the line that begins with Include

# Virtual Hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

Save the file, and then open Applications/MAMP/conf/apache/extra/httpd-vhosts.conf. This is where you define the virtual hosts.

  1. At the bottom of the page are two examples of how to define virtual hosts in Apache. They look like this:
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/Applications/MAMP/Library/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/Applications/MAMP/Library/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>

Edit both examples. Virtual hosts override the existing localhost, so the first one needs to re-establish localhost. Edit the second one for the virtual host you want to add. Only the DocumentRoot and ServerName directives are required. To add a virtual host for mysite, the edited definitions should look like this:

<VirtualHost *:80>
    DocumentRoot /Applications/MAMP/htdocs
    ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/username/Sites/mysite"
    ServerName mysite.loc
</VirtualHost>

This assumes that you want to locate the files for mysite in your Sites folder. Replace "username" in the second definition with your own Mac username. If you want to store the files in a different location, adjust the value of DocumentRoot accordingly.

If you want to create more than one virtual host, copy one of the definitions, and edit it accordingly.

Save all the files you have edited, and restart the servers in the MAMP control panel. You should now be able to access the virtual host with the following URL: http://mysite.loc/.

Enjoy..!!

Interleave answered 7/2, 2016 at 7:45 Comment(6)
For me it just says "It works" and nothing else shows up. Why wouldn't it reference the correct folder now? :oHydrometer
On the general configuration of MAMP , Apache port should be set to 80, to make this configuration worksTonatonal
Worked for me. Only thing is that while accessing virtual host, please do not forget to mention port. E.g. if your site name is myproj then, access this by myproj:8888 where, 8888 is the port number.Unsubstantial
@Hydrometer append :8888 after your url will do.Dupery
@Ritesh, could you please take a look my question? https://mcmap.net/q/452327/-virtual-host-with-mamp I have a problem when I creating with Vhost.Hahnemann
For people who are searching for Drupal 8 related changes while creating virtual host, you can refer this: https://mcmap.net/q/452327/-virtual-host-with-mampSturm
I
19
  1. Allow virtual hosts

    Go to Applications > MAMP > conf > apache > httpd.conf

    Find this line:

    # Virtual hosts
    #Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
    

    Uncomment the code by removing the hash symbol.

    # Virtual hosts
    Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
    
  2. Allow SymLink Override

    Find this line in that same httpd.conf file.

    <Directory />
        Options Indexes FollowSymLinks
        AllowOverride None
    </Directory>
    

    change None to All.

    <Directory />
        Options Indexes FollowSymLinks
        AllowOverride All
    </Directory>
    
  3. Add the virtual host path

    Go to Applications > MAMP > conf > apache > extra > httpd-vhosts.conf

    add the virtual host with servname and document root like the below code

    <VirtualHost *:80>
      ServerName example.dev
      DocumentRoot "/path/to/directory"
    </VirtualHost>
    
  4. Allow your computer to recognize your local domain

    Open terminal and type

    sudo pico /etc/hosts
    

    then add your domain

    127.0.0.1 example.dev
    
  5. Restart your server.

    If the url is showing error in chrome try safari

Innovate answered 28/12, 2018 at 21:12 Comment(1)
Great tip about allowing SymLink. It helped me after wasting a lot of time figuring what's wrong.Sterilization
W
4

In my config in MAMP, only the first virtual host was responding.
After hours of search I founded the instruction for solving the problem (before listing virtual hosts definitions) :

NameVirtualHost *:80

Now, my 3 virtual hosts are working !

Woodrum answered 8/1, 2017 at 18:31 Comment(3)
Worked for me. Only thing is that while accessing virtual host, please do not forget to mention port. E.g. if your site name is myproj then, access this by myproj:8888 where, 8888 is the port number.Unsubstantial
@Andre DLC could you please take a look my question? https://mcmap.net/q/452327/-virtual-host-with-mamp I have a problem when I creating with Vhost.Hahnemann
Yo! bro. You saved my hours of time.Melancholic
L
2

Recently I changed from XAMP to MAMP on MAC. I tried to set up my last virtual hosts, but MAMP's 8888 port number was avoid the regular work.

Finally I found the solution. You could change the Listen port and the ServerName in httpd.conf as you could find in the following post: https://www.taniarascia.com/setting-up-virtual-hosts/

Languedoc answered 26/5, 2018 at 20:46 Comment(0)
C
2

I followed this post, as recommended by szatti1489, and it worked for me: https://www.taniarascia.com/setting-up-virtual-hosts/

A couple of points are worth mentioning though:

  • This line didn't already exist in my httpd.conf file, I had to add it: Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
  • I had to use the .test domain ending, not .dev for my VirtualHost ServerName. The post mentions this, but then continues using.dev. Apparently, Chrome didn't support the .dev domain ending after 2017, although it didn't work in Firefox or Safari for me either.
Canoewood answered 9/6, 2019 at 13:37 Comment(0)
D
1

In my case Document Root set in Virtual Host was not working because of incorrectly set ports.

In your MAMP App go to Preferences => Ports. If it is set to 8888 make sure to set it to 8888 in your /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf file as well

Duad answered 7/8, 2023 at 22:32 Comment(0)
Z
0

Adding to the answer of Ritesh

You probably also want to add a directory configuration in your httpd.conf similar to the one that is already there, but for your the document root of your new server.

For Example:

<Directory "/Users/username/Sites/mysite">
    Options All
    AllowOverride All
    Order allow,deny
    Allow from all
    XSendFilePath "/Users/username/Sites/mysite"
</Directory>
Zephyr answered 26/9, 2018 at 10:34 Comment(0)
D
0

Building off of Srinivasan's answer. This is what I did in order to have 2 virtual hosts set up

  • myapp-local.local:8888/
  • myapp-local2.local:8888/

/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

<VirtualHost *:80>
    DocumentRoot /Applications/MAMP/htdocs
    ServerName localhost
</VirtualHost>
 

<VirtualHost *:8888>
    DocumentRoot /Applications/MAMP/htdocs/my_app
    ServerName myapp-local.local
    <Directory "/Applications/MAMP/htdocs/my_app">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:8888>
    DocumentRoot /Applications/MAMP/htdocs/instance-2/my_app
    ServerName myapp-local2.local
    <Directory "/Applications/MAMP/htdocs/instance-2/my_app">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

sudo vi /etc/hosts

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost myapp-local.local
127.0.0.1   localhost myapp-local2.local
255.255.255.255 broadcasthost
::1             localhost

Drupal specific: sites/default/settings.php

$settings['trusted_host_patterns'] = [
  '^localhost$',
  '^myapp-local.local$'
  '^myapp-local2.local$'
];
*/

restart MAMP server

Dennard answered 23/1, 2023 at 18:6 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.