Mac OS X 是由美国苹果公司开发的操作系统,通常它运行在如 MacBook、Mac 等个人电脑中。事实上,经过适当的配置以及软件的安装,也可以以 Mac OS X 为基础构建服务器。这里就来介绍一下如何在 Mac OS X 运行 Web 服务器。由于 Mac OS X 内置了 Apache 和 PHP,因此,几乎非常少的配置即可让 Web 服务运行在 Mac OS X 上。不过,这种非常少的配置是需要用户具有比较良好的 Unix 使用经验做基础的,后面的介绍也基本围绕着这种方式展开的。由于 Mac OS X 是一款非常优秀的操作系统,想要把 Web 服务的配置变得平易近人,也是非常容易的。OS X Server 就为用户提供了诸如 Web 服务、VPN 服务、FTP 服务等简明的图形化操作,有需要的用户可去 App Store 下载、安装 Server.app。除此而外,单就 Web 服务而言,另有 XAMPP、MAMP Pro 等已经打包好的开箱即用软件可供使用。
一、启动 Apache
在 Mac OS X 10.8 以前启动 Apache 很简单,只需在系统设置偏好(System Preferences)中设置 Web 共享(Web Sharing)即可。不过自 Mac OS X 10.8 以后,Web 共享(Web Sharing)取消了。因此,启动 Apache 需采用下述方法,先打开终端(Terminal.app),然后在终端运行
$ sudo apachectl start
再输入帐号密码,这样 Apache 就运行了。为了确认 Apache 是否正常工作,可在浏览器中输入 http://127.0.0.1 ,或者在终端输入
$ open http://127.0.0.1 &
正常情况下,就可以看到一个内容为 “It works!” 的页面,该页面对应 /Library/WebServer/Documents/index.html.en 文件。其中,/Library/WebServer/Documents/ 是 Apache 的默认(系统级)根目录。若想获知 Apache 的版本,可运行
$ apachectl -v Server version: Apache/2.2.26 (Unix) Server built: Jun 20 2014 13:57:09
便会看到 Mac OS X 自带 Apache 版本信息。 为了更好的配置 Apache 服务,这里再来指出几个非常重要的文件与目录。第一个是 Apache 服务的配置文件目录,位于 /etc/apache2,里面包含了 Apache 服务的基本配置文件 httpd.conf。/etc/apache2 中还有很多其他文件和目录,在后面会陆续涉及到其中的一些。第二个是管理 Apache 服务的启动、停止等配置的文件,位于 /Library/LaunchDaemon/org.apache.plist。第三个是 Apache 的日志文件目录,位于 /var/log/apache2/,如果 Apache 启动后有任何问题,记得去这个地方看看,兴许就能找到解决问题的蛛丝马迹。
二、开启 PHP 支持
在终端中运行
$ sudo nano -w /etc/apache2/httpd.conf
打开 Apache 的配置文件,找到如下的行
#LoadModule php5_module libexec/apache2/libphp5.so
把前面的#号去掉,也即
LoadModule php5_module libexec/apache2/libphp5.so
保存 Apache 的配置文件。该来配置 PHP 了,首先查看 PHP 的配置文件 /etc/php.ini 是否存在,若没有的话,请运行
$ sudo cp /etc/php.ini.default /etc/php.ini
适当的调整一下配置,通过编辑 /etc/php.ini 文件,也即
$ sudo nano -w /etc/php.ini
来配置各种 PHP 功能。比如:
;调整时区 date.timezone = "Asia/Shanghai" ;通过 display_errors 来控制是否显示 PHP 程序的报错信息,这在调试 PHP 程序时非常有用 display_errors = Off
再来看一下 PHP 与 Apache 的整合配置文件:
$ sudo nano -w /etc/apache2/other/php5.conf <IfModule php5_module> AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps <IfModule dir_module> DirectoryIndex index.html index.php </IfModule> </IfModule>
为了让所有的配置生效,需运行
$ sudo apachectl restart
重启 Apache,这样 PHP 就可以用了。
为了测试 Apache 服务器上的 PHP 是否正常工作,可在终端中运行
$ mkdir -p ~/Sites
来创建 Apache 的用户级根目录,随后再在用户级根目录中新建一个 info.php 文件
$ cat > info.php << EOF <?php phpinfo(); ?> EOF
不妨假设 Mac OS X 系统用户 james 便是 Apache 服务的主要使用者,以上 Apache 的用户级根目录都是在 james 用户的家目录创建的。于是,在 Mac OS X 的浏览器 Safari 的地址栏中输入 http://127.0.0.1/~james/info.php,或者
$ open http://127.0.0.1/~james/info.php &
便会看到有关 PHP 的信息,比如 Mac OS X 10.9 中内置 PHP 版本号是 5.3.13。
三、安装 MySQL
由于 Mac OS X 没有内置 MySQL,所以需要手动安装,可从 MySQL 的官方网站 http://mysql.com/downloads/mysql/MySQL 下载。目前 MySQL 的最稳定版本是 5.6,选择合适版本,如这里选择了 mysql-5.6.16-osx10.7-x86_64.dmg。进入下载页面,会提示注册 Oracle 帐号或者以 Oracle 帐号登录;当然,也可选择 “No thanks, just start my download.” 直接下载,例如
$ curl -O http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.16-osx10.7-x86_64.dmg
打开下载的 dmg 文件,会发现里面有 4 个文件,分别是 mysql-5.6.16-osx10.7-x86_64.pkg、MySQLStartupItem.pkg、MySQL.prefPane 与 ReadMe.txt。首先点击安装 mysql-5.6.16-osx10.7-x86_64.pkg,这是 MySQL 主安装包。一般情况下,安装文件会自动把 MySQL 主程序安装到 /usr/local 下。为了让 MySQL 在 Mac OS X 开机时自动启动,安装包里提供了 MySQLStartupItem.pkg,安装它。有了它,可以在终端控制 MySQL 的运行、重启以及关闭之类,例如
$ sudo /Library/StartupItems/MySQLCOM/MySQLCOM start $ sudo /Library/StartupItems/MySQLCOM/MySQLCOM restart $ sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop
若想以图形界面方式管理 MySQL 的启动,可安装包里的 MySQL.prefPane。安装它之后,就可在“系统设置偏好”中看到 MySQL 的图标,通过它就可以控制 MySQL 是否开启以及开机时是否自动运行。另外,使用 PHP 连接 MySQL 可能会报错
Can’t connect to local MySQL server through socket ‘/var/mysql/mysql.sock‘
或使用 localhost 无法连接 MySQL 而需要 127.0.0.1,原因是连接时 PHP 默认去找 /var/mysql/mysql.sock,但 MAC 版的 MySQL 改动了文件位置,放在 /tmp 下了。处理办法是按如下修改 php.ini:
$ nano -w /etc/php.ini mysql.default_socket = /tmp/mysql.sock
到这里 MySQL 就基本安装完毕了。 通过运行
$ sudo echo /usr/local/mysql/bin >> /etc/paths.d/80-mysql
将 mysql 的路径加入系统环境变量 PATH 中;当然,也可以代之以用户级环境变量设置,例如
$ echo "export PATH=/usr/local/mysql/bin:\$PATH" >> ~/.bashrc'
这样就可以在终端中比较简单地通过命令进行相应的操作。 在 MySQL 没有启动时,直接运行 mysql 或 mysqladmin 命令会提示
Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
这就需要我们先通过控制面板或者直接运行
$ sudo /usr/local/mysql/support-files/mysql.server start $ sudo /usr/local/mysql/support-files/mysql.server restart
命令来启动 MySQL,之后再运行 mysql 或 mysqladmin 命令就正常了。比如安装完毕后,MySQL 的 root 默认密码为空,如果要设置密码可以在终端运行
$ mysqladmin -u root password "mysqlpassword"
来设置,其中 mysqlpassword 即 root 的密码。再如查看 MySQL 的版本
$ mysql -V
注意:Mac OS X 的升级或其他原因可能会导致 MySQL 启动或开机自动运行时,在 MySQL 操作面板上会提示 “Warning:The /usr/local/mysql/data directory is not owned by the ‘mysql’ or ‘_mysql’”,这应该是某种情况下导致 /usr/local/mysql/data 的宿主发生了改变,只需要运行
$ sudo chown -R _mysql /usr/local/mysql/data
即可。 MySQL 的默认日志位于它的数据目录,也即 /usr/local/mysql/data 之中。不过默认的错误日志文件名是主机名生成的,稍作配置
$ sudo nano -w /usr/local/mysql/my.cnf [mysqld] log-error=/usr/local/mysql/data/mysqld.log
由于它与系统目录分离,因此 mysql 不会自动清除日志,可以使用它自带的 mysql-log-rotate 脚本,例如
$ sudo /usr/local/mysql/support-files/mysql-log-rotate
或手动编写脚本清除旧日志。
四、MAMP 的简单应用
1、WordPress 的配置
先通过下述命令行为 WordPress 创建一个名为 db_wordpress 的数据库,并设置数据库用户 wordpress_user、密码为 654321 以及对 WordPress 数据库赋予所有权限:
$ sudo mysql -uroot -p mysql> create database db_wordpress; mysql> grant all privileges on db_wordpress.* to 'wordpress_user'@'127.0.0.1' identified by '123456'; mysql> FLUSH PRIVILEGES; mysql> EXIT
数据库创建完成之后,开始安装
$ curl -O http://wordpress.org/latest.zip $ sudo unzip latest.zip -d /Library/WebServer/Documents/ $ sudo mv /Library/WebServer/Documents/wordpress/wp-config-sample.php /Library/WebServer/Documents/wordpress/wp-config.php
接着根据前面创建的数据库信息配置 WordPress:
$ sudo nano -w /Library/WebServer/Documents/wordpress/wp-config.php // ** MySQL settings – You can get this info from your web host ** // /** The name of the database for WordPress */ define(‘DB_NAME’, ‘db_wordpress‘); /** MySQL database username */ define(‘DB_USER’, ‘wordpress_user‘); /** MySQL database password */ define(‘DB_PASSWORD’, ‘123456‘); /** MySQL hostname */ define(‘DB_HOST’, ‘127.0.0.1‘);
为了让所有的 WordPress 设置生效,需重启 Apache
$ sudo apachectl restart
在浏览器输入 http://127.0.0.1/wordpress 进入 WordPress;或者
$ open http://127.0.0.1/wordpress &
第一次进入 WordPress 时,需要完成它的初始化安装。欢迎来到 WordPress 的世界,当然,还有后续的管理工作要做,例如
$ sudo nano -w /Library/WebServer/Documents/wordpress/.htaccess Options +FollowSymLinks
有关这些的介绍,请查阅官网的相关介绍。
2、MediaWiki 的配置
先为 MediaWiki 创建一个数据库,也即
$ sudo mysql -uroot -p mysql> create database db_mediawiki; mysql> grant all privileges on db_mediawiki.* to 'mediawiki_user'@'127.0.0.1' identified by '654321'; mysql> FLUSH PRIVILEGES; mysql> EXIT
创建了名为 db_mediawiki 的数据库,设置用户 mediawiki_user,密码为 654321,对 MediaWiki 数据库赋予所有权限。数据库创建完成之后,开始安装 MediaWiki:
$ curl -O http://releases.wikimedia.org/mediawiki/1.22/mediawiki-1.22.3.tar.gz $ tar zxvf mediawiki-1.22.3.tar.gz -C ~/Sites/
重启 Apache
$ sudo apachectl restart
让所有的 MediaWiki 设置生效。由于 MediaWiki 是安装在 Apache 的用户级根目录中,需在浏览器中输入 http://127.0.0.1/~james/mediawiki,或者
$ open http://127.0.0.1/~james/mediawiki
第一次打开 MediaWiki 会需要输入相关信息,并点击 Install/Upgrade Database 完成最后的安装。安装完成之后,会生成 Localsetting.php。将它下载到本地,再将它复制到 ~/Sites/mediawiki 目录,也即
$ cp /path/to/Localsetting.php ~/Sites/mediawiki
设置访问权限如下
$ sudo nano -w /etc/apache2/users/mediawiki.conf Alias /mediawiki "/Users/james/Sites/mediawiki" <directory "/Users/james/Sites/mediawiki/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order allow,deny Allow from all <directory "/Users/james/Sites/mediawiki/upload/"> AllowOverride None AddType text/plain .html .htm .shtml # php_admin_flag engine off # This doesn't seem to work. RewriteEngine on RewriteRule ^/wiki/en/(.*)$ /mediawiki/wiki.phtml?title=$1
至此,MediaWiki 站点基本完工了。
3. phpBB3 的配置
$ mysql -u root -p mysql> create database db_phpdb3; mysql> grant all privileges on db_phpbb3.* to 'phpbb3_user'@'127.0.0.1' identified by '654123'; mysql> FLUSH PRIVILEGES; mysql> EXIT
$ curl -O -J -L http://prdownloads.sourceforge.net/phpbb/phpbb-3.0.12.tar.bz2
$ tar jxvf phpbb-3.0.12.tar.bz2 -C ~/Sites $ chmod 644 ~/Sites/phpbb/config.php $ open http://127.0.0.1/~james/phpbb &
$ rm -rf ~/Sites/phpbb/install
$ curl -O -J -L https://www.phpbb.com/customise/db/download/id_91456 $ tar jxvf mandarin_chinese_simpliefied_script_1.0.3.tar.bz2 $ cd mandarin_chinese_simpliefied_script_1.0.3/mandarin_chinese(simpliefied_script)_1.0.3 $ cp -r * ~/Sites/phpbb/