分享
 
 
 

Apache2+mod_ssl+php5完全安装实录

王朝php·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

环境:

RedHat 9.0

说明:

使用$ 开头的是普通用户身份执行的命令

使用# 开头的是root帐号执行的命令

第一步:安装apache

下载apache2: http://httpd.apache.org/download.cgi

我需要mod_ssl的支持,和apache1不同的是,mod_ssl不在是单独的模块,而是放在apache发行包里面了,默认是不启用的,config的时候选择上就可以了。

我使用DSO方式编译安装apache,同时将全部模块都编译好,以方便后来可能的需要。只要编辑httpd.conf,在里面去掉不想要的模块(注释或者删除对应模块的LoadModule行),就可以定制自己的apache咯。

$ tar zxvf httpd-2.0.50.tar.gz

$ ./configure --prefix=/usr/local/apache2 --enable-so --enable-ssl=shared --enable-mods-shared=all --with-ssl=/usr/local/ssl

$ make

$ su

# make install

Apache有两种使用模块的方法,其一是永久性包含进核心;

如果操作系统支持动态共享对象(DSO),而且能为autoconf所检测,则模块还可以被动态编译。

DSO模块的存储是独立与核心的,可以被核心使用由mod_so模块提供的运行时刻配置指令包含或排除。

如果编译中包含有任何动态模块,则mod_so模块会被自动包含进核心。如果希望核心能够装载DSO,而不实际编译任何动态模块,需要明确指定--enable-so。

(http://kajaa.bbs.us/ApacheManual/install.html)

第一次按照上述方法编译的apache,启动的时候会报错:

# cd /usr/local/apache2

# ./bin/apachectl startssl

Syntax error on line 251 of /usr/local/apache/conf/httpd.conf:

Cannot load /usr/local/apache/modules/mod_ssl.so into server: /usr/local/apache/modules/mod_ssl.so: undefined symbol: X509_free

原因是什么呢?看 http://www.smartframeworks.com/qt-apache-ssl.html

因为按照下面的方法(参看:Apache2 + mod_ssl + php5 完全安装实录(2))安装的openssl默认是没有编译成动态链接库的,因为其文档说openssl的动态链接库还不成熟,可以使用 ./config shared 编译带动态链接库的openssl,但是还处于试验阶段。

解决这个问题的办法是:将mod_ssl静态的编译到apache里面。

请使用下面的方法重新来过:)

$ ./configure --prefix=/usr/local/apache2 --enable-so --enable-ssl=static --with-ssl=/usr/local/ssl --enable-mods-shared=all

$ make

$ su

# make install

这次启动apache的时候又发现一个错误:

# cd /usr/local/apache2

# ./bin/apachectl startssl

Syntax error on line 108 of /usr/local/apache2/conf/ssl.conf:

SSLCertificateFile: file '/usr/local/apache2/conf/ssl.crt/server.crt' does not exist or is empty

这又是什么原因呢?因为我们没有配置ssl,需要生成ssl需要的证书。

以前使用apache1+mod_ssl的时候,make之后有一个这样的步骤

$ make certificate

可以用来生成ssl所用到的证书。

现在没有这个工具了,只能自己动手生成了,对证书不熟悉的人,有一个工具可以使用:http://www.openssl.org/contrib/ssl.ca-0.1.tar.gz

# cd /usr/local/apache2/conf

# tar zxvf ssl.ca-0.1.tar.gz

# cd ssl.ca-0.1

# ./new-root-ca.sh (生成根证书)

No Root CA key round. Generating one

Generating RSA private key, 1024 bit long modulus

...........................++++++

....++++++

e is 65537 (0x10001)

Enter pass phrase for ca.key: (输入一个密码)

Verifying - Enter pass phrase for ca.key: (再输入一次密码)

......

Self-sign the root CA... (签署根证书)

Enter pass phrase for ca.key: (输入刚刚设置的密码)

........

........ (下面开始签署)

Country Name (2 letter code) [MY]:CN

State or Province Name (full name) [Perak]:JiangSu

Locality Name (eg, city) [Sitiawan]:NanJing

Organization Name (eg, company) [My Directory Sdn Bhd]:Wiscom System Co.,Ltd

Organizational Unit Name (eg, section) [Certification Services Division]:ACSTAR

Common Name (eg, MD Root CA) []:WISCOM CA

Email Address []:acmail@wiscom.com.cn

这样就生成了ca.key和ca.crt两个文件,下面还要为我们的服务器生成一个证书:

# ./new-server-cert.sh server (这个证书的名字是server)

......

......

Country Name (2 letter code) [MY]:CN

State or Province Name (full name) [Perak]:JiangSu

Locality Name (eg, city) [Sitiawan]:NanJing

Organization Name (eg, company) [My Directory Sdn Bhd]:Wiscom System Co.,Ltd

Organizational Unit Name (eg, section) [Secure Web Server]:ACSTAR

Common Name (eg, www.domain.com) []:acmail.wiscom.com.cn

Email Address []:acmail@wiscom.com.cn

这样就生成了server.csr和server.key这两个文件。

还需要签署一下才能使用的:

# ./sign-server-cert.sh server

CA signing: server.csr -> server.crt:

Using configuration from ca.config

Enter pass phrase for ./ca.key: (输入上面设置的根证书密码)

Check that the request matches the signature

Signature ok

The Subject's Distinguished Name is as follows

countryName :PRINTABLE:'CN'

stateOrProvinceName :PRINTABLE:'JiangSu'

localityName :PRINTABLE:'NanJing'

organizationName :PRINTABLE:'Wiscom System Co.,Ltd'

organizationalUnitName:PRINTABLE:'ACSTAR'

commonName :PRINTABLE:'acmail.wiscom.com.cn'

emailAddress :IA5STRING:'acmail@wiscom.com.cn'

Certificate is to be certified until Jul 16 12:55:34 2005 GMT (365 days)

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

CA verifying: server.crt <-> CA cert

server.crt: OK

(如果这里出现错误,最好重新来过,删除ssl.ca-0.1这个目录,从解压缩处重新开始。)

下面要按照ssl.conf里面的设置,将证书放在适当的位置。

# chmod 400 server.key

# cd ..

# mkdir ssl.key

# mv ssl.ca-0.1/server.key ssl.key

# mkdir ssl.crt

# mv ssl.ca-0.1/server.crt ssl.crt

然后就可以启动啦!

# cd /usr/local/apache2

# ./bin/apachectl startssl

对于这个提示:

httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

只需要编辑httpd.conf,找到ServerName xxxx这一行,去掉前面的注释即可。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有