标题:[Linux] 从源码编译安装Apache+FastCgi+PHP 出处:Felix021 时间:Fri, 24 Jun 2011 12:39:11 +0000 作者:felix021 地址:https://www.felix021.com/blog/read.php?2022 内容: 使用以下脚本来编译安装,需要把安装文件下载到 [ROOT]/src/ 下。 目录结构: [ROOT] /src /php-5.2.17.tar.bz2 ... /httpd /php /fcgi-bin #!/bin/bash set -x ROOT="/home/felix021/lamp" ROOT_E=${ROOT//\//\\\/} # escape for sed, / => \/ WWWROOT="/home/felix021/lamp/wwwroot" WWWROOT_E=${WWWROOT//\//\\\/} # escape for sed, / => \/ HTTPD_PORT=80 FCGI_CHILDREN=4 FCGI_MAX_REQUESTS=1000 # 下载好的源码文件 fastcgi="mod_fastcgi-2.4.6" #.tar.gz httpd="httpd-2.2.17" #.tar.bz2 php="php-5.2.17" #.tar.bz2 eaccelerator="eaccelerator-0.9.6.1" #.tar.bz2 SRCROOT=${ROOT}/src mkdir -p $ROOT/{httpd,php,fcgi-bin} mkdir -p $WWWROOT # fcgi-bin (for apache + mod_fastcgi) # 创建这个脚本可以用来包装php-cgi,可以控制启动的FCGI进程数量 if [ ! -e "${ROOT}/fcgi-bin/php.cgi" ]; then > ${ROOT}/fcgi-bin/php.cgi echo "#!/bin/sh # Shell Script To Run PHP5 using mod_fastcgi under Apache 2.x ### Set PATH ### PHP_CGI=${ROOT}/php/bin/php-cgi PHP_FCGI_CHILDREN=${FCGI_CHILDREN} PHP_FCGI_MAX_REQUESTS=${FCGI_MAX_REQUESTS} ### no editing below ### export PHP_FCGI_CHILDREN export PHP_FCGI_MAX_REQUESTS exec \$PHP_CGI " chmod +x ${ROOT}/fcgi-bin/php.cgi fi # php cd $SRCROOT if [ ! -d "${php}" ]; then tar jxf ${php}.tar.bz2 cd $php ./configure --prefix=${ROOT}/php --with-gd --with-iconv \ --with-curl --enable-fastcgi --with-openssl --enable-mbstring #有需要的话自己再增加一些模块吧 echo Making... Please wait. "tail -f `pwd`/php.log" to view make output. make -j4 &> php.log make install cp php.init-dist ${ROOT}/php/lib/php.ini fi # eaccelerator if [ ! -d "${eaccelerator}" ]; then tar jxf ${eaccelerator}.tar.bz2 cd $eaccelerator export PHP_PREFIX=${ROOT}/php $PHP_PREFIX/bin/phpize ./configure --enable-eaccelerator=shared \ --with-php-config=$PHP_PREFIX/bin/php-config make -j4 &> eaccelerator.log make install echo Please edit php.ini to enable eaccelerator.so fi # httpd cd $SRCROOT if [ ! -d "${httpd}" ]; then tar jxf ${httpd}.tar.bz2 cd ${httpd} ./configure --prefix=${ROOT}/httpd --enable-rewrite echo Making... Please wait. "tail -f `pwd`/httpd.log" to view make output. make -j4 &> httpd.log make install conf_path="${ROOT}/httpd/conf/httpd.conf" # 下面这段sed脚本是把端口、DocRoot替换了,并允许目录下使用.htaccess来配置url rewrite sed -i $conf_path \ -e "s/^Listen 80$/Listen ${HTTPD_PORT}/" \ -e "s/\/.*\/htdocs\>/${WWWROOT_E}/" \ -e "s/AllowOverride None/AllowOverride FileInfo/" fcgi_path="${ROOT}/fcgi-bin/" # 在配置中加入FastCgi相关的内容 echo " LoadModule fastcgi_module modules/mod_fastcgi.so FastCgiServer \"${fcgi_path}php.cgi\" AddHandler php-fastcgi .php ScriptAlias /fcgi-bin/ \"${fcgi_path}\" Action php-fastcgi "/fcgi-bin/php.cgi" AddType application/x-httpd-php .php SetHandler fastcgi-script Options FollowSymlinks +ExecCGI Order Allow,Deny Allow from All " >> $conf_path fi # mod_fastcgi for httpd cd $SRCROOT if [ ! -d "${fastcgi}" ]; then tar zxf ${fastcgi}.tar.gz cd ${fastcgi} cp Makefile.AP2 Makefile make top_dir=${ROOT}/httpd -j4 &> fastcgi.log make top_dir=${ROOT}/httpd install fi echo Done. Please run "${ROOT}/httpd/bin/apachectl start" Generated by Bo-blog 2.1.0