免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3080 | 回复: 4
打印 上一主题 下一主题

[Web] 在FreeBSD下安装mysql+apache+php [原创] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-20 19:08 |只看该作者 |倒序浏览
说在前面的话:
虽然安装APACHE和PHP已经不是什么新鲜话题,但我仍然要把自己的安装经验公布出来,毕竟我希望这篇文章能够给部分朋友一些帮助。



在FreeBSD下安装mysql+apache+php [原创]
===============================================

作者: Wandering   E-mail: wandering_997@yahoo.com


[目录]

   1. 安装Mysql
   2. 安装Apache
   3. 安装PHP
   4. 配置httpd.conf
   5. 启动/停止apache



1. 安装Mysql
================


《MySQL Reference Manual》手册中提供了标准安装方法,详见"MySQL Reference Manual -> 2. Installing MySQL
-> 2.7. Installing MySQL on Other Unix-Like Systems"


1.1 二进制版本的安装方法            # created by wandering 2005/04/09
--------------------------
#
# 目前的Mysql都是编译好的二进制代码,configure后可直接使用,且无需初始化数据库
# 默认情况,我把安装文件放在/usr/src目录中,把应用安装到/usr/local目录中
#

shell> 先创建mysql用户和mysql组
shell> cd /usr/local
shell> tar zxvf mysql-standard-4.1.11-unknown-freebsd4.7-i386.tar.gz
shell> ln -s ./mysql-standard-4.1.11-unknown-freebsd4.7-i386 ./mysql
shell> cd mysql
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root  .
shell> chown -R mysql data
shell> chgrp -R mysql .
shell> bin/mysqld_safe --user=mysql &
shell> /usr/local/mysql/bin/mysqld_safe --user=root &

shell> echo "/usr/local/mysql/bin/mysqld_safe &" >> /etc/rc.local

OK,Mysql已安装完毕。



1.2 源代码版本的编译安装方法            # added by wandering 2005/12/28
-----------------------------
有时我们也需要编译安装, 最近我在FreeBSD6.0上安装Mysql时, 发现Mysql的二进制版本最高只支持
FreeBSD5.3, 经测试, 二进制的安装方法没有成功. 只好手工编译安装了.

安装之前一定要仔细看看INSTALL-SOURCE这个文件, 非常之有用啊!!!

shell> 先创建mysql用户和mysql组
shell> tar zxvf mysql-5.0.18
shell> cd mysql-5.0.18
shell> ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
shell> make
shell> make install
shell> pw group add mysql
shell> pw user add -n mysql -d /usr/local/mysql -s /usr/sbin/nologin
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> cd /usr/local/mysql
shell> mkdir data
shell> bin/mysql_install_db --user=mysql
shell> chown -R root  .
shell> chown -R mysql data
shell> chgrp -R mysql .
shell> bin/mysqld_safe --user=mysql &
shell> echo "/usr/local/mysql/bin/mysqld_safe &" >> /etc/rc.local

OK, 可以用了.


用netstat命令可以看到服务器3306端口处于监听状态。

/usr/local/mysql/bin/mysqladmin -u root -p password <new_password>
enter password:        # 修改root口令,root初始密码为空,所以直接回车就可以了

测试一下新的密码:
mysql -u root -p mysql
enter password:<new_password><CR>




2. 安装Apache
===============

# tar zxvf httpd-2.2.0.tar.gz
# cd httpd-2.2.0
# ./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=all --enable-rewrite=shared --enable-speling=shared && make && make install
#

**注: 其中--enable-so选项是配置Apache以共享后安装的模块



3. 安装PHP
============

步骤:

   3.1 安装gd-2.0.33.tar.gz
   3.2 安装libxml2-2.6.19.tar.gz
   3.3 安装libiconv-1.9.1.tar.gz
   3.4 安装php


3.1 安装gd
------------

gd需要以下模块:

. zlib-1.2.3.tar.gz
. libpng-1.2.8-config.tar.gz
. freetype-2.1.10.tar.gz (可选装)
. xpm-3.4k.tar.gz (可选装)
. jpegsrc.v6b.tar.gz (可选装)


3.1.1 安装zlib
-----------------
# tar zxvf zlib-1.2.3.tar.gz
# cd zlib-1.2.3
# ./configure && make && make install

默认情况zlib被安装到/usr/local/include/
http://www.zlib.net/


3.1.2 安装libpng
----------------
# tar libpng-1.2.8-config.tar.gz
# cd libpng-1.2.8-config
# ./configure && make && make install

默认情况libpng被安装到/usr/local/include/libpng/
http://www.libpng.org/pub/png/libpng.html


3.1.3 安装gd
--------------
# tar zxvf gd-2.0.33.tar.gz
# cd gd-2.0.33
# cp /usr/local/include/png.h .
# cp /usr/local/include/pngconf.h .
# ./configure && make && make install
#

*** 我遇到过gd_png.c找不到png库文件的情况, 这时要手工把png.h和pngconf.h两个文件
拷贝到gd_png.c所在目录就可以了. ***

默认情况gd被安装到/usr/local/include/
http://www.boutell.com/gd/



3.2 安装libxml
-----------------
# tar zxvf libxml2-2.6.19.tar.gz
# cd libxml2-2.6.19
# ./configure && make && make install
#



3.3 安装libiconv
-------------------
# tar zxvf libiconv-1.9.1.tar.gz
# cd libiconv-1.9.1
# ./configure && make && make install
#


3.4 安装PHP
--------------
# tar zvxf php-5.1.2.tar.gz
# cd php-5.1.2
# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache/bin/apxs --with-libxml-dir=/usr/local/include/libxml2/libxml --with-gd --with-zlib && make && make install
#

*** 注: 在configure过程中, 可能会遇到下面的错误! Sorry, I cannot run apxs. ***

configure: error: Sorry, I cannot run apxs. Either you need to install Perl or you need to pass the absolute path of apxs by using --with-apxs=/absolute/path/to/apxs

网上有很多介绍解决方法的, 但最经典的只有Darrell Brogdon在2001/03/15写的<<Installing PHP as an Apache DSO>>, 这篇文章在绿盟有徐永久在2002-03-18翻译的中文版<<在Apache上以DSO方式安装PHP>>, 不过上面著名他本人就是文章的作者, 这点我表示怀疑.

我之所以说这么多, 只是想说明目前我看到的方法, 没有能够真正解决这个问题的.

OK, 下面我说明一下我是如何解决这个问题的:

首先, 通过错误提示, 我们得知"I cannot run apxs". 我一直以为是apxs安装有问题, 但找了很久仍未得到合理的解释和解决方法.

于是我直接运行"/usr/local/apache/bin/apxs"这个脚本, 得到下面的错误提示:

bash: ./apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or directory

哦, 给人的感觉很像仍然是apxs程序有问题, 但问题在哪里呢? "interpreter"是什么呢? interpreter是"解释程序"!

嗯, 看来我们接近答案了, 运行"head -1 /usr/local/apache/bin/apxs"得到下面内容:

#!/replace/with/path/to/perl/interpreter -w

天啊, 这里没有指明正确的perl执行程序的位置! 原来这就才是真正的问题原因所在!!!

把这一行更改为"#!/usr/bin/perl -w". 再运行php的configure, 一切正常!

至此, 问题已解决.

*** Sorry, I cannot run apxs. ***



4. 配置httpd.conf
====================

4.1 找到ServerName , 将 替换为本机的域名
------------------------------------------
ServerName www.example.com:80


4.2 找到"DirectoryIndex index.html", 在"index.html"后面加入"index.php"
------------------------------------------------------------------------
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>


4.3 找到<IfModule mime_module>, 在AddType application/x-gzip .gz .tgz下面加入
-------------------------------------------------------------------------------
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps


4.4 找到<Directory "/usr/local/apache/htdocs"> ... </Directory>, 在下面加入
-----------------------------------------------------------------------------
<Directory /data1/apache/htdocs/it>
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<Directory /data1/apache/htdocs/it_old>
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>


4.5 找到<Directory "/usr/local/apache/cgi-bin"> ... </Directory>, 在下面加入
------------------------------------------------------------------------------
<Directory "/data1/apache/htdocs/perl">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>


4.6 找到<IfModule alias_module> ... </IfModule>, 在中间区域加入
----------------------------------------------------------------
Alias /it "/data1/apache/htdocs/it"
Alias /it_old "/data1/apache/htdocs/it_old"

ScriptAlias /perl/ "/data1/apache/htdocs/perl/"




5. 启动/停止apache
=====================
/usr/local/apache/bin/apachectl start
/usr/local/apache/bin/apachectl stop

**注: 要确保主机名能够正常被解析为本机的IP地址.



*** 在执行"/usr/local/apache/bin/apachectl start"的时候可能会出现下面错误提示:

[Fri Dec 30 09:35:01 2005] [warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter

解决方法:

编辑/etc/hosts和/etc/rc.conf, 配置主机域名. 例如:

shell> cat /etc/hosts
127.0.0.1               localhost freebsd6.vm-local.net
192.168.177.130         freebsd6 freebsd6.vm-local.net

shell> cat /etc/rc.conf
hostname="freebsd6.vm-local.net"
...


注意, 网上的方法是修改"/boot/loader.conf", 设置accf_http_load="YES".
但是:
1) 我从FreeBSD的启动过程中看到引导程序实际上引导的文件是"/boot/defaults/loader.conf";
2) 修改loader.conf并不能解决问题;

***



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

# 2005/04/09 16:00 - 2005/04/10 13:16 Created by Wandering
# 2005/12/29 23:28 Modified by Wandering
# 2006/03/12 19:31 Modified by Wandering
# 2006/03/18 00:45 Modified by Wandering


附录:

*Apache 2.0的DSO功能简要说明:
-------------------------------
编译并安装已发布的Apache模块,比如编译mod_foo.c为mod_foo.so的DSO模块:
$ ./configure --prefix=/path/to/install --enable-foo=shared
$ make install

编译并安装第三方Apache模块, 比如编译mod_foo.c为mod_foo.so的DSO模块:
$ ./configure --add-module=module_type:/path/to/3rdparty/mod_foo.c --enable-foo=shared
$ make install

配置Apache以共享后安装的模块:
$ ./configure --enable-so
$ make install

用apxs在Apache源代码树以外编译并安装第三方Apache模块,比如编译mod_foo.c为mod_foo.so的DSO模块:
$ cd /path/to/3rdparty
$ apxs -c mod_foo.c
$ apxs -i -a -n foo mod_foo.la

共享模块编译完毕以后,都必须在httpd.conf中用LoadModule指令使Apache激活该模块。







在FreeBSD下安装mysql+apache+php [原创]

论坛徽章:
0
2 [报告]
发表于 2006-03-20 19:36 |只看该作者
既然在 FreeBSD 平台下,为什么不用 ports 来安装相关的软件呢?
ports 不要太方便哦。

--

论坛徽章:
0
3 [报告]
发表于 2006-04-06 13:40 |只看该作者

回复 2楼 carelezz 的帖子

对手工编译安装情有独终啊~

论坛徽章:
0
4 [报告]
发表于 2006-04-06 17:25 |只看该作者
支持原创

论坛徽章:
0
5 [报告]
发表于 2006-04-13 16:22 |只看该作者
不采用ports安装软件,这不是freebsd的安装风格啊?freebsd下的软件安装是很严谨的.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP