超级web服务器yum 安装apache+源码编译tomcat+awstat+phpmadin+mysql+php+AB压力测试


实验环境:

两台机器:Centos6.4

机器一: 192.168.56.10  安装httpd  php   等整合


机器二: 192。168.56.11 安装 mysql

========================================================================================

(iptables -t nat -I PREROUTING -d 外IP -p tcp -m tcp --dport 端口 -j DNAT --to-destination 外网IP:端口)

========================================================================================

机器一:


1. yum -y install *libxml2* httpd* PHP* *gcc* mysql mysql-devel ( 这里的mysql 是客户端)

vim  /etc/hosts      

    192.168.56.10    www.example.com

    192.168.56.10    web.example.com

vim  /etc/httpd/conf/httpd.conf


修改:ServerName www.example.com:80


      DirectoryIndex index.html index.html.var index.php

         

      NameVirtualHost  192.168.56.10:80  //开启虚拟主机为了以后做虚拟主机挂网站

      

<VirtualHost 192.168.56.10:80>

    ServerAdmin www.example.com                             

    DocumentRoot /var/www/html

    ServerName www.example.com

    ErrorLog logs/www.example.com-error_log

    CustomLog logs/www.example.com-access_log common

</VirtualHost>


2. 解压phpMyadmin-*

cp -RV   phpmyadmin-*                /var/www/html/phpmyadmin


cd     /var/www/html/phpmyadmin

mv config.sample.inc.php    config.sample.inc.php.bak

cp config.sample.inc.php.bak     config.inc.php


vim config.inc.php

$cfg[‘blowfish_secret‘] = ‘redhat‘;  //随便指定,不为空


$cfg[‘Servers‘][$i][‘auth_type‘] = ‘cookie‘;


$cfg[‘Servers‘][$i][‘host‘] = ‘192.168.56.11‘;//指定你的mysql 数据库地址


$cfg[‘Servers‘][$i][‘controluser‘] = ‘root‘;

$cfg[‘Servers‘][$i][‘controlpass‘] = ‘redhat‘; //指定你的mysql 数据库的用户名和密码


$cfg[‘Servers‘][$i][‘pmadb‘] = ‘phpmyadmin‘;

$cfg[‘Servers‘][$i][‘bookmarktable‘] = ‘pma_bookmark‘;

$cfg[‘Servers‘][$i][‘relation‘] = ‘pma_relation‘;

$cfg[‘Servers‘][$i][‘table_info‘] = ‘pma_table_info‘;

$cfg[‘Servers‘][$i][‘table_coords‘] = ‘pma_table_coords‘;

$cfg[‘Servers‘][$i][‘pdf_pages‘] = ‘pma_pdf_pages‘;

$cfg[‘Servers‘][$i][‘column_info‘] = ‘pma_column_info‘;

$cfg[‘Servers‘][$i][‘history‘] = ‘pma_history‘;

$cfg[‘Servers‘][$i][‘tracking‘] = ‘pma_tracking‘;

$cfg[‘Servers‘][$i][‘designer_coords‘] = ‘pma_designer_coords‘;


vim libraries/config.default.php 


$cfg[‘blowfish_secret‘] = ‘redhat‘;


$cfg[‘Servers‘][$i][‘host‘] = ‘192.168.56.11‘;


$cfg[‘Servers‘][$i][‘port‘] = ‘3306‘; //指定你的Mysql 数据库端口


$cfg[‘Servers‘][$i][‘controluser‘] = ‘root‘;


$cfg[‘Servers‘][$i][‘controlpass‘] = ‘redhat‘;


$cfg[‘Servers‘][$i][‘user‘] = ‘root‘;


$cfg[‘Servers‘][$i][‘password‘] = ‘redhat‘;


//这个里面默认的为空,找到他们写入跟上面一样的数值:

$cfg[‘Servers‘][$i][‘pmadb‘] = ‘phpmyadmin‘;

$cfg[‘Servers‘][$i][‘bookmarktable‘] = ‘pma_bookmark‘;

$cfg[‘Servers‘][$i][‘relation‘] = ‘pma_relation‘;

$cfg[‘Servers‘][$i][‘table_info‘] = ‘pma_table_info‘;

$cfg[‘Servers‘][$i][‘table_coords‘] = ‘pma_table_coords‘;

$cfg[‘Servers‘][$i][‘pdf_pages‘] = ‘pma_pdf_pages‘;

$cfg[‘Servers‘][$i][‘column_info‘] = ‘pma_column_info‘;

