在Linux下,用源码安装时,php5.3.2还是支持原来的“Apache 2.0 Handler module”方式的。但在WINDOWS已经不支持这种方式了。本文安装的软件为:
1)Apache2.2.15:http://labs.renren.com/apache-mirror/httpd/httpd-2.2.15.tar.bz2
2)php5.3.2:http://www.php.net/get/php-5.3.2.tar.bz2/from/a/mirror
3)MySQL:非源码安装(使用
- apt-get install mysql-server mysql-client libmysqlclient10-dev
安装,在Ubuntu下;开发包必须安装,否则要使PHP支持MYSQL就会缺少头文件。)
1、安装Apache2.2.15
- tar -jxvf httpd-2.2.15.tar.bz2
- cd httpd-2.2.15
- /configure --prefix=/usr/local/apache --enable-module=so --enable-mods-shared=max
- make
- make install
在configure时,如果输出config.status: executing default commands消息则正常结束。如有问题根据问题信息修改。
在make时,输出make[1]: Leaving directory `/tmp/httpd-2.2.15'则表示编译基本没有问题。
在make install时,输出
Installing header files
Installing build system files
Installing man pages and online manual
mkdir /usr/local/apache/man
mkdir /usr/local/apache/man/man1
mkdir /usr/local/apache/man/man8
mkdir /usr/local/apache/manual
make[1]: Leaving directory `/tmp/httpd-2.2.15'
则表示安装成功;
然后到/usr/local/apache/bin/httpd -k start启动,在浏览器输入网址http://localhost,输出“It works ”则表示APACHE服务已经正常启动。
2、安装PHP
- tar -jxvf php-5.3.2.tar.bz2
- cd php-5.3.2
- ./configure --prefix=/usr/local/php --with-mysql --with-config-file-path=/usr/local/php/etc --enable-fast-install --with-apxs2=/usr/local/apache/bin/apxs
- make
- make install
在make install前,PHP建议执行make test进行测试。
在configure,得到输出信息
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
Thank you for using PHP.
则证明正常,如果添加了configure不认识的参数,可能会在下面还有一些信息,但只要上面信息出现,配置基本就正常了。比如在如上信息出现:
Notice: Following unknown configure options were used:
--enable-zlib
Check './configure --help' for available options
就是使用了configure不认识的参数enable-zlib
make时,得到
Build complete.
Don't forget to run 'make test'.
则编译正常。
然后是make install安装。
一般说来。在编译成功后,安装基本没有问题。
然后写个php文件放到/usr/local/apache/htdocs下,如
- <?php
- phpinfo();
- ?>
在浏览器输入http://localhost/index.php,如果输出版本信息,则PHP安装成功。
注意:
我在安装PHP后,停止APACHE时,出现如下提示:
httpd: Syntax error on line 54 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/libphp5.so into server: /usr/local/apache2/modules/libphp5.so: undefined symbol: zend_parse_parameters.
这是没有安装bison,如果是在ubuntu下,用apt-get install bison安装后,重新编译安装PHP。就正常。
重新安装命令如下:
- make distclean
- ./configure --prefix=/usr/local/php --with-mysql --with-config-file-path=/usr/local/php/etc --enable-fast-install --with-apxs2=/usr/local/apache/bin/apxs
- make
- make install
看看你能成功吗?
编辑httpd.conf,在AddType application/x-gzip .gz .tgz后加上
AddType application/x-httpd-php .php
让APACHE解析PHP。
通过1#安装后,已经使用Apache php handler来解析PHP了。
下面安装fastcgi方式支持php。
1、下载fastcgi源码http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz
安装
- tar -zxvf mod_fastcgi-current.tar.gz
- cd mod_fastcgi-2.4.6 #我下载的是这个版本
- cp Makefile.AP2 Makefile
- make top_dir=/usr/local/apache
- make install
也可以直接修改Makefile文件,找到top_dir这一行,改成你的Apache的安装路径。
这样在/usr/local/apache/modules目录下就多了一个mod_fastcgi.so文件了。
2、编译安装php
重新解压PHP到一个新目录
- tar -zxvf php-5.3.2.tar.bz2 -C /usr/local/src
- cd /usr/local/src/php-5.3.2
- ./configure --prefix=/usr/local/phpcgi --with-mysql --with-config-file-path=/usr/local/php/ --enable-fast-install --enable-mbstring
- make
- make install
官方说configure时要加参数--enable-fastcgi,但5.3.2没有这个参数。可能没有--with-apxs2参数时就默认是CGI方式吧。
我把CGI和APACHE HANDLER安装到不同目录了(php和phpcgi)。
确认
- /usr/local/phpcgi/bin/php-cgi -v
输出信息
PHP 5.3.2 (cgi-fcgi) (built: Jul 20 2010 15:51:57)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
则说明支持cgi了(cgi-fcgi)
3、修改apache配置文件
加载fastcgi模块,将下面一行加入httpd.conf
- LoadModule fastcgi_module modules/mod_fastcgi.so
让fastcgi解析php,将下列所有行加入httpd.conf
- ScriptAlias /fcgi-bin/ "/usr/local/phpcgi/bin/"
- #ScriptAlias /fcgi-bin/ /usr/local/apache/php-cgi/
- <Location /fcgi-bin/>
- Options ExecCGI
- SetHandler fastcgi-script
- Allow from all
- </Location>
- FastCgiServer /usr/local/phpcgi/bin/php-cgi -processes 5
- AddType application/x-httpd-fastphp .phtp
- Action application/x-httpd-fastphp /fcgi-bin/php-cgi
通过1#和3#配置后,同一个APACHE就支持apache php handler和fastcgi方式解析php了。
.php文件以apache php handler方式解析,而.phtp以fastcgi方式解析。
我的httpd.conf文件
httpd.zip (5.19 KB, 下载次数: 19)
以apache php handler 解析 php
以fastcgi方式解析php
1、安装openssl
从http://www.openssl.org/source/openssl-1.0.0a.tar.gz下载openssl
解压安装
- tar -zxvf openssl-1.0.0a.tar.gz
- cd openssl-1.0.0a
- ./configure
- make
- make install
虽说可以用--prefix参数指定安装路径,但我指定了没起作用,给我安装到/usr/local/ssl下了。
2、重新安装Apache
- ./configure --prefix=/usr/local/apache --enable-module=so --enable-mods-shared=most --enable-ssl --with-ssl=/usr/local/ssl
- make
- make install
3、修改httpd.conf文件
增加
- LoadModule actions_module modules/mod_actions.so
- LoadModule alias_module modules/mod_alias.so
- LoadModule asis_module modules/mod_asis.so
- LoadModule auth_basic_module modules/mod_auth_basic.so
- LoadModule authn_default_module modules/mod_authn_default.so
- LoadModule authn_file_module modules/mod_authn_file.so
- LoadModule authz_default_module modules/mod_authz_default.so
- LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
- LoadModule authz_host_module modules/mod_authz_host.so
- LoadModule authz_user_module modules/mod_authz_user.so
- LoadModule autoindex_module modules/mod_autoindex.so
- LoadModule cgi_module modules/mod_cgi.so
- LoadModule dir_module modules/mod_dir.so
- LoadModule env_module modules/mod_env.so
- LoadModule include_module modules/mod_include.so
- LoadModule log_config_module modules/mod_log_config.so
- LoadModule mime_module modules/mod_mime.so
- LoadModule negotiation_module modules/mod_negotiation.so
- LoadModule rewrite_module modules/mod_rewrite.so
- LoadModule setenvif_module modules/mod_setenvif.so
- LoadModule ssl_module modules/mod_ssl.so
把#Include conf/extra/httpd-ssl.conf这句话的注释去掉,即去掉前面的#字。
修改conf/extra/httpd-ssl.conf,将ServerName server.example.com:443中的server.example.com改成你自己的域名。
4、生成证书
以下命令在/usr/local/ssl下执行
4.1 设置自己的CA
- openssl genrsa -des3 -out my-ca.key 2048
- openssl req -new -x509 -days 3650 -key my-ca.key -out my-ca.crt
4.2、生成服务器证书和KEY文件
- openssl genrsa -des3 -out server.key 1024
- openssl req -new -key server.key -out server.csr
- openssl x509 -req -in server.csr -out server.crt -sha1 -CA my-ca.crt -CAkey my-ca.key -CAcreateserial -days 3650
注意:生成server.csr时,Common Name (eg, your name or your server's hostname) []:mars.vanemery.com <=== 必须输入自己的域名!!!
这样重启Apache会要求你输入证书密码。这样就安装成功ssl了。
证书生成参照了:http://www.vanemery.com/Linux/Apache/apache-SSL.html