-
首先下载apache的源码进行编译:http://httpd.apache.org/docs/current/install.html
-
下载apache源码,configure时
./configure --prefix=/opt/apache2.4/
但提示没有APR,故根据提示下载APR和APR-util:http://apr.apache.org/download.cgi
但下载的都是源码包,需要编译,不过比较简单:
//centos里面没有buildtool需要添加: yum groupinstall "Development Tools" yum install pcre-devel -y
./configure make make install
在编译util的时候需要指定apr路径:
./configure --with-apr=/usr/local/apr/
至此编译安装apr相关的两个软件完成。
下面来继续编译apache:
./configure --prefix=/opt/apache2.4 //注意前面apache2.4后不要带/。。。 //等配置完成 make //等编译完成 make install //完成。
至此,apache编译安装完成。
为方便启动,可用将bin设置到path中, 方法如下:
# 在 ~/.bashrc 最后一行添加: export PATH="$PATH:your path1:your path2 …"//这里添加的是apache的bin目录 # 然后 source ~/.bashrc
需要开机启动的话:在/etc/rc.local里添加脚本的完整路径,并且不要忘了修改权限:
比如startupapache.sh脚本,添加到rc.local中,脚本内容如下:
一定要记住修改新建的脚本本身的权限,卡这里好久
/xxx/xxx/apachectl start //此时环境变量还没初始化,故需要使用绝对路径!
这个文件就是开启启动时执行的。
不过编译后的不支持php,需要安装php支持模块:
安装后在httpd.conf里面加入LoadModule,但是提示php支持模块线程不安全,需要重新编译,只有自己编译php了。。。
编译之后再loadModule
编译php:
先卸载掉之前的php所有东西:
apt-get remove php*
卸载完成后,准备编译php:
获取php源码:
http://php.net/downloads.php
下载下来的源码包。
接下来踩坑继续:ls
遇到没有libxml2,好吧,安装。。。提示安装了最新版
yum install libxml2-devel sudo apt-get install libxml2-dev
然后是没有xml2-config,好吧,继续:说是在libxml2-dev包中,好吧,apt-get安装。
安装好了没问题了。开始编译。
//按官方的来:http://php.net/manual/en/install.unix.apache2.php //官方说先要编译安装apache,之前就做好了。 cd ../php-NN ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql //但是貌似在最新的php7上面这个enable不识别,没有清除干净的话使用apt-get remove *php*来清除之前残留,find / -name *php*只会出现源码包 make make install //尼玛买个256MB的VPS编译php都内存不够,擦了!stop掉tomcat和apache重新开始编译。。\ 但是编译出来还是出错,后面查php的bug库发现由于内存少于512MB时都会出现这个bug, //之后是设置php.ini cp php.ini-development /usr/local/lib/php.ini //再之后是为apache添加php模块: LoadModule php7_module modules/libphp7.so
http://php.net/manual/en/install.unix.apache2.php
安装官方文档所说的一步一步来即可编译并配置好php。
配置apache的php:
坑:
filesmatch是在Directory标签内的子标签。。。
<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>
另外就是由于浏览器缓存,还以为配置没成功,结果刷新就好了。
编译mod_jk
http://tomcat.apache.org/connectors-doc/common_howto/quick.html
坑:
编译mod_jk时:http://tomcat.apache.org/connectors-doc/
- mod_jk。https://tomcat.apache.org/connectors-doc/miscellaneous/faq.html
- ./configure --with-apxs=/usr/sbin/apxs http://it.toolbox.com/blogs/lim/compiling-tomcat-connector-mod_jk-on-redhat-6805
- make
- make install
- 现在mod_jk就在apache中了。
-
配置步骤:
https://www.mulesoft.com/tcat/tomcat-clustering
step1:完成mod_jk的编译和安装(已完成)
-
step2:在httpd.conf里面配置mod_jk模块:
# Load the mod_jk module. LoadModule jk_module path/to/mod_jk.so
-
step3:配置其他Apache端的配置
-
配置worker文件目录:
JkWorkersFile /path/to/httpd/conf/workers.properties
-
配置worker们的共享内存路径:
JkShmFile /path/to/log/httpd/mod_jk.shm
-
配置日志文件:
JkLogFile /path/to/log/httpd/mod_jk.log
-
配置日志级别:
JkLogLevel level
-
配置日志的时间戳格式:
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
-
加载worker(即Tomcat实例,下一步就是配置它):
JkMount /examples/* worker1 //这个配置的意思是:所有example应用的请求都交给对应的worker1
汇总起来就是下面的内容:
# Load mod_jk module # Update this path to match your modules location LoadModule jk_module modules/mod_jk.so # Declare the module for <IfModule directive> (remove this line for Apache 2.x) AddModule mod_jk.c # Where to find workers.properties # Update this path to match your conf directory location (put workers.properties next to httpd.conf) JkWorkersFile /etc/httpd/conf/workers.properties # Where to put jk shared memory # Update this path to match your local state directory or logs directory JkShmFile /var/log/httpd/mod_jk.shm # Where to put jk logs # Update this path to match your logs directory location (put mod_jk.log next to access_log) JkLogFile /var/log/httpd/mod_jk.log # Set the jk log level [debug/error/info] JkLogLevel info # Select the timestamp log format JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " # Send everything for context /examples to worker named worker1 (ajp13) JkMount /examples/* worker1
-
-
step4:配置workers.properties文件:
这个文件中就是所有的和HTTPD服务器进行交流的Tomcat实例配置。
下面来看看workers.properties文件的配置:
#定义一个真实的worker,如果有多个,以逗号分隔。 worker.list=worker1 # Set properties for worker1 (ajp13) worker.worker1.type=ajp13 worker.worker1.host=localhost worker.worker1.port=8009
下面就来启动一下apache和Tomcat试试效果。