Apache+Mysql+PHP+Mac OS X 10.7 Lion 服务器配置环境 ...

时间:2022-09-19 16:35:18

Apache+Mysql+PHP+Mac OS X 10.7 Lion 服务器配置环境 ...

3818346感谢 Wally 分享于 2011-09-16 15:01|只看该作者|倒序浏览|打印
前言:

随着 MacX 这次平台切换和升级工作 , 我们也实现了一个很久之前的愿望就是使用苹果设备来做服务器级别应用. 如果有网站工作经历的朋友肯定知道 , 目前在行业内应用最多的还是 Windows server 系统外加 Microsoft SqlServer 数据库. 

当然目前很多大型网站都已经使用 PHP + Ngix + Mysql 构架 , 但对于大部分基础用户MS系列还是有自身的优势所在. 所以我们也跟随这个优势(包括盗版), 停留在MS构架上许多年. 而我们一直想真正的切换到苹果平台上 , 这也是这么多年一直被人碎碎念的地方, 比如这么一个苹果论坛竟然用windows系统啥的 . 哎. 

最后, 我们做了一个一直没有下定决心的工作就是一定要尝试来使用全 Mac 环境来搭建一个服务器系统. 
下面就介绍一下我们的猪脚 . 2011年夏季款 Mac mini 一台 配置如下图:
Apache+Mysql+PHP+Mac OS X 10.7 Lion 服务器配置环境 ... 
---

估计看到这里很多设备控就要出来骂街了 , Mac mini 怎能做服务器 , 服务器必须至强级别的CPU啊 . 
好吧 , 请看下文 .

---
硬件方面:
到手mini后 , 我们对其进行配置升级 . 
原500GB 硬盘 更换为 Toshiba 256GB SSD .
原4GB 内存 更换为 8GB 1333Hz 内存



系统方面:
系统预装的 Mac OS X Lion 10.7 , 通过在线更新更新为最新版本发帖日是 10.7.1 . 

因为 Mac OS X Lion 10.7 后 苹果操作系统就不区分 Server和 用户版 . Server 组件通过应用程序方式加载.
可以通过内建的 App Store 来购买 Mac OS X Lion 10.7 server组件.  价格是 50美金 , 折合人民币 350元左右.
Apache+Mysql+PHP+Mac OS X 10.7 Lion 服务器配置环境 ... 

(其实有些浪费 后文有说why)
---

服务器级别应用软件:
因Server Tools 内建了 Web 应用 , 如 Apache 2, PHP5. 

* Mysql
所以我们还需要数据库组件 那只有 Mysql 选择. 通过 mysql 官方网站下载最新版数据库 发帖日最新版为5.5.15
http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-5.5/mysql-5.5.15-osx10.6-x86_64.dmg
Apache+Mysql+PHP+Mac OS X 10.7 Lion 服务器配置环境 ... 
要千万记得下载 x86 64位版本 . 而且要下载dmg安装包, 安装包内有数据库程序 , 开机自动启动脚本, 和 系统偏好设置启动暂停数据库工具.


* Xcode
Xcode 4 通过 App Store 免费下载安装. 用于编译服务器插件与组件

---

安装如上所有软件.

---

开始进行配置工作: 


首先运行 Server 程序 选择管理哪个服务器.


Apache+Mysql+PHP+Mac OS X 10.7 Lion 服务器配置环境 ... 

进入后目前我们仅引用 Web 服务 所以直接到Web上勾选启动 PHP Web应用程序, 并且在最上面点击打开.
这样我们输入服务器ip如 127.0.0.1 就会看到默认的欢迎画面了. 

Apache+Mysql+PHP+Mac OS X 10.7 Lion 服务器配置环境 ... 

竟然忘记截图了 , 谁日后安装的话帮着截个图. 

---

安装好 Lion Server 的 Server Admin 会自动生成网站目录. 位置在 /资源库/Server/Data/Site/Default 
我们可以删除这个目录内的所有文件后复制我们自己网站的文件. 

配置 Apache 与 PHP
默认的Apache Web服务没有生成配置文件. 
首先打开终端输入如下字符
  1. sudo cp /etc/php.ini.default /etc/php.ini
复制代码

将默认配置文件复制到 /etc/ 下 然后我们在Finde内按 Command-Shift-G , 输入 /etc 进入目录
用文本编辑打开 php.ini 进行一些设置. 

例如:
  1. ;通过下面两项来调整PHP提交文件的最大值,比如phpMyAdmin中导入数据的最大值
  2. upload_max_filesize = 2M
  3. post_max_size = 8M
  4. ;比如通过display_errors来控制是否显示PHP程序的报错
  5. display_errors = Off
复制代码


如果提示没有权限修改 , 可以将文件复制到桌面修改后复制回去. 
修改成功后, 
在终端内输入
  1. sudo apachectl restart
复制代码
重启Apache 服务.  ( 这里用restart 属于强制重启, 还有一种优雅的重启方式 graceful 可以快速重启)
就此Apache 与 PHP 就搞定了 . 可以放个文件 比如 index.php 然后第一行加入
  1. <?php phpinfo(); ?>
复制代码


如果打开 http://127.0.0.1/index.php  显示 一些php的版本等信息说明如上均配置成功了.


配置 Mysql
* 接着之前我们已经安装过Mysql 现在需要进行一些配置. 
到 /etc 目录找到 bashrc 这个文件在其中加入如下
  1. #mysql
  2. alias mysql='/usr/local/mysql/bin/mysql'
  3. alias mysqladmin='/usr/local/mysql/bin/mysqladmin'
复制代码
这样方便日后全局调用mysql 与 mysqladmin , 不用再次进入所在目录. 

然后这点最关键. 
找到 /etc 内的 php.ini 文件 
找到 mysql.default_socket = /var/mysql/mysql.sock 将这端话完整的修改为
  1. mysql.default_socket = /tmp/mysql.sock
复制代码
否则当你连接mysql数据库的时候会提示
Can’t connect to local MySQL server through socket ‘/var/mysql/mysql.sock’

随后记得设置 root密码 , 因为默认的mysql root是空密码 . 
在终端内输入
  1. mysqladmin -uroot password "我的密码"”
复制代码
"我的密码" 就是您要设置的密码  密码不要用中文
日后修改root的密码:
SET PASSWORD FOR root=PASSWORD(‘我的密码’);


还有一种方式就是在启动的时候加入 –skip-grant-tables 来忽略密码.
当然最好的还是不要忘记密码哦.


就此就搞定了 Mysql 的配置. 

* 当然第一步先下载一个 PHPmyAdmin 来管理 Mysql 数据库
到 Phpmyadmin 网站下载最新的程序 下载phpMyAdmin
下载后将文件解压复制到 /default/phpmyadmin 内. 

将config.sample.inc.php 修改为 config.inc.php 修改如下设置
$cfg['Servers'][$i]['host'] = 'localhost'; 将localhost修改为 127.0.0.1 
否则会出现 “#2002 无法登录 MySQL 服务器”


然后就可以使用 http://127.0.0.1/phpmyadmin 来登陆操作数据库来
登陆后会发现需要 MCrypt 扩展 这个是一个加密算法库, 安装之前请先安装Xcode 4

首先下载 并且解压缩 libmcrypt-2.5.8.tar.bz2
一般我们就在 Download 下载目录内操作即可 解压缩后目录为 libmcrypt-2.5.8 

打开终端 输入 cd ~/downloads/libmcrypt-2.5.8/
输入
  1. ./configure --disable-posix-threads --enable-static
  2. make
  3. sudo make install
复制代码


然后下载php源代码用于编译, 10.7 自带的PHP版本是5.3.6 http://cn.php.net/distributions/php-5.3.6.tar.bz2

下载后一并解压缩. 

终端内输入
  1. cd ~/Downloads/php-5.3.6/ext/mcrypt
  2. phpize
  3. ./configure
  4. make
  5. cd modules
  6. sudo cp mcrypt.so /usr/lib/php/extensions/no-debug-non-zts-20090626/
复制代码


随后编辑 /etc/php.ini 加入
  1. extension=/usr/lib/php/extensions/no-debug-non-zts-20090626/mcrypt.so
复制代码


随后 重启 Apache 服务. 

-------

话说前文说 Server Admin 钱不值可能是因为我们用不到这些服务 比如 WIKI , ** , 地址本等等. 
而且 Server Admin中的 WEB 所提供的配置又少之可怜. 既然买了也罢还是有点用处 比如 内建的MAIL服务就省了很多事情. 

文章最后会有如何安装Apache的说明 . 

本文主要围绕 使用Server Admin 来进行 配置文件少许有些不同. 
如下几个配置文件位置:

/etc/apache2/httpd.conf                                : apache 总配置文件 (1)
/etc/apache2/sites/0000_any_80_.conf         : 站点总配置文件 (2)
/etc/apache2/sites/0000_any_80_网站名字.conf  :站点独立配置文件 (3)

从上到下是依次继承的关系. 
默认Web服务中会有一个 Default 的默认站点 通过 (2) 来配置.
如果新建的站点通过 (3) 来配置. 

首先我们一个服务器不可能只有一个网站 所以要开启虚拟主机功能.
新建的网站会自动出现 独立配置文件 如 (3) 
打开后会找到
<VirtualHost *:80> 
ServerAdmin webmaster@dummy-host.example.com 
DocumentRoot "/usr/docs/dummy-host.example.com" 
ServerName 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>

ServerAdmin 就是网站管理员 这个无所谓随便
DocumentRoot 是网站默认目录 这个无需更改
ServerName 最重要 这里改成你自己网站要绑定的域名. 
随后两个是日志 如无特殊要求无需修改. 

修改好后 重启apache . 

目前就所有都宣告配置完成...

-----

更多插件
在运行php方面会有一个 APC 的缓存加速 需要安装这个对于php运行方面有很大帮助.
打开终端:
首先进入downloads目录
输入:
cd ~/Downloads/

输入:
  1. curl -O ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.11.tar.gz
复制代码
下载 pcre 安装

  1. tar xzf pcre-8.11.tar.gz
  2. cd pcre-8.11
  3. ./configure --prefix=/usr/local
  4. sudo make
  5. sudo make install
复制代码



随后APC
  1. curl -O http://pecl.php.net/get/APC
  2. tar xzf APC
  3. cd APC-3.1.7/
  4. sudo phpize
复制代码


随后这点相当之关键:
请完整复制后复制到终端内输入

  1. MACOSXDEPLOYMENTTARGET=10.7 CFLAGS="-arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch x86_64 -g -Os -pipe" CXXFLAGS="-arch x86_64 -g -Os -pipe" LDFLAGS="-arch x86_64 -bindatload" ./configure
复制代码


随后

  1. sudo make
  2. sudo make install
复制代码


如果整个过程没有提示错误
在 /etc/php.ini 内加入 
extension=/usr/lib/php/extensions/no-debug-non-zts-20090626/apc.so
extension=apc.so


后 终端输入
sudo apachectl graceful
重启服务即可.




---




线程与限速组件
http://ivn.cl/2010/01/06/downloads-for-bandwidth-mod/
mod_bw-0.92.tar


下载后在 Downloads 目录解压缩


终端输入 
cd ~/Downlaods/mod_bw-0.92/
输入
  1. apxs -i -a -c mod_bw.c
复制代码


安装后到 httpd.conf 查看 ExtendedStatus On 前面的# 是否去掉.


随后到站点控制 如 (2) (3) 内设置
  1. BandWidthModule On
复制代码
开启限速模块


更多配置说明可以参看 http://legacy.ivn.cl/files/txt/mod_bw-0.9.txt
根据实际情况来配置即可. 




====




最后如何使用独立 Apache 
因为Lion系统自带 Apache 和php 如果没有 ServerAdmin 可以直接修改 /apache2/httpd.conf 去掉
#LoadModule php5_module libexec/apache2/libphp5.so 前面的#即可启动php服务.
/etc/php.ini.default 改成/etc/php.ini 然后其中的参数修改了重启apache2ctl graceful即可生效。
然后在system preference(系统偏好设置)里面的sharing(共享)的web sharing(网络共享)开启即可。


网页文件默认在 ~/Sites/ 内. 




====


防火墙方面设置:
需要下载 Server tools : 
http://supportdownload.apple.com/download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/Mac_OS_X/downloads/041-1780.20110720.Cfrg9/ServerAdminTools.dmg


这是配置和管理 Server 的工具集
图片
Apache+Mysql+PHP+Mac OS X 10.7 Lion 服务器配置环境 ... 
一般我就使用Server Admin即可




开启设置服务的更多配置 , 打开 Firewall , 点击 Settings 在 Services 里面有目前所有的系统服务内容. 可以打勾已允许通过防火墙. 
Apache+Mysql+PHP+Mac OS X 10.7 Lion 服务器配置环境 ... 
这里记得激活 SSH  / RPC / Remote AppleEvents / Server admin and server preferences / ARD- Romote managemnt/ Http - web service 


如果您还有其他服务记得打开防火墙放行.
如果自己把自己挡外面了 可以通过SSH 重置防火墙规则
首先通过 
SSH 用户名@ip
登陆服务器 输入
sudo ipfw -q flush 
来重置防火墙规则


------




管理与维护


1. 远程控制
采用苹果自己的 Apple remote Control 发帖日最新版本 3.5.1 . 
在服务器端 系统偏好设置 共享内 打开
远程登陆 与 远程管理 并且给两个服务授权用户 从安全性考虑不要选择所有用户.
Apache+Mysql+PHP+Mac OS X 10.7 Lion 服务器配置环境 ...Apache+Mysql+PHP+Mac OS X 10.7 Lion 服务器配置环境 ... 



2. ftp文件交换
远程登陆提供了 SSH 登陆方式 同时SSH也可以用于 SFTP的 ftp文件传输. 
同样记得要配置授权账户登陆.
Apache+Mysql+PHP+Mac OS X 10.7 Lion 服务器配置环境 ... 


3. 服务器监控
您还可以在本地电脑上安装 Server Admin tools来监控和查看您的服务器不需要进行远程登陆


Server Admin 一样会提供全图形化的界面.


图片
Apache+Mysql+PHP+Mac OS X 10.7 Lion 服务器配置环境 ... 


------


懒人法:
一键化安装有
MAMP MAMP Pro 2.0.3
MacPort 
可以提供一键化的自动化安装 对于新用户来说方便很多. 


--------

扩展与高级应用:

备份:
在备份方面 , 这里将不再采用RAID模式进行操作因为一个小mini如果装两个硬盘同时放并且长时间开机运行势必会有温度问题. 所以我们考虑使用 Time Machine 来进行实时备份工作.

通过随机自带的火线800 串联一个7200转速的硬盘足够满足目前所有的备份工作. 

集群化:
因为Mac mini 占地小所以 对于日后的集群化有很多帮助. 
一个1U的面积的设备内可以存放至少8台mini . 通过一个集群路由可以将mini放入统一网段.
区分 Mysql后台数据服务器与 web服务器 , 如还可以区分图片附件服务器. 而8台一起的性能绝对高于同面积的1U服务器. 

并且内建的 ThunderBolt 传输接口可以快速的进行服务器内容复制 , 快速增加新服务器以用于网络服务. 

安全方面:
因为采用UNIX核心 安全方面自然底子就很好, 但是具体我们还需要让时间来检验. 毕竟苹果在自身系统安全方面也下了很大的功夫. 我们在这点依然坚信这点. 系统更新与升级方面都是全自动的所以这些都不需要考虑. 最重要的就是无需杀毒软件帮助的安全措施让网络维护管理人员感到放心很多. 

而大多数安全问题都是来自于网站本身 所以这个就希望开发人员多多检查作业咯.

维护成本方面:
因为 Mysql , Apache , PHP 都是免费开源的所以成本几乎等于 0.
而Lion优势买机器自带的所以成本已经包含在设备内 . 如果不购买Server套件 手动配置除MAIL服务以外的组件几乎也没有成本. 所以相比使用 Windows 来说就降低了非常多. 一般商业应用 一个 WIndows server授权既要3000块 . Ms Sql数据库就要上万了. 

结语:
就如5年前 我们希望更多人能将mac用于生活一样 , 希望本文章能帮助想将 mac 用于 服务器商业应用的公司或者朋友. 而再过5年我们会看到mac能应用到更多领域. 



------
在做这些时候, 互联网内尤其国内使用Mac用于 Server环境的基本没有或者很少有分享出来的. 所以我们也耗费了许多时间查找相关资料. 感谢如下国内网站之前作出的贡献. 

感谢如下作者与网站
在Mac OS X中配置Apache + PHP + MySQL 随网之舞 Mac OS X Leopard: 配置Apache, PHP, SQLite, MySQL, and phpMyAdmin(二)中国在线教育
国外网站无数就不一一列举了.