LAMP 组合的安装

奥索网,曾经是国内开放源码界的一个很好的例证,可惜终于要赶上网站倒闭的潮流,在2000年9月开始到2001年上半年,没有生存了多少时间和空间。但是笔者实施了那个网站的整个系统的架构,并且是奥索网让笔者开始接触开放源码,知道了美妙的 LAMP 架构。

LAMP (Linux + Apache + MySQL + PHP/Perl/Python) 近几年来,已经成为Web 社区的事实标准。本文我们将介绍LAMP组合的安装,本文假定你的机器上已经安装了Linux ,如果你对Linux 的安装还有什么问题的话,可以去相关的一些开放源码站点论坛上发表贴子,向其他网友寻求帮助。也可以向相关的厂商寻求技术支持。本文的LAMP中的 P,暂时解释为PHP,因为本站是基于 Zope + Python 结构架构的,所以本站在以后的文章中将着重向这方面倾斜。所有LAMP组合中的软件都是开放源代码产品,所以您不必担心产品的价格以及版权问题。相反,有广大的开放源码社区开发人员的不断努力,这些产品的版本更 新速度反而比那些昂贵的专有软件更快。虽然Linux 因为界面问题,会让您望而却步,但是您不必担心,现在,这些软件都采用了浏览器管理界面,好多都提供phpMyAdmin(一个利用PHP 语言在浏览器上管理MySQL的程序)以及WebMin(通过浏览器来管理系统)来让您方便的管理系统。

PHP现在的版本已经到了4.0.4pl1,是一门面向对象的交叉平台的服务器端脚本语言。可以嵌入HTML语言中,可以作为Apache 的模块来运行。下面我们以 tarball(.tar.gz)格式(和它相对的是RPM 格式)的版本为例子,来介绍安装过程。

首先,去对应的网站下载最新版本的源码。为了保持系统目录分布的一致性,建议把他们解开到/usr/local/src 目录:

#cd /usr/local/src
#tar xvfz filename.tar.gz
先介绍MySQL的安装:

# cd /usr/locl/src/mysql-3.23.35
# ./configure –prefix=/usr/local/mysql
这样就把MySQL 的安装目录设置为 /usr/local/mysql ,然后运行make 来编译源代码,接下来就可以用 make install 来安装了。

安装完毕后,需要把MySQL 库加入系统,采用ldconfig 命令来实现:

#echo “/usr/local/mysql/lib/mysql” >> /etc/ld.so.conf
#ldconfig -v | grep libmysqlclient
然后可以看到系统返回:

libmysqlclient.so.10 => libmysqlclient.so.10.0.0
让MySQL 在启动时自动运行:

#echo “/usr/local/mysql/bin/safe_mysqld > /dev/null &” >> /etc/rc.d/rc.local
接下来初始化数据库(切换到/usr/local/mysql 目录):

# ./scripts/mysql_install_db
启动MySQL 服务:

# bin/safe_mysqld > /dev/null &
增加路径:

# PATH=”$PATH:/usr/local/mysql/bin”
测试 MySQL:

#mysqladmin version
如果能返回MySQL 的所有信息,就表示您的MySQL 已经安装成功了。下面为了安全起见,需要给root用户(数据库中的超级用户),设置口令:

#mysql -h -u root -p
按照提示输入口令以后,MySQL 的设置就算大功告成了。

接下来的部分就是 Apache 和 PHP 的安装了。如果你的系统已经存在Apache ,那么需要首先做好备份。然后进入Apache 的源代码目录:

#cd /usr/local/src/apache_1.3.19
输入配置命令:

#./configure –prefix=/usr/local/apache
然后改变到 PHP 的源代码目录:

#cd /usr/local/src/php-4.0.4pl1
配置PHP 的编译命令:

#./configure –with-apache=../apache_1.3.19 –with-mysql=/usr/local/mysql
运行 make 和 make install , PHP就安装成功了。

改变目录到 Apache 源代码所在:

#cd ../apache_1.3.19
因为增加了 PHP 模块,所以需要重新配置Apache 的编译文件。

#./configure –prefix=/usr/local/apache –activate-module=src/modules/php4/libphp4.a (注意这里的路径,后面的文件确实是不存在的,不要担心。)

然后运行make 和 make install 您就可以在 /usr/local/apache 目录下看到apache 的几个目录了。为了让Apache 能认识那些以 PHP 结尾的文件,我们需要修改 /usr/local/apache/conf/httpd.conf

找到下面的行,把行首用作注释的#号去掉:

AddType application/x-httpd-php .php
这样,Web 服务器就能认识那些 .php 结尾的文件,否则当您浏览网站时,浏览器会提示您存盘。为了让Apache 自动认识 index.php 作为首页我们还必须修改DirectoryIndex 行,添加 index.php:

DirectoryIndex index.html index.php
然后,重新启动 Apache:

#killall -HUP httpd
可以在 /usr/local/apache/htdocs 目录下,建立一个 testphp.php 的文件,内容为:

?php
phpinfo();
?〉
然后在浏览器上输入 http://localhost/testphp.php 就应该看到你当前的 PHP 设置情况。

