您的位置:首页 > 运维架构 > Apache

在Mac OS X中配置Apache + PHP + MySQL

2011-08-03 16:37 621 查看
最近正在学习php,自然第一步就是搭建开发环境,熟料看似简单,中间却不时的出问题,开始在windows机器上搭建很顺利,但在MAC上就不那么顺利了,现在回顾起来其实里面是有很多小细节需要注意的,所以现在将网上搜集的资料结合可能遇到的问题根据自己的经验整理出来(如果您不愿意将您的原创内容被我引用至此,请与我联系,谢谢!)。因为内容比较长,所以决定分两篇文章来讲解。内容如下:
1. 启动Apache

2. 设置虚拟主机

3. 运行PHP

4. 安装MySQL

5. 使用phpMyAdmin

6. 配置PHP的MCrypt扩展库

7. GD库安装

8. 增加CAPTCHA支持

9. 增加Zendframework

10.其他可能遇到的问题


------------------------------------------------------------------------------------------------------------------------------------------------------------------

一.启动Apache

有两种方法:

1. 打开“系统偏好设置(System Preferences)”
-> “共享(Sharing)”
-> 勾选“Web共享(Web Sharing)”

2. 打开“终端(terminal)”,然后

2.1. 运行“sudo apachectl start”,再输入帐号密码,这样Apache就运行了。

2.2. 运行“sudo apachectl
-v”,你会看到Mac OS X 10.6.7中的Apache版本号:


Server version: Apache/2.2.17 (Unix)

Server built: Jan 17 2011 20:56:17

这样在浏览器中输入“http://localhost”,就可以看到出现一个内容为“It works!”的页面,它位于“/Library(资源库)/WebServer/Documents/”下,这是Apache的默认根目录。


PS:开启了Apache就是开启了“Web共享”,这时联网的用户就会通过“http://[本地IP]/”来访问“/Library(资源库)/WebServer/Documents/”目录,通过“http://[本地IP]/~[用户名]”来访问“/Users/[用户名]/Sites /”目录,可以通过设置“系统偏好设置”的“安全(Security)”中的“防火墙(Firewall)”来禁止这种访问。

二.设置虚拟主机

1. 在终端运行“sudo vi /etc/apache2/httpd.conf”,打开Apache的配置文件

2. 在httpd.conf中找到“#Include /private/etc/apache2/extra/httpd-vhosts.conf”,去掉前面的“#”,保存并退出。

3. 运行“sudo apachectl restart”,重启Apache后就开启了它的虚拟主机配置功能。

4. 运行“sudo vi /etc/apache2/extra/httpd-vhosts.conf”,这样就打开了配置虚拟主机的文件httpd-vhost.conf,配置你需要的虚拟主机了。需要注意的是该文件默认开启了两个作为例子的虚拟主机


<VirtualHost *:80>

ServerAdmin webmaster@dummy-host.example.com

ServerName dummy-host.example.com

ServerAlias www.dummy-host.example.com

ErrorLog "/private/var/log/apache2/dummy-host.example.com-error_log"

CustomLog "/private/var/log/apache2/dummy-host.example.com-access_log" common

</VirtualHost>

<VirtualHost *:80>

ServerAdmin webmaster@dummy-host2.example.com

DocumentRoot "/usr/docs/dummy-host2.example.com"

ServerName dummy-host2.example.com

ErrorLog "/private/var/log/apache2/dummy-host2.example.com-error_log"

CustomLog "/private/var/log/apache2/dummy-host2.example.com-access_log" common

</VirtualHost>

而实际上,这两个虚拟主机是不存在的,在没有配置任何其他虚拟主机时,可能会导致访问localhost时出现如下提示:

Forbidden

You don't have permission to access /index.php on this server

5. 最简单的办法就是在它们每行前面加上#,注释掉,这样既能参考又不导致其他问题。
然后增加如下配置(比如我将虚拟主机的目录放到我的个人文件夹下的“站点(Sites)”目录下,名为mySite):


<VirtualHost 127.0.0.1>

ServerName mySite

DocumentRoot /Users/refresh/Sites/mySite

//下面这段不是必需的,最好加上,但注意参数根据自己的需要更改

<Directory /Users/refresh/Sites/mySite>

AllowOverride All

Options All

</Directory>

</VirtualHost>

PS.其实这段内容可以参考httpd-vhost.conf给出的示例来设置

34. 保存退出,并重启Apache。

35. 运行“sudo vi /etc/hosts”,打开hosts配置文件,加入”127.0.0.1
mySite“,这样就配置完mySite虚拟主机了,就可以用“http://mySite/”访问了,与“http://localhost/~[用户名]/Sites/mySite”完全一致。


PS:其实也可以在需要设置虚拟主机的目录放置一个httpd.conf文件,其内容和上面所说的一致,然后再修改httpd.conf中

“Include /private/etc/apache2/extra/httpd-vhosts.conf”为Include
/Users/refresh/Sites/mySite


三.运行PHP(apache增加php支持)

1. 在终端中运行“sudo vi /etc/apache2/httpd.conf”,打开Apache的配置文件。(如果不习惯操作终端和vi的可以设置在Finder中显示所有的系统隐藏文件,记得需要重启Finder,这样就可以找到对应文件,随心所欲编辑了,但需要注意的是某些文件的修改需要开启root帐号,但整体上还是在终端上使用sudo来临时获取root权限比较安全。)

2. 找到“#LoadModule php5_module libexec/apache2/libphp5.so”,把前面的#号去掉,保存并退出

3. 运行“sudo cp /etc/php.ini.default /etc/php.ini”,这样就可以通过php.ini来配置各种PHP功能了。比如:通过下面两项来调整PHP提交文件的最大值,比如phpMyAdmin中导入数据的最大值

upload_max_filesize = 2M

post_max_size = 8M

再比如通过display_errors来控制是否显示PHP程序的报错

display_errors = Off


运行“sudo apachectl restart”,重启Apache,这样PHP就可以用了。

4. 运行“cp /Library/WebServer/Documents/index.html.en
ibrary/WebServer/Documents/info.php”,即在Apache的根目录下复制index.html.en文件并重命名为info.php
(或者直接创建一个php文件)

5. 在vi中编辑info.php文件(vi /Library/WebServer/Documents/info.php)或者直接使用你喜欢的文本编辑软件编辑它。加入<?php phpinfo();?>,保存。这样就可以在http://localhost/info.php中看到有关PHP的信息了。



四.安装MySQL

由于Mac OS X中并没有预装MySQL,所以需要自己手动安装。MySQL提供了Mac OS X下的安装说明

1. 选择合适的版本并下载。

2. 运行下载的dmg文件,会发现里面有4个文件。首先点击安装“mysql-版本号-osx10.6-x86_64.pkg”,这是MySQL的主安装包。 一般情况下,安装文件会自动把MySQL安装到/usr/local下的同名文件夹下。比如点击运行“mysql-版本号-osx10.6- x86_64.dmg”会把MySQL安装到“/usr/local/mysql-版本号-osx10.6-x86_64”中,一路默认安装完毕即可。

3. 点击安装第2个文件MySQLStartupItem.pkg,这样MySQL就会自动在开机时自动启动了。

4. 点击安装第3个文件MySQL.prefPane,这样就会在“系统设置偏好”中看到名为“MySQL”的设置项,通过它就可以设置MySQL开始或停止,以及是否开机时自动运行。到这里MySQL就基本安装完毕了。

5. 通过运行“sudo vi /etc/bashrc”,在bash的配置文件中加入mysql和mysqladmin的别名


#mysql

alias mysql='/usr/local/mysql/bin/mysql'

alias mysqladmin='/usr/local/mysql/bin/mysqladmin'

6. 这样就可以在终端中比较简单地通过命令进行相应的操作,比如安装完毕之后MySQL的root默认密码为空,如果要设置密码可以在终端运行“mysqladmin -u root password "mysqlpassword"”来设置,其中mysqlpassword即root的密码,更多相关内容可以参考相关文档。

PS:Mac OS X的升级或者其他原因可能会导致MySQL启动或者开机自动运行,在MySQL的操作面板上会提示“Warning:The /usr/local/mysql/data directory is not owned by the 'mysql' or '_mysql'
”,或者在命令行下提示“Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)”,这应该是某种情况下导致/usr/local/mysql/data的宿主发生了改变,只需要运行“sudo chown -R mysql /usr/local/mysql/data”即可。



五.使用phpMyAdmin

phpMyAdmin是用PHP开发的MySQL管理程序,非常的流行和实用。能够使用phpMyAdmin管理MySQL是检验前面几步成果的非常有效方式。

1. 选择合适的版本并下载。

2. 把刚下载的phpMyAdmin-版本号-all-languages文件夹复制到“/Users/[用户名]/Sites”中,改名为phpmyadmin。

3. 复制“/Users/[用户名]/Sites/phpmyadmin/”中的config.sample.inc.php,并命名为config.inc.php

4. 打开config.inc.php,做如下修改:


用于Cookie加密,随意的长字符串

$cfg['blowfish_secret'] = ''; (cookie
写上吧)


当phpMyAdmin中出现“#2002
无法登录 MySQL 服务器”时, 请把localhost改成127.0.0.1就ok了,(这里挺重要),这是因为MySQL守护程序做了IP绑定(bind-address =127.0.0.1)造成的

$cfg['Servers'][$i]['host'] = 'localhost';

另外,把false改成true,这样就可以访问无密码的MySQL了,即使MySQL设置了密码也可以这样设置

$cfg['Servers'][$i]['AllowNoPassword'] = false;

5. 通过http://localhost/~[用户名]/phpmyadmin访问phpMyAdmin。这个时候就看到一个提示“无法加载
mcrypt 扩展,请检查您的 PHP
配置。”,这就涉及到下一节安装MCrypt扩展了。



六.配置PHP的MCrypt扩展


MCrypt是一个功能强大的加密算法扩展库,它包括有22种算法,phpMyAdmin依赖这个PHP扩展库。但是它在Mac OS X下的安装却不那么友善,具体如下:(安装软件前你要先在电脑里安装XCODE,要不编译不了软件)


1. 下载并解压libmcrypt-2.5.8.tar.bz2

2. 在终端执行如下命令:


cd ~/Downloads/libmcrypt-2.5.8/

./configure --disable-posix-threads --enable-static


make

sudo make install

3. 下载并解压PHP

4 在终端执行如下命令:

cd ~/Downloads/php-5.3.6/ext/mcrypt

phpize (这是一条命令)


./configure

make

cd modules

sudo cp mcrypt.so /usr/lib/php/extensions/no-debug-non-zts-20090626/


5. 打开php.ini

sudo vi /etc/php.ini

在php.ini中加入如下代 码:


extension=/usr/lib/php/extensions/no-debug-n on-zts-20090626/mcrypt.so

保存后退出,然后重启apache。

当你再访问http://localhost/~[用户名]/phpmyadmin时,你会发现“无法加载
mcrypt 扩展,请检查您的 PHP
配置。”的提示没有了,这就表示MCrypt扩展库安装成功了。


七.增加gd支持

mac 自带的php默认是没有启用gd支持的,需要额外编译gd库。

sudo bash

Install libjpeg

PS:安装GD支持安装libjpeg,所以我们先创建一个源代码目录并下载代码编译安装。


mkdir -p /SourceCache

cd /SourceCache

下载并解压

curl -O http://www.ijg.org/files/jpegsrc.v8c.tar.gz

tar xzpf jpegsrc.v8c.tar.gz

cd /SourceCache/jpeg-8c

cp /usr/share/libtool/config/config.sub .

cp /usr/share/libtool/config/config.guess .

32位的使用:

./configure --enable-shared

64位的使用:

MACOSX_DEPLOYMENT_TARGET=10.6 CFLAGS="-arch ppc -arch ppc64


-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch


ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch


ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch


ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load" ./configure


--enable-shared

最后编译安装:

make clean

make mkdir -p /usr/local/include

mkdir -p /usr/local/bin

mkdir -p /usr/local/lib

mkdir -p /usr/local/man/man1

make install

这样libjpeg就安装好了。

下面安装GD库。 (因为之前下载安装了php,在php的ext目录下有gd扩展)


cd ~/Downloads/libmcrypt-2.5.8/ext/gd

32位的使用:

phpize


./configure --with-zlib-dir=/usr

--with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/X11R6


--with-freetype-dir=/usr/X11R6 --with-xpm-dir=/usr/X11R6


64位的使用:

MACOSX_DEPLOYMENT_TARGET=10.6 CFLAGS="-arch ppc -arch ppc64


-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch


ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch


ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch


ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load" ./configure


--with-zlib-dir=/usr --with-jpeg-dir=/usr/local/lib


--with-png-dir=/usr/X11R6 --with-freetype-dir=/usr/X11R6


--with-xpm-dir=/usr/X11R6

特别注意执行一下Notice代码,避免出现/usr/X11/lib/libpng.3.0.0.dylib: No such file or directory的错误提示。

sudo ln -s /usr/X11/lib/libpng.3.dylib /usr/X11/lib/libpng.3.0.0.dylib


make clean

make make install

(上面的命令后如果:/usr/lib/php/extensions/no-debug-non-zts-20090626/
目录下没有gd.so那就执行下面的命令:


cd modules

sudo cp gd.so /usr/lib/php/extensions/no-debug-non-zts-20090626/



配置php加载gd.so:

编辑/etc/php.ini ,增加一行

extension=gd.so

如果没有/etc/php.ini,则使用

echo -e extension=gd.so > /etc/php.ini 创建它。

配置 extension_dir="/usr/lib/php/extensions/no-debug-no n-zts-20060613"

这个目录在make install里也能看到。

重启httpd :sudo apachectl restart


八.增加CAPTCHA支持

在一般的网站注册中我们经常会看到要求根据一副图像来输入一个验证码,从而避免机器注册。在PHP里面,我们可以通过CAPTCHA来完成这种功能,具体方法如下:

先从http://pear.php.net/上下载一下组件:

Text_CAPTCHA

Text_Password

Image_Text

然后将组件整合到PHP中,首选需要为PHP添加Pear功能以支持组件扩展,操作步骤如下:


curl http://pear.php.net/go-pear.phar > go-pear.phar

sudo php -d phar.require_hash=0 go-pear.phar

PS:跟着步骤走,让你打安装目录的时候换到/usr/local下(注意看提示),提示要更新php.ini的时候让他更新。

接下来安装上面的三个组件:

pear install -f Text_CAPTCHA

pear install -f Image_Text

pear install -f Text_Password

PS:这里-f表明安装非稳定版本,安装过程可能需要等待一段时间安装完成后,屏幕会有提示。另外,在运行上面的命令时可能会提示你说找不到可用版本,并提示有一个带版本号的beta版本,那就在上面的命令后附加上版本号再次执行(注意看提示,安装这三个组件非常简单!)。

九.配置Zendframework

安装 Zend Framework 非常简单。只要你下载并解压它,并把发行版里的
/library 文件夹加到你的 include
路径里就行了。 你也可以把 library 文件夹移动到其它可共享的位置。具体可参考官方文档。


PS:一定要注意将 /library 文件夹加到你的
include 路径里,我就是没有做好这步,始终都没找到无法运行的原因,甚是苦恼!


十.其他问题

待续....

或者可以留言说一下遇到的问题..
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: