错误原因之一很有可能是你的脚本文件是DOS格式的。
提供两种解决方法:
1、vi filename,在vi中键入命令set ff=unix,保存退出。
2、sed -i ‘s/{ctrl-v}{ctrl-m}//g’ [file],利用sed删除dos字符。
月份:2011年9月
eAccelerator 配置参数详解
- eaccelerator.shm_size="32"
eAccelerator 可以使用的共享内存的数量 (以兆为单位) . “0” 是指操作系统的默认值. 默认值是 “0”.可根据服务器的实际情况来调整,16,32,64,128都是可以的。
- eaccelerator.cache_dir="/home/php/tmp"
这个目录是给磁盘缓存使用. eAccelerator 在这里储存预先编译好的代码, 进程数据, 内容以及用户的自定义内容. 同样的数据也能被储存在共享内存中 (这样可以提高访问速度). 默认的设置是 “/tmp/eaccelerator”.
- eaccelerator.enable="1"
开启或关闭 eAccelerator。”1″ 为开启,”0″ 为关闭。默认值为 “1”。
- eaccelerator.optimizer="1"
启或关闭内部优化器,可以提升代码执行速度。”1″ 为开启,”0″ 为关闭。默认值为 “1”。
eaccelerator.check_mtime=”1″
打开或者关闭 PHP 的文件修改检查. “1” 是指打开, “0” 是指关闭. 如果您在修改以后重新编译 PHP 的文件,那么您应当设置为 “1”. 默认值是 “1”.
- eaccelerator.debug="0"
开启或关闭调试日志记录。”1″ 为开启,”0″ 为关闭。默认值为 “0”。会将缓存命中得记录写入日志。
- eaccelerator.filter=""
判断哪些 PHP 文件必须缓存。您可以指定缓存和不缓存的文件类型(如 “*.php *.phtml”等)
如果参数以 “!” 开头,则匹配这些参数的文件被忽略缓存。默认值为 “”,即,所有 PHP 文件都将被缓存。
- eaccelerator.shm_max="0"
当使用 ” eaccelerator_put() ” 函数时禁止其向共享内存中存储过大的文件。该参数指定允许存储的最大值,单位:字节 (10240, 10K, 1M)。”0″ 为不限制。默认值为 “0”。
- eaccelerator.shm_ttl="0"
当 eAccelerator 获取新脚本的共享内存大小失败时,它将从共享内存中删除所有在最后 “shm_ttl” 秒内没有存取的脚本缓存。默认值为 “0”,即:不从共享内春中删除任何缓存文件。
- eaccelerator.shm_prune_period="0"
当 eAccelerator 获取新脚本的共享内存大小失败时,他将试图从共享内存中删除早于”shm_prune_period” 秒的缓存脚本。默认值为 “0”,即:不从共享内春中删除任何缓存文件。
- eaccelerator.shm_only="0"
允许或禁止将已编译脚本缓存在磁盘上。该选项对 session 数据和内容缓存无效。默认值为 “0”,即:使用磁盘和共享内存进行缓存。
- eaccelerator.compress="1"
允许或禁止压缩内容缓存。默认值为 “1”,即:允许压缩。
- eaccelerator.compress_level="9"
指定内容缓存的压缩等级。默认值为 “9”,为最高等级。
- eaccelerator.keys = "disk_only"
- eaccelerator.session = "disk_only"
- eaccelerator.content = "disk_only"
设置内容缓存的存放的地方,可以设置为:
shm_and_disk 在共享缓存和硬盘(默认值)
shm 默认存在共享内存,如果共享内存已满或大小超过 “eaccelerator.shm_max” 的值,就存到硬盘
shm_only 只存放在共享内存
disk_only 只存放在硬盘
none 不缓存数据
- eaccelerator.allowed_admin_path = "/var/www/html/21andy.com/eaccelerator"
这是控制面板的地址
安装包里有个control.php,你把它复制到网站的任意目录,可以用它查看和管理,这个必须指定,否则查看缓存内容的时候会出错
最后,来看一下我的 eAccelerator 设置
- ; eaccelerator
- [eaccelerator]
- zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
- eaccelerator.shm_size="128"
- 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="3600"
- eaccelerator.shm_prune_period="3600"
- eaccelerator.shm_only="0"
- eaccelerator.compress="1"
- eaccelerator.compress_level="9"
- eaccelerator.keys = "disk_only"
- eaccelerator.sessions = "disk_only"
- eaccelerator.content = "disk_only"
- eaccelerator.allowed_admin_path = "/var/www/html/21andy.com/eaccelerator"
另外,再说下 eAccelerator 的安装
- # wget http://bart.eaccelerator.net/source/0.9.6/eaccelerator-0.9.6.tar.bz2
- # tar -jxvf eaccelerator-0.9.6.tar.bz2
- # cd eaccelerator-0.9.6
- # /usr/local/php/bin/phpize
- # ./configure –enable-eaccelerator=shared –with-php-config=/usr/local/php/bin/php-config
- # make && make install
Linux vsftpd启动,停止,重启脚本
yum安装vsftpd后启动脚本也安装好了,管理vsftpd进程非常方便。但编译安装vsftpd的话,修改配置文件需要重启,就有点麻烦了,需要用kill杀掉进程,再键入/usr/local/sbin/vsftpd &启动。下面提供一个vsftpd启动脚本,让管理vsftpd也像yum安装管理vsftpd一样轻松。
- #!/bin/bash
- #chkconfig: 345 60 50
- #description:vsftpd
- . /etc/rc.d/init.d/functions
- if [ -f /etc/init.d/functions ] ; then
- . /etc/init.d/functions
- elif [ -f /etc/rc.d/init.d/functions ] ; then
- . /etc/rc.d/init.d/functions
- else
- exit 0
- fi
- vsftpd=/usr/local/sbin/vsftpd //vsftp启动脚本中配置vsftpd安装的路径
- prog=vsftpd
- RETVAL=0
- start() {
- if [ -n "`/sbin/pidof $prog`" ]
- then
- echo "$prog: already running"
- echo
- return 1
- fi
- echo "Starting $prog:"
- base=$prog
- $vsftpd &
- RETVAL=$?
- usleep 5000000
- if [ -z "`/sbin/pidof $prog`" ]
- then
- RETVAL=1
- fi
- if [ $RETVAL -ne 0 ]
- then
- echo "Startup failure" //vsftp启动脚本启动失败提示
- else
- echo "Startup success" //vsftp启动脚本启动成功提示
- fi
- echo
- return $RETVAL
- }
- stop() {
- echo "Stopping $prog:"
- killall $vsftpd
- RETVAL=$?
- if [ $RETVAL -ne 0 ]
- then
- echo "Shutdown failure" //vsftp启动脚本停止失败提示
- else
- echo "Shutdown success" //vsftp启动脚本停止成功提示
- fi
- echo
- }
- case "$1" in
- start)
- start //vsftp启动脚本服务启动操作
- ;;
- stop)
- stop //vsftp启动脚本服务停止操作
- ;;
- status)
- status $vsftpd
- RETVAL=$? //vsftp启动脚本服务状态
- ;;
- restart)
- stop
- usleep 5000000 //vsftp启动脚本服务重启操作
- start
- ;;
- *)
- echo "Usage: $prog {start|stop|restart|status}"
- exit 1
- esac
- exit $RETVAL
使用Apache Mod_Layout模块向网页动态插入内容
什么是Mod_Layout
Mod_Layout能在文档的头部和底部(或者一个标签的之前或之后)放置信息。使用Layout指令你可以动态地向文档的任何地方插入代码。你可以利用它把标准的免责声明增加到服务器上的所有页面,或者在所有页面的顶部放置横幅广告。Mod_Layout能处理很多种类型的文档,如html,text, CGI, Java, PHP or Perl。更多的功能需要你去挖掘。
如何安装
Mod_Layout适用于Apache 1.3 Apache 2 Apache 2.2,对于这三个版本都有对应的Mod_Layout版本下载。
mod_layout-3.1适用Apache 1.3
mod_layout-4.1适用Apache 2
mod_layout-5.1适用Apache 2.2
这三个版本都可以在http://download.tangent.org/下载。
不同的版本安装方式有些许区别,下面以Apache 2.2为例。
1、下载适合的Mod_Layout版本
- wget http://download.tangent.org/mod_layout-5.1.tar.gz
- tar xvfz mod_layout-5.1.tar.gz
- cd mod_layout-5.1
2、编辑Makefile文件
- APXS=apxs
- APACHECTL=apachectl
- CC=`apxs -q CC`
- INC=-I`apxs -q INCLUDEDIR` `$(APXS) -q CFLAGS` #-DLAYOUT_FILEOWNER_NAME
- LD_SHLIB=`apxs -q LDFLAGS_SHLIB`
主要是保证APXS和APACHECTL的路径有效。
3、开始安装
- make
- make install
如何使用
在使用之前,请确认你想插入代码的网页是否启用gzip压缩,如果启用,Mod_layout将不能正常工作。
下面是启用mod_layout的一个例子
- <virtualHost *:80>
- AllowOverride None
- Order allow,deny
- Allow from all
- <Directory /home/foo/public_html>
- AllowOverride None
- Options SymLinksIfOwnerMatch
- AddOutputFilter LAYOUT html
- LayoutFooter /menu.html
- LayoutIgnoreURI /diary/*
- LayoutIgnoreURI /linux/*
- </Directory>
- </VirtualHost>
说明:
AddOutputFilter LAYOUT html:启动mod_layout的网页类型为html,你也可以添加php,shtml等
LayoutFooter /menu.html:添加到文档尾的文件menu.html。
LayoutIgnoreURI /diary/*:排除diary目录下的文档。
更多指令:http://www.musc.edu/webserver/mod_layout.html#_1_9
CentOS-5 rpm安装yum
CentOS-5 32位:
- for file in
- gmp-4.1.4-10.el5.i386.rpm
- readline-5.1-3.el5.i386.rpm
- dbus-python-0.70-9.el5_4.i386.rpm
- libxml2-2.6.26-2.1.12.i386.rpm
- libxml2-python-2.6.26-2.1.12.i386.rpm
- expat-1.95.8-8.3.el5_5.3.i386.rpm
- python-elementtree-1.2.6-5.i386.rpm
- sqlite-3.3.6-5.i386.rpm
- python-sqlite-1.1.7-1.2.1.i386.rpm
- elfutils-0.137-3.el5.i386.rpm
- rpm-python-4.4.2.3-22.el5.i386.rpm
- m2crypto-0.16-8.el5.i386.rpm
- python-urlgrabber-3.1.0-6.el5.noarch.rpm
- yum-3.2.22-37.el5.centos.noarch.rpm
- do rpm -Uvh http://mirror.centos.org/centos-5/5/os/i386/CentOS/$file;
- done
CentOS-5 64位:
- for file in
- gmp-4.1.4-10.el5.x86_64.rpm
- readline-5.1-3.el5.x86_64.rpm
- dbus-python-0.70-9.el5_4.x86_64.rpm
- libxml2-2.6.26-2.1.12.x86_64.rpm
- libxml2-python-2.6.26-2.1.12.x86_64.rpm
- expat-1.95.8-8.3.el5_5.3.x86_64.rpm
- python-elementtree-1.2.6-5.x86_64.rpm
- sqlite-3.3.6-5.x86_64.rpm
- python-sqlite-1.1.7-1.2.1.x86_64.rpm
- elfutils-0.137-3.el5.x86_64.rpm
- rpm-python-4.4.2.3-22.el5.x86_64.rpm
- m2crypto-0.16-8.el5.x86_64.rpm
- python-urlgrabber-3.1.0-6.el5.noarch.rpm
- yum-3.2.22-37.el5.centos.noarch.rpm
- do rpm -Uvh http://mirror.centos.org/centos-5/5/os/x86_64/CentOS/$file;
- done
CentOS一键配置rsync服务器脚本
1、保存下面的代码为一个文件,上传到服务器端,名称为rsync.sh
- #!/bin/bash
- #rsync Written by zhumaohai
- #For more information please visit http://devops.webres.wang
- echo “Please input the rsync username:”
- read username
- echo “Please input the rsync username password:”
- read password
- echo “Please input the allow ip address:”
- read allowip
- echo “Please input the path you want to rsync:”
- read rsyncpath
- echo “==========================input all completed========================”
- echo “==========================install rsync========================”
- yum -y install rsync
- useradd $username
- mkdir /etc/rsyncd
- cat >/etc/rsyncd/rsyncd.conf<<EOF
- # Minimal configuration file for rsync daemon
- # See rsync(1) and rsyncd.conf(5) man pages for help
- # This line is required by the /etc/init.d/rsyncd script
- pid file = /var/run/rsyncd.pid
- port = 873
- #address = $serverip
- #uid = nobody
- #gid = nobody
- uid = root
- gid = root
- use chroot = yes
- read only = yes
- #limit access to private LANs
- hosts allow=$allowip
- hosts deny=*
- max connections = 5
- motd file = /etc/rsyncd/rsyncd.motd
- #This will give you a separate log file
- #log file = /var/log/rsync.log
- #This will log every file transferred – up to 85,000+ per user, per sync
- #transfer logging = yes
- log format = %t %a %m %f %b
- syslog facility = local3
- timeout = 300
- [home]
- path = $rsyncpath
- list=yes
- ignore errors
- auth users = $username
- secrets file = /etc/rsyncd/rsyncd.secrets
- EOF
- echo “$username:$password” > /etc/rsyncd/rsyncd.secrets
- chmod 600 /etc/rsyncd/rsyncd.secrets
- cat >/etc/rsyncd/rsyncd.motd<<EOF
- +++++++++++++++++++++++++++
- + webres.wang rsync 2011-2012 +
- +++++++++++++++++++++++++++
- EOF
- /usr/bin/rsync –daemon –config=/etc/rsyncd/rsyncd.conf
- echo “/usr/bin/rsync –daemon –config=/etc/rsyncd/rsyncd.conf” >>/etc/rc.d/rc.local
- ps -aux | grep rsync
2、赋予脚本权限
- chmod +x rsync.sh
3、执行脚本
- ./rsync.sh
4、客户端同样需要安装rsync
具体配置见http://devops.webres.wang/2011/06/rsync-server-setup/
Linux php.ini的安全优化配置
(1) PHP函数禁用找到
- disable_functions =
该选项可以设置哪些PHP函数是禁止使用的,PHP中有一些函数的风险性还是相当大的,可以直接执行一些CentOS系统级脚本命令,如果允许这些函数执行,当PHP 程序出现漏洞时,损失是非常严重的!以下我们给出推荐的禁用函数设置:
- disable_functions = phpinfo,passthru,exec,system,popen,chroot,escapeshellcmd,escapeshellarg,shell_exec,proc_open,proc_get_status
需注意:如果您的服务器中含有一些CentOS系统状态检测的PHP程序,则不要禁用shell_exec,proc_open,proc_get_status等函数。
(2) PHP脚本执行时间找到
- max_execution_time = 30
该选项设定PHP程序的最大执行时间,如果一个PHP脚本被请求,且该PHP脚本在max_execution_time时间内没能执行完毕,则PHP不再继续执行,直接给客户端返回超时错误。没有特殊需要该选项可保持默认设置30秒,如果您的PHP脚本确实需要长执行时间则可以适当增大该时间设置。
(3) PHP脚本处理内存占用找到
- memory_limit = 8M
该选项指定PHP脚本处理所能占用的最大内存,默认为8MB,如果您的服务器内存为1GB以上,则该选项可以设置为12MB以获得更快的PHP脚本处理效率。
(4) PHP全局函数声明找到
- register_globals = Off
网络上很多关于PHP设置的文章都推荐将该选项设置为On,其实这是一种及其危险的设置方法,很可能引起严重的安全性问题。如果没有特殊的需要,强烈推荐保留默认设置!
(5) PHP上传文件大小限制找到
- upload_max_filesize = 2M
该选项设定PHP所能允许最大上传文件大小,默认为2MB。根据实际应用需求,可以适当增大该设置。
(6) 几个地方的检查
查找:display_errors
如果是On的话改成Off
查找:magic_quotes_gpc
如果是Off的话改成On
Linux查看网卡实时流量软件
nload是个很好用的一个工具,功能也很强.只是相对单一,只能查看总的流量,不能像iptraf那样,可针对IP,协议等
可以实时地监控网卡的流量,分Incoming,Outgoing两部分,也就是流入与流出的流量。同时统计当前,平均,最小,最大,总流量的值,使人看了一目了然。下面是安装步骤:
- yum install gcc gcc-c++ ncurses-devel
- wget http://www.roland-riegel.de/nload/nload-0.7.3.tar.gz
- tar zxvf nload-0.7.3.tar.gz
- cd nload-0.7.3
- ./configure
- make & make install
nload -m即可查看实时流量。
官方网站:http://www.roland-riegel.de/nload/
CentOS-6 64位安装PHP5.2出现error: libjpeg.(a|so),error: libpng.(a|so) not found
昨天测试lamp一键安装脚本时,出现error: libjpeg.(a|so),error: libpng.(a|so) not found等两个错误,根据错误提示,是找不到libjpeg和libpng库文件的意思,找了一下,发现这两个文件在目录/usr/lib64下,而php并不查找这个位置,而是去/usr/lib搜索库文件,所以只能建立两个软链接。
- ln -s /usr/lib64/libjpeg.so /usr/lib/libjpeg.so
- ln -s /usr/lib64/libpng.so /usr/lib/libpng.so
同是64位,CentOS-5就没有这种问题。
64位系统yum只安装64位rpm包
在64位系统上执行如下命令排除32位rpm包
echo “exclude=*.i?86” >> /etc/yum.conf
还可以使用命令删除已存在的32位rpm包
yum remove *.i?86