wiki:howto/MAMP

Version 44 (modified by ryandesign (Ryan Carsten Schmidt), 15 years ago) (diff)

remove reference to possibility of having phpmyadmin in your Sites directory, since we never explained how that could be set up

<- Back to the HOWTO section

Getting Apache, MySQL, and PHP Running under MacPorts

  • Audience: Users who don’t like the default OS X installation
  • Requires: MacPorts

Introduction

These instructions are written for the following versions:

  • Apache 2.2.*
  • MySQL 5.0.*
  • PHP 5.2.*

Installation

Step 1: Turn off Apple's "Personal Web Sharing"

If you haven’t already done so, make sure you turn off Apple’s "Personal Web Sharing" in the System Preferences so that the default Apache server is not running. While you can set things up so that both servers run on different ports (e.g., port 80 and port 8080), it’s not worth the hassle of maintaining two web server daemons. Just use the latest Apache from MacPorts and be done with it.

Step 2: Install Apache

sudo port install apache2

A sample configuration file is provided in /opt/local/apache2/conf/original/httpd.conf. Don't edit this file; leave it as is so you can refer to the defaults later. The first time you install apache2, the sample configuration file will be copied to /opt/local/apache2/conf/httpd.conf for you. You can edit this file as desired. When you later upgrade apache2 to a newer version, MacPorts will upgrade the sample configuration file but will not modify your httpd.conf, so be sure to manually compare your httpd.conf with the new sample configuration file and bring over any relevant changes. You should also keep backup copies of your httpd.conf in a safe place.

Activate your Apache installation so that it starts now and every time you boot your machine:

sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist

To verify Apache is now running, point your browser to http://localhost/ (you may need to reload the page). You should see a page that says "It works!"

If desired, reboot your machine and point your browser again to http://localhost/ to confirm that Apache is again running.

User directories

If you would like to be able to access web pages in the Sites directory of your home directory, edit /opt/local/apache2/conf/httpd.conf and locate the following line:

#Include conf/extra/httpd-userdir.conf

Uncomment it by removing the "#" at the start of the line so that it reads:

Include conf/extra/httpd-userdir.conf

Then edit /opt/local/apache2/conf/extra/httpd-userdir.conf add the following lines to the end of the file:

For Mac OS X 10.4 and lower:

#
# Include user configurations
#
Include /private/etc/httpd/users/*.conf

For Mac OS X 10.5 and above:

#
# Include user configurations
#
Include /private/etc/apache2/users/*.conf

Restart Apache using sudo /opt/local/apache2/bin/apachectl -k restart to make this change take effect. You can then view your personal pages by accessing http://localhost/~username/, where "username" is your Mac OS X account's short name.

Local Apache manual

The Apache manual is available on the Apache web site. If you would like to be able to access a copy of this manual on your web server, edit /opt/local/apache2/conf/httpd.conf and uncomment the following line:

#Include conf/extra/httpd-manual.conf

So that it reads like this:

Include conf/extra/httpd-manual.conf

Restart Apache using sudo /opt/local/apache2/bin/apachectl -k restart to make this change take effect. You can then view the manual by accessing http://localhost/manual/.

Step 3: Install MySQL

If you merely want to access a MySQL server running on another computer, skip to step 4. If you want to run a MySQL server on this computer, install MySQL like this:

sudo port install mysql5-server

Set up the main database

sudo -u mysql mysql_install_db5 
sudo chown -R mysql:mysql /opt/local/var/db/mysql5/ 
sudo chown -R mysql:mysql /opt/local/var/run/mysql5/ 
sudo chown -R mysql:mysql /opt/local/var/log/mysql5/ 

If that doesn’t work try this:

sudo mysql_install_db5 
sudo chown -R mysql:mysql /opt/local/var/db/mysql5/ 
sudo chown -R mysql:mysql /opt/local/var/run/mysql5/

Activate your MySQL server installation so that it autostarts when you boot your machine:

sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist

alternatively you can use port’s load command

sudo port load mysql5-server

and then verify that it’s running

ps -ax | grep mysql

Set the MySQL root password (it’s currently empty):

mysqladmin5 -u root -p password <new-password> 

where <new-password> is your new desired root password. You will be prompted for your existing password ("Enter password:"); since it’s empty, just press Return.

Test everything by logging in to the server.

mysql5 -u root -p

Once you’re logged in, simply exit the session

mysql> exit ;

If desired, reboot your machine and then run

ps -ax | grep mysql

again to verify that the daemon is again running.

Step 4: Install PHP

sudo port install php5 +apache2 +mysql5

Register PHP with Apache

cd /opt/local/apache2/modules
sudo /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so

Update Apache’s httpd.conf file to enhance the "DirectoryIndex" directive to include additional "index" files. Search for:

DirectoryIndex index.html

and change it this way:

DirectoryIndex index.php index.html

Also, at the end of the httpd.conf file, add the following lines so that Apache includes the mod_php "AddType" configurations

# 
# Include PHP configurations
#
Include conf/extras-conf/mod_php.conf

You may also need to load the PHP module before including mod_php.conf as described above:

# Load the PHP module
LoadModule php5_module modules/libphp5.so

Set up your PHP configuration files

cd /opt/local/etc/php5
sudo cp php.ini-development php.ini

or (depending on your needs)

cd /opt/local/etc/php5
sudo cp php.ini-production php.ini

If you installed php5 with the +pear variant you should also:

sudo cp pear.conf.sample pear.conf

Restart Apache so that your changes take effect

sudo /opt/local/apache2/bin/apachectl -k restart

Note: Make sure to use the full path as shown here, as apachectl in your PATH refers to the system provided Apache!

Create a file named phpinfo.php that contains the following three lines

<?php
phpinfo();
?>

and place it in your Apache "DocumentRoot" directory (should be "/opt/local/apache2/htdocs") or your own user "Sites" directory if you activated user directories as specified above. Point your browser to http://localhost/phpinfo.php (or http://localhost/~username/phpinfo.php if applicable) and verify that the correct version of PHP is active (v5.2.8 as of this writing) and that MySQL support is active (you may want to search the page for "mysql").

As a last check, reboot and verify that everything has autostarted and is running (i.e., repeat the above tests).

Step 5: Install phpMyAdmin (optional)

Use MacPorts to install the latest version of phpMyAdmin.

sudo port install phpmyadmin

Update Apache’s httpd.conf file to find phpmyadmin. First add the following lines to the end of the file:

# Local access to phpmyadmin installation
Include conf/extra/httpd-phpmyadmin.conf

and then create a file /opt/local/apache2/conf/extra/httpd-phpmyadmin.conf containing this text:

AliasMatch ^/phpmyadmin(?:/)?(/.*)?$ "/opt/local/www/phpmyadmin$1"

<Directory "/opt/local/www/phpmyadmin">
  Options -Indexes
  AllowOverride None
  Order allow,deny
  Allow from all
  
  LanguagePriority en de es fr ja ko pt-br ru 
  ForceLanguagePriority Prefer Fallback
</Directory>

Restart Apache so that your changes take effect

sudo /opt/local/apache2/bin/apachectl -k restart

Note: Make sure to use the full path as shown here, as apachectl in your PATH refers to the system provided Apache!

Finally, you need to set up the phpMyAdmin configuration to access mySQL. First, set up the config file:

cd /opt/local/www/phpmyadmin/
cp config.sample.inc.php config.inc.php

This will create a file config.inc.php in the phpMyAdmin folder. Edit that file, and locate the lines:

$cfg['Servers'][$i]['auth_type']     = 'config';    // Authentication method (config, http or cookie based)?
$cfg['Servers'][$i]['user']          = 'root';      // MySQL user
$cfg['Servers'][$i]['password']      = '';          // MySQL password (only needed
                                                    // with 'config' auth_type)

Where ' ' is an empty password; fill it with your MySQL root password. You can either change the 'auth_type' from 'config' to 'cookie' or 'httpd', or alternatively provide the password you selected for the root user in the 'password' option.

To check your phpMyAdmin installation, point your browser to http://localhost/phpmyadmin and verify that phpMyAdmin loads and can access your database (by providing a username and password, depending on the authentication method you selected).

<- Back to the HOWTO section