Skip to content

Instantly share code, notes, and snippets.

@andrewstobbe
Last active November 4, 2016 21:59
Show Gist options
  • Save andrewstobbe/d5392fadcf131199d7f451db430b4b94 to your computer and use it in GitHub Desktop.
Save andrewstobbe/d5392fadcf131199d7f451db430b4b94 to your computer and use it in GitHub Desktop.
Migrate LAMP via brew Yosemite to Sierra
I have already removed existing versions... then.
brew doctor
brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/php
brew tap homebrew/apache
brew update
sudo apachectl stop
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null
brew reinstall httpd24 --with-privileged-ports --with-http2
sudo cp -v /usr/local/Cellar/httpd24/2.4.23_2/homebrew.mxcl.httpd24.plist /Library/LaunchDaemons
sudo chown -v root:wheel /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
sudo chmod -v 644 /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
ps -aef | grep httpd
sudo apachectl -k restart
tail -f /usr/local/var/log/apache2/error_log
sudo apachectl start
sudo apachectl stop
sudo apachectl -k restart
DocumentRoot /Users/Andrew/Sites/active-projects
AllowOverride All
Uncomment rewrite_module
User Andrew
Group staff
ServerAdmin [email protected]
echo "<h1>Active Projects Web Root</h1>" > ~/Sites/active-projects/index.html
brew reinstall php55 --with-apache
brew reinstall php55-opcache
brew reinstall php55-apcu
brew reinstall php55-mcrypt
brew reinstall php55-imagick
brew reinstall php55-pdo-dblib
brew reinstall php55-yaml
brew reinstall php55-xdebug
Add to httpd.conf so we can test the first php install.
---------------------------------
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
sudo apachectl -k restart
brew unlink php55
brew reinstall php56 --with-apache
brew reinstall php56-opcache
brew reinstall php56-apcu
brew reinstall php56-mcrypt
brew reinstall php56-imagick
brew reinstall php56-pdo-dblib
brew reinstall php56-yaml
brew reinstall php56-xdebug
brew unlink php56
brew reinstall php70 --with-apache
brew reinstall php70-opcache
brew reinstall php70-apcu
brew reinstall php70-mcrypt
brew reinstall php70-imagick
brew reinstall php70-pdo-dblib
brew reinstall php70-yaml
brew reinstall php70-xdebug
brew unlink php70
php71 ended up needing special attention before re-install.
-------------------------------
brew uninstall --force php71
brew cleanup --force -s php71
brew prune
sudo rm -fr /usr/local/opt/php71
brew reinstall php71 --with-apache
brew reinstall php71-opcache
brew reinstall php71-apcu
brew reinstall php71-mcrypt
brew reinstall php71-imagick
brew reinstall php71-pdo-dblib
brew reinstall php71-yaml
brew reinstall php71-xdebug
brew unlink php71
brew link php56
PHP Paths
-----------------------------
/usr/local/etc/php/5.5/php.ini
/usr/local/etc/php/5.6/php.ini
/usr/local/etc/php/7.0/php.ini
/usr/local/etc/php/7.1/php.ini
Modify the paths as follows:
----------------------------
LoadModule php5_module /usr/local/opt/php55/libexec/apache2/libphp5.so
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
LoadModule php7_module /usr/local/opt/php70/libexec/apache2/libphp7.so
LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so
We can only have one module processing PHP at a time, so for now, comment out all but the php56 entry:
----------------------------
#LoadModule php5_module /usr/local/opt/php55/libexec/apache2/libphp5.so
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
#LoadModule php7_module /usr/local/opt/php70/libexec/apache2/libphp7.so
#LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so
Verify php install one more time.
Install php switcher.
------------------------
curl -L https://gist.github.com/w00fz/142b6b19750ea6979137b963df959d11/raw > /usr/local/bin/sphp
chmod +x /usr/local/bin/sphp
It's quite IMPORTANT at this stage to fully stop your Apache sever, and start it again. Do not just restart it!
--------------------------
sudo apachectl -k stop
sudo apachectl start
# Brew PHP LoadModule for `sphp` switcher
LoadModule php5_module /usr/local/lib/libphp5.so
#LoadModule php7_module /usr/local/lib/libphp7.so
sphp71
brew reinstall --build-from-source php71-intl
brew update
brew upgrade
sphp55
brew reinstall --build-from-source php55-intl
brew update
brew upgrade
sphp56
brew reinstall --build-from-source php56-intl
brew update
brew upgrade
sphp70
brew reinstall --build-from-source php70-intl
brew update
brew upgrade
brew reinstall mariadb
mysql_install_db
mysql.server start
mysql.server stop
Apache already comes preconfigured to support this behavior but it is not enabled. First you will need to uncomment the following lines in your /usr/local/etc/apache2/2.4/httpd.conf file:
LoadModule vhost_alias_module libexec/mod_vhost_alias.so
and:
# Virtual hosts
Include /usr/local/etc/apache2/2.4/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/Users/Andrew/Sites/active-projects"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/Users/Andrew/Sites/active-projects/stand-by.jjlprocess.com"
ServerName stand-by.dev
</VirtualHost>
brew reinstall dnsmasq
echo 'address=/.dev/127.0.0.1' > /usr/local/etc/dnsmasq.conf
sudo brew services start dnsmasq
sudo mkdir -v /etc/resolver
sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/dev'
ping bogus.dev
openssl genrsa -des3 -passout pass:x -out local.dev.pass.key 2048
openssl rsa -passin pass:x -in local.dev.pass.key -out local.dev.key
rm local.dev.pass.key
openssl req -new -key local.dev.key -out local.dev.csr
openssl x509 -req -days 365 -in local.dev.csr -signkey local.dev.key -out local.dev.crt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment