If you want to run a server on your macOS Catalina, or you recently updated to Catalina, you might need to re-configure your system, follow the below instructions.
Table of Contents
Updates
For macOS Big Sur (11.0.x) setup guide, please check out Setting Up Your Local Web Server on macOS Big Sur 11.0.1 (2020)| MAMP | macOS, Apache, MySQL, PHP
Start the Apache Server
You can start off the built-in Apache server by following the below steps.
Open Terminal from your Application folder or type “Terminal” in the Spotlight Search.
Type sudo apachectl start
and press enter.
Open any of your favorite browser.
Type localhost
or 127.0.0.1
in the address bar
If Apache server is started, you should see the below:
Create Sites
directory
Let’s create a Sites
directory under username
folder (username is your mac login name) This directory is going to be the document root.
1. Go to Mac HDD
> Users
> [your account folder]
2. Create folder with the name Sites
. When the folder is created, it will generate a folder with compass image on the folder.
Create username.conf
file
To be able to recognize the files putting into Sites directory, username.conf needed to be setup. This is going to be your document root.
Type whoami
and press enter. Note down the name. (that is your account name / username)
Create a username.conf file based on the account name showed up when you type whoami
. e.g. If your username is developer
the filename will be developer.conf
.
Type cd /etc/apache2/users
and press enter.
Type ls
and press enter. Check if there is existing username.conf
(username is your account name)
If there is an existing username.conf, make a backup copy by typing sudo cp username.conf username.conf.bakup
.
Type sudo nano username.conf
and press enter. Note: “username” will be your account name. e.g. developer.conf
.
Copy and paste the following configuration.
<Directory "/Users/developer/Sites/">
AllowOverride All
Options Indexes MultiViews FollowSymLinks
Require all granted
</Directory>
Press Control+o
and press enter to save the file.
Press Control+x
to exit the nano editor
Configure the httpd.conf
file
Open Terminal from your Application folder or type “Terminal” in the Spotlight Search.
Type cd /etc/apache2
and press enter.
Type sudo cp httpd.conf httpd.conf.bak
and press enter. (This step is optional if you want to keep the copy of original config file)
Type sudo nano /etc/apache2/httpd.conf
and press enter.
(httpd.conf file will be opened in terminal’s editor. – in this case nano editor)
Press Control+w
and type LoadModule authz_core_module
and press enter. Uncomment the following modules. #
means it is commented out. Remove the #
in front of each module. If you cannot find the module, use the Control+w
and type in the module name you are searching for.
LoadModule authn_core_module libexec/apache2/mod_authn_core.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule include_module libexec/apache2/mod_include.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
Uncomment the following line for the User home directories.
Include /private/etc/apache2/extra/httpd-userdir.conf
Replace the below two lines with your username document root. (You can comment those two lines by putting #
in front of them.
DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
Replace with the following:
Note: USERNAME needs be replaced with your username (e.g. developer)
DocumentRoot "/Users/USERNAME/Sites/"
<Directory "/Users/USERNAME/Sites/">
Press Control+w
and type AllowOverride None
.
Replace AllowOverride None
to AllowOverride All
Your DocumentRoot
configuration in httpd.conf
will look like below:
DocumentRoot "/Users/developer/Sites/"
<Directory "/Users/developer/Sites/">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options FollowSymLinks Multiviews
MultiviewsMatch Any
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride All
#
# Controls who can get stuff from this server.
#
Require all granted
</Directory>
Press Control+o
and press enter to save the file.
Press Control+x
to exit the nano editor.
Configure the httpd-userdir.conf
file
Type cd /etc/apache2/extra
and press enter.
Type sudo cp httpd-userdir.conf httpd-userdir.conf.bakup
and press enter. (This step is optional if you want to keep the copy of original config file)
Type sudo nano httpd-userdir.conf
and press enter.
Uncomment the following line.
Include /private/etc/apache2/users/*.conf
Press Control+o
and press enter to save the file.
Press Control+x
to exit the nano editor.
Type sudo apachectl restart
. To take effect all the changes made in the Apache config file.
Enable the PHP
Mac has built-in PHP. You just need to enable the PHP from the Apache’s config file. Follow the below steps.
1. Open Terminal from your Application folder or type “Terminal” in the Spotlight Search.
2. Type cd /etc/apache2
and press enter.
3. Type sudo nano /etc/apache2/httpd.conf
and press enter.
(httpd.conf file will be opened in terminal’s editor. – in this case nano editor)
4. Press Control+w
to bring up a search option.
5. Search for php
and press enter.
You will see the following:
#
means, the line is commented out.
6. Remove the #
in front of LoadModule php7_module libexec/apache2/libphp7.so
7. Press Control+o
and press enter to save the file.
8. Press Control+x
to exit the nano editor
9. Type sudo apachectl restart
. To take effect all the changes made in the Apache config file.
Create a phpinfo()
page
To try out PHP is working on your system, create a phpinfo() file and load it on the browser.
Open Terminal from your Application folder or type “Terminal” in the Spotlight Search.
Type cd ~/Sites/
and press enter.
Type sudo nano phpinfo.php
and press enter. To create a phpinfo.php file. And it will bring you to nano editor within Terminal.
Put the following code:
<?php phpinfo(); ?>
Press Control+o
and press enter to save the file.
Press Control+x
to exit the nano editor.
Go to browser and type the following in the address bar.
http://localhost/~developer/phpinfo.php
You should see a page below if the PHP module is successfully activated.
Setting up the MySQL Server
Go to https://dev.mysql.com/downloads/mysql/
Download the DMG installer.
Double click the installer and follow the installation steps in the wizard.
Once the installation is complete, you should have the MySQL icon in the System Preferences.
You can stop and start the MySQL server.
References
Thank you to following articles. I used the below articles as a reference.
https://websitebeaver.com/set-up-localhost-on-macos-high-sierra-apache-mysql-and-php-7-with-sslhttps
https://www.dyclassroom.com/howto-mac/how-to-install-apache-mysql-php-on-macos-mojave-10-14
Latest Posts
- How to convert MD (markdown) file to PDF using Pandoc on macOS Ventura 13
- How to make MD (markdown) document
- How to Install Docker Desktop on mac M1 chip (Apple chip) macOS 12 Monterey
- How to install MySQL Workbench on macOS 12 Monterey mac M1 (2021)
- How to install MySQL Community Server on macOS 12 Monterey (2021)