标签存档: apache

Apache 添加模块 gzip配置

由于在编译apache时没有加一些参数,只能另外添加安装:

$ cd /data/super/httpd-2.2.21/modules/filters
$ /usr/local/apache2/bin/apxs -i -c -a mod_deflate.c
$ cd /data/super/httpd-2.2.21/modules/metadata
$ /usr/local/apache2/bin/apxs -i -a -c mod_headers.c
$ ls /usr/local/apache2/modules
httpd.exp  libphp5.so  mod_deflate.so  mod_headers.so

apxs命令参数说明:
-i 此选项表示需要执行安装操作,以安装一个或多个动态共享对象到服务器的modules目录中。
-a 此选项自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之。
-A 与 -a 选项类似,但是它增加的LoadModule命令有一个井号前缀(#),即此模块已经准备就绪但尚未启用。
-c 此选项表示需要执行编译操作。它首先会编译C源程序(.c)files为对应的目标代码文件(.o),然后连接这些目标代码和files中其余的目标代码 文件(.o和.a),以生成动态共享对象dsofile 。如果没有指定 -o 选项,则此输出文件名由files中的第一个文件名推测得到,也就是默认为mod_name.so 。

Ps:如果是新安装apache,参数加上 –enable-headers –enable-deflate 就可以了

开启gzip压缩配置

$ vim /usr/local/apache2/conf/httpd.conf
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
<IfModule mod_deflate.c>
        DeflateCompressionLevel 3  # 压缩程度的等级
        AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript
        AddOutputFilter DEFLATE css js
        SetOutputFilter DEFLATE  # 插入过滤器
        # 不压缩图片等格式文件
        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
        SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
        SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
</IfModule>

Apache 压力测试工具 ab test

ab的全称是ApacheBench,是 Apache 附带的一个小工具,专门用于 HTTP Server 的benchmark testing,可以同时模拟多个并发请求。

$ /usr/local/apache2/bin/ab --help  #查看下ab帮助文档相关参数

#-n:请求次数
#-c:同一时间发出多少个请求(并行连接)
$ /usr/local/apache2/bin/ab -n 10 -c 10 http://www.google.com/ # 表示同时处理10个请求并运行10次http://www.google.com/
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.google.com (be patient).....done

Server Software:        gws
Server Hostname:        www.google.com
Server Port:            80

Document Path:          /
Document Length:        376 bytes

Concurrency Level:      10
Time taken for tests:   0.256 seconds  # 整个测试持续的时间
Complete requests:      10  # 完成的请求总数量
Failed requests:        0  # 失败的请求总数量
Write errors:           0
Non-2xx responses:      10
Total transferred:      9240 bytes  # 整个测试过程的网络传输量
HTML transferred:       3760 bytes  # 整个测试过程的HTML内容传输量
Requests per second:    39.12 [#/sec] (mean)  # 每秒请求数 ( 平均 )
Time per request:       255.616 [ms] (mean)  # 每次并发请求时间 ( 所有并发 )
Time per request:       25.562 [ms] (mean, across all concurrent requests) # 每一请求时间 ( 并发平均 )
Transfer rate:          35.30 [Kbytes/sec] received  # 平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

 # 网络上消耗的时间的分解
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       30   32   1.2     31      33
Processing:    32   33   0.8     33      35
Waiting:       32   33   0.8     33      35
Total:         63   64   0.9     64      65

# 下面的内容为整个场景中所有请求的响应情况。
# 在场景中每个请求都有一个响应时间,其中 50% 的用户响应时间小于 64 毫秒,
# 66 % 的用户响应时间小于 65 毫秒,最大的响应时间小于 65 毫秒
Percentage of the requests served within a certain time (ms)
  50%     64
  66%     65
  75%     65
  80%     65
  90%     65
  95%     65
  98%     65
  99%     65
 100%     65 (longest request)

遇到问题:
1.$ /usr/local/apache2/bin/ab -n2000 -c2000 http://www.google.com/
socket too many open files

$ ulimit -n  #查询当前终端的文件句柄数:一般的系统默认的1024
$ ulimit -n 65535  #修改文件句柄数为65535
$ echo ulimit -n 65535 >>/etc/profile  #为了每次系统重新启动时,都可以获取更大的ulimit值,将ulimit加入到/etc/profile文件底部
$ source /etc/profile  #加载修改后的profile
$ ulimit -n  #显示65535,修改完毕!

2.$ /usr/local/apache2/bin/ab -n2000 -c2000 http://www.google.com/
apr_socket_recv: Connection reset by peer (104)

$ cd /home/super/httpd-2.4.2/support/
$ vim ab.c
return;
} else {
# 注释原来报错代码
//apr_err("apr_socket_recv", status);
# 新增内容
bad++;
close_connection(c);
return;
}
# 最后重新编译apache

为phpMyAdmin 增加安全口令

由于phpMyAdmin没有设置口令,任何人都可以控制数据库,所以增加一个安全口令,提高安全性。

$ vim /usr/local/apache2/conf/http.conf
#增加以下配置
<Directory "/var/www/html/phpMyAdmin">
    Options Includes FollowSymLinks
    AllowOverride all
    Allow from all
        AuthName "Administrator Auth"
        AuthType Basic
        AuthUserFile /etc/superzc.pwd
        require valid-user
    Order allow,deny
</Directory>
#增加用户以及密码
$ /usr/local/apache2/bin/htpasswd -c /etc/superzc.pwd superzc
password:  #输入安全口令的密码
$ /usr/local/apache2/bin/apachectl restart

重启apache之后,访问phpMyAdmin,搞定~已经需要安全验证。

启动apache 报错:libphp5.so:undefined symbol: zend_parse_parameters

今天在PHP扩展ssh2的时候,重启apache时候,发现报错,网上找了好久资料,一种是关闭selinux,怕安全性问题没这么做,后来又找到了一个解决方案(http://www.linuxforums.org/forum/red-hat-fedora-linux/87975-configuring-php-work-apache.html),如下:

$ /usr/local/apache2/bin/apachectl start
httpd: Syntax error on line 203 of /etc/httpd/conf/httpd.conf: Cannot load /usr/lib/httpd/modules/libphp5.so into server: /usr/lib/httpd/modules/libphp5.so: undefined symbol: zend_parse_parameters

解决方法:
首先,安装bison,bison 是替代yacc的语法分析程序生成器。

$ wget http://ftp.gnu.org/gnu/bison/bison-2.5.tar.gz
$ tar -zxvf bison-2.5.tar.gz
$ cd bison-2.5
$ ./configure
$ make
$ make install

然后,重新编译php

$ make install distclean
$ /usr/local/apache2/bin/apachectl start

subversion和apache,apr,apr-util,neon的关系

这里简单说明一下svn服务器和客户端的安装说明。

服务器

subversion服务器是不需要apache的,但是可以使用apache,视具体情况来选择。
1、如果只要通过file://或svn://来访问,则不需要apache,只安装svn即可,使用svnserve来作为服务。
2、如果你要建立一个可以通过http://或https://来访问的版本库服务器,则你需要使用apache。

客户端

在windows下,不管你要访问的是什么类型的服务器,只要安装一个TortoiseSVN就可以了,开发者已经帮你搞定一切。
在类Linux系统下,如果你通过file://或svn://来访问,则只要编译安装svn就可以,
如果通过http://访问,则要同neon编译,
如果通过https://访问,则要同带ssl支持的neon编译,
不论怎样,都要同apr和apr-util编译。

LINUX平台安装SVN客户端

1. 安装前准备

1)安装环境:SUSE-10.0,subversion-1.4.5
2) 需要3个tar.gz形式的源代码压缩包:
apr-1.2.11.tar.gz
apr-util-1.2.10.tar.gz
subversion-1.4.5.tar.gz
3) 系统需带有gcc等编译器

2. 安装步骤

1) 安装apr
以root帐号登陆linux系统,进入apr软件包存放的路径,依次执行以下命令:

$ tar zxvf apr-1.2.11.tar.gz
$ cd apr apr-1.2.11
$ ./configure
$ make
$ make install
$ make clean

2) 安装apr-util
和apr类似,进入apr-util软件包存放的路径,依次执行以下命令:

$ tar zxvf apr-util-1.2.10.tar.gz
$ cd apr apr-1.2.11
$ ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
$ make
$ make install
$ make clean

3)安装neon //为了支持http://和https://访问

$ tar zxvf neon-0.28.4.tar.gz
$ cd neon-0.28.4
$ ./configure --prefix=/usr/local/neon --enable-shared --with-ssl
$ make
$ make install

4)安装sqlite

$ tar zxvf sqlite-amalgamation-3.7.3.tar.gz
$ cd sqlit-3.7.3
$ ./configure --prefix=/usr/loca/sqlite
$ make && make install

5) 安装subversion
在存放subversion软件包的路径下,依次执行:

$ tar zvxf subversion-1.4.5.tar.gz
$ cd subversion-1.4.5
$ ./configure --prefix=/usr/local/svn --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-neon=/usr/local/neon --with-ssl
$ make
$ make install
$ make clean

