macOS Ventura 13.0 Setup: Homebrew + Apache + PHP + MariaDB

$ xcode-select --install

Homebrew Installation

Homebrew is an excellent package manager for macOS. Homebrew installs the stuff you need that Apple (or your Linux system) didn’t; let’s install it.

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
$ brew doctor

Apache Installation

macOS 13.0 Ventura comes with Apache 2.4 pre-installed. However, we don’t want Apple to control our web server so let’s stop it and prevent it from starting on boot.

$ sudo apachectl stop
$ sudo launchctl unload /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null
$ mkdir ~/Sites
$ brew install httpd
$ which apachectl
/usr/local/bin/apachectl
$ sudo brew services start httpd
$ tail -f /usr/local/var/log/httpd/error_log
$ brew services stop httpd
$ brew services start httpd
$ brew services restart httpd

PHP Installation

Install the latest PHP version.

$ brew install php

Apache PHP Setup

Now that we have PHP successfully installed, we still need to tell Apache to use it. Please edit the Apache httpd.conf file.

vi /usr/local/etc/httpd/httpd.conf
Listen 80
LoadModule socache_shmcb_module lib/httpd/modules/mod_socache_shmcb.so
LoadModule ssl_module lib/httpd/modules/mod_ssl.so
LoadModule vhost_alias_module lib/httpd/modules/mod_vhost_alias.so
LoadModule userdir_module lib/httpd/modules/mod_userdir.so
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
LoadModule php_module /usr/local/opt/php/lib/httpd/modules/libphp.so
User your_username
Group staff
#ServerName www.example.com:8080
ServerName localhost
DocumentRoot "/Users/your_username/Sites"
<Directory "/Users/your_username/Sites">
AllowOverride All
DirectoryIndex index.php index.html
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
Include /usr/local/etc/httpd/extra/httpd-userdir.conf
Include /usr/local/etc/httpd/extra/httpd-vhosts.conf
Include /usr/local/etc/httpd/extra/httpd-ssl.conf
$ brew services restart httpd
$ sudo apachectl configtest
PHP 8.1.9 (cli) (built: Aug  4 2022 15:12:55) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.9, Copyright (c) Zend Technologies
with Zend OPcache v8.1.9, Copyright (c), by Zend Technologies

MariaDB Installation

Install MariaDB using Homebrew.

$ brew install mariadb
$ brew services start mariadb
$ sudo /usr/local/bin/mysql_secure_installation
$ brew services restart mariadb
mysql -u root -p
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 7
Server version: 10.5.8-MariaDB Homebrew
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]>

SSL/Virtual Hosts

The OpenSSL software library is a prerequisite to generate a certificate. Check if OpenSSL is available by running the following command in the local environment.

$ which openssl
/usr/bin/openssl
$ brew install openssl
$ vi /usr/local/etc/httpd/extra/httpd-ssl.conf
ServerName www.example.com:443<VirtualHost _default_:443>
$ cd /usr/local/etc/httpd
$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt
$ vi /usr/local/etc/httpd/extra/httpd-vhosts.conf<VirtualHost *:80>
ServerName yourprojectdomain.com
DocumentRoot "/Users/your_username/Sites/yourprojectname"
ErrorLog "/usr/local/var/log/httpd/yourprojectname-error_log"
CustomLog "/usr/local/var/log/httpd/yourprojectname-access_log" common
</VirtualHost>
<VirtualHost *:443>
DocumentRoot "/Users/your_username/Sites/yourprojectname"
ServerName yourprojectdomain.com
SSLEngine on
SSLCertificateFile "/usr/local/etc/httpd/server.crt"
SSLCertificateKeyFile "/usr/local/etc/httpd/server.key"
</VirtualHost>
$ brew services restart httpd

License

Copyright © 2022 Karl Hill.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Karl Hill

Karl Hill

2 Followers

Full Stack Engineer at NASA. Volunteer at Smithsonian’s The Renwick Gallery, and former drummer of #GovernmentIssue. https://www.karlhill.com