Turn on Apache
- The main HTML directory for your Web server is /Library/WebServer/Documents, which is defined in the Apache-configuration file ( /etc/httpd/httpd.conf ) by the DocumentRoot directive. Mac OS X automatically creates a separate Apache-configuration file for each user you create, through the Accounts pane in System Preferences.
- Here is my definitive guide to getting a local web server running on macOS 10.15 “Catalina”. This is meant to be a development platform so that you can build and test your sites locally, then deploy to an internet server. This User Tip only contains instructions for configuring the Apache server, PHP module, and Perl module.
- Open Terminal by clicking on the magnifying glass at the top right corner of your screen and searching for Terminal
- Type
sudo apachectl start
and press enter - Open Safari (or your browser of choice), type localhost in the address bar, and press enter
Can’t believe it’s that easy? It is! You should now see It works! in the browser.
Turn on PHP
Mac already comes with PHP, so you don’t need to install it from PHP.net. Before High Sierra (version 10.13), Mac came with PHP 5 installed. This caused users to get annoyed because it didn’t come with PHP 7, so you’d have to go through extra work to upgrade from PHP 5 to PHP 7. Thankfully High Sierra already comes with PHP 7.1!!!
An Apache 2.2 web server is already installed on the Mac OS X, but by default not enabled. To determine which version is installed, open the Terminal application and type: httpd -v You should see. This command killed Apache server that was pre-installed on MAC OS X. Improve this answer. Follow edited May 29 '16 at 15:57. Mac Apache web server won't start anymore and can't find any web directories. XAMPP on mac os - Apache won't start.
- Open Terminal and type
sudo nano /etc/apache2/httpd.conf
and press enter - Press Ctrl+W which will bring up a search
- Search for php and press enter. You’ll see the following:
- Delete the # from
#LoadModule php7_module libexec/apache2/libphp7.so
- Press Ctrl+O followed by Enter to save the change you just made
- Press Ctrl+X to exit nano
- Type
sudo apachectl restart
and press enter

You just turned PHP 7 on. Great work so far!
Create Sites Folder
- Click on Finder at the bottom left corner of your screen and click on Go > Home the top navigation bar. This will take you to your home directory, which will also be whatever your computer is named; in this case it's david.
- Create a new folder and name it Sites (The Safari icon shown below gets added automatically to the Sites folder as shown below)
- Open your favorite text editor and create a file called index.php with the following code:
- Save index.php in the Sites folder you created
- Go back to Terminal and enter
sudo nano /etc/apache2/httpd.conf
- Press Ctrl+W to bring up search
- Search for Library and press enter. You should see this:
- Replace both occurrences of
/Library/WebServer/Documents
with/Users/david/Sites
(instead of david use your name which can be found at the top of your terminal next to the home icon) - Press Ctrl+O followed by Enter to save these changes
- Press Ctrl+X to exit nano
- Type
sudo apachectl restart
and press enter
Go back to Safari and refresh the localhost page and you’ll see Hello From Sites Folder! with PHP info that shows PHP 7 is being used.
Install MySQL
- Go to https://dev.mysql.com/downloads/mysql
- Scroll down until you see three download buttons and click on the one next to DMG Archive
- Scroll down and click No thanks, just start my download
- Click on the downloaded file, double click the pkg file, and go through the installation which should look like this:
- Once you get to the end of the installation, you’ll see a popup that gives you your MySQL username (root) and password (8hxKsiIh?YMt). Your password will be different. Copy the password to text file (or take a screenshot) and press okay. Do this now, as it will be pain to reset the password if you don't know it.
- Press the Apple logo at the top left of your screen and go to System Preferences
- Click on MySQL and you’ll see that it’s turned off
- Press Start MySQL Server to turn it on and you’ll see:
- Go back to Terminal and type
sudo /usr/local/mysql/bin/mysql -u root -p
- When you press enter it will ask you for your Password. This is the password you use when you login to your Mac
- Then it says Enter Password: which is 8hxKsiIh?YMt for me (you should use the password you copied earlier instead of 8hxKsiIh?YMt). You’ll see this screen:
- Type
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
and press enter - Go to https://www.sequelpro.com and download Sequel Pro. This is like phpMyAdmin, but better because it’s a desktop app.
- Go through the installation, open Sequel Pro, and enter 127.0.0.1 for the Host. Enter root for the Username and newpassword for the Password. Press Connect
- Click Choose Database… at the top left followed by Add Database…
- Give it the name mydb and press enter
- Then click the plus sign at the bottom left to create a new table. Name the table mytable and press add
- Click the plus sign right above the word INDEXES and name the field message. Set the type to VARCHAR and give it a length of 200.
- Click on Content at the top.
- Click the plus sign at the bottom (the one to the left of the minus sign)
- Give the new entry an id of 1 and set the message to MySQL works perfectly!
- Open index.php in your Sites folder and change the code to
Obviously this example is immune to SQL injection, since there are no user-inputted values. However, if you don’t understand MySQLi prepared statements as well as you’d like, check out this post for an excellent tutorial on how to prevent SQL injection 😉. There's even a PDO version, if you prefer that more.
- Refresh localhost on Safari and you should see:
Great! You now have MySQL working, so you can use localhost to store information in databases.
Make SEO Friendly URLs Work
Instead of going to localhost/profile.php?user=david, it looks nicer when you can go to localhost/profile/david. Let’s make this work by enabling mod_rewrite so you can use RewriteRules.
- Go to Terminal and type
sudo nano /etc/apache2/httpd.conf
followed by pressing enter - Press Ctrl+W, type rewrite, and press enter
- Remove the # in
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
- Press Ctrl+O followed by Enter to save
- Press Ctrl+X to exit nano
- Type
sudo apachectl restart
Now you can use friendly URLs when you develop using localhost.
Apache Web Server Stopped Xampp Mac
Make .htaccess Work

This isn't necessary to make vanity URLs work, but I personally prefer using an .htaccess file, as it allows me version control it.
- Go to Terminal and type
sudo nano /etc/apache2/httpd.conf
followed by pressing enter - Press Ctrl+W, type
AllowOverride controls
, and press enter - Change
AllowOverride None
toAllowOverride All
- Press Ctrl+O followed by Enter to save
- Press Ctrl+X to exit nano
- Type
sudo apachectl restart
Now you can add a .htaccess file in the Sites folder and it will work well.
Turn On SSL/HTTPS
Instead of accessing your website through localhost, you might want to access your website by going to https://localhost. If you turn on SSL, you’ll see a padlock next to localhost in the URL bar.
- Go to Terminal and type
sudo nano /etc/apache2/httpd.conf
followed by pressing enter - Press Ctrl+W, type socache_shmcb_module, and press enter
- Delete the # from
#LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
- Press Ctrl+W, type mod_ssl, and press enter
- Delete the # from
#LoadModule ssl_module libexec/apache2/mod_ssl.so
- Press Ctrl+W, type httpd-ssl, and press enter
- Delete the # from
#Include /private/etc/apache2/extra/httpd-ssl.conf
- Press Ctrl+O followed by Enter to save
- Press Ctrl+X to exit nano
- Type
sudo nano /etc/apache2/extra/httpd-ssl.conf
and press enter - Press Ctrl+W, type ServerName, and press enter
- Replace www.example.com:443 with localhost
- Right above you’ll see
/Library/WebServer/Documents
. Replace that with/Users/david/Sites
. (Use your name instead of david just like you did earlier) - Right underneath
<VirtualHost_default_:443>
add (but make sure to replace david with your name):
- Your terminal should now look like this:
- Press Ctrl+O followed by Enter to save
- Press Ctrl+X to exit nano
- Type
sudo nano /etc/ssl/openssl.cnf
and press enter - At the bottom of openssl.cnf add this:
- Your terminal should look like this:
- Press Ctrl+O followed by Enter to save
- Press Ctrl+X to exit nano
- Type
and press enter. (You can use your information instead, but don’t change localhost)
- Type
and press enter
- Type
sudo apachectl
restart - Now go to https://localhost in your browser, and you’ll see a padlock next to the url which means you’re done setting up SSL!
Apache Web Server Macos Catalina
As always, if you have any questions please leave them in the comments, and we’ll do our best to help you.
Matt Cone April 26, 2007 TutorialsMacDeveloper
Mac OS X is built on Darwin – a Unix-like, open source operating system developed by Apple and built on FreeBSD. This means that Mac users have access to free built-in server applications, like the Apache web server. With Apache and the DynDNS service, you can turn your Mac into a powerful web server. Anyone will be able to access the website stored on your Mac!
The best part is that you can host a website on your Mac for free. There are no hosting fees to pay, and your website will be available any time your Mac is turned on and connected to the Internet. We’ll show you how to do it!
Turn on Personal Web Sharing
The first step to web-serving nirvana is turning on your Mac’s web serving application. Apple hid the Apache web server in an inconspicuous place in Mac OS X, and they called it Personal Web Sharing. But make no mistake about it – this little service included with every Mac is powered by some serious software. Apache powers the Internet, and now it’s going to power the website hosted on your Mac.
Here’s how to turn it on:
From the Apple menu, select System Preferences.
Click Sharing, and then click the Services tab.
Select Personal Web Sharing, and then click the Start button.
Personal Web Sharing will turn on. (This could take a minute or two.) After it turns on, note your computer’s IP address and URL at the bottom of the Sharing Preferences window. You’ll need this later when you test your website.
Now that your Mac is accessible to anyone on the internet – including hackers and other evil-doers – you’re going to need to protect it. Click the Firewall tab and make sure your Mac’s firewall is turned on. Also make sure that the checkbox next to Personal Web Sharing is selected. This will allow people to access your website through your Mac’s firewall.
Remember those IP addresses and URLs we asked you to save? Type those into your web browser to test your web server. (You can also type “localhost” – this tells your Mac to look for its own website.) If your web server is working, you’ll see one of the web pages below.
Close the System Preferences. You’ve successfully turned on your Mac’s web server.
Configure Apache Server On Mac
Create Your Website
Obviously, you’ll need a website to truly use your Mac as a web server. If you already have one stored on your Mac, you can start hosting it immediately. Here’s how:
You have a couple choices when it comes to hosting your website. Every user with an account on your Mac can host his or her own website. There’s also a parent directory for the web server – you’ll probably want to use this directory. (We’ll be working with this parent directory for the duration of this tutorial.) Save your files into one of the following directories:
- Parent Directory: Library > WebServer > Documents
- User Directory: User’s Home Directory > Sites
You will need to add at least one file to one of the directories: index.html. This is your homepage!
Test out your website. Depending on which directory you used, you’ll need to modify and use one of the following URLs to see your website:
- Parent Directory:
http://youripaddresshere/
(orhttp://localhost/
) - User Directory:
http://youripaddresshere/~usernameWhen
you’re satisfied with your website, you’re finished.
- Parent Directory:
Make Your Website Accessible to the World
Now your Mac is hosting your website, but if you’re on a local network, it’s still inaccessible to the rest of the world. The same safeguards that prevent weirdoes from accessing your computer also prevent you from sharing your website. Not to worry! There’s a great service called DynDNS that bypasses all of these trivial annoyances and makes your website available to everyone. DynDNS automatically tracks your Mac and maps your IP address to a domain name. That way, your website will always be available, even if you move your Mac to another location and change IP addresses. Here’s how to use DynDNS:
Register for an account on the DynDNS website. It’s free!
Confirm your new DynDNS by clicking on the link they email you. Log in and click the Add Host Services link, and then click the Add Dynamic DNS Host link.
Enter a hostname and select a domain for your website. This third-level domain name is how the world will access your website, so pick carefully! Don’t worry too much about the IP Address right now – DynDNS automatically detects that, and it may or may not be correct. We’ll worry about that later.
Download the DynDNS Updater application. Double-click the application and click Install to install it.
You’ll be prompted for your administrator password. Enter it, and then wait for DynDNS Updater to install. When it’s finished, click OK.
In DynDNS Updater, select Edit Users from the File menu. Enter your username and password. Adding a description is optional. Make sure the Use Secure Connection (SSL) checkbox is selected – you want to protect your password!
In the DynDNS Updater Users window, click the Start Daemon button. If the status of your account says Ok, your website is available at your DynDNS URL. That’s it – you’re finished!
Oh, #$%&!!! (Important Notes on Using DynDNS)
Install Apache Web Server Mac

This whole web server thing with DynDNS is really, really friggin' cool. But before you get carried away with it, you should have a look at these tips and warnings.
- Not Suitable for Production Servers: DynDNS offers a fee-based Recursive DNS service that allows you to map your domain name (i.e.:
macinstruct.com
) to your home computer. This service is not designed for high-traffic websites, and our tutorial presupposes that you will be using DynDNS for small stuff. Please don’t use this as a substitute for a full-fledged web server. - Watch Out for Your ISP: Depending on which company you use for Internet connectivity, hosting a live website can be immediate grounds for suspension or termination of your account. Be sure to carefully read your user agreement before using DynDNS.
- Could be Hazardous to Your Mac’s Health: Using DynDNS does, at the very least, expose your Mac’s IP address. That could be bad news if the wrong people get ahold of it! Plus, running a web server and the always-on DynDNS daemon is processor intensive. Be prepared to take a performance hit. And there’s some more bad news for people with Intel processors: There’s no Universal version of DynDNS Updater.
Subscribe to our email newsletter
Sign up and get Macinstruct's tutorials delivered to your inbox. No spam, promise!
