[关闭]
@maorongrong 2015-05-18T03:37:09.000000Z 字数 15013 阅读 604

容器安装Specweb2009——webserver tools

SPECweb2009 Linux docker 毕设 原创


声明:此文档为本人毕设原创,转载请注明出处

参考安装博文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包

  1. [root@c0cbb7297058 httpd-2.2.22]# yum -y install gcc(安装C编译器)
  2. [root@c0cbb7297058 httpd-2.2.22]# ./configure --prefix=/usr/local/apache2 --with-ssl=/usr/lib --enable-ssl --enable-so
  3. 报错:errorNo recognized SSL/TLS toolkit detected
  4. [root@c0cbb7297058 httpd-2.2.22]# yum install openssl-devel
  5. 再来configure
  6. [root@c0cbb7297058 httpd-2.2.22]# ./configure --prefix=/usr/local/apache2 --with-ssl=/usr/lib --enable-ssl --enable-so(正常执行)
  7. [root@c0cbb7297058 httpd-2.2.22]# make
  8. [root@c0cbb7297058 httpd-2.2.22]# make install

编译安装PHP5

安装路径:/usr/local/php5
主要参考

  1. [root@c0cbb7297058 local]# tar -xvf php-5.5.23.tar.gz
  2. root@c0cbb7297058 local]# cd php-5.5.23/
  3. [root@c0cbb7297058 php-5.5.23]# vi INSTALL(教PHP不同应用目的,不同系统的安装方法)

1.error1及解决

  1. [root@c0cbb7297058 php-5.5.23]# ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs
  2. 报错如下:
  3. Sorry, I cannot run apxs. Possible reasons follow:
  4. 1. Perl is not installed
  5. 2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs
  6. 3. Apache was not built using --enable-so (the apxs usage page is displayed)
  7. The output of /usr/local/apache2/bin/apxs follows:
  8. ./configure: /usr/local/apache2/bin/apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or directory
  9. configure: error: Aborting

经典解决方法(用必应翻译一下,因为是日文的)

解决方法:排除法
(1)apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs 明显能找到

  1. [root@c0cbb7297058 php-5.5.23]# ls -la /usr/local/apache2/bin/ | grep apxs
  2. -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 有此模块

  1. [root@c0cbb7297058 php-5.5.23]# /usr/local/apache2/bin/apachectl -M
  2. Loaded Modules:
  3. core_module (static)
  4. authn_file_module (static)
  5. authn_default_module (static)
  6. authz_host_module (static)
  7. authz_groupfile_module (static)
  8. authz_user_module (static)
  9. authz_default_module (static)
  10. auth_basic_module (static)
  11. include_module (static)
  12. filter_module (static)
  13. log_config_module (static)
  14. env_module (static)
  15. setenvif_module (static)
  16. version_module (static)
  17. ssl_module (static)
  18. mpm_prefork_module (static)
  19. http_module (static)
  20. mime_module (static)
  21. status_module (static)
  22. autoindex_module (static)
  23. asis_module (static)
  24. cgi_module (static)
  25. negotiation_module (static)
  26. dir_module (static)
  27. actions_module (static)
  28. userdir_module (static)
  29. alias_module (static)
  30. so_module (static)
  31. Syntax OK

(3)没有安装perl

  1. [root@c0cbb7297058 php-5.5.23]# yum install perl
  2. [root@localhost php-5.5.23]# which perl
  3. /usr/bin/perl
  4. 或者
  5. [root@c0cbb7297058 php-5.5.23]# find /usr/ -name perl
  6. /usr/bin/perl

2.error2及解决

再来configure PHP

  1. [root@c0cbb7297058 php-5.5.23]# ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs
  2. 报错如下:
  3. The output of /usr/local/apache2/bin/apxs follows:
  4. ./configure: /usr/local/apache2/bin/apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or directory
  5. configure: error: Aborting

就是说,/usr/local/apache2/bin/apxs中涉及的perl的调用,而在他的默认脚本中,perl路径是错误的,更改为你自己perl的路径

  1. [root@c0cbb7297058 php-5.5.23]# vi /usr/local/apache2/bin/apxs
  2. 把这里部分
  3. #!/replace/with/path/to/perl/interpreter -w (修改的时候这一行一定要删除,否则会又提醒 找不到这个perl的路径)
  4. #
  5. 更改为:
  6. #!/usr/bin/perl -w
  7. #

3.error3及解决

再来configure PHP吧

  1. [root@c0cbb7297058 php-5.5.23]# ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs
  2. 。。。。。。
  3. checking whether to enable LIBXML support... yes
  4. checking libxml2 install dir... no
  5. checking for xml2-config path...
  6. configure: error: xml2-config not found. Please check your libxml2 installation.

根据提示,我们再来安装libxml2 installation
[root@c0cbb7297058 php-5.5.23]# yum install libxml2-devel

4.成功安装PHP

  1. [root@c0cbb7297058 php-5.5.23]# ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs
  2. Thank you for using PHP.
  3. config.status: creating php5.spec
  4. config.status: creating main/build-defs.h
  5. config.status: creating scripts/phpize
  6. config.status: creating scripts/man1/phpize.1
  7. config.status: creating scripts/php-config
  8. config.status: creating scripts/man1/php-config.1
  9. config.status: creating sapi/cli/php.1
  10. config.status: creating sapi/cgi/php-cgi.1
  11. config.status: creating ext/phar/phar.1
  12. config.status: creating ext/phar/phar.phar.1
  13. config.status: creating main/php_config.h
  14. config.status: executing default commands(说明配置成功了,开始安装吧)
  15. [root@c0cbb7297058 php-5.5.23]# make
  16. Build complete.
  17. Don't forget to run 'make test'
  18. [root@c0cbb7297058 php-5.5.23]# make install
  19. [root@c0cbb7297058 php-5.5.23]# ll
  20. 其他的省略,
  21. -rw-r--r-- 1 1887963844 1887961601 69236 Mar 18 09:45 php.ini-development
  22. -rw-r--r-- 1 1887963844 1887961601 69266 Mar 18 09:45 php.ini-production
  23. [root@c0cbb7297058 php-5.5.23]# cp php.ini-development /usr/local/php5/php.ini
  24. [root@c0cbb7297058 php-5.5.23]# cd /usr/local/php5
  25. [root@c0cbb7297058 php4]# ll
  26. total 88
  27. drwxr-xr-x 2 root root 4096 Apr 22 08:15 bin
  28. drwxr-xr-x 2 root root 4096 Apr 22 08:15 etc
  29. drwxr-xr-x 3 root root 4096 Apr 22 08:15 include
  30. drwxr-xr-x 3 root root 4096 Apr 22 08:15 lib
  31. drwxr-xr-x 3 root root 4096 Apr 22 08:15 php
  32. -rw-r--r-- 1 root root 69236 Apr 22 08:41 php.ini

5.centos Apache、php、mysql 默认安装和rpm安装路径

关于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/目录下

6.配置apache文件,使apache支持PHP脚本

  1. [root@c0cbb7297058 php4]# cd /usr/local/apache2/conf/
  2. [root@c0cbb7297058 conf]# vi httpd.conf
  3. # LoadModule foo_module modules/mod_foo.so
  4. LoadModule php5_module modules/libphp5.so (这里安装php5的时候已经自动加入了)
  5. <IfModule mime_module>
  6. #
  7. #
  8. AddType application/x-compress .Z (本来就有)
  9. AddType application/x-gzip .gz .tgz (本来就有)
  10. AddType application/x-httpd-php .php .phtml (只需要加入这个)
  11. </IfModule mime_module>
  12. 启动apache
  13. [root@c0cbb7297058 htdocs]# /usr/local/apache2/bin/apachectl start
  14. [root@c0cbb7297058 htdocs]# vi phpinfo.php (写一个测试apache是否成功支持php的测试脚本)
  15. <?php
  16. phpinfo();
  17. ?>
  18. 浏览器访问http://127.0.0.1:80/phpinfo.php

7.解决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

  1. [root@c0cbb7297058 extra]# /usr/local/apache2/bin/apachectl start
  2. Syntax error on line 117 of /usr/local/apache2/conf/extra/httpd-ssl.conf:
  3. SSLCertificateFile: file '/usr/local/apache2/conf/server.crt' does not exist or is empty
  4. 生成服务器证书和秘钥:
  5. [root@c0cbb7297058 conf]# openssl req -new -x509 -nodes -out server.crt -keyout server.key
  6. Generating a 2048 bit RSA private key
  7. ...................+++
  8. ..............................................................................................................................................................+++
  9. writing new private key to 'server.key'
  10. -----
  11. You are about to be asked to enter information that will be incorporated
  12. into your certificate request.
  13. What you are about to enter is what is called a Distinguished Name or a DN.
  14. There are quite a few fields but you can leave some blank
  15. For some fields there will be a default value,
  16. If you enter '.', the field will be left blank.
  17. -----
  18. Country Name (2 letter code) [XX]:CH
  19. State or Province Name (full name) []:shanxi
  20. Locality Name (eg, city) [Default City]:xian
  21. Organization Name (eg, company) [Default Company Ltd]:
  22. Organizational Unit Name (eg, section) []:CS
  23. Common Name (eg, your name or your server's hostname) []:localhost
  24. Email Address []:zam121118@163.com
  25. [root@c0cbb7297058 conf]# ll
  26. total 116
  27. drwxr-xr-x 2 root root 4096 Apr 23 07:34 extra
  28. -rw-r--r-- 1 root root 13688 Apr 22 09:10 httpd.conf
  29. -rw-r--r-- 1 root root 13593 Apr 22 08:15 httpd.conf.bak
  30. -rw-r--r-- 1 root root 12958 Apr 22 01:15 magic
  31. -rw-r--r-- 1 root root 49815 Apr 22 01:15 mime.types
  32. drwxr-xr-x 3 root root 4096 Apr 22 01:15 original
  33. -rw-r--r-- 1 root root 1428 Apr 23 11:45 server.crt
  34. -rw-r--r-- 1 root root 1708 Apr 23 11:45 server.key
  35. [root@c0cbb7297058 conf]# /usr/local/apache2/bin/apachectl start
在浏览器测试是否安装成功:http://202.117.16.189:380/phpinfo.php (出现介绍PHP版本的表格信息)

SPECWEB2009 webserver继续配置

  1. [root@c0cbb7297058 htdocs]# ll
  2. total 8
  3. -rw-r--r-- 1 500 500 44 Nov 20 2004 index.html
  4. -rw-r--r-- 1 root root 20 Apr 22 09:02 phpinfo.php
  5. [root@c0cbb7297058 conf]# cd /usr/web2009-1.20/Scripts/PHP
  6. [root@c0cbb7297058 PHP]# cp -r ./* /usr/local/apache2/htdocs/
  7. [root@c0cbb7297058 conf]# chmod -R 777 /usr/local/apache2/htdocs/ (递归的给权限)
  8. [root@c0cbb7297058 conf]# vi httpd.conf (查看DOCUMENTROOT)
  9. DocumentRoot "/usr/local/apache2/htdocs"
  10. [root@c0cbb7297058 web2009-1.20]# cd redistributable_sources/
  11. [root@c0cbb7297058 web2009-1.20]# tar -xvf Smarty-2.6.22.tar.gz
  12. [root@c0cbb7297058 web2009-1.20]# cd Smarty-2.6.22
  13. [root@c0cbb7297058 Smarty-2.6.22]# ll
  14. total 428
  15. -rw-rw-r-- 1 1003 1000 370 Dec 17 2008 BUGS
  16. -rw-rw-r-- 1 1003 1000 289225 Dec 17 2008 ChangeLog
  17. -rw-rw-r-- 1 1003 1000 24389 Dec 17 2008 COPYING.lib
  18. drwxrwxr-x 5 1003 1000 4096 Dec 17 2008 demo
  19. -rw-rw-r-- 1 1003 1000 12740 Dec 17 2008 FAQ
  20. -rw-rw-r-- 1 1003 1000 1408 Dec 17 2008 INSTALL
  21. drwxrwxr-x 4 1003 1000 4096 Dec 17 2008 libs
  22. drwxrwxr-x 2 1003 1000 4096 Dec 17 2008 misc
  23. -rw-rw-r-- 1 1003 1000 48489 Dec 17 2008 NEWS
  24. -rw-rw-r-- 1 1003 1000 3052 Dec 17 2008 QUICK_START
  25. -rw-rw-r-- 1 1003 1000 3393 Dec 17 2008 README
  26. -rw-rw-r-- 1 1003 1000 18942 Dec 17 2008 RELEASE_NOTES
  27. -rw-rw-r-- 1 1003 1000 421 Dec 17 2008 TODO
  28. drwxrwxr-x 6 1003 1000 4096 Dec 17 2008 unit_test
  29. [root@c0cbb7297058 Smarty-2.6.22]# cp -r ./libs /usr/local/apache2/htdocs/
  30. [root@c0cbb7297058 Smarty-2.6.22]# cd /usr/local/apache2/htdocs/
  31. [root@c0cbb7297058 htdocs]# ll
  32. total 24 (bank\ecommerce\support都是复制)
  33. drwxrwxrwx 4 root root 4096 Apr 22 13:37 bank
  34. drwxrwxrwx 4 root root 4096 Apr 22 13:37 ecommerce
  35. -rwxrwxrwx 1 500 500 44 Nov 20 2004 index.html
  36. drwxr-xr-x 4 root root 4096 Apr 23 00:54 libs
  37. -rwxrwxrwx 1 root root 20 Apr 22 09:02 phpinfo.php
  38. drwxrwxrwx 4 root root 4096 Apr 22 13:37 support
  39. [root@c0cbb7297058 htdocs]# mv libs Smarty
  40. [root@c0cbb7297058 htdocs]# ll
  41. total 24
  42. drwxrwxrwx 4 root root 4096 Apr 22 13:37 bank
  43. drwxrwxrwx 4 root root 4096 Apr 22 13:37 ecommerce
  44. -rwxrwxrwx 1 500 500 44 Nov 20 2004 index.html
  45. -rwxrwxrwx 1 root root 20 Apr 22 09:02 phpinfo.php
  46. drwxr-xr-x 4 root root 4096 Apr 23 00:54 Smarty
  47. drwxrwxrwx 4 root root 4096 Apr 22 13:37 support
  48. [root@c0cbb7297058 htdocs]# chmod -R 777 /usr/local/apache2/htdocs/ (再重新递归地给一次权限777)
  49. 找PHP的配置文件(上文中曾经从PHP的源码安装包里拷贝过)
  50. [root@c0cbb7297058 local]# find . -name php.ini
  51. ./php4/php.ini
  52. [root@c0cbb7297058 php4]# ll
  53. total 88
  54. drwxr-xr-x 2 root root 4096 Apr 22 08:15 bin
  55. drwxr-xr-x 2 root root 4096 Apr 22 08:15 etc
  56. drwxr-xr-x 3 root root 4096 Apr 22 08:15 include
  57. drwxr-xr-x 3 root root 4096 Apr 22 08:15 lib
  58. drwxr-xr-x 3 root root 4096 Apr 22 08:15 php
  59. -rwxr-xr-x 1 root root 69236 Apr 22 08:41 php.ini
  60. [root@c0cbb7297058 php4]# vi php.ini(修改下面3行DEFAULT VALIAL)
  61. "display_errors on
  62. "display_startup_errors On
  63. error_reporting = E_ALL",
修改/usr/web2009-1.20/Wafgen/unix目录下的所有rc文件,修改DOCROOT和SIMULTANEOUS_SESSIONS即可,SIMULTANEOUS_SESSIONS应当大于Test.config中的值
  1. [root@c0cbb7297058 unix]# ll
  2. total 40
  3. -rwxrwxr-x 1 root root 5636 Apr 20 08:10 bank_image_props.rc
  4. -rwxrwxr-x 1 root root 3562 Apr 20 08:10 bank_usercheck_props.rc
  5. -rwxrwxr-x 1 root root 11883 Apr 20 08:10 ecommerce_image_props.rc
  6. -rwxrwxr-x 1 root root 3421 Apr 20 08:10 ecommerce_productline_props.rc
  7. -rwxrwxr-x 1 root root 3925 Apr 20 08:10 support_downloads_props.rc
  8. -rwxrwxr-x 1 root root 4447 Apr 20 08:10 support_image_props.rc
  9. [root@c0cbb7297058 unix]# vi bank_image_props.rc SIMULTANEOUS_SESSIONS=1不能更改)
  10. [root@c0cbb7297058 unix]# vi bank_usercheck_props.rc
  11. [root@c0cbb7297058 unix]# vi ecommerce_image_props.rc SIMULTANEOUS_SESSIONS=1不能更改)
  12. [root@c0cbb7297058 unix]# vi ecommerce_productline_props.rc
  13. [root@c0cbb7297058 unix]# vi support_downloads_props.rc
  14. [root@c0cbb7297058 unix]# vi support_image_props.rc SIMULTANEOUS_SESSIONS=1不能更改)
  15. 6个文件中,只允许更改SECTION A部分。
  16. 更改这两项:均在section A部分来改
  17. DOCROOT=/usr/local/apache2/htdocs/
  18. SIMULTANEOUS_SESSIONS=合适值(1600)

需要修改Wafgen.sh中java命令路径
/usr/java/jdk1.8.0_40/jre/bin/java

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

  1. [root@c0cbb7297058 Wafgen]# vi Wafgen.sh
  2. #!/bin/sh
  3. # Copyright (c) 2010 Standard Performance Evaluation Corporation (SPEC)
  4. # All rights reserved.
  5. #
  6. # This source code is provided as is, without any express or implied warranty.
  7. #
  8. JAVA=/usr/java/jre6/bin/java 这一行改为:JAVA=/usr/java/jdk1.8.0_40/jre/bin/java
  9. $JAVA -version
  10. $JAVA -Xms384m -Xmx384m -classpath bin/specweb2009.jar:bin/check.jar org/spec/wafgen/Wafgen $1

重新生成测试数据

  1. [root@c0cbb7297058 Wafgen]# ./Wafgen.sh unix/bank_image_props.rc
  2. java version "1.8.0_40"
  3. Java(TM) SE Runtime Environment (build 1.8.0_40-b26)
  4. Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
  5. Start: Thu Apr 23 02:13:58 UTC 2015
  6. End: Thu Apr 23 02:13:58 UTC 2015
  7. [root@c0cbb7297058 Wafgen]# ./Wafgen.sh unix/bank_usercheck_props.rc
  8. [root@c0cbb7297058 Wafgen]# ./Wafgen.sh unix/ecommerce_image_props.rc
  9. [root@c0cbb7297058 Wafgen]# ./Wafgen.sh unix/ecommerce_productline_props.rc
  10. [root@c0cbb7297058 Wafgen]# ./Wafgen.sh unix/support_downloads_props.rc
  11. [root@c0cbb7297058 Wafgen]# ./Wafgen.sh unix/support_image_props.rc

查看一下生成的文件有多大:

  1. [root@8458b360c9a0 htdocs]# du -h --max-depth=1 ./*
  2. 0 ./bank/templates_c
  3. 84K ./bank/templates
  4. 356K ./bank/dynamic_padding
  5. 19G ./bank/images
  6. 19G ./bank
  7. 0 ./ecommerce/templates_c
  8. 52K ./ecommerce/templates
  9. 812K ./ecommerce/dynamic_padding
  10. 4.8G ./ecommerce/images
  11. 4.8G ./ecommerce
  12. 4.0K ./index.html
  13. 4.0K ./phpinfo.php
  14. 96K ./Smarty/internals
  15. 228K ./Smarty/plugins
  16. 500K ./Smarty
  17. 0 ./support/templates_c
  18. 32K ./support/templates
  19. 26G ./support/downloads
  20. 360K ./support/dynamic_padding
  21. 136K ./support/images
  22. 26G ./support

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

  1. 1)在besim 服务器 /usr/local/apache2/htdocs/ 目录下新建 a.txt
  2. 2webserver上把 test.php 文件放到 support 下,test.php 代码如下:
  3. <?php
  4. include_once('/usr/local/apache2/htdocs/Smarty/Smarty.class.php');$smarty = new Smarty();
  5. $smarty -> template_dir = "./templates";
  6. $smarty -> compile_dir = "./templates_c";
  7. $smarty -> left_delimiter = "<{";
  8. $smarty -> right_delimiter = "}>";
  9. if(!$fp = fopen('http://172.17.0.6',':80','/a.txt','r')) (这里的ip和端口是besim的,我用的容器局域网的ip
  10. $smarty -> assgin('test','open remote web server fail');
  11. else
  12. $smarty -> assgin('test','open remote web server ok');
  13. $smarty -> display('test.html');
  14. ?>
  15. 3)新建 test.html 并放在 supports/templates/ 目录下
  16. 代码如下
  17. <html> <head> </head>
  18. <body><{$test}></body>
  19. </html>
  20. 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主机上镜像讲解

  1. [root@localhost ~]# sudo docker images
  2. REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
  3. webser_done latest ba87b9adeb42 3 hours ago 1.462 GB
  4. besim_done latest 9061dbe58d8e 3 days ago 1.056 GB
  5. tpcw1.0 2 807a4251848d 2 weeks ago 3.558 GB
  6. csphere/csphere 0.9.1 111b2802d2fc 5 weeks ago 61.78 MB
  7. csphere/csphere latest 111b2802d2fc 5 weeks ago 61.78 MB
  8. urelx/centos6-epel latest 7871f0e862fd 9 weeks ago 228.1 MB

详述及docker run用法:

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注