3. 验证安装成功

键入svn –version,如出现版本信息,显示如下,则表示安装成功:

4. 遇到问题

1)重启apache时出现错误:Error:while loading shared libraries libexpat.so.1 cannot open open shared object file No such file or directory

解决方案:在etc/ld.so.config文件中加入:usr/lib和usr/local/lib然后ldconfig下。

PS:/etc/ld.so.conf: 这个文件记录了编译时使用的动态链接库的路径。ldconfig命令是:将/etc/ld.so.conf列出的路径下的库文件 缓存到/etc/ld.so.cache 以供使用。

2)编译subversion时出现:configure: error: Subversion requires SQLite
解决方案:

$ cd sqllit-3.7.3
$ cp sqlite3.c ../subversion-1.6.17/sqlite-amalgamation/sqlite3.c

3)配置完成后,重启apache时出现的错误:httpd: Syntax error on line 53 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_dav_svn.so into server: /usr/local/apache2/modules/mod_dav_svn.so:

解决方案:

$ ./configure --prefix=/usr/local/apache2/--enable-module --enable-shared--enable-dav--enable-so --enable-maintainer-mode --enable-rewrite
#此处配置的为apache的参数,配置完成后需要重新安装。

lamp | linux+apache+mysql+php配置

linux+apache+mysql+php配置:
1.apache

$ cd /home
$ mkdir super
$ wget http://labs.renren.com/apache-mirror/httpd/httpd-2.2.17.tar.gz
$ tar -zxvf httpd-2.2.17.tar.gz
$ cd httpd-2.2.17
$ ./configure --prefix=/usr/local/apache2 --enable-vhost-alias --enable-deflate --enable-rewrite --with-mpm=worker --enable-ssl
# --prefix=/usr/local/apache 设置安装位置
# --enable-so 让apache核心装载DSO
# --enable-rewrite 启用重写功能
$ make && make install //编译并且安装
$ /usr/local/apache2/bin/apachectl start //启动apache服务
$ vim /usr/local/apache2/conf/httpd.conf
# prefork和worker模式的配置

ServerLimit         2048
StartServers         100
MinSpareServers      50
MaxSpareServers      150
MaxClients          1000  # 设定的是 Apache可以同时处理的请求
MaxRequestsPerChild 10000

ServerLimit 30
ThreadLimit 64
StartServers 20
MaxClients 1024
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 64
MaxRequestsPerChild 10000

$ /usr/local/apache2/bin/apachectl restart //重启apache服务

注:在编译安装apache之前需要安装apr、apr-util、zlib

配置文件httpd.conf在php模块下面加一句:AddType application/x-httpd-php .php //执行php文件格式

遇到问题:

$ vim /etc/resolv.conf
> nameserver 8.8.8.8

2.mysql

$ cd /home/super
$ wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.35.tar.gz
$ tar -zxvf mysql-mysql-5.5.35.tar.gz
$ cd mysql-5.5.35.tar.gz
$ groupadd mysql
$ useradd -g mysql mysql
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
$ make && make install
$ chown mysql.mysql /usr/local/mysql/ -R
#把你编译目录的一个脚本COPY过去
$ cp support-files/mysql.server /etc/init.d/mysqld
#增加一项新的服务
$ chkconfig --add mysqld
#启动mysql
$ /etc/rc.d/init.d/mysqld start

成功启动!!!

3.php

$ cd /home/super
$ wget  http://cn.php.net/get/php-5.2.9.tar.gz/from/cn2.php.net/mirror
$ tar -zxvf php-5.2.9.tar.gz
$ cd php-5.2.9
$ ./configure --prefix=/usr/local/php/ --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-mysqli --with-zlib-dir --with-zlib --enable-ftp --enable-mbstring --enable-sockets --enable-soap --enable-fpm --with-curl --with-libxml-dir=/usr/local/libxml2 --with-openssl --with-mcrypt
#如果是64位系统:增加 --libdir=/usr/lib64
#配置php、生成可编译文件
$ make &amp;&amp; make install
$ cd /home/super/php-5.2.9
$ cp php.ini-development /usr/local/php/lib/php.ini
$ cd /usr/local/php/lib
$ vim php.ini
> register_globals = On
$ vi /usr/local/apache/conf/httpd.conf
#查找
#在此范围添加
> AddType application/x-httpd-php .php
> AddType application/x-httpd-php-source .phps
$ /usr/local/apache2/bin/apachectl restart #重启apache服务
$ cd /usr/local/apache2/htdocs
$ vim phpinfo.php
> <?php
> phpinfo();
> ?>;
#访问phpinfo.php尝试正常哈哈!
$ cd /usr/local/apache2/lib
$ vim http.conf
#更改php执行目录,将#DocumentRoot "/usr/local/apache2/htdocs"改为
> DocumentRoot "/var/www/html/"
#增加扩展虚拟主机配置
> Include conf/extra/httpd-vhosts*.conf
$ cd extra
$ vim http-vhosts-pma.conf
#添加扩展pma配置文件
DocumentRoot   "/var/www/html/phpMyAdmin"
ServerName pma.zhouchao.com
ServerAlias pma.chaoji.com
ServerAdmin zhouchao@qeeka.com
DirectoryIndex index.php index.html index.htm index.shtml
#       LogLevel debug
HostNameLookups off

Options Includes FollowSymLinks
AllowOverride all
Allow from all
#                        AuthName "Auth Name :"
#                        AuthType Basic
#                        AuthUserFile /etc/phphtaccess.pwd
#                        require valid-user
Order allow,deny

CustomLog "logs/access_pma.log" combined

遇到问题:
php编译报错:/usr/local/ssl/lib/libcrypto.a: could not read symbols: Bad value
解决方案:
重新编译openssl:./config no-shared -fPIC

4.mcrypt //加密算法扩展库

$ wget http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download
$ tar -zxvf libmcrypt-2.5.8.tar.gz
$ cd libmcrypt-2.5.8
$ ./configure
$ make && make install

遇到问题:
进去phpMyAdmin时,缺少:mcrypt
然后再重新编译PHP,加上编译参数:–with-mcrypt
测试下是否编译成功:
$ /usr/local/php/bin/php -m | grep mcrypt
mcrypt
别忘了重新启动apache!!!!

5.phpmyadmin

$ cd /home/super
$ wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.3.9.2/phpMyAdmin-3.3.9.2-all-languages.tar.gz?r=http%3A%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Fdownloads.php&ts=1298912166&use_mirror=ncu
$ tar -zxvf phpMyAdmin-3.3.9.2-all-languages.tar.gz
$ mkdir -p /var/www/html
$ mv phpMyAdmin-3.3.9.2-all-languages /var/www/html/phpMyAdmin
$ cd !$
$ cp -a config.sample.inc.php config.inc.php
#找到 /libraries/config.default.php文件(config.default.php复制到phpmyadmin目录下,然后更名为 config.inc.php)

遇到问题:
(1)配置好apache虚拟主机后若出现Wrong permissions on configuration file, should not be world writable! 则需要修改权限 chmod 755 config.* ;chmod 755 libraries/config.default.php
(2)若出现:配置文件现在需要绝密的短语密码(blowfish_secret) 要改配置文件里的:$cfg['blowfish_secret'] = ‘ ‘; 单引号里面随便写个数
(3)pma无法登陆,要在mysql中root用户授权(默认密码为空)#GRANT ALL PRIVILEGES ON *.* TO root@’localhost’ IDENTIFIED BY ’123456′;

第 1 页,共 1 页1