编译安装mysql+apache+php
=================================

作者: Wandering


*注1:文章原名为<<
在FreeBSD下安装mysql+apache+php>>
*注2:2008/11/22重新整理修订,更改文章名



[目录]
 
   1. 安装Mysql
   2. 安装Apache
   3. 安装PHP
   4. 配置httpd.conf



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


参考文档1:《MySQL Reference Manual》 -> "Installing MySQL on Other Unix-Like Systems"
参考文档2:源代码自带的 INSTALL-SOURCE 文件


1.1 编译安装

# groupadd mysql
# useradd -g mysql -d /usr/local/lib/mysql -s /sbin/nologin mysql

# tar zxvf mysql-x.x.x
# cd mysql-x.x.x
# ./configure --prefix=/usr/local/
lib/mysql --localstatedir=/usr/local/lib/mysql/data --with-charset=utf8 --with-extra-charsets=all
# make
# make install


# cp support-files/my-medium.cnf /etc/my.cnf

# cd /usr/local/
lib/mysql
# mkdir data
# bin/mysql_install_db --user=mysql
# chown -R root  .
# chown -R mysql data
# chgrp -R mysql .

# echo "/usr/local/
lib/mysql/bin/mysqld_safe &" >> /etc/rc.local
#
/usr/local/lib/mysql/bin/mysqld_safe --user=mysql &


1.2 进入mysql的DBMS

# /usr/local/
lib/mysql/bin/mysql -u root -p
enter password: <Enter>

*注:默认mysql的root用户口令为空


1.3 mysql数据在页面显示为中文乱码的问题

--with-extra-charsets=all是解决中文乱码的关键参数,它的作用是安装额外的字符集,其中即包括gbk等中文字符集。在创建数据库时手工指定字符集为gbk,这样就可以保证同样使用gbk字符集的HTML页面正常地显示中文了:
create database <db_name> default character set gbk collate gbk_chinese_ci;




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


2.1 编译安装

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


2.2
apache启动停止命令

# /usr/local/lib/apache/bin/apachectl start
# /usr/local/
lib/apache/bin/apachectl stop
# /usr/local/lib/apache/bin/apachectl restart


2.3 自动运行

# echo "
/usr/local/lib/apache/bin/apachectl start" >> /etc/rc.local


2.4 apache启动时可能出现的错误
 
[Fri Dec 30 09:35:01 2005] [warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter

解决方法
---------

step-1)

编辑/etc/hosts和/etc/rc.conf, 配置主机域名. 例如:
 
# cat /etc/hosts
127.0.0.1               localhost
192.168.177.130         freebsd6 freebsd6.local
 
# cat /etc/rc.conf
hostname="freebsd6.local"
...
 
step-2)
---------
on FreeBSD, you need to add a kernelmodule

kldload accf_http

grep accf /boot/defaults/loader.conf
accf_data_load="NO" # Wait for data accept filter
accf_http_load="NO" # Wait for full HTTP request accept filter

add the second to /boot/loader.conf with 'YES' to enable this permenately.




3. 安装PHP
============
 
步骤:
 
   3.1 安装libxml2-x.x.x.tar.gz
   3.2 安装libiconv-x.x.x.tar.gz

   3.3 安装gd-x.x.x.tar.gz

   3.4 安装php



3.1 安装libxml2

# tar zxvf libxml2-
x.x.x.tar.gz
# cd libxml2-
x.x.x
# ./configure && make && make install
 
[url]http://xmlsoft.org/[/url]


3.2 安装libiconv

# tar zxvf libiconv-
x.x.x.tar.gz
# cd libiconv-
x.x.x
# ./configure && make && make install
 
[url]http://www.gnu.org/software/libiconv/[/url]


3.3 安装gd
 
gd需要以下模块:
 
 . zlib-
x.x.x.tar.gz
 . libpng-
x.x.x.tar.gz


3.3.1 安装zlib

# tar zxvf zlib-
x.x.x.tar.gz
# cd zlib-
x.x.x
# ./configure && make && make install
 
默认情况zlib被安装到/usr/local/include/

[url]http://directory.fsf.org/zlib.html[/url]
[url]http://www.zlib.net/[/url]


3.3.2 安装libpng

# tar zxvf libpng-
x.x.x.tar.gz
# cd libpng-
x.x.x
# ./configure && make && make install
 
默认情况libpng被安装到/usr/local/include/libpng/

[url]http://www.libpng.org/pub/png/libpng.html[/url]


3.3.3 安装gd

# tar zxvf gd-
x.x.x.tar.gz
# cd gd-
x.x.x
# ./configure && make && make install

默认情况gd被安装到/usr/local/include/

 
[url]http://www.boutell.com/gd/[/url]

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


3.4 安装PHP

# tar zvxf php-
x.x.x.tar.gz
# cd php-
x.x.x
# ./configure --prefix=/usr/local/
lib/php --with-mysql=/usr/local/lib/mysql --with-apxs2=/usr/local/lib/apache/bin/apxs --with-libxml-dir=/usr/local/include/libxml2/libxml --enable-mbstring --with-gd --with-zlib
# make
# make install
# cp php.ini-dist /usr/local/
lib/php/lib/php.ini


3.5 配置php.ini

# vi /usr/local/lib/php/lib/php.ini
...
default_charset = "gbk"
session.auto_start = 1
max_execution_time = 300  (满足长时间数据计算页面的需要,默认为30)
...



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


4.1 修改ServerName

ServerName 127.0.0.1:80    (
这个选项影响apache的启动)
 
 
4.2 支持index.php

找到"DirectoryIndex index.html"
在"index.html"后面加入"index.php"


<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

 
4.3 支持php

找到<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/lib/apache/htdocs"> ... </Directory>, 在下面加入

<Directory
/usr/local/lib/apache/htdocs/new-doc>
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
 
 
4.5 增加新的脚本目录

找到<Directory "/usr/local/lib/apache/cgi-bin"> ... </Directory>, 在下面加入

<Directory "/usr/local/lib/apache/htdocs/new-cgi">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>


4.6 增加目录别名(alias)

找到<IfModule alias_module> ... </IfModule>, 在中间区域加入

Alias /new-doc "/usr/local/lib/apache/htdocs/new-doc"
 
ScriptAlias /new-cgi "
/usr/local/lib/apache/htdocs/new-cgi"






----------------------------------------------------------------
2005/04/09 16:00 - 2005/04/10 13:16 Created by Wandering
2005/12/29 23:28 Modified by Wandering
2006/07/17 23:56 Modified by Wandering
2008/11/22 22:54 Wandering 修改文件名,重修订内容
2008/11/23 19:07 Wandering 增加mysql解决中文乱码方法



本文出自 “Wandering's Blog” 博客,请务必保留此出处http://wandering.blog.51cto.com/467932/114472