首页 > 系统 > 关键词  > linux服务器最新资讯  > 正文

WEB服务器Apache编译指南及技巧

2008-09-25 15:11 · 稿源:互联网

一本文目的
本文旨在详述如何编译Apache,OpenSSL,ModSSL,MM,Mod_Perl,PHP,Zend,MySQL和Oracle支持及其可能遇到的问题,和一些常用的加速编译和提高工作效率的技巧。

二工作环境
RedhatLinuxOS6.x/7.x

三编译过程
1.所需的软件

MM1.1.3https://www.engelschall.com/sw/mm/
OpenSSL0.9.6dwww.openssl.org
ModSSL2.8.10_1.3.26www.modssl.org
Apache1.3.26www.apache.org
MySQL3.23.51www.mysql.com
PHP4.2.1/3.0.18www.php.net
ZendOptimizer1.3.1https://www.zend.com/store/freeware.php
Mod_Perl1.27https://perl.apache.org/dist/
Oracle8.1.7www.oracle.com

2.开始编译

a.首先编译MM(可选)

cd../mm-1.1.3
./configure--prefix=/usr/local/mm(单独的目录便于区别)
make
maketest
makeinstall

b.编译OpenSSL(http:可选https:必需)

cd../openssl-0.9.6d
./configno-threads-fPIC
make
maketest
makeinstall

注:no-threads没有多线程支持,因为Apache1.3.x不用多线程。

c.编译Mod_SSL(http:可选https:必需)

cdmod_ssl-2.8.10-1.3.26
./configure--with-apache=../apache_1.3.26

d.编译Apache

d1最大子进程限制修补(可选)

cd../apache_1.3.26
visrc/include/httpd.h
changevalue256to1024orabove

d2为后来的PHP带Oracle支持作准备(可选)

如果你要编译PHP带Oracle支持,你要修改Apache编译文件configure加下面的行LIBS=-lpthread在
forvarinCFLAGSLDFLAGSLIBSINCLUDESDEPS;do
前面,如下所示

LIBS=-lpthread
forvarinCFLAGSLDFLAGSLIBSINCLUDESDEPS;do

注:忘记了加LIBS=-lpthread,你可以
#cd/usr/src/apache_1.3.26
#makeclean
#LIBS=-lpthread./config.status
#make
#makeinstall

d3编译Apache

EAPI_MM=../mm-1.1.3SSL_BASE=../openssl-0.9.6d./configure
--prefix=/usr/local/apache_ssl--enable-module=most--enable-shared
=max--enable-module=rewrite--enable-shared=rewrite--enable-module
=proxy--enable-shared=proxy--enable-module=ssl--enable-shared=ssl
make
makecertificate(TYPE=testbydefault)
makeinstall
strip/usr/local/apache_ssl/bin/*

注:
d3.1如果你只是为了测试SSL,可用上面的命令,因为默认是为了测试。
d3.2如果你升级正在运行的SSL站点,可用makecertificateTYPE=dummy,最后拷贝已经在用的ssl.crt/server.crt和
ssl.key/server.key。
d3.3在makeinstall之前,可用命令lddsrc/httpd看有没有输出libpthread以确认前面有没有enableLIBS=-lpthread。
d3.4strip所有的apache可执行文件包括httpd以节省内存空间。

e编译MySQL

shell>groupaddmysql
shell>useradd-gmysqlmysql
shell>cd/usr/local
shell>gunzip</path/to/mysql-VERSION-OS.tar.gz|tarxvf-
shell>ln-sfull-path-to-mysql-VERSION-OSmysql
shell>cdmysql
shell>scripts/mysql_install_db
shell>chown-Rroot.
shell>chown-Rmysqldata
shell>chgrp-Rmysql.
shell>bin/safe_mysqld--user=mysql&

shutdownMySQL:cd/usr/local/mysql;bin/mysqladminshutdown

f编译PHP

./configure--with-apxs=/usr/local/apache_ssl/bin/apxs--with-mysql
=/usr/local/mysql--with-zlib--disable-debug--enable-track-vars--with-xml--with
-gdbm--enable-sysvsem--enable-sysvshm--with-openssl
=/usr/local/ssl--with-mm=/usr/local/mm--enable-ftp

如果需要Oracle支持,再加上--with-oracle=/home/oracle/oracle8--with-oci8
=/home/oracle/oracle8--enable-sigchild(假定Oraclehome目录是/home/oracle/oracle8)

make
makeinstall
cpphp.ini-dist/usr/local/apache_ssl/conf/php.ini
加下面的部分到/usr/local/apache_ssl/conf/httpd.conf

AddTypeapplication/x-httpd-php.php
AddTypeapplication/x-httpd-php-source.phps

加下面的部分到/usr/local/apache_ssl/bin/apachectl

PHPRC=/usr/local/apache_ssl/conf
exportPHPRC
LD_LIBRARY_PATH=$ORACLE_HOME/lib
exportLD_LIBRARY

上面的LD_LIBRARY部分如果不加,当你编译PHP带Oracle支持,启动Apache时你可能会得到错误信息如下libclntsh.so.8.0:notfound

如果仍然有oracle问题,可能你需要全部的Oracle环境变量放入apachectl中,如下例:

./etc/profile
TWO_TASK=asdbs;exportTWO_TASK
ORACLE_HOME=/home/oracle/oracle8;exportORACLE_HOME
ORACLE_BASE=/home/oracle;exportORACLE_BASE
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:
$ORACLE_HOME/lib:/usr/local/lib:/usr/lib;exportLD_LIBRARY_PATH
ulimitunlimited
ulimit-n32768
umask002
PATH=$ORACLE_HOME/bin:/usr/local/bin:/usr/bin;exportPATH

g安装ZendOptimizer

#cd/usr/local/apache_ssl/libexec
#cp/path/to/ZendOptimizer-1.1.0-PHP_4.0.5-Linux_glibc21-i386/ZendOptimizer.so.

然后加下面的部分到/usr/local/apache_ssl/conf/php.ini

zend_optimizer.optimization_level=15
zend_extension="/usr/local/apache/libexec/ZendOptimizer.so"

h编译Mod_Perl

#cdmod_perl-1.27
#perlMakefile.PLUSE_APXS=1WITH_APXS
=/usr/local/apache_ssl/bin/apxsEVERYTHING=1
#make
#maketest
#makeinstall
#mkdir/usr/local/apache_ssl/perl

Addthefollowingsinglelineto/usr/local/apache_ssl/conf/httpd.conf
Includeconf/mod_perl.conf
thecontentofmod_perl.confisasfollows:
-------------------------------
#Typicalforplaincgiscripts:
ScriptAlias/cgi-bin//usr/local/apache_ssl/perl/
#TypicalforApache::Registryscripts:
Alias/perl//usr/local/apache_ssl/perl/
#TypicalforApache::PerlRunscripts:
Alias/cgi-perl//usr/local/apache_ssl/perl/

PerlModuleApache::Registry
<Location/perl>
SetHandlerperl-script
PerlHandlerApache::Registry
Options+ExecCGI
PerlSendHeaderOn
allowfromall
</Location>
-------------------------------
注:常见的perlscript问题。

HowtowritePerlscript?

a.standardperlscript
#!/usr/bin/perl
print"Content-Type:text/html\n\n";

b.CGIperlscript
usestrict;
useCGIqw(:all);
printheader;

b.print"Location:URL";andprintheader;problem?
当你要用print"Location:URL"功能时,你不能有任何printheader;语句在print"Location:URL"之前。

usestrict;
useCGIqw(:all);

print"Location:https://www.linuxforum.net";

printheader;
print"Thisisatestinghtmlpage\n\n";

否则象下面这样print"Location:https://www.linuxforum.net";不将工作。
usestrict;
useCGIqw(:all);
printheader;
print"Location:https://www.linuxforum.net";


i修改Apache配置文件中的模块位置

当你编译SSL后再编译PHP和Mod_Perl时,PHP和Mod_Perl模块包含在IfdefineSSL中,也就是只有启动SSL时才会载入PHP和Mod_Perl,让我们修改它如下:

LoadModulephp4_modulelibexec/libphp4.so
LoadModuleperl_modulelibexec/libperl.so
<IfDefineSSL>
LoadModulessl_modulelibexec/libssl.so
</IfDefine>

AddModulemod_php4.c
AddModulemod_perl.c
<IfDefineSSL>
AddModulemod_ssl.c
</IfDefine>

j配置及启动Apache

#/usr/local/apache_ssl/bin/apachectlstart
#/usr/local/apache_ssl/bin/apachectlst

举报

  • 相关推荐
  • 国内MCP服务器搜索引擎有哪些?MCP导航站平台推荐

    在人工智能技术蓬勃发展的今天,AI模型与外部工具和服务的交互能力正成为推动技术进步的关键。AIbase(<https://mcp.aibase.cn/>)作为一个专注于MCP(Model Context Protocol,模型上下文协议)服务器的集合平台,为全球的AI开发者和研究人员提供了一个前所未有的资源库,助力AI技术的进一步发展。 AIbase平台的核心在于其对MCP协议的深度整合。MCP协议是一种开放标准协议,允许AI模�

  • AIbase MCP服务库上线:集成服务器、客户端、调试、案例教程等服务

    在当今数字化时代,人工智能技术正以前所未有的速度发展,深刻地改变着我们的生活和工作方式。而要充分发挥AI的强大能力,离不开高效的工具和服务支持。今天,就让我们来了解一下一个专注于MCP(Model Context Protocol)服务的优质平台 —— AIbase(www.aibase.cn)。 AIbase平台(https://mcp.aibase.cn/)作为一个精选全球优质MCP服务器的集合平台,为AI应用开发者和爱好者提供了丰富的�

  • 国内MCP服务平台推荐!aibase.cn上线MCP服务器集合平台

    在当今数字化时代,人工智能技术正以前所未有的速度发展,深刻地改变着我们的生活和工作方式。而要充分发挥AI的强大能力,离不开高效的工具和服务支持。今天,就让我们来了解一下一个专注于MCP(Model Context Protocol)服务的优质平台 —— AIbase。 AIbase(<https://mcp.aibase.cn/>)是一个精选全球优质MCP服务器的集合平台。它就像一个精心打造的资源宝库,一站式整合了海�

  • 苹果开启2025返校季教育优惠:买Mac、iPad送AirPods等

    今日,苹果中国正式拉开了一年一度返校季教育优惠活动的帷幕,该活动将持续至 9 月 30 日,为符合条件的师生及教职员工带来诸多福利。 此次活动参与群体广泛,高校在读生、刚被高校录取的新生、代表子女购买的高校学生家长,以及教师与教职工均可参与其中。 在优惠内容方面,活动期间购买指定款Mac或iPad将有丰厚赠品。具体来看,购买iPad Air、iPad Pro的用户,可获赠A

  • 苹果用户最好购车选择!小米YU7深度兼容:iPhone、Apple Watch都能控车

    小米YU7已开启交付,首批车主都已经提车回家了。 今天小米汽车官方介绍,YU7延续了SU7的设计理念,充分针对苹果用户优化用车体验,打造让苹果用户也能轻松上手的车型。 首先是iPhone控车更加便捷高效: 支持UWB近场控车与iOS小组件远程控车,比如携带激活了UWB钥匙的苹果手机站在车前3秒,就能打开前备箱; 也可以通过iPhone上的Action Button自定义车控功能,比如一键控车�

  • SpaceX星舰测试爆炸摧毁发射台 公司紧急启动重建

    据媒体报道,SpaceX上月遭遇重大挫折Starship(星舰)36号火箭在静态点火测试时发生爆炸,不仅摧毁了火箭原型,还严重损毁了地面测试平台。最新消息显示,这家航天公司已悄然启动测试平台的重建工作。 专门追踪SpaceX动态的博主StarshipGazer在X平台透露,爆炸造成的破坏相当严重。重建工作需要从零开始:包括建造全新的测试支架、安装水幕抑制系统,以及重新进行一系列静

  • 全面守护 Samsung Care+专属管家服务延续旗舰体验高标准

    三星推出全新Galaxy Z Fold7和Z Flip7折叠屏手机,同步升级Samsung Care+专属管家服务。该服务提供灵活保障方案,包括1-2年不同期限的屏幕更换服务(1-2次/年)、2次免费贴膜及24小时技术支持。用户购机时可随新机购买,或在激活后15天内通过官网等渠道加购。服务覆盖意外损坏、日常维护等需求,由三星认证专业人员提供支持。针对折叠屏特性,特别设计了按需守护方案,满足不同使用场景需求,提升高端旗舰机的使用安心感。

  • 落后华为2年半!Apple Watch Ultra 3有望今年登场:支持卫星消息

    据彭博社记者透露,Apple Watch Ultra 3有望于今年发布,将带来卫星连接与5G网络支持等 重要” 新功能,打破该系列自2023年以来的硬件升级停滞局面。 目前,华为是首个在智能手表上实现卫星通信功能的厂商。 2023年3月,华为Watch Ultimate非凡大师全球首发搭载双向北斗卫星消息功能,成为业界首款支持该技术的智能手表。 Apple Watch Ultra 3预计将会在今年9月份发布,落后华为整�

  • AI营销席卷中东,Infinix和Snapchat首个AI营销合作如何在当地实现破圈?

    开年以来,AI 图片赛道迎来一轮小高潮。今年3月,在我们统计的月访问量超200万的 Web 端 AI 图片产品中,有45款产品访问量呈现环比上涨,最高增幅超过600%。这些爆款背后的共同特征,是一股席卷社交平台的“吉卜力风”。 回顾2022年至今几轮 AI 爆款产品(如 Lensa、妙鸭相机、黏土滤镜、吉卜力),其流量爆发的逻辑始终贯穿着四大共性:操作门槛极低、个性表达鲜明、用户�

  • ChatGPT们重塑了对话框,钉钉今天要重塑表格

    ​自从1979年,丹·布里克林(Dan Bricklin)和鲍勃·弗兰克斯顿(Bob Frankston)在苹果当时划时代的 Apple II 电脑上做出了第一张可以自动计算和更新的电子表格 VisiCalc 后,表格就成为了计算机用数据方式理解人类世界的基座。不过,在更多的时候,没人这样讨论它。横横竖竖几个格子,表格无处不在,它看起来太普通了。 然而计算机诸多繁荣的根基,都建立在一张张表格之上,无