@maorongrong
2015-05-18T03:37:09.000000Z
字数 15013
阅读 604
SPECweb2009
Linux
docker
毕设
原创
声明:此文档为本人毕设原创,转载请注明出处
参考安装博文Centos
参考安装博文Ubuntu
SPECweb2009官方安装文档
注意要enable-ssl,因为Banking和Ecommerce需要SSL的支持
解决编译安装Apache支持SSL缺少依赖包:
ubuntu的解决办法:sudo apt-get install libssl-dev
centos没有libssl-dev包,因此解决方法:安转openssl-devel包
[root@c0cbb7297058 httpd-2.2.22]# yum -y install gcc(安装C编译器)
[root@c0cbb7297058 httpd-2.2.22]# ./configure --prefix=/usr/local/apache2 --with-ssl=/usr/lib --enable-ssl --enable-so
报错:error:No recognized SSL/TLS toolkit detected
[root@c0cbb7297058 httpd-2.2.22]# yum install openssl-devel
再来configure
[root@c0cbb7297058 httpd-2.2.22]# ./configure --prefix=/usr/local/apache2 --with-ssl=/usr/lib --enable-ssl --enable-so(正常执行)
[root@c0cbb7297058 httpd-2.2.22]# make
[root@c0cbb7297058 httpd-2.2.22]# make install
安装路径:/usr/local/php5
主要参考
[root@c0cbb7297058 local]# tar -xvf php-5.5.23.tar.gz
root@c0cbb7297058 local]# cd php-5.5.23/
[root@c0cbb7297058 php-5.5.23]# vi INSTALL(教PHP不同应用目的,不同系统的安装方法)
[root@c0cbb7297058 php-5.5.23]# ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs
报错如下:
Sorry, I cannot run apxs. Possible reasons follow:
1. Perl is not installed
2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs
3. Apache was not built using --enable-so (the apxs usage page is displayed)
The output of /usr/local/apache2/bin/apxs follows:
./configure: /usr/local/apache2/bin/apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or directory
configure: error: Aborting
经典解决方法(用必应翻译一下,因为是日文的)
解决方法:排除法
(1)apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs 明显能找到
[root@c0cbb7297058 php-5.5.23]# ls -la /usr/local/apache2/bin/ | grep apxs
-rwxr-xr-x 1 root root 22678 Apr 22 01:10 apxs(说明有)
(2)Apache was not built using --enable-so (the apxs usage page is displayed) So_module 有此模块
[root@c0cbb7297058 php-5.5.23]# /usr/local/apache2/bin/apachectl -M
Loaded Modules:
core_module (static)
authn_file_module (static)
authn_default_module (static)
authz_host_module (static)
authz_groupfile_module (static)
authz_user_module (static)
authz_default_module (static)
auth_basic_module (static)
include_module (static)
filter_module (static)
log_config_module (static)
env_module (static)
setenvif_module (static)
version_module (static)
ssl_module (static)
mpm_prefork_module (static)
http_module (static)
mime_module (static)
status_module (static)
autoindex_module (static)
asis_module (static)
cgi_module (static)
negotiation_module (static)
dir_module (static)
actions_module (static)
userdir_module (static)
alias_module (static)
so_module (static)
Syntax OK
(3)没有安装perl
[root@c0cbb7297058 php-5.5.23]# yum install perl
[root@localhost php-5.5.23]# which perl
/usr/bin/perl
或者
[root@c0cbb7297058 php-5.5.23]# find /usr/ -name perl
/usr/bin/perl
再来configure PHP
[root@c0cbb7297058 php-5.5.23]# ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs
报错如下:
The output of /usr/local/apache2/bin/apxs follows:
./configure: /usr/local/apache2/bin/apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or directory
configure: error: Aborting
就是说,/usr/local/apache2/bin/apxs中涉及的perl的调用,而在他的默认脚本中,perl路径是错误的,更改为你自己perl的路径
[root@c0cbb7297058 php-5.5.23]# vi /usr/local/apache2/bin/apxs
把这里部分
#!/replace/with/path/to/perl/interpreter -w (修改的时候这一行一定要删除,否则会又提醒 找不到这个perl的路径)
#
更改为:
#!/usr/bin/perl -w
#
再来configure PHP吧
[root@c0cbb7297058 php-5.5.23]# ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs
。。。。。。
checking whether to enable LIBXML support... yes
checking libxml2 install dir... no
checking for xml2-config path...
configure: error: xml2-config not found. Please check your libxml2 installation.
根据提示,我们再来安装libxml2 installation
[root@c0cbb7297058 php-5.5.23]# yum install libxml2-devel
[root@c0cbb7297058 php-5.5.23]# ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs
Thank you for using PHP.
config.status: creating php5.spec
config.status: creating main/build-defs.h
config.status: creating scripts/phpize
config.status: creating scripts/man1/phpize.1
config.status: creating scripts/php-config
config.status: creating scripts/man1/php-config.1
config.status: creating sapi/cli/php.1
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: executing default commands(说明配置成功了,开始安装吧)
[root@c0cbb7297058 php-5.5.23]# make
Build complete.
Don't forget to run 'make test'
[root@c0cbb7297058 php-5.5.23]# make install
[root@c0cbb7297058 php-5.5.23]# ll
其他的省略,
-rw-r--r-- 1 1887963844 1887961601 69236 Mar 18 09:45 php.ini-development
-rw-r--r-- 1 1887963844 1887961601 69266 Mar 18 09:45 php.ini-production
[root@c0cbb7297058 php-5.5.23]# cp php.ini-development /usr/local/php5/php.ini
[root@c0cbb7297058 php-5.5.23]# cd /usr/local/php5
[root@c0cbb7297058 php4]# ll
total 88
drwxr-xr-x 2 root root 4096 Apr 22 08:15 bin
drwxr-xr-x 2 root root 4096 Apr 22 08:15 etc
drwxr-xr-x 3 root root 4096 Apr 22 08:15 include
drwxr-xr-x 3 root root 4096 Apr 22 08:15 lib
drwxr-xr-x 3 root root 4096 Apr 22 08:15 php
-rw-r--r-- 1 root root 69236 Apr 22 08:41 php.ini
关于PHP源码安装默认路径和编译指定安装路径--prefix=/usr/local/php5
(1)如果采用源代码安装,一般默认安装在/usr/local/lib目录下
php配置文件: /usr/local/lib/php.ini或/usr/local/php/etc/php.ini
(2)编译安装指定路径 :/usr/local/php5
因此PHP的配置文件php.ini 从编译安装包里复制放在/usr/local/php5/目录下
[root@c0cbb7297058 php4]# cd /usr/local/apache2/conf/
[root@c0cbb7297058 conf]# vi httpd.conf
# LoadModule foo_module modules/mod_foo.so
LoadModule php5_module modules/libphp5.so (这里安装php5的时候已经自动加入了)
<IfModule mime_module>
#
#
AddType application/x-compress .Z (本来就有)
AddType application/x-gzip .gz .tgz (本来就有)
AddType application/x-httpd-php .php .phtml (只需要加入这个)
</IfModule mime_module>
启动apache
[root@c0cbb7297058 htdocs]# /usr/local/apache2/bin/apachectl start
[root@c0cbb7297058 htdocs]# vi phpinfo.php (写一个测试apache是否成功支持php的测试脚本)
<?php
phpinfo();
?>
浏览器访问http://127.0.0.1:80/phpinfo.php
1.修改apache2/conf/httpd.conf,
将“Include conf/extra/httpd-ssl.conf”这一行取消注释 支持SSL
2.重启apache报错更改方法:
没有配置ssl,需要生成ssl需要的证书
3.修改conf/extra/httpd-ssl.conf
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 修改为 SSLCipherSuite ALL
这是为了解决CipherSuite不匹配导致ssl handshake_failure的问题
SSLCertificateFile和SSLCertificateKeyFile分别对应到上一步生成的example.crt和example.key
[root@c0cbb7297058 extra]# /usr/local/apache2/bin/apachectl start
Syntax error on line 117 of /usr/local/apache2/conf/extra/httpd-ssl.conf:
SSLCertificateFile: file '/usr/local/apache2/conf/server.crt' does not exist or is empty
生成服务器证书和秘钥:
[root@c0cbb7297058 conf]# openssl req -new -x509 -nodes -out server.crt -keyout server.key
Generating a 2048 bit RSA private key
...................+++
..............................................................................................................................................................+++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CH
State or Province Name (full name) []:shanxi
Locality Name (eg, city) [Default City]:xian
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:CS
Common Name (eg, your name or your server's hostname) []:localhost
Email Address []:zam121118@163.com
[root@c0cbb7297058 conf]# ll
total 116
drwxr-xr-x 2 root root 4096 Apr 23 07:34 extra
-rw-r--r-- 1 root root 13688 Apr 22 09:10 httpd.conf
-rw-r--r-- 1 root root 13593 Apr 22 08:15 httpd.conf.bak
-rw-r--r-- 1 root root 12958 Apr 22 01:15 magic
-rw-r--r-- 1 root root 49815 Apr 22 01:15 mime.types
drwxr-xr-x 3 root root 4096 Apr 22 01:15 original
-rw-r--r-- 1 root root 1428 Apr 23 11:45 server.crt
-rw-r--r-- 1 root root 1708 Apr 23 11:45 server.key
[root@c0cbb7297058 conf]# /usr/local/apache2/bin/apachectl start
在浏览器测试是否安装成功:http://202.117.16.189:380/phpinfo.php (出现介绍PHP版本的表格信息)
[root@c0cbb7297058 htdocs]# ll
total 8
-rw-r--r-- 1 500 500 44 Nov 20 2004 index.html
-rw-r--r-- 1 root root 20 Apr 22 09:02 phpinfo.php
[root@c0cbb7297058 conf]# cd /usr/web2009-1.20/Scripts/PHP
[root@c0cbb7297058 PHP]# cp -r ./* /usr/local/apache2/htdocs/
[root@c0cbb7297058 conf]# chmod -R 777 /usr/local/apache2/htdocs/ (递归的给权限)
[root@c0cbb7297058 conf]# vi httpd.conf (查看DOCUMENTROOT)
DocumentRoot "/usr/local/apache2/htdocs"
[root@c0cbb7297058 web2009-1.20]# cd redistributable_sources/
[root@c0cbb7297058 web2009-1.20]# tar -xvf Smarty-2.6.22.tar.gz
[root@c0cbb7297058 web2009-1.20]# cd Smarty-2.6.22
[root@c0cbb7297058 Smarty-2.6.22]# ll
total 428
-rw-rw-r-- 1 1003 1000 370 Dec 17 2008 BUGS
-rw-rw-r-- 1 1003 1000 289225 Dec 17 2008 ChangeLog
-rw-rw-r-- 1 1003 1000 24389 Dec 17 2008 COPYING.lib
drwxrwxr-x 5 1003 1000 4096 Dec 17 2008 demo
-rw-rw-r-- 1 1003 1000 12740 Dec 17 2008 FAQ
-rw-rw-r-- 1 1003 1000 1408 Dec 17 2008 INSTALL
drwxrwxr-x 4 1003 1000 4096 Dec 17 2008 libs
drwxrwxr-x 2 1003 1000 4096 Dec 17 2008 misc
-rw-rw-r-- 1 1003 1000 48489 Dec 17 2008 NEWS
-rw-rw-r-- 1 1003 1000 3052 Dec 17 2008 QUICK_START
-rw-rw-r-- 1 1003 1000 3393 Dec 17 2008 README
-rw-rw-r-- 1 1003 1000 18942 Dec 17 2008 RELEASE_NOTES
-rw-rw-r-- 1 1003 1000 421 Dec 17 2008 TODO
drwxrwxr-x 6 1003 1000 4096 Dec 17 2008 unit_test
[root@c0cbb7297058 Smarty-2.6.22]# cp -r ./libs /usr/local/apache2/htdocs/
[root@c0cbb7297058 Smarty-2.6.22]# cd /usr/local/apache2/htdocs/
[root@c0cbb7297058 htdocs]# ll
total 24 (bank\ecommerce\support都是复制)
drwxrwxrwx 4 root root 4096 Apr 22 13:37 bank
drwxrwxrwx 4 root root 4096 Apr 22 13:37 ecommerce
-rwxrwxrwx 1 500 500 44 Nov 20 2004 index.html
drwxr-xr-x 4 root root 4096 Apr 23 00:54 libs
-rwxrwxrwx 1 root root 20 Apr 22 09:02 phpinfo.php
drwxrwxrwx 4 root root 4096 Apr 22 13:37 support
[root@c0cbb7297058 htdocs]# mv libs Smarty
[root@c0cbb7297058 htdocs]# ll
total 24
drwxrwxrwx 4 root root 4096 Apr 22 13:37 bank
drwxrwxrwx 4 root root 4096 Apr 22 13:37 ecommerce
-rwxrwxrwx 1 500 500 44 Nov 20 2004 index.html
-rwxrwxrwx 1 root root 20 Apr 22 09:02 phpinfo.php
drwxr-xr-x 4 root root 4096 Apr 23 00:54 Smarty
drwxrwxrwx 4 root root 4096 Apr 22 13:37 support
[root@c0cbb7297058 htdocs]# chmod -R 777 /usr/local/apache2/htdocs/ (再重新递归地给一次权限777)
找PHP的配置文件(上文中曾经从PHP的源码安装包里拷贝过)
[root@c0cbb7297058 local]# find . -name php.ini
./php4/php.ini
[root@c0cbb7297058 php4]# ll
total 88
drwxr-xr-x 2 root root 4096 Apr 22 08:15 bin
drwxr-xr-x 2 root root 4096 Apr 22 08:15 etc
drwxr-xr-x 3 root root 4096 Apr 22 08:15 include
drwxr-xr-x 3 root root 4096 Apr 22 08:15 lib
drwxr-xr-x 3 root root 4096 Apr 22 08:15 php
-rwxr-xr-x 1 root root 69236 Apr 22 08:41 php.ini
[root@c0cbb7297058 php4]# vi php.ini(修改下面3行DEFAULT VALIAL)
"display_errors on
"display_startup_errors On
error_reporting = E_ALL",
修改/usr/web2009-1.20/Wafgen/unix目录下的所有rc文件,修改DOCROOT和SIMULTANEOUS_SESSIONS即可,SIMULTANEOUS_SESSIONS应当大于Test.config中的值
[root@c0cbb7297058 unix]# ll
total 40
-rwxrwxr-x 1 root root 5636 Apr 20 08:10 bank_image_props.rc
-rwxrwxr-x 1 root root 3562 Apr 20 08:10 bank_usercheck_props.rc
-rwxrwxr-x 1 root root 11883 Apr 20 08:10 ecommerce_image_props.rc
-rwxrwxr-x 1 root root 3421 Apr 20 08:10 ecommerce_productline_props.rc
-rwxrwxr-x 1 root root 3925 Apr 20 08:10 support_downloads_props.rc
-rwxrwxr-x 1 root root 4447 Apr 20 08:10 support_image_props.rc
[root@c0cbb7297058 unix]# vi bank_image_props.rc (SIMULTANEOUS_SESSIONS=1不能更改)
[root@c0cbb7297058 unix]# vi bank_usercheck_props.rc
[root@c0cbb7297058 unix]# vi ecommerce_image_props.rc (SIMULTANEOUS_SESSIONS=1不能更改)
[root@c0cbb7297058 unix]# vi ecommerce_productline_props.rc
[root@c0cbb7297058 unix]# vi support_downloads_props.rc
[root@c0cbb7297058 unix]# vi support_image_props.rc (SIMULTANEOUS_SESSIONS=1不能更改)
这6个文件中,只允许更改SECTION A部分。
更改这两项:均在section A部分来改
DOCROOT=/usr/local/apache2/htdocs/
SIMULTANEOUS_SESSIONS=合适值(1600)
需要修改Wafgen.sh中java命令路径
/usr/java/jdk1.8.0_40/jre/bin/java
[root@c0cbb7297058 Wafgen]# vi Wafgen.sh
#!/bin/sh
# Copyright (c) 2010 Standard Performance Evaluation Corporation (SPEC)
# All rights reserved.
#
# This source code is provided as is, without any express or implied warranty.
#
JAVA=/usr/java/jre6/bin/java 这一行改为:JAVA=/usr/java/jdk1.8.0_40/jre/bin/java
$JAVA -version
$JAVA -Xms384m -Xmx384m -classpath bin/specweb2009.jar:bin/check.jar org/spec/wafgen/Wafgen $1
重新生成测试数据
[root@c0cbb7297058 Wafgen]# ./Wafgen.sh unix/bank_image_props.rc
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
Start: Thu Apr 23 02:13:58 UTC 2015
End: Thu Apr 23 02:13:58 UTC 2015
[root@c0cbb7297058 Wafgen]# ./Wafgen.sh unix/bank_usercheck_props.rc
[root@c0cbb7297058 Wafgen]# ./Wafgen.sh unix/ecommerce_image_props.rc
[root@c0cbb7297058 Wafgen]# ./Wafgen.sh unix/ecommerce_productline_props.rc
[root@c0cbb7297058 Wafgen]# ./Wafgen.sh unix/support_downloads_props.rc
[root@c0cbb7297058 Wafgen]# ./Wafgen.sh unix/support_image_props.rc
查看一下生成的文件有多大:
[root@8458b360c9a0 htdocs]# du -h --max-depth=1 ./*
0 ./bank/templates_c
84K ./bank/templates
356K ./bank/dynamic_padding
19G ./bank/images
19G ./bank
0 ./ecommerce/templates_c
52K ./ecommerce/templates
812K ./ecommerce/dynamic_padding
4.8G ./ecommerce/images
4.8G ./ecommerce
4.0K ./index.html
4.0K ./phpinfo.php
96K ./Smarty/internals
228K ./Smarty/plugins
500K ./Smarty
0 ./support/templates_c
32K ./support/templates
26G ./support/downloads
360K ./support/dynamic_padding
136K ./support/images
26G ./support
(1)在besim 服务器 /usr/local/apache2/htdocs/ 目录下新建 a.txt
(2)webserver上把 test.php 文件放到 support 下,test.php 代码如下:
<?php
include_once('/usr/local/apache2/htdocs/Smarty/Smarty.class.php');$smarty = new Smarty();
$smarty -> template_dir = "./templates";
$smarty -> compile_dir = "./templates_c";
$smarty -> left_delimiter = "<{";
$smarty -> right_delimiter = "}>";
if(!$fp = fopen('http://172.17.0.6',':80','/a.txt','r')) (这里的ip和端口是besim的,我用的容器局域网的ip)
$smarty -> assgin('test','open remote web server fail');
else
$smarty -> assgin('test','open remote web server ok');
$smarty -> display('test.html');
?>
(3)新建 test.html 并放在 supports/templates/ 目录下
代码如下
<html> <head> </head>
<body><{$test}></body>
</html>
(4) 如果显示”open remote web server ok”代表成功配置web server
!容器默认10G存储的限制!
将apache2目录下的htdocs文件夹全部备份到/usr/aaa(本机/home/amy/spec的挂载点)
[root@c0cbb7297058 ~]# tar -zpcv -f /usr/aaa/apache2_htdocs.tar.gz /usr/local/apache2/htdocs
tar命令备份参数
-c 新建打包文件,可搭配-v 来查看过程中被打包的文件名
-z 通过gzip的支持进行压缩、解压缩,此时文件名最好为*.tar.gz
-v 在压缩/解压缩过程中,将正在处理的文件名显示出来
-p 保留备份数据的原始权限与属性,常用于备份(-c)重要的配置文件。
-f filename;后面接的被处理的文件名。建议-f 单独写一个参数
[root@localhost ~]# sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
webser_done latest ba87b9adeb42 3 hours ago 1.462 GB
besim_done latest 9061dbe58d8e 3 days ago 1.056 GB
tpcw1.0 2 807a4251848d 2 weeks ago 3.558 GB
csphere/csphere 0.9.1 111b2802d2fc 5 weeks ago 61.78 MB
csphere/csphere latest 111b2802d2fc 5 weeks ago 61.78 MB
urelx/centos6-epel latest 7871f0e862fd 9 weeks ago 228.1 MB
详述及docker run用法: