Tutorial Configuring VirtualHosts in XAMPP on Mac
#1
Lightbulb 
Configuring VirtualHosts in XAMPP on Mac


Development locally, so one of the first applications I installed was XAMPP, a cross platform Apache/MySQL/PHP stack. While I know that MAMP is very popular on Mac, I have been using XAMPP for many years so I thought I’d stick with what I know.
Installing XAMPP was a snap, but when I came to create my own Apache VirtualHosts things started getting fiddly. Here are the steps I followed to get everything running smoothly.


What are VirtualHosts?
First, some quick background on what we’re trying to achieve.
VirtualHosts allow Apache to map a hostname to a directory on the filesystem. You can set up as many VirtualHosts as you need, so that each website operates under its own hostname. For example, you might want to map 
Code:
mysite.local
[size=undefined] to [/size]
Code:
/Users/yourusername/mysite

. To test your development site all you would need to do is plug “http://mysite.local” into your browser’s address bar.



Enable VirtualHosts
The first thing you’ll need to do is open the file 
Code:
/Applications/XAMPP/xamppfiles/etc/httpd.conf

 in your favourite text editor. Look for the following lines:

Code:
# Virtual hosts
#Include /Applications/XAMPP/etc/extra/httpd-vhosts.conf

Uncomment the second line by removing the hash (
Code:
#

so that Apache loads your custom VirtualHosts configuration file:

Code:
# Virtual hosts
Include /Applications/XAMPP/etc/extra/httpd-vhosts.conf

Create your VirtualHosts
Open the file 
Code:
/Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.conf
[size=undefined]
.[/size] Towards the bottom of the file you will see some example VirtualHosts, which you should comment out or delete.

At the bottom of the file, add ‘localhost’ as the default named VirtualHost:
Code:
# localhost

   ServerName localhost
   DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs"
   
       Options Indexes FollowSymLinks Includes execCGI
       AllowOverride All
       Require all granted
   

This step is necessary to ensure that http://localhost still points at XAMPP’s 
Code:
htdocs
[size=undefined]
 [/size]directory once we’ve created our custom VirtualHosts. Personally I don’t use the 

Code:
htdocs

 directory a lot, but occasionally it’s useful to have somewhere to perform quick tests.

Now you are ready to create your own VirtualHosts. After the default localhost that you just created, add:
Code:
# My custom host

   ServerName mysite.local
   DocumentRoot "/Users/yourusername/path/to/your/site"
   
       Options Indexes FollowSymLinks Includes ExecCGI
       AllowOverride All
       Require all granted
   
   ErrorLog "logs/mysite.local-error_log"

In the above example you should replace “mysite.local” with your own hostname. This can be anything you wish, but make sure you choose a hostname that won’t conflict with a real domain name. Using a .local extension makes it obvious that the site is hosted locally rather than on a public web server.
The path to your website can point at any folder in your OS X user directory. I store most of my sites inside of Dropbox so that I can access them on both my home and work machines. If your path includes spaces, make sure you enclose it in quotes, like in my example.


Edit your hosts file
Once you’ve saved your 
Code:
httpd.conf
[size=undefined]
 and [/size]

Code:
httpd-vhosts.conf

 files, the next step is to edit your OS X hosts file so it knows how to handle your new 

Code:
ServerName

The hosts file is used by OS X to map hostnames to IP addresses. In this case we want to map your new 

Code:
ServerName

 to the IP address 127.0.0.1, which is your localhost.

Fire up a Terminal instance, and at the prompt type the following command:
Code:
sudo nano /etc/hosts

Enter your OS X password when prompted, and the hosts file will be opened in the nano text editor. You’ll see that the hosts file already contains some default hostname mappings (e.g. “127.0.0.1 localhost”). Use your keyboard’s arrow keys to navigate to the bottom of the file and add your own mapping:

Code:
# XAMPP VirtualHost mappings
127.0.0.1 mysite.local

Save the host file using the key combo 
Code:
control+o
[size=undefined]
,[/size] and pressing return when prompted to choose the filename. Close the file using 

Code:
control+x
[size=undefined]
.[/size]

Restart Apache
So that your changes take effect, restart Apache. This can be done using XAMPP Control, which is found at 
Code:
/Applications/XAMPP/XAMPP Control.app
[size=undefined]
.[/size]

Point your browser at http://mysite.local (or whatever ServerName you chose) and you should see your website. However, there’s a chance that instead you’ll be faced with a…

403 error
Because Apache runs as the ‘nobody’ user by default, it may not have adequate permission to browse your OS X user directory or some of its subdirectories, in which case you’ll see a 403 ‘access forbidden’ error when you try and view your development site. Similarly, you may find that although you can view your dev site, PHP throws errors when you attempt to write files or make directories on the filesystem.
To fix this you can configure Apache to run as your OS X user. Open 

Code:
/Applications/XAMPP/xamppfiles/etc/httpd.conf
[size=undefined]
 [/size]and look for the following lines:

Code:
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User daemon
Group daemon

Change 
Code:
User

 to your OS X username, and save the file:

Code:
User yourusername

Restart Apache and you should now be able to navigate your site without any issues, including manipulating files and folders using PHP.
If you have problems viewing the XAMPP splash pages at 

Code:
http://localhost

 now that Apache is running as your user (e.g. nothing happens when you try to set the language), then you’ll need to give your user read/write privileges on the file 

Code:
/Applications/XAMPP/xamppfiles/htdocs/xampp/lang.tmp
[size=undefined]
. [/size]

Making the change I’ve described above carries certain security risks, and if you choose to run Apache as your OS X user then you’ll need to be quite certain that XAMPP is not accessible from outside your local network. From what I understand, XAMPP’s built in security features ensure that this is the case out-of-the-box, and it is straightforward to beef up security for additional piece of mind.
If you’re not convinced that it’s safe to let Apache run as your OS X user, another option is to change the permissions of your dev directories so that the ‘nobody’ or ‘_www’ user can read/write to them.I suspect that I would quickly tire of setting folder permissions, which is why I have opted to take the path of least resistance!

Conclusion
Hopefully this post helps someone else to get XAMPP up and running on OS X. 

Referencias:
[Image: 51.jpg]
We11World [ Winning Eleven ] , Blog , Archive Forums
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)