$cfg[‘Servers‘][$i][‘history‘] = ‘pma_history‘;

$cfg[‘Servers‘][$i][‘tracking‘] = ‘pma_tracking‘;

$cfg[‘Servers‘][$i][‘designer_coords‘] = ‘pma_designer_coords‘;

===============================================================


客户端输入192.168.56.10/phpmyadmin   会报 mcrypt 插件错误:yum 安装PHP 没有mcrypt的插件。源码安装PHP你又必须指定 Mysql的安装位置。由于数据库和PHP分两台机器没法指定mysql的安装位置。所以我们采用编译安装模块。

========================================================================

1。开始编译 安装:libmcrypt-2.5.8


./configure    make && make install


2。开始编译 安装:mhash-0.9.9.9 

   /configure    make && make install


3。开始编译 安装:mcrypt-2.6.8 


 /configure    make && make install


===================================================================

以上三个包编译安装为了一个目的就是解决 php 没有 mcrypt.so 模块的问题

====================================================================


4。开始编译 源码PHP :(只编译不安装)php-5.2.13


./configure  --with-mcrypt


5. 编译完成以后,进入解压以后源码包的存放mcrypt的目录下

 cd php-5.2.13/ext/mcrypt/

===========================================================


phpize 敲这条命令 


aclocal 再敲这条命令 


如果没有phpize 这条命令你需要安装php-devel.

亲身试验RHEL 光盘包没这个包。而centos里面有这个包。


敲这条命令的目的是为了在 mcrypt生产 configure 文件 。默认没有configure的


=====================================================================


6. 然后安装执行:

cd php-5.2.13/ext/mcrypt/

./configure

make clean

make

make install


7. 现在php的安装目录下面应该有了mcrypt.so 的文件了。

实在不清楚在哪里就用命令找一下


find / -name  mcrypt.so


我找到的在这个路径下 :


/usr/lib64/php/modules/mcrypt.so

/tmp/php-5.2.13/ext/mcrypt/modules/mcrypt.so

/tmp/php-5.2.13/ext/mcrypt/.libs/mcrypt.so


==========================================================================


8。 最后一步,把mcrypt.so 让php 调用识别就行了 :


vim  /etc/php.ini


extension=mcrypt.so


service  httpd restart


========================================================================


有些报错可能会遇到,我没遇到;这里就标识出来吧:

特别注意:

1、phpize需在解压后的源码包下执行,执行后生成configure脚本

2、运行./configure时,如果提示

configure: error: Cannot find php-config. Please use --with-php-config=PATH

请使用:

./configure --with-php-config=/php-install-path/bin/php-config #而不是使用php.ini


==============================================================================


机器二: 192.168.56.11  比较简单


yum  -y install mysql*


service mysqld restart


mysqladmin -u root password redhat


mysql -u root -p


输入密码进入mysql:


use mysql;


select host, user,password from user; 


//查看到的只有本地的连接

| host                  | user | password                                  |

+-----------------------+------+-------------------------------------------+

| localhost             | root | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |

| SERVER-11.example.com | root |                                           |

| 127.0.0.1             | root |                                           |

| localhost             |      |                                           |

| SERVER-11.example.com |      |   


//所以,我们要添加远程能够连接:


GRANT ALL PRIVILEGES ON *.* TO root@‘%‘ IDENTIFIED BY ‘redhat‘;


root@%  root 是你mysql的用户名 % 代表所有主机: 这里可以写IP:如 [email protected]

BY  指定的是你root的密码 :(这里的密码和上面PHPMyadmin 里面保持一致)


flush privileges; //使修改即时生效


=================================================================================


再用select host, user,password from user; 查看


+-----------------------+------+-------------------------------------------+

| host                  | user | password                                  |

+-----------------------+------+-------------------------------------------+

| localhost             | root | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |

| SERVER-11.example.com | root |                                           |

| 127.0.0.1             | root |                                           |

| localhost             |      |                                           |

| SERVER-11.example.com |      |                                           |

| %                     | root | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |

+-----------------------+------+-------------------------------------------+


=====================解决完成mcrypt.so完===================================


==========================================================================


安装 Discuz动网论坛

1. 修改php.ini

vim /etc/php.ini

short_open_tag = on


2. 解压论坛:unzip Discuz_7.2_FULL_SC_UTF8.zip -d discus


mv discus/upload/*  /var/www/htlm/bbs


service httpd restart


浏览器打开:http://192.168.56.10/bbs/install/index.php


点击安装下一步,会出现 什么不可读写,需要下一步把红色部分变成读写:

解决方法:(权限必须777;755试了还是不能写)

cd /var/www/html/bbs

chmod -R 777 config.inc.php attachments/

chmod -R 777 forumdata/ uc_client/data/cache/


service httpd restart

=========================================================================


在数据库服务器上创建bbs的数据库:192.168.56.11


create database discuz;


=========================================================================

在浏览器输入http://192.168.56.10/bbs/install/index.php 下一步,下一步。


指定数据库服务器:92.168.56.11

数据库名字:discuz

数据库用户名:root

数据库密码:redhat

数据库表前缀:cdb_discuz


下面写管理员密码:


安装完成: http://192.168.56.10/bbs


网站前台:http://www.example.com/bbs/index.php

访问bbs后台:http://www.example.com/bbs/admincp.php

=============================================================


有些情况出不来页面就把instll.php 删除

root@localhost bbs]# mv install/ install.lock

[root@localhost bbs]# chmod o-rx install.lock/


这两步不操作也可成功:


==============================================================

额外操作:可以不做,没实质意义:

AB 压力测试 :


[root@localhost ~]# ulimit -a | grep "open files"

open files (-n) 1024

[root@localhost ~]# ulimit -n 10000

[root@localhost ~]# ulimit -a | grep "open files"

open files (-n) 10000

[root@localhost ~]#ab -c 2000 -n 4000 http://192.168.56.10/bbs/

This is ApacheBench, Version 2.3 <$Revision: 655654 $>

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.crazylinux.com (be patient)

apr_socket_recv: Connection reset by peer (104)

Total of 331 requests completed

Server Software: Apache/2.2.15


Server Hostname: www.example.com

Server Port: 80

Document Path: /bbs/

Document Length: 7710 bytes

Concurrency Level: 2000 //用于并发连接的请求数

Time taken for tests: 75.946 seconds //测试过程消耗的时间

Complete requests: 331 //测试过程总共完成的请求数

Failed requests: 330 //失败的请求数

(Connect: 0, Receive: 1, Length: 330, Exceptions: 0)

Write errors: 0

Total transferred: 2675927 bytes //测试过程网络传输量

HTML transferred: 2559063 bytes //测试过程中的HTML内容传输量

Requests per second: 4.36 [#/sec] (mean) //服务器平均每秒相应的请求数

Time per request: 458886.079 [ms] (mean) //服务器平均每请求的相应时间

Time per request: 229.443 [ms] (mean, across all concurrent requests) //每个请求实际运行时间的平均值

Transfer rate: 34.41 [Kbytes/sec] received //平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

Connection Times (ms) //连接时间统计信息

min mean[+/-sd] median max

Connect: 0 330 823.9 270 3837

Processing: 191 4977 4422.9 2976 26613

Waiting: 174 4976 4419.4 2976 26550

Total: 514 5308 4778.8 2999 27018

Percentage of the requests served within a certain time (ms)

50% 2999

66% 5421

75% 6967

80% 8983

90% 13226

95% 17052

98% 17610

99% 19567

100% 27018 (longest request)

//整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中50%的用户响应时间小于2999毫秒,60% 的用户响应时间小于5421毫秒,最大的响应时间小于27018毫秒 由于对于并发请求,cpu实际上并不是同时处理的,而是按照每个请求获得的时间片逐个轮转处理的,所以基本上


================================================================================

使用awstats 分析web 日志:


tar -zxvf awstats-6.95.tar.gz

mv awstats-6.95/ /usr/local/awstats


cd /usr/local/awstats/tools/

./awstats_configure.pl

 指定你的http安装的路径,我是yum安装的,所以指定:

> /etc/httpd/conf/httpd.conf

输入两个Y

输入网站域名;www.example.com


vim /etc/awstats/awstats.www.example.com.conf 

52 LogFile="/var/log/httpd/www.example.com-access_log"

在此先把access.log的日志格式修改一下 这里选择日志的格式为 combined,而不是common,awstats解析不了common


<VirtualHost 192.168.56.10>

DocumentRoot "/var/www/html"

ServerName www.example.com

ServerAlias www.francis.com

ErrorLog "logs/www.example.com-error_log"

CustomLog "logs/www.example.com-access_log" combined

</VirtualHost>

=============================================================

<VirtualHost 192.168.56.10>

DocumentRoot "/var/www/vir"

ServerName www.google.com

ErrorLog "logs/www.google.com-error_log"

CustomLog "logs/www.google.com-access_log" common

</VirtualHo>

===========================================================


cd /usr/local/awstats/


mkdir /var/lib/awstats


perl /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=192.168.56.10


注意:-config= 如果有DNS 用域名。如果没有DNS 用IP 

===============================================================================

正确信息:cd /var/log/httpd/    rm -rf * (删除apche生成的日志。重新生成日志)

[root@SERVER-10 httpd]# perl /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=192.168.56.10 -update

Create/Update database for config "/etc/awstats/awstats.192.168.56.10.conf" by AWStats version 6.95 (build 1.943)

From data in log file "/var/log/httpd/www.example.com-access_log"...

Phase 1 : First bypass old records, searching new record...

Searching new records from beginning of log file...

Jumped lines in file: 0

Parsed lines in file: 0

 Found 0 dropped records,

 Found 0 corrupted records,

 Found 0 old records,

 Found 0 new qualified records.

================================================================================


开启计划任务:

crontab -e

*/5 * * * * /usr/bin/perl /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.example.com(192.168.56.10)


