HowTo: Create a local environment using MAMP
MAMP creates a local server environment on Mac OS X by installing PHP, MySQL, and Apache right out of the box. This will make Drupal much easier to install because the components don't have to be installed separately. This page is to be used in conjunction with the installation instructions for Drupal on Mac OS X.
(This will install Apache, MySQL, and PHP in one step.)
Find the latest version here: http://www.mamp.info/
Download and proceed through the installer to install MAMP. Open MAMP and click "start servers," then "Open start page."
Find the latest Drupal release here: http://drupal.org/.
Move the directory containing the Drupal files into the MAMP htdocs directory:
mv drupal-x.x.x/* drupal-x.x.x/.htaccess /Applications/MAMP/htdocs/yourdrupaldir
where yourdrupaldir is whatever you want the directory to be called.
Note: if you use Finder you may miss moving the .htaccess file which is necessary for clean URLs to work. It is generally best to download and unzip Drupal directly in the document root (default is htdocs) so you don't miss the .htaccess.
Create the Drupal database
To create a database for Drupal
- Go to the MAMP start page
- Click "phpMyAdmin"
- On the next page click "Databases"
- On the "Databases" page enter a name for your Drupal database in the "Create new database" field at the bottom of the page
- Select "utf8_general_ci" under the "Collation" drop-down (must be utf8!)
- Click "Create"
- Next you must create a user name with the privileges Drupal requires to use the new database
- Jump to your new database by clicking its name in the left sidebar and then click the "Privileges" tab.
- On the next page click "Add user".
- Fill out the "Login Information" form, making sure to change the "Host" field to "Local" and not leave it as "Any host" (for some reason Drupal will not be able to connect to your local database if you select "Any host")
- Leave the "None" radio button selected under the "Database for user" section, and under the "Global privileges" section leave everything unchecked
- Click "Add user"
- Go back to the main phpMyAdmin home page by clicking the Home icon in the left sidebar.
- Click the "Users" tab and edit the user that you just created.
- On the next page scroll down to the "Database-specific privileges" section and select the new Drupal database you created from the dropdown and then click "Go".
- Check the SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX and ALTER checkboxes and then click "Go".
You can also use a GUI such as Sequel Pro, just remember to use this as your Socket:
Changing your password
The default username/password for your MySQL install is now root/root! For security purposes, it's always best to change this. If you're connected to the internet, this is a must.
When you are changing the default user/password from root/root, you need to do two things. Only the first is documented in the MAMP start page FAQ, but if you don't do the second then you get an error message when you try to access anything from the MAMP start page.
- Use command line to change the password (as documented in the MAMP start page FAQ)
Open the terminal and type the following:
/Applications/MAMP/Library/bin/mysqladmin -u root -p password [NEWPASSWORD]
It will ask for the current password after you hit enter. Once you have entered that, the MySQL password is changed.
- Open a text editor and change the password in the four following files:
Find the line that reads...
$cfg['Servers'][$i]['password'] = 'root';
...and change the value
'root'to your new password, retaining the quotes.
Find the line that reads...
$link = @mysql_connect(':/Applications/MAMP/tmp/mysql/mysql.sock', 'root', 'root');
...and change the last parameter to your new password.
-prootand replace just the
rootpart with your new password. Note that it's important not to have a space between
-pand the password itself. (If you don't change this one you can have zombie mysqld's running after you thought you stopped the server.)
As above, replace
-prootwith your new password. (If you see an error pop up when you run the MAMP app that says "Error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect", this should fix it.)
Or in Mamp Pro you can change the MySQL password under the "MySQL" tab.
Optional: Adjust PHP's memory limit for scripts
By default, MAMP has the memory limit that a script can use set at 8MB, which is the PHP default. Looking at PHP's php.ini-recommended file, this memory limit is normally set at 128MB. To adjust this amount, open the php.ini file in a text editor and change the following line (approximately on line 232):
memory_limit = 8M ; Maximum amount of memory a script may consume (8MB)
PHP.ini file locations:
In MAMP PRO, don't alter the file directly since it will be recreated at each server start. Please edit the appropriate template (menu File > Edit template > ...) instead.
Even with larger PHP memory limits you can get timeout errors trying to import large Drupal databases into MySQL. These issues are discussed at length elsewhere with regards to the cache and views cache. Generally the solution is to empty the Drupal cache before importing/exporting databases to/from MySQL.
You may also need to adjust MAMP's memory settings for MySQL. For example, if you get an error message that says, "General error: 2006 MySQL server has gone away," it probably means that you need to increase MySQL's max_allowed_packet setting. To change this setting, edit file /Applications/MAMP/bin/startMysql.sh by appending --max_allowed_packet=100M at the end before the & character.
To adjust MAMP Pro's memory settings navigate to:
File > Edit template > MySQL my.cnf
In the text file that opens, change the value for 'max_allowed_packet' to 100M. Note you can set this in MAMP by adding your own my.cnf file manually.
Adding mysqldump and other libraries to $PATH
In order to make use of mysqldump and other libraries that ship with MAMP you'll likely want to add the location of these libraries to your $PATH (especially if you want to use some of the SQL functions of Drush). Tap the following line into Terminal and hit Return:
Start configuring Drupal!
- Navigate to http://localhost:8888/yourdrupaldir/install.php
- Fill in the installation fields using the information provided on the MAMP start page and the database you created in step 4 as well as the username you specified in step 10.
- Continue filling out the remaining fields during the installation.
- Refer to the INSTALL.txt, in the Drupal Root directory, for additional help.
NOTE!! If you changed your MySQL username and password, at any time post-installation, you will need to modify that in your local Drupal settings.php file as well.
Adjust the terminal shell path
By default, Mac OS X terminal shell won't find the php binary you're using under MAMP. That is, if you type
which php it will tell you
/usr/bin/php. This is not the MAMP PHP binary.
To solve this, find the PHP binary used by MAMP. It will look something like this:
You can then add this path to your
~/.bashrc file, so it looks like this:
Then restart the terminal or type
source ~/.profile. Then typing
which php will show you MAMP's PHP binary.
Note that if you switch PHP versions using the MAMP user interface, this will not change the path being discovered by the shell. You'll have to edit
~/.profile to point to the new binary in order to do this.
Temporary Files Note:
By default the File System settings (admin/config/media/file-system) will place the temporary files directory inside /Applications/MAMP/tmp/php which should be changed to something like files/tmp or sites/files/tmp to avoid later confusion.
Clean up your Localhost URL
- Open the MAMP application
- Click on "Preferences" and then "Ports"
- Change the Apache Port to 80 (the standard web server port)
In MAMP PRO, change the port of apache to 80 and click on apply.