linux下用源代码编译安装apache2.x + php5.x

  • 下载Apache文件:wget http://archive.apache.org/dist/httpd/httpd-2.2.20.tar.gz

解压缩,然后:

./configure --prefix=/data/system/apache --enable-so --enable-modules=all --enable-mods-shared=all --enable-cache --enable-file-cache --enable-mime-magic --with-ssl --with-mpm=worker --enable-mem-cache --enable-disk-cache --enable-static-support --enable-static-htpasswd --enable-static-htdigest --enable-static-rotatelogs --enable-static-logresolve --enable-static-htdbm --enable-static-ab --enable-static-checkgid --enable-mod_cgi --enable-ssl --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-proxy-scgi --enable-proxy-ajp 

make WITH_PROXY_MODULES=yes

make install.

  • 将apache加入自启动:

一般情况,如果是手动编译的话,apache是没有启动脚本的,也就是说用户不能通过简单的/etc/init.d/httpd(start|stop|restart)来启动/关闭/重新启动。
  其实在源码里已经有启动的脚本,我们要修改下即可,把Apache加入系统SysV服务中来。 
  在源码httpd-2.x.x/build/rpm中存在httpd.init
  拷贝命令如下:

cp httpd.init /etc/init.d/httpd

拷贝之后,注意其中有三处主要的地方需要修改下的: 

httpd=${HTTPD-/usr/local/apache/bin/httpd}
pidfile=${PIDFILE-/usr/local/apache/logs/${prog}.pid}
CONFFILE=/usr/local/apache/conf/httpd.conf

请根据自己的实际情况更改相应的路径!

然后运行如下命令:

chmod +x /etc/init.d/httpd
chkconfig --add httpd
chkconfig --level 2345 httpd on

chkconfig --list|grep httpd
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

这样一来,启动、停止、重启Apache就可以用以下方式了: 
/etc/init.d/httpd start
/etc/init.d/httpd stop
/etc/init.d/httpd restart

 -Install PHP-----

  • 下载php5.3.18文件(wget http://us2.php.net/get/php-5.3.18.tar.gz/from/ar2.php.net/mirror)

解压缩,然后:

cd  src/php-5.3.18/

./configure --prefix=/usr/local/php5.3.18 --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/php5.3.18/etc --with-mysql=/usr/local/mysql5 --with-mysqli=/usr/local/mysql5/bin/mysql_config --with-mysql-sock=/usr/local/mysql5/tmp/mysql.sock --with-iconv --with-gettext --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir= --enable-xml --with-layout=GNU --with-pcre-regex --enable-filter --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-simplexml --enable-libxml --enable-dom --enable-ftp --enable-shmop --enable-sysvsem --enable-json --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-mbstring --with-mcrypt --enable-ctype --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --enable-fileinfo --enable-pdo --with-pdo-mysql=/usr/local/mysql5/ --enable-fastcgi  --enable-cgi --enable-gd-native-ttf --with-ldap --with-ldap-sasl

(可能额外要加的命令:

ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib

cd extra/phar/

cp ./phar.php ./phar.phar

*如果是编译支持mysqlnd,MySQL本地的支持库,那么不需要安装好MySQL就可以安装PHP,把上面编译参数中的对应的3个替换成:

--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd,这样编译出来mysql客户端库版本只和php源码中提供的mysql库一致。

(可能额外要加的命令:

tar -zxvf libmcrypt-2.5.7.tar.gz 或者yum install libmcrypt libmcrypt-devel

cd libmcrypt-2.5.7

cd libltdl

./configure --enable-ltdl-install

make&&make install

)

*运行configure命令时间较短,10秒结束。

make&&make install          

*运行make命令时间较长,8分钟结束。

#拷贝生成php.ini文件,上面默认编译是不会生成的.

cp src/php-5.3.18/php.ini-production   /usr/local/php5.3.18/etc/php.ini

----------

  • 编辑 httpd.conf



    LoadModule php5_module lib/modules/libphp5.so



    AddType application/x-httpd-php .php
    AddType application/x-httpd-php .php5
    AddType application/x-httpd-php-source .phps
    AddType application/x-httpd-php-source .php5s
    DirectoryIndex index.php
    DirectoryIndex index.php5

    PHPIniDir "/usr/local/php5.3.18/etc/"     //必须手工指定php.ini文件的目录,才能生效

 

添加虚拟主机配置:

Include conf/vhosts.conf
--------

  • 添加PHP其他子模块,比如:curl

cd /php-5.3.18/ext/curl/
/usr/local/php5.3.18/bin/phpize
./configure --with-php-config=/usr/local/php5.3.18/bin/php-config
make
make install

生成curl.so在目录
编辑/usr/local/php5.3.18/etc/php.ini,加上

extension_dir = "/usr/local/lib/php/extensions/no-debug-zts-20090626/curl.so"

 

  • 搭建vsftpd服务器

yum install vsftpd. 

通常我们要apache+wordpress建站,那么要建立的ftp帐号要能写到网站主目录,这种情况下,一般都是: 产生1个webuser用户,加入apache的daemon组,这样当后台产生目录的时候,owner是webuser:daemon,当把webuser加入到daemon组,同把目录的组写权限打开(777),那么webuser就能写文件到目录,apache自身运行用户也能写文件到目录, 所以执行顺序是 :

1)增加用户webuser,加入到组daemon,主目录为ftp要上船的目录
adduser -d /data/www/ -g daemon webuser
passwd webuser

chown -hR webuser:daemon /data/www/

2)时刻保持目录为可写,在cronjob里加入定时任务,这样在wordpress后台创建的目录就是有可写权限了.
crontab -e
    30 * * * * chmod -cR 777 /data/www/  

3)其他可以能需要运行的命令:

sudo -P setsebool allow_ftpd_full_access on

give SELinux permissions to that directory:
chcon -R -h -t httpd_sys_content_t /data/www/

 

本文参考了:

http://hi.baidu.com/travel981cn/item/bd198c578cdb269509be172f

http://blog.sina.com.cn/s/blog_6238358c0100hhog.html

http://teddysun.com/147.html

转载于:https://www.cnblogs.com/youcanwin/archive/2012/10/26/2741669.html

你可能感兴趣的:(linux下用源代码编译安装apache2.x + php5.x)