Maorongrong smile like sunshine

容器安装Specweb2009——webserver tools


制作Specweb-webserver容器。

参考安装博文Centos 参考安装博文Ubuntu SPECweb2009官方安装文档

web server的配置安装

安装Apache2

注意要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

编译安装PHP5

安装路径:/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不同应用目的,不同系统的安装方法)
  • error1及解决

[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


or


[root@c0cbb7297058 php-5.5.23]# find /usr/ -name perl
/usr/bin/perl
  • error2及解决

再来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

  • error3及解决

再来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

  • 成功安装PHP
[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/目录下

  • 配置apache文件,使apache支持PHP脚本
[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

  • 解决SSL进行测试握手失败

参考链接1

参考链接2

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版本的表格信息)

SPECWEB2009 webserver继续配置

[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

容器挂载外存

进行数据生成,这里的数据生成48G。而容器最大支持存储10G,因此考虑启动安装webserver容器是后,挂载主机目录到容器/usr/local/apache2/htdocs/

[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

### 测试 web server(此步骤可以忽略)

(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/ 目录下 代码如下 ```

<{$test}>

(4) 如果显示”open remote web server ok”代表成功配置web server

## 备份htdocs生成的测试数据

!容器默认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 单独写一个参数

189主机上镜像讲解

[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用法:

  • webser_done

安装了SpecWeb2009的setup.jar文件中webservertools组件,apache2,PHP5,perl,libxml2-devel,gcc,openssl-devel,jdk8 配置信息见个配置文件,现已经打包webser_done.tar.gz和启动该镜像需要挂载的apache WEB目录包ap2_ht.tar.gz $ sudo docker run -ti -p XXXXX:80 (或者直接-P,如果要开放除了80更多端口只能手动指定) -v /home/amy/ap2_ht:/usr/local/apache2/htdocs [--name webserver] ba87b9adeb42 /bin/bash # source /etc/profile

启动apache2服务,并查看是否成功启动

  • besim_done

安装了SpecWeb2009的setup.jar文件中Besim组件,apache2,Fastcgi,Mod_fastcgi,perl(涉及安装CPAN),jdk更改了一堆配置文件,现已经打包besim_done.tar 启动可以根据需要挂载一个主机文件目录,方便共享数据 $ sudo docker run -ti -p XXXXX:80 (或者直接-P,如果要开放除了80更多端口只能手动指定) -v /home/amy/xxxx:/usr/aaa [--link name:alias此处就是 --link webserver:webreq] 9061dbe58d8e /bin/bash

# source /etc/profile

启动apache2服务,并查看是否成功启动

  • tpcw1.0:2

安装了tomcat7+mysql+jdk-8u40+jdbc,更改了一堆文件和代码,现已经打包tpcw_done.tar.gz包

启动该镜像之后需要更改配置一系列文件

$ sudo docker run -ti -P(会自动映射3306,80,8080端口) -v /home/amy/xxx:/usr/aaa 807a4251848d /bin/bash # source /etc/profile

更改程序,生成字节码,再启动tomcat,进行测试


Similar Posts

Comments