lamp升级
2011年08月23日
--
lamp
mysql-cluster ---> 替换mysql-5.1.36
rm /usr/local/mysql -rf --(留下/data/ /usr/src/lamp/mysql-5.1.36 通过make install进行恢复)
使用mysql-cluster源码升级
把配置文件数据目录指向/data
/var/run/mysqld/mysql5.socket保持路径不变,php就可以找到mysql
-----------------------------------------------------
如果升级php扩展库
如果升级gd库,
1,重新编译新版本gd (参数尽量参考以前的编译参数)
2,重编php
升级apache
1,重新编译新版本apache (参数尽量参考以前的编译参数)
2,重编译php php 链接 /usr/local/apache2/bin/apxs
升级php时要注意php.ini,记得替换一下
升级gd,php
gd-2.0.36RC1.tar.gz
php-5.3.3.tar.bz2
# tar xvf /share/soft/lamp/nginx/gd-2.0.36RC1.tar.gz -C /usr/src/lamp/
cd /usr/src/lamp/gd-2.0.36/
./configure --with-gnu-ld --with-x --with-libiconv-prefix=/usr/local/ --with-png=/usr/local/ --with-freetype=/usr/local/ --with-fontconfig=/usr --with-jpeg=/usr/local/
make; make install
ldconfig
# tar xvf /share/soft/lamp/php_source/php-5.3.3.tar.bz2 -C /usr/src/lamp/
./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-magic-quotes --disable-ipv6 --with-libxml-dir=/usr/local/ --with-zlib --with-bz2 --enable-calendar --with-curl --with-pcre-dir=/usr/local/ --with-gd=/usr/local/ --with-jpeg-dir=/usr/local/ --with-png-dir=/usr/local/ --with-freetype-dir=/usr/local/ --enable-gd-native-ttf --enable-mbstring --with-mcrypt=/usr/local/ --with-mhash=/usr/local/ --with-mysql=/usr/local/mysql/ --with-mysql-sock=/var/run/mysqld/mysql5.socket --with-mysqli=/usr/local/mysql/bin/mysql_config --with-snmp --enable-sockets --with-libxml-dir=/usr/local/ --with-iconv-dir=/usr/local/ --enable-zip --enable-zend-multibyte --with-gnu-ld --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-pdo-mysql=/usr/local/mysql/
make ;make install
注意安装信息,要求运行下面命令
libtool --finish /usr/src/lamp/php-5.3.3/libs
再注意安装信息
Libraries have been installed in:
/usr/src/lamp/php-5.3.3/libs
echo /usr/src/lamp/php-5.3.3/libs >> /etc/ld.so.conf.d/lamp.conf
ldconfig
# cp /usr/src/lamp/php-5.3.3/php.ini-production /usr/local/lib/php.ini
cp:是否覆盖“/usr/local/lib/php.ini”? y
# vim /usr/local/lib/php.ini
[MySQL]
mysql.default_port = 3307
mysql.default_socket = /var/run/mysqld/mysql5.socket
[MySQLi]
mysqli.default_port = 3307
mysqli.default_socket = /var/run/mysqld/mysql5.socket
重启apache,查看test.php页面,是升级到了php5.3.3
因为5.3.3不支持eyeos等软件,而且phpmyadmin也不能使用
php降级回去
cd /usr/src/lamp/php-5.2.10/ --以前的这个源码包没有删除
make install
libtool --finish /usr/src/lamp/php-5.2.10/libs
echo /usr/src/lamp/php-5.2.10/libs >> /etc/ld.so.conf.d/lamp.conf
ldconfig
vim /usr/local/lib/php.ini
[MySQL]
mysql.default_port = 3307
mysql.default_socket = /var/run/mysqld/mysql5.socket
[MySQLi]
mysqli.default_port = 3307
mysqli.default_socket = /var/run/mysqld/mysql5.socket
重启apache
----------------------------------------------
apache 错误页面的控制
自定义错误控制页面
vim /usr/local/apache2/conf/httpd.conf
# Multi-language error messages
Include conf/extra/httpd-multilang-errordoc.conf --打开这个子配置文件
vim /usr/local/apache2/conf/extra/httpd-multilang-errordoc.conf
可以看到多种错误号,对应的多种错误页面都存放在/usr/local/apache2/error/下面
ErrorDocument 404 /error/notfounderror.html --修改一个新的文件名
# cd /usr/local/apache2/error/
# vim notfounderror.html --创建这个文件,并在里面写上你想要的错误信息,可以写一个html的静态页面,加上图片
重启apache
再用浏览器访问一个不存在的页面,就会返回刚才自定义的错误信息
-------------------------------------------------------------------
php加速
zend optimizer Zend优化器――优化你的PHP代码。
/share/soft/lamp/php_source/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
# tar xvf /share/soft/lamp/php_source/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz -C /usr/src/lamp/
# cd /usr/src/lamp/ZendOptimizer-3.3.3-linux-glibc23-i386/
直接./install.sh
安装完毕后查看/usr/local/lib/php.ini 最后是否自动加入了下面这段配置
[Zend]
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.3
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.3
zend_optimizer.version=3.3.3
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so
eaccelerator Accelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。使您的PHP程序代码执效率能提高1-10倍;
/share/soft/lamp/eaccelerator-0.9.5.2.tar.tar
# tar xvf /share/soft/lamp/eaccelerator-0.9.5.2.tar.tar -C /usr/src/lamp/
# cd /usr/src/lamp/eaccelerator-0.9.5.2/
phpize - prepare a PHP extension for compiling
# /usr/local/bin/phpize --先用此命令,才会有configure文件,就可以进行编译了
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
./configure --with-php-config=/usr/local/bin/php-config --with-eaccelerator-sessions --with-eaccelerator-shared-memory --enable-eaccelerator
make ;make install
注意安装信息
Libraries have been installed in:
/usr/src/lamp/eaccelerator-0.9.5.2/modules
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20060613/
echo /usr/src/lamp/eaccelerator-0.9.5.2/modules >> /etc/ld.so.conf.d/lamp.conf
ldconfig
调用eaccelerator插件需要在php.ini里配置
vim /usr/local/lib/php.ini
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613/"
[eaccelerator]
extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
# mkdir /tmp/eaccelerator
# chmod 777 /tmp/eaccelerator/
重启apache,验证/tmp/eaccelerator下是否产生了一些子目录
# ls /tmp/eaccelerator/
0 1 2 3 4 5 6 7 8 9 a b c d e f
验证test.php看是否有zend和eaccelerator配置信息段
并使用浏览器访问php网站,再去查看/tmp/eaccelerator的大小,是否增大
-----------------------------------------------------------------
memcache
高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少数据库访问次数,以提高动态web应用的速度
client
| |
应用服务器
| |
数据库 memcache
第一次,从数据库中取得数据保存到memcached
第二次,从memcached中取得数据
http://www.memcached.org/
# tar xvf /share/soft/lamp/apache_source/memcached-1.4.1.tar.gz -C /usr/src/lamp/
# cd /usr/src/lamp/memcached-1.4.1/
./configure --with-libevent=/usr/local/
make ;make install
# memcached -p 11211 -l 127.0.0.1 -d -u daemon -m 64m
-p TCP port number to listen on (default: 11211)
-l interface to listen on (default: INADDR_ANY, all addresses)
-d run as a daemon
-m max memory to use for items in megabytes (default: 64 MB)
-u assume identity of (only when run as root)
# netstat -ntlup |grep 11211
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 28752/memcached
udp 0 0 127.0.0.1:11211 0.0.0.0:* 28752/memcached
php-->链接memcached
# tar xvf /share/soft/lamp/apache_source/memcache-2.2.5.tar.gz -C /usr/src/lamp/
# cd /usr/src/lamp/memcache-2.2.5/
# /usr/local/bin/phpize
./configure --with-php-config=/usr/local/bin/php-config --enable-memcache
注意安装信息
Libraries have been installed in:
/usr/src/lamp/memcache-2.2.5/modules
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20060613/ --这个目录因为上面安装eaccelerator时,已经加入到php.ini文件里,所以这里不用加
echo /usr/src/lamp/memcache-2.2.5/modules >> /etc/ld.so.conf.d/lamp.conf
ldconfig
修改php.ini增加memcached的扩展
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613/"--这一句前面装eaccelerator时装过,这里不用再加
extension="memcache.so"
重启apache,查看test.php是否有memcache的扩展配置段
------------------
安装wiki并使用memcached做为链接对象
# tar xvf /share/soft/lamp/LAMP_source/mediawiki-1.13.0.tar.gz -C /web/
cd /web/mediawiki-1.13.0/
chmod a+w config/
----------------------------------------
补充:php的session控制
安装时检查安装环境,有下面的警告
Warning: A value for session.save_path has not been set in PHP.ini. If the default value causes problems with saving session data, set it to a valid path which is read/write/execute for the user your web server is running under.
vim /usr/local/lib/php.ini
session.save_handler = files --这一句默认是打开的
session.save_path = "/tmp/session" --这一句没有,加上这一句
session.use_cookies = 1 --cookies认证
# mkdir /tmp/session
# chmod 777 /tmp/session/
重启apache,再刷新一下wiki的安装界面
session警告就没有了,代替的是下面的信息
Session save path (/tmp/session) appears to be valid.
---------------------------------------------
在object caching选项里选择 memcached
memcached server 填 上 127.0.0.1:11211
mysql> create database wikidb;
mysql> grant all on wikidb.* to 'wikiuser'@'localhost' identified by '123';
mysql> flush privileges;
再去wiki的安装界面填写数据授权选项
# Connected to memcached on 127.0.0.1:11211 successfully
Generating configuration file...
# Database type: MySQL
# Loading class: DatabaseMysql
# Attempting to connect to database server as wikiuser...success.
# Connected to 5.1.36-log; enabling MySQL 4.1/5.0 charset mode
# Database wikidb exists
# Creating tables... done.
# Initializing statistics...
# Created sysop account admin.
#
Creating LocalSettings.php...
# mv config/LocalSettings.php .
安装完毕
--------------------------------------------------------------------------
apache 限制功能 针对不同的虚拟主机来限制
# tar xvf /share/soft/lamp/apache_source/mod-cband-0.9.7.2.tgz -C /usr/src/lamp/
# cd /usr/src/lamp/mod-cband-0.9.7.2/
./configure --with-apxs=/usr/local/apache2/bin/apxs
make;make install
# vim /usr/local/apache2/conf/httpd.conf --查看配置文件里是否自动加载了mod_cband.so
LoadModule cband_module modules/mod_cband.so
http://cband.linux.pl/documentation --PDF文档里指定的文档路径,自动跳转到下面的url
http://codee.pl/cband_documentation.html
# vim /usr/local/apache2/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf --打开虚拟主机子配置文件
# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
NameVirtualHost *:80
DocumentRoot "/web"
ServerName 10.1.1.35
ErrorLog "logs/10.1.1.35-error_log"
CustomLog "logs/10.1.1.35-access_log" common
cbandlimit 100M --指允许的总流量,也就是到达100M后,不允许再下载
cbandperiod 1W --总流量的清0时间,1W表示1week,就是一星期内最大只允许被下载100M
cbandspeed 300 10 30 --当前时间的总带宽, 每秒可以同时连接数 最大的总连接数
cbandremotespeed 10kb/s 3 3 --每个用户下载最高速度为10k,每秒同时3个连接数,每个IP生成3个连接
SetHandler cband-status
odrer allow,deny
allow from 10.1.1.35 -- 只允许10.1.1.35访问cband-status
SetHandler cband-status-me
--这两小段是查看cband的状态信息
重启apache
在网站家目录下dd创建一个大点的文件,做下载测试
# dd if=/dev/zero of=/web/1.img bs=1M count=1000
# wget http://10.1.1.35/1.img --使用wget下载测试
并用浏览器查看
http://10.1.1.35/cband-status
和
http://10.1.1.35/cband-status-me 这两个图形化的页面
-----------------------------------------------------
增加apache最大连接数
# ab -n 10000 -c 10000 http://10.1.1.35:8080/1.img
会报socket: Too many open files (24) 的错误
# vim /etc/security/limits.conf
daemon soft nofile 20000
daemon hard nofile 20000
daemon soft nproc 20000
daemon hard nproc 20000
mysql soft nofile 20000
mysql hard nofile 20000
mysql soft nproc 20000
msyql hard nproc 20000
serverlimit 2500
StartServers 10
MinSpareServers 10
MaxSpareServers 15
MaxClients 2000
MaxRequestsPerChild 1000
# lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
httpd 2998 root 3u IPv4 282432 TCP *:webcache (LISTEN)
httpd 2999 daemon 3u IPv4 282432 TCP *:webcache (LISTEN)
httpd 3000 daemon 3u IPv4 282432 TCP *:webcache (LISTEN)
httpd 3001 daemon 3u IPv4 282432 TCP *:webcache (LISTEN)
httpd 3002 daemon 3u IPv4 282432 TCP *:webcache (LISTEN)
httpd 3003 daemon 3u IPv4 282432 TCP *:webcache (LISTEN)
httpd 3004 daemon 3u IPv4 282432 TCP *:webcache (LISTEN)
httpd 3005 daemon 3u IPv4 282432 TCP *:webcache (LISTEN)
httpd 3006 daemon 3u IPv4 282432 TCP *:webcache (LISTEN)
httpd 3007 daemon 3u IPv4 282432 TCP *:webcache (LISTEN)
httpd 3008 daemon 3u IPv4 282432 TCP *:webcache (LISTEN)
----------------------------------------------------
mod_dosevaseive 播件防DDOS
# ls /share/soft/lamp/apache_source/mod_dosevasive.1.8.tar.gz
# tar xvf /share/soft/lamp/apache_source/mod_dosevasive.1.8.tar.gz -C /usr/src/
# cd /usr/src/mod_dosevasive-1.8/
查看readme里有apache2.x版本的安装方法
APACHE v2.0
-----------
1. Extract this archive
2. Run $APACHE_ROOT/bin/apxs -i -a -c mod_dosevasive20.c
3. The module will be built and installed into $APACHE_ROOT/modules, and loaded into your httpd.conf
4. Restart Apache
# /usr/local/apache2/bin/apxs -i -a -c /usr/src/mod_dosevasive-1.8/mod_dosevasive20.c --按照readme的方法把模块编译成DSO形式
# vim /usr/local/apache2/conf/httpd.conf --编译完后,可以在apache的配置文件里找到下面这一句
LoadModule dosevasive20_module modules/mod_dosevasive20.so
# vim /usr/local/apache2/conf/httpd.conf --在配置文件
--注意是有20的那段,表示的是apache2.x版本
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
# /usr/local/apache2/bin/apachectl start --启动apache
测试:
用客户端firefox访问测试
2011年08月23日
--
lamp
mysql-cluster ---> 替换mysql-5.1.36
rm /usr/local/mysql -rf --(留下/data/ /usr/src/lamp/mysql-5.1.36 通过make install进行恢复)
使用mysql-cluster源码升级
把配置文件数据目录指向/data
/var/run/mysqld/mysql5.socket保持路径不变,php就可以找到mysql
-----------------------------------------------------
如果升级php扩展库
如果升级gd库,
1,重新编译新版本gd (参数尽量参考以前的编译参数)
2,重编php
升级apache
1,重新编译新版本apache (参数尽量参考以前的编译参数)
2,重编译php php 链接 /usr/local/apache2/bin/apxs
升级php时要注意php.ini,记得替换一下
升级gd,php
gd-2.0.36RC1.tar.gz
php-5.3.3.tar.bz2
# tar xvf /share/soft/lamp/nginx/gd-2.0.36RC1.tar.gz -C /usr/src/lamp/
cd /usr/src/lamp/gd-2.0.36/
./configure --with-gnu-ld --with-x --with-libiconv-prefix=/usr/local/ --with-png=/usr/local/ --with-freetype=/usr/local/ --with-fontconfig=/usr --with-jpeg=/usr/local/
make; make install
ldconfig
# tar xvf /share/soft/lamp/php_source/php-5.3.3.tar.bz2 -C /usr/src/lamp/
./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-magic-quotes --disable-ipv6 --with-libxml-dir=/usr/local/ --with-zlib --with-bz2 --enable-calendar --with-curl --with-pcre-dir=/usr/local/ --with-gd=/usr/local/ --with-jpeg-dir=/usr/local/ --with-png-dir=/usr/local/ --with-freetype-dir=/usr/local/ --enable-gd-native-ttf --enable-mbstring --with-mcrypt=/usr/local/ --with-mhash=/usr/local/ --with-mysql=/usr/local/mysql/ --with-mysql-sock=/var/run/mysqld/mysql5.socket --with-mysqli=/usr/local/mysql/bin/mysql_config --with-snmp --enable-sockets --with-libxml-dir=/usr/local/ --with-iconv-dir=/usr/local/ --enable-zip --enable-zend-multibyte --with-gnu-ld --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-pdo-mysql=/usr/local/mysql/
make ;make install
注意安装信息,要求运行下面命令
libtool --finish /usr/src/lamp/php-5.3.3/libs
再注意安装信息
Libraries have been installed in:
/usr/src/lamp/php-5.3.3/libs
echo /usr/src/lamp/php-5.3.3/libs >> /etc/ld.so.conf.d/lamp.conf
ldconfig
# cp /usr/src/lamp/php-5.3.3/php.ini-production /usr/local/lib/php.ini
cp:是否覆盖“/usr/local/lib/php.ini”? y
# vim /usr/local/lib/php.ini
[MySQL]
mysql.default_port = 3307
mysql.default_socket = /var/run/mysqld/mysql5.socket
[MySQLi]
mysqli.default_port = 3307
mysqli.default_socket = /var/run/mysqld/mysql5.socket
重启apache,查看test.php页面,是升级到了php5.3.3
因为5.3.3不支持eyeos等软件,而且phpmyadmin也不能使用
php降级回去
cd /usr/src/lamp/php-5.2.10/ --以前的这个源码包没有删除
make install
libtool --finish /usr/src/lamp/php-5.2.10/libs
echo /usr/src/lamp/php-5.2.10/libs >> /etc/ld.so.conf.d/lamp.conf
ldconfig
vim /usr/local/lib/php.ini
[MySQL]
mysql.default_port = 3307
mysql.default_socket = /var/run/mysqld/mysql5.socket
[MySQLi]
mysqli.default_port = 3307
mysqli.default_socket = /var/run/mysqld/mysql5.socket
重启apache
----------------------------------------------
apache 错误页面的控制
自定义错误控制页面
vim /usr/local/apache2/conf/httpd.conf
# Multi-language error messages
Include conf/extra/httpd-multilang-errordoc.conf --打开这个子配置文件
vim /usr/local/apache2/conf/extra/httpd-multilang-errordoc.conf
可以看到多种错误号,对应的多种错误页面都存放在/usr/local/apache2/error/下面
ErrorDocument 404 /error/notfounderror.html --修改一个新的文件名
# cd /usr/local/apache2/error/
# vim notfounderror.html --创建这个文件,并在里面写上你想要的错误信息,可以写一个html的静态页面,加上图片
重启apache
再用浏览器访问一个不存在的页面,就会返回刚才自定义的错误信息
-------------------------------------------------------------------
php加速
zend optimizer Zend优化器――优化你的PHP代码。
/share/soft/lamp/php_source/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
# tar xvf /share/soft/lamp/php_source/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz -C /usr/src/lamp/
# cd /usr/src/lamp/ZendOptimizer-3.3.3-linux-glibc23-i386/
直接./install.sh
安装完毕后查看/usr/local/lib/php.ini 最后是否自动加入了下面这段配置
[Zend]
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.3
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.3
zend_optimizer.version=3.3.3
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so
eaccelerator Accelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。使您的PHP程序代码执效率能提高1-10倍;
/share/soft/lamp/eaccelerator-0.9.5.2.tar.tar
# tar xvf /share/soft/lamp/eaccelerator-0.9.5.2.tar.tar -C /usr/src/lamp/
# cd /usr/src/lamp/eaccelerator-0.9.5.2/
phpize - prepare a PHP extension for compiling
# /usr/local/bin/phpize --先用此命令,才会有configure文件,就可以进行编译了
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
./configure --with-php-config=/usr/local/bin/php-config --with-eaccelerator-sessions --with-eaccelerator-shared-memory --enable-eaccelerator
make ;make install
注意安装信息
Libraries have been installed in:
/usr/src/lamp/eaccelerator-0.9.5.2/modules
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20060613/
echo /usr/src/lamp/eaccelerator-0.9.5.2/modules >> /etc/ld.so.conf.d/lamp.conf
ldconfig
调用eaccelerator插件需要在php.ini里配置
vim /usr/local/lib/php.ini
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613/"
[eaccelerator]
extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
# mkdir /tmp/eaccelerator
# chmod 777 /tmp/eaccelerator/
重启apache,验证/tmp/eaccelerator下是否产生了一些子目录
# ls /tmp/eaccelerator/
0 1 2 3 4 5 6 7 8 9 a b c d e f
验证test.php看是否有zend和eaccelerator配置信息段
并使用浏览器访问php网站,再去查看/tmp/eaccelerator的大小,是否增大
-----------------------------------------------------------------
memcache
高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少数据库访问次数,以提高动态web应用的速度
client
| |
应用服务器
| |
数据库 memcache
第一次,从数据库中取得数据保存到memcached
第二次,从memcached中取得数据
http://www.memcached.org/
# tar xvf /share/soft/lamp/apache_source/memcached-1.4.1.tar.gz -C /usr/src/lamp/
# cd /usr/src/lamp/memcached-1.4.1/
./configure --with-libevent=/usr/local/
make ;make install
# memcached -p 11211 -l 127.0.0.1 -d -u daemon -m 64m
-p TCP port number to listen on (default: 11211)
-l interface to listen on (default: INADDR_ANY, all addresses)
-d run as a daemon
-m max memory to use for items in megabytes (default: 64 MB)
-u assume identity of (only when run as root)
# netstat -ntlup |grep 11211
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 28752/memcached
udp 0 0 127.0.0.1:11211 0.0.0.0:* 28752/memcached
php-->链接memcached
# tar xvf /share/soft/lamp/apache_source/memcache-2.2.5.tar.gz -C /usr/src/lamp/
# cd /usr/src/lamp/memcache-2.2.5/
# /usr/local/bin/phpize
./configure --with-php-config=/usr/local/bin/php-config --enable-memcache
注意安装信息
Libraries have been installed in:
/usr/src/lamp/memcache-2.2.5/modules
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20060613/ --这个目录因为上面安装eaccelerator时,已经加入到php.ini文件里,所以这里不用加
echo /usr/src/lamp/memcache-2.2.5/modules >> /etc/ld.so.conf.d/lamp.conf
ldconfig
修改php.ini增加memcached的扩展
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613/"--这一句前面装eaccelerator时装过,这里不用再加
extension="memcache.so"
重启apache,查看test.php是否有memcache的扩展配置段
------------------
安装wiki并使用memcached做为链接对象
# tar xvf /share/soft/lamp/LAMP_source/mediawiki-1.13.0.tar.gz -C /web/
cd /web/mediawiki-1.13.0/
chmod a+w config/
----------------------------------------
补充:php的session控制
安装时检查安装环境,有下面的警告
Warning: A value for session.save_path has not been set in PHP.ini. If the default value causes problems with saving session data, set it to a valid path which is read/write/execute for the user your web server is running under.
vim /usr/local/lib/php.ini
session.save_handler = files --这一句默认是打开的
session.save_path = "/tmp/session" --这一句没有,加上这一句
session.use_cookies = 1 --cookies认证
# mkdir /tmp/session
# chmod 777 /tmp/session/
重启apache,再刷新一下wiki的安装界面
session警告就没有了,代替的是下面的信息
Session save path (/tmp/session) appears to be valid.
---------------------------------------------
在object caching选项里选择 memcached
memcached server 填 上 127.0.0.1:11211
mysql> create database wikidb;
mysql> grant all on wikidb.* to 'wikiuser'@'localhost' identified by '123';
mysql> flush privileges;
再去wiki的安装界面填写数据授权选项
# Connected to memcached on 127.0.0.1:11211 successfully
Generating configuration file...
# Database type: MySQL
# Loading class: DatabaseMysql
# Attempting to connect to database server as wikiuser...success.
# Connected to 5.1.36-log; enabling MySQL 4.1/5.0 charset mode
# Database wikidb exists
# Creating tables... done.
# Initializing statistics...
# Created sysop account admin.
#
Creating LocalSettings.php...
# mv config/LocalSettings.php .
安装完毕
--------------------------------------------------------------------------
apache 限制功能 针对不同的虚拟主机来限制
# tar xvf /share/soft/lamp/apache_source/mod-cband-0.9.7.2.tgz -C /usr/src/lamp/
# cd /usr/src/lamp/mod-cband-0.9.7.2/
./configure --with-apxs=/usr/local/apache2/bin/apxs
make;make install
# vim /usr/local/apache2/conf/httpd.conf --查看配置文件里是否自动加载了mod_cband.so
LoadModule cband_module modules/mod_cband.so
http://cband.linux.pl/documentation --PDF文档里指定的文档路径,自动跳转到下面的url
http://codee.pl/cband_documentation.html
# vim /usr/local/apache2/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf --打开虚拟主机子配置文件
# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
NameVirtualHost *:80
DocumentRoot "/web"
ServerName 10.1.1.35
ErrorLog "logs/10.1.1.35-error_log"
CustomLog "logs/10.1.1.35-access_log" common
cbandlimit 100M --指允许的总流量,也就是到达100M后,不允许再下载
cbandperiod 1W --总流量的清0时间,1W表示1week,就是一星期内最大只允许被下载100M
cbandspeed 300 10 30 --当前时间的总带宽, 每秒可以同时连接数 最大的总连接数
cbandremotespeed 10kb/s 3 3 --每个用户下载最高速度为10k,每秒同时3个连接数,每个IP生成3个连接
SetHandler cband-status
odrer allow,deny
allow from 10.1.1.35 -- 只允许10.1.1.35访问cband-status
SetHandler cband-status-me
--这两小段是查看cband的状态信息
重启apache
在网站家目录下dd创建一个大点的文件,做下载测试
# dd if=/dev/zero of=/web/1.img bs=1M count=1000
# wget http://10.1.1.35/1.img --使用wget下载测试
并用浏览器查看
http://10.1.1.35/cband-status
和
http://10.1.1.35/cband-status-me 这两个图形化的页面
-----------------------------------------------------
增加apache最大连接数
# ab -n 10000 -c 10000 http://10.1.1.35:8080/1.img
会报socket: Too many open files (24) 的错误
# vim /etc/security/limits.conf
daemon soft nofile 20000
daemon hard nofile 20000
daemon soft nproc 20000
daemon hard nproc 20000
mysql soft nofile 20000
mysql hard nofile 20000
mysql soft nproc 20000
msyql hard nproc 20000
serverlimit 2500
StartServers 10
MinSpareServers 10
MaxSpareServers 15
MaxClients 2000
MaxRequestsPerChild 1000
# lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
httpd 2998 root 3u IPv4 282432 TCP *:webcache (LISTEN)
httpd 2999 daemon 3u IPv4 282432 TCP *:webcache (LISTEN)
httpd 3000 daemon 3u IPv4 282432 TCP *:webcache (LISTEN)
httpd 3001 daemon 3u IPv4 282432 TCP *:webcache (LISTEN)
httpd 3002 daemon 3u IPv4 282432 TCP *:webcache (LISTEN)
httpd 3003 daemon 3u IPv4 282432 TCP *:webcache (LISTEN)
httpd 3004 daemon 3u IPv4 282432 TCP *:webcache (LISTEN)
httpd 3005 daemon 3u IPv4 282432 TCP *:webcache (LISTEN)
httpd 3006 daemon 3u IPv4 282432 TCP *:webcache (LISTEN)
httpd 3007 daemon 3u IPv4 282432 TCP *:webcache (LISTEN)
httpd 3008 daemon 3u IPv4 282432 TCP *:webcache (LISTEN)
----------------------------------------------------
mod_dosevaseive 播件防DDOS
# ls /share/soft/lamp/apache_source/mod_dosevasive.1.8.tar.gz
# tar xvf /share/soft/lamp/apache_source/mod_dosevasive.1.8.tar.gz -C /usr/src/
# cd /usr/src/mod_dosevasive-1.8/
查看readme里有apache2.x版本的安装方法
APACHE v2.0
-----------
1. Extract this archive
2. Run $APACHE_ROOT/bin/apxs -i -a -c mod_dosevasive20.c
3. The module will be built and installed into $APACHE_ROOT/modules, and loaded into your httpd.conf
4. Restart Apache
# /usr/local/apache2/bin/apxs -i -a -c /usr/src/mod_dosevasive-1.8/mod_dosevasive20.c --按照readme的方法把模块编译成DSO形式
# vim /usr/local/apache2/conf/httpd.conf --编译完后,可以在apache的配置文件里找到下面这一句
LoadModule dosevasive20_module modules/mod_dosevasive20.so
# vim /usr/local/apache2/conf/httpd.conf --在配置文件
--注意是有20的那段,表示的是apache2.x版本
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
# /usr/local/apache2/bin/apachectl start --启动apache
测试:
用客户端firefox访问测试