• Home
  • Ubuntu 18.04
    • Whats New?
    • Upgrade Ubuntu
    • Install Java
    • Install Node.js
    • Install Docker
    • Install Git
    • Install LAMP Stack
  • Tutorials
    • AWS
    • Shell Scripting
    • Docker
    • Git
    • MongoDB
  • Funny Tools
  • FeedBack
  • Submit Article
  • About Us
TecAdmin
Menu
  • Home
  • Ubuntu 18.04
    • Whats New?
    • Upgrade Ubuntu
    • Install Java
    • Install Node.js
    • Install Docker
    • Install Git
    • Install LAMP Stack
  • Tutorials
    • AWS
    • Shell Scripting
    • Docker
    • Git
    • MongoDB
  • Funny Tools
  • FeedBack
  • Submit Article
  • About Us

How to Install Apache on macOS via Homebrew

Written by Rahul, Updated on June 19, 2019

The latest versions of macOS come with pre-installed Apache 2.4. But it’s hard to manage it via homebrew due to Apple has removed some of the required scrips from latest macOS releases. This tutorial will help you to remove default installed Apache from the system and install Homebrew version Apache on your system.

Prerequisites

Before starting the installation of Apache (HTTPD) server using this tutorial you must have the following prerequisites.

  • Terminal: You must have Mac Terminal access and little knowledge about working with the terminal application. Ao login to your Mac system and open terminal
  • Homebrew: Homebrew is a popular package manager for the Mac operating systems. It is useful for installing most open source software like Node. Homebrew installation tutorial

Step 1 – Install Apache on macOS

Remove built-in Apache server (if any) from your system. Open a terminal and execute commands to stop running Apache server and remove it.

sudo apachectl stop
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

Now install the new version Apache server provided by Homebrew:

brew install httpd

After completing the installation process, configure httpd service to be auto-started on system boot.

sudo brew services start httpd

You have successfully installed Apache web server via Homebrew, and configured it to auto-start with a privileged account.

You can try to reach your server in a browser by pointing it at http://localhost:8080, you should see a simple header that says “It works!”

Step 2 – Configure Apache

The Apache web server is running now on your macOS system. Now you will want to make some configuration changes according to your local development environment. A configuration file /usr/local/etc/httpd/httpd.conf is generated by the installer which you need to edit in a text editor and make following changes.

Set Apache Port

The Homebrew’s version of httpd uses port 8080. You have to manually change the listen port from the default of 8080 to standard port 80.

Find the line with  
Listen 8080

and change it to  
Listen 80

Change Document Root

Now, configure the document root for Apache. The default document root is set to “/usr/local/var/www”. You can keep the document root unchanged and put your website files to this document root. But I assume you want to change the document root to set to your home directory.

Change this to point to your user directory where your_user is the name of your user account:

 DocumentRoot /Users/rahul/Sites

You also need to change the <Directory> tag configured just right below the DocumentRoot line. This should also be changed to point to your new document root as well:

In that same <Directory> block you will find an AllowOverride option, Set this to all to enable the uses of the .htaccess file in Apache.

<Directory /Users/rahul/Sites>
   [...]
   #
   # 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 
</Directory>

Enable Rewrite Module

Also, you should enable the mod_rewrite module by removing leading # symbol from the following line. Search the line and update it. this will enable URL rewrite on Apache.

 LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

Setup User & Group for Apache

As you have configured the Apache document root to your home directory. You will face issue for the permissions because, by default, Apache runs as the user daemon and group daemon (Maybe username and group are to _www). For the personal systems, You can change these to match your user account (replace user_name with your real username), with a group of staff.

  User user_name
  Group staff

Step 3 – Configure Application on Apache

Let’s create a Sites folder in your home directory and create a sample index.html file for the testing.

mkdir ~/Sites
echo "Welcome" > ~/Sites/index.html

Restart apache to ensure your configuration changes have taken effect:

sudo apachectl -k restart

Now, Point your browser to http://localhost, This should display your newly created index.html. All done.

Step 4 – Manage Apache Service

You now have installed Apache server, also configured it accordingly to your setup. The below command is used to stop, start, and restart Apache service

sudo apachectl stop
sudo apachectl start
sudo apachectl -k restart

Share it!
Share on Facebook
Share on Twitter
Share on LinkedIn
Share on Reddit
Share on Tumblr
Share on Whatsapp
Rahul
Rahul
Connect on Facebook Connect on Twitter

I, Rahul Kumar am the founder and chief editor of TecAdmin.net. I am a Red Hat Certified Engineer (RHCE) and working as an IT professional since 2009..

14 Comments

  1. Avatar Hildo Reply
    February 16, 2020 at 3:09 am

    Thanks a lot ! This help me so much !

  2. Avatar Alessandro Trebbi Reply
    September 19, 2019 at 3:50 pm

    I have configured apache but master process starts as user _www as well (should start as root), so that it can’t reads certificates in /etc/letsencrypt/live/ that are private for root ; is there a way to start correctly master process ? I’m running Mac OS server too and and that’s correctly configured

    apache brew:
    _www 68719 0,0 0,0 4488604 1808 ?? S Lun11pm 0:00.12 /usr/local/opt/httpd/bin/httpd -k start
    _www 68642 0,0 0,0 4488604 1788 ?? S Lun11pm 0:00.08 /usr/local/opt/httpd/bin/httpd -k start
    _www 68591 0,0 0,0 4488604 1700 ?? S Lun11pm 0:00.06 /usr/local/opt/httpd/bin/httpd -k start
    _www 68042 0,0 0,0 4488604 1796 ?? S Lun11pm 0:00.10 /usr/local/opt/httpd/bin/httpd -k start
    _www 67725 0,0 0,0 4488604 1792 ?? S Lun11pm 0:00.11 /usr/local/opt/httpd/bin/httpd -k start
    _www 53225 0,0 0,0 4488604 1784 ?? S Dom03pm 0:00.13 /usr/local/opt/httpd/bin/httpd -k start
    _www 49737 0,0 0,0 4488604 1788 ?? S Dom07am 0:00.14 /usr/local/opt/httpd/bin/httpd -k start
    _www 42715 0,0 0,0 4488676 1768 ?? S Sab05pm 0:00.13 /usr/local/opt/httpd/bin/httpd -k start
    _www 37396 0,0 0,0 4488676 1792 ?? S Sab04am 0:00.15 /usr/local/opt/httpd/bin/httpd -k start
    _www 24048 0,0 0,0 4488676 1788 ?? S Gio11pm 0:00.14 /usr/local/opt/httpd/bin/httpd -k start

    Mac OS server (note process with lower pid as root):
    _www 17919 0,0 0,0 4299468 1492 ?? S Gio10pm 0:00.09 /usr/sbin/httpd …
    _www 17918 0,0 0,0 4299468 1488 ?? S Gio10pm 0:00.74 /usr/sbin/httpd …
    _www 17915 0,0 0,0 4299468 1356 ?? S Gio10pm 0:00.30 /usr/sbin/httpd …
    _www 4585 0,0 0,0 4299468 1356 ?? S 11Set19 0:00.10 /usr/sbin/httpd …
    _www 4584 0,0 0,0 4299468 1356 ?? S 11Set19 0:00.09 /usr/sbin/httpd …
    _www 4583 0,0 0,0 4299468 1356 ?? S 11Set19 0:00.28 /usr/sbin/httpd …
    _www 4582 0,0 0,0 4299468 1516 ?? S 11Set19 0:00.51 /usr/sbin/httpd …
    _www 4581 0,0 0,0 4299468 1340 ?? S 11Set19 0:00.64 /usr/sbin/httpd …
    root 4555 0,0 0,0 4299492 5844 ?? Ss 11Set19 0:26.49 /usr/sbin/httpd …

  3. Avatar Damian Lluch Reply
    September 15, 2019 at 12:12 pm

    Thanks bro!

  4. Avatar Alexey Reply
    August 15, 2019 at 1:09 am

    How to install the mpm_itk module for latest version of Apache on Mac?

  5. Avatar Dominique DEBERT Reply
    August 1, 2019 at 4:11 pm

    You saved my life, thx !

  6. Avatar Mario Reply
    July 5, 2019 at 12:00 pm

    Thank you and good job!

  7. Avatar rei Reply
    May 2, 2019 at 8:44 am

    awesome! It Works!

  8. Avatar Noor Reply
    March 31, 2019 at 2:52 am

    Thanks Rahul.

  9. Avatar Anthony Reply
    March 26, 2019 at 2:46 am

    Rahul you are the man!!! Thank you!!!

  10. Avatar Mario Silva Reply
    February 11, 2019 at 3:36 am

    worked perfect many thanks

  11. Avatar JP Reply
    February 10, 2019 at 6:19 am

    Worked up until the last part. Do NOT use ‘/’ , use ‘\’. It worked for me. Also just typing in localhost worked as well. Other than that, well done

  12. Avatar Candy Reply
    February 6, 2019 at 6:32 pm

    Thank you! This worked perfectly.

  13. Avatar David Reply
    February 1, 2019 at 11:13 pm

    Very clear and it works!
    Thank you Rahul

  14. Avatar xin jie Reply
    January 19, 2019 at 3:31 pm

    thanks very much

Leave a Reply Cancel reply

Popular Posts

  • How To Install Python 3.9 on Ubuntu 20.04 5
  • How To Install Python 3.9 on Ubuntu 18.04 0
  • How to Use AppImage on Linux (Beginner Guide) 2
  • How to Install Python 3.9 on CentOS/RHEL 7 & Fedora 32/31 0
  • How To Install VNC Server on Ubuntu 20.04 1
© 2013-2020 Tecadmin.net. All Rights Reserved | Terms  | Privacy Policy