以上介绍的 Apache/PHP 安装方法为静态编译的方法。以后每次有新的版本出来或者添加新的模块时,必须重新编译Apache ,需要花费较长的时间,我们不推荐这种方法,Apache 1.3 以后的版本采用了 DSO(动态共享对象)技术,实现了模块的动态安装,这种方法不仅适用于PHP ,对其他模块,例如 mod_perl,mod_python 都适用,因此,笔者推荐采用这种方法:

编译Apache:

#./configure –prefix=/usr/local/apache –enable-module=most –enable-shared=max
#make
#make install
然后编译PHP:

#./configure –with-apxs=/usr/local/apache/bin/apxs –with-mysql=/usr/local/mysql
#make
#make install
之后的步骤和静态部分一样,主要就是修改httpd.conf 。 区别两种安装方法最简单的办法就是使用命令:

#httpd -l
看输出结果,静态编译没有 mod_so.c 模块。

笔者相信 LAMP ,作为一个廉价的,开放源码的,高性能的Web 开发平台,在我国相对落后的互联网建设中,在这些年“政府上网”、“企业上网”、“金字工程”的号召下,会发出璀璨的光芒,照亮Web 平台。在这光芒的后面,只有两个字来衬托:“服务”。

FreeLAMP 将会为这两个字而努力,再努力!

共列出 10 个点评,仅显示索引。
MySQL 忘记口令的解决办法
by 徐永久 on 2001年10月16日 20:36
如果 MySQL 正在运行,首先杀之: killall -TERM mysqld。
启动 MySQL :bin/safe_mysqld –skip-grant-tables &
就可以不需要密码就进入 MySQL 了。然后就是
>use mysql
>update user set password=password(“new_pass”) where user=”root”;
>flush privileges;
重新杀 MySQL ,用正常方法启动 MySQL 。

MySQL 最好从 source 编译
by 徐永久 on 2001年10月16日 20:37
编译参数:
./configure –prefix=/usr/local/mysql –with-berkeley-db –with-innodb –without-docs –with-charset=latin1 –with-extra-charsets=gb2312然后是 make;make install

Apache 的 .htaccess 文件
by 徐永久 on 2001年10月16日 20:37
AuthType Basic
AuthUserFile C:\.htuser.dat
AuthGroupFile C:\.htgroup.dat
AuthName “My Private Area”
require user user1 user2
require group group1 group2其中的 UserFile 由 htpasswd -c filename username
产生。 以后添加用户不需要 -c 参数。GroupFile 的内容为:
groupname:user1 user2 user3 …另外在 httpd.conf 中最好对需要保护的目录写上:
Options None
AllowOverride AuthConfig
Order Allow, Deny
Allow from All
这样你就可以根据用户来保护自己的目录了。

徐永久谢谢你!
by caozhengh on 2002年01月12日 04:37
因为有你的网站,我入门学习LAMP碰到的大量问题,终于有地方可以解决了。 跟随你的caozhengh

在组合的最后,包括一个jsp不好吗?
by monkey on 2002年01月14日 22:29
我觉得jsp也是个不错的选择!

安装方法的简化版本
by 徐永久 on 2002年03月03日 02:48
首先安装 MySQL:
# ./configure –prefix=/usr/local/mysql
# make
# make install
# ./scripts/mysql_install_db
# bin/safe_mysqld > /dev/null &
# PATH=”$PATH:/usr/local/mysql/bin”
# mysqladmin version然后安装 Apache :
# ./configure –prefix=/usr/local/apache –enable-module=most –enable-shared=max
# make
# make install
然后编译PHP:
# ./configure –with-apxs=/usr/local/apache/bin/apxs –with-mysql=/usr/local/mysql
# make
# make install
然后安装 Zend Optimizer:
# ./install.sh看看 phpinfo() 的输出,就成功了。

Apache 2.0.35 和最新版本的 PHP 4.3-Dev 的集成
by 徐永久 on 2002年04月10日 14:19
如果您要查找最新版本的 Apache 2 和 PHP 的集成,请看本文: Apache 2.0.35 和最新版本的 PHP 4.3-Dev 的集成

Re: LAMP 组合的安装
by xm on 2002年10月30日 18:17
请 问我想在sun 公司的solaris 8系统上安装Apache + MySQL + PHP,请问如何设置及安装,我浏览了www.sunsoftware.com和sunsite.unc.edu等网站,下载了一些符合GNU的软件,如 gcc、tar等,但不知是否有文章介绍在solaris 8系统上安装Apache + MySQL + PHP,以及qmail邮件系统

MySQL 的安装
by 徐永久 on 2003年08月12日 00:19
MySQL 1040 错误:
Too many connections修改 my.cnf
添加:max_connections = 1000ERROR 2002:
‘/var/lib/mysql/mysql.sock’ does exist
有人解释为权限问题。
本人遇到的问题是 PHP 应用默认使用 /var/lib/mysql/mysql.sock 。
修改 php.ini :
mysql.default_socket = /tmp/mysql.sock