service crond restart

chkconfig crond on


==============================================================================

cd /var/www/html/bbs/

vim awstats.html


<html>

<head>

<meta http-equiv=refresh content="0;url=http://www.example.com/awstats/awstats.pl

-config=192.168.56.10">

</head>

<body>

</body>

</html>


客户端输入 :192.168.56.10/bbs/awstats.html 看见一个网页


=====================================================================


这个 访问控制可以不做

=====================================================================


对awstats进行访问控制

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf 在里面查到与awstats相关信息

423 <Directory "/usr/local/awstats/wwwroot">

424 AuthName "Awstats"

425 AuthType Basic

426 AuthUserFile /usr/local/awstats/wwwroot/.htpasswd

427 require user awuser

428 Options None

429 AllowOverride AuthConfig

430 Order allow,deny

431 Allow from all

432 </Directory>

[root@localhost ~]# htpasswd -cm /usr/local/awstats/wwwroot/.htpasswd awuser


===================================================================================


搭建 Apache +tomcat 实现读取JSP 程序


[root@localhost local]# cat HelloWorld.java

public class HelloWorld {

public static void main(String args[]){

System.out.println("HelloWorld !!");

}

}

[root@localhost local]# javac HelloWorld.java //编译程序


[root@localhost local]# java HelloWorld //执行程序

HelloWorld !!


[root@localhost home]# tar -zxvf apache-tomcat-6.0.18.tar.gz -C /usr/local/src/

[root@localhost home]# ln -sf /usr/local/src/apache-tomcat-6.0.18 /usr/local/tomcat

[root@localhost home]# ln -sf /usr/local/tomcat/bin/startup.sh /usr/bin/tomcat-up

[root@localhost home]# ln -sf /usr/local/tomcat/bin/shutdown.sh /usr/bin/tomcat-down


[root@localhost home]# vim /usr/local/tomcat/conf/tomcat-users.xml

18 <tomcat-users>

19 <user username="crazy" password="linux" roles="manager,admin"/>

20 <!--

21 <role rolename="tomcat"/>

22 <role rolename="role1"/>

23 <user username="tomcat" password="tomcat" roles="tomcat"/>

24 <user username="both" password="tomcat" roles="tomcat,role1"/>

25 <user username="role1" password="tomcat" roles="role1"/>

26 -->

27 </tomcat-users>

[root@localhost home]# tomcat-up

[root@localhost home]# netstat -nutlp | grep java

tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 3526/java

tcp 0 0 :::8009 :::* LISTEN 3526/java

tcp 0 0 :::8080 :::* LISTEN 3526/java

=====================================================

客户端输入192.168.56.10:8080 选择tomcat-manager

输入 root  redhat  管理tomcat


cp mod_jk-1.2.28-httpd-2.2.X.so  /etc/httpd/modules/

 vim /etc/httpd/conf/httpd.conf

AddType application/x-jsp .jsp

cd  /usr/local/tomcat/webapps

mkdir -p /var/www/html/apps

ln -sf /var/www/html/ web-apps1


vim /var/www/html/apps/showtime.jsp

<%@page language="java" import="java.util.*" %>

Now,the time&date is:<%out.println(new Date()); %>


======================================================

客户端 输入:http://192.168.56.10:8080/web-apps1/apps/showtime.jsp


Now,the time&date is:Thu Jul 10 23:37:11 CST 2014 


本文出自 “Francis_Ho” 博客,请务必保留此出处http://francis1991.blog.51cto.com/9006000/1551080

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。