$ curl -sL https://raw.githubusercontent.com/syzygypl/mac-setup/master/bootstrap.sh | bash
This script will setup your Mac with software that we use in Syzygy Warsaw on a daily basis. All You need is paste above line to Terminal and execute.
It will install Apache 2.4
and PHP 5.6
, 7.1
and 7.2
with required extensions and configure sites to be served from ~/Sites/*.loc/web
directories.
DNS records of *.loc
are being handled by Dnsmasq
so no changes in /etc/hosts
are required.
You can check software being installed below. If no version is provided - we use the newest.
- 1Password
- Atom
- Charles
- Cocoa REST client
- Docker
- Firefox Developer Edition
- Google Chrome
- PHPStorm
- iTerm2
- Java
- Skype
- Slack
- Discord
- Vagrant
- VirtualBox
- WKhtmlTOpdf
- Sequel PRO
- RoboMongo
- KeePassX
- KeKa
- MacDown
- Apache 2.4
- tree
- wget
- Fish Shell
- Bash Shell
- pv
- ssh-copy-id
- Redis
- MySQL 5.7
- PHP
- PHP Xdebug
- PHP Redis
- PHP Imagick
- PHP APCu
- PHP YAML
- Composer
- ImageMagick
- Ruby
- ElasticSearch 5.6
- heroku-toolbelt
- Node
- nvm
- Dnsmasq
- rsync 3.1
- coreutils
/usr/local/etc/php/*/php.ini
:
upload_max_filesize 20M
post_max_size 80M
memory_limit 10G
date.timezone 'Europe/Warsaw'
/usr/local/etc/httpd/httpd.conf
:
LoadModule vhost_alias_module libexec/mod_vhost_alias.so
LoadModule rewrite_module libexec/mod_rewrite.so
LoadModule php5_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp5.so
LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so
LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so
Include /usr/local/etc/httpd/extra/httpd-vhosts.conf
Include /usr/local/etc/httpd/extra/httpd-php.conf
User {{ ansible_ssh_user }}
Group staff
ServerName {{ ansible_hostname }}.local
/usr/local/etc/apache2/2.4/extra/httpd-vhosts.conf
:
<Directory /Users/{{ ansible_ssh_user }}/Sites>
Require all granted
AllowOverride All
DirectoryIndex index.php index.html
</Directory>
<VirtualHost *:80>
DocumentRoot /Users/{{ ansible_ssh_user }}/Sites/
</VirtualHost>
<VirtualHost *:80>
ServerName loc
ServerAlias *.loc
CustomLog /var/log/apache2/loc.access_log vcommon
ErrorLog /var/log/apache2/loc.error_log
VirtualDocumentRoot /Users/{{ ansible_ssh_user }}/Sites/%-2.0.%-1.0/web/
LogFormat "%{Host}i %l %u %t \"%r\" %>s %b" vcommon
Options +FollowSymLinks
DirectoryIndex index.php
FallbackResource /index.php
SetEnvIf Request_URI ^ Debug=1 DEBUG=1 SYMFONY_ENV=dev APP_ENV=dev
SetEnvIf Host ([^\.]+).loc APP_NAME=$1
SetEnvIf Host app.([^\.]+) APP_NAME=$1
SetEnvIf Cookie "APP_NAME=(\w+)" APP_NAME=$1
</VirtualHost>
# Additional VirtualHosts
IncludeOptional /usr/local/etc/httpd/vhosts/*.conf
/usr/local/etc/httpd/httpd-php.conf
:
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
/etc/resolver/loc
:
nameserver 127.0.0.1
/usr/local/etc/dnsmasq.conf
:
address=/.loc/127.0.0.1
All services are managed via brew services
command.
$ brew services list
Name Status User Plist
dnsmasq started root /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
[email protected] started kuba /Users/kuba/Library/LaunchAgents/[email protected]
httpd started root /Library/LaunchDaemons/homebrew.mxcl.httpd.plist
mongodb started kuba /Users/kuba/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
[email protected] started kuba /Users/kuba/Library/LaunchAgents/[email protected]
php stopped
[email protected] stopped
[email protected] stopped
redis started kuba /Users/kuba/Library/LaunchAgents/homebrew.mxcl.redis.plist
dnsmasq
and apache
should be started as root
:
$ sudo brew services start httpd
==> Successfully started `httpd` (label: homebrew.mxcl.httpd)
$ sudo brew services start dnsmasq
==> Successfully started `dnsmasq` (label: homebrew.mxcl.dnsmasq)
Rest can be started as regular user (no sudo
required):
$ brew services start redis
==> Successfully started `redis` (label: homebrew.mxcl.redis)
$ brew services start [email protected]
==> Successfully started `[email protected]` (label: [email protected])
$ brew services start [email protected]
==> Successfully started `[email protected]` (label: [email protected])
Other commands available for brew services
are restart
and stop
.
$ brew update
$ brew upgrade
$ brew cleanup
# check what packages are installed
$ brew list | grep php
# uninstall old php packages
$ brew uninstall --force php56 php56-apcu php56-opcache php56-xdebug php56-yaml php56-igbinary php56-intl php56-redis php56-imagick php56-mcrypt
$ brew uninstall --force php70 php70-apcu php70-opcache php70-xdebug php70-yaml php70-igbinary php70-intl php70-redis php70-imagick php70-mcrypt
$ brew uninstall --force php71 php71-apcu php71-opcache php71-xdebug php71-yaml php71-igbinary php71-intl php71-redis php71-imagick php71-mcrypt
$ brew uninstall --force php72 php72-apcu php72-opcache php72-xdebug php72-yaml php72-igbinary php72-intl php72-redis php72-imagick php72-mcrypt
$ brew cleanup
# check if everything was uninstalled Successfully
$ brew list | grep php
# remove old configs
$ rm -Rf /usr/local/etc/php/*