php-fpm优化

本文所涉及的配置文件名为php-fpm.conf,里面比较重要的配置项有如下一些。

request_terminate_timeout = 30
#表示等待30秒后,结束那些没有自动结束的php脚本,以释放占用的资源。

pm表示使用那种方式,就是static(静态)或者dynamic(动态)。在更老一些的版本中,dynamic被称作apache-like。

pm.max_children – This is used to set the maximum processes allowed
pm.start_servers – The number of child processes created on startup 
pm.min_spare_servers – Defines the minimum number of idle processes
pm.max_spare_servers – Sets the maximum number of idle server processes
pm.process_idle_timeout – The number of seconds an idle process will be alive
pm.max_requests – This sets the execution time of each child process and is used to curb memory leaks.

如果dm设置为static,那么其实只有pm.max_children这个参数生效,系统会开启设置数量的php-fpm进程。
如果dm设置为dynamic,那么pm.max_children参数失效,后面3个参数生效。后面3个参数生效,同时请注意,pm.max_spare_servers的值不能超过pm.max_children定义的值,否则php-fpm进程报错。

系统会在php-fpm运行开始 的时候启动pm.start_servers个php-fpm进程,然后根据系统的需求动态在pm.min_spare_servers和pm.max_spare_servers之间调整php-fpm进程数。 (more…)

Read More

解决OSError: [Errno 2] No such file or directory: ‘/dev/urandom’

最近自己的CentOS6在yum update以后,所有的yum命令都会遭遇如下错误

Traceback (most recent call last):
  File "/usr/bin/yum", line 4, in 
    import yum
  File "/usr/lib/python2.6/site-packages/yum/__init__.py", line 46, in 
    import tempfile
  File "/usr/lib/python2.6/tempfile.py", line 34, in 
    from random import Random as _Random
  File "/usr/lib/python2.6/random.py", line 873, in 
    _inst = Random()
  File "/usr/lib/python2.6/random.py", line 96, in __init__
    self.seed(x)
  File "/usr/lib/python2.6/random.py", line 110, in seed
    a = long(_hexlify(_urandom(16)), 16)
OSError: [Errno 2] No such file or directory: '/dev/urandom'

解决方法:

mknod -m 644 /dev/urandom c 1 9
Read More

Linux挂载ftp服务器

Linux挂载ftp服务器,需要用到一个名为fuse-curlftpfs的包。正常情况下无法通过yum的方式获取此包,因此需要先安装DAG repository

Centos5 64位  wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm
Centos5 32位  wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.i386.rpm
Centos6 64位  wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
Centos6 32位  wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm

然后是安装下载的rpm包

rpm -ivh rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm

然后就可以通过yum的方式安装fuse-curlftpfs了

yum install fuse-curlftpfs -y

在Centos6上执行此命令,可能会遇到 Requires: libcurl.so.3 的错误,解决方法:编辑 /etc/yum.repos.d/rpmforge.repo 文件,把 [rpmforge-extras] 项打开,再执行 yum clean all 即可。 (more…)

Read More

解压rpm包

RPM包括是使用cpio格式打包的,因此可以先转成cpio然后解压,如下所示:

rpm2cpio xxx.rpm | cpio -div

例如:
[root@localhost ~]# rpm2cpio ipvsadm-1.26-1.src.rpm | cpio -div
ipvsadm-1.26.tar.gz
ipvsadm.spec
88 blocks

可以看到,压缩出来了一个.tar.gz格式的压缩包和一个xxx.spec格式的文件。
spec脚本用于指定软件基础信息,以及安装、卸载前后执行的脚本,对源码包解压、打补丁、编译,安装路径和文件等。关于spec脚本的详细说明请看RPM包rpmbuild SPEC文件深度说明。cpio命令的选项可以参考linux中cpio及rpm2cpio应用

Read More

CentOS5安装xen

一,判断CPU对虚拟化的支持

1,半虚拟化 (Para-virtualization) 硬件需求:

[root@linux ~]# cat /proc/cpuinfo | grep flags | egrep '(vmx|svm)'
flags : fpu tsc msr pae mce cx8 ……

列表中出现pae表示支持半虚拟化,可以安装xen

2,全虚拟化 (Fully-virtualization) 硬件需求:

[root@linux ~]# cat /proc/cpuinfo | grep flags | egrep '(vmx|svm)'
flags : fpu tsc msr pae mce……

对于Intel的CPU,列表中出现vmx表示支持全虚拟化,可以安装xen
对于AMD的CPU,列表中出现svm表示支持全虚拟化,可以安装xen

需要说明的一点儿是,只有fully virtualized的才可以从iso文件、CD-ROM等为虚拟机安装操作系统,且可以安装windows系统,para virtualized只能从FTP/HTTP服务器安装,且不能安装windows系统。 (more…)

Read More

python读写文件

首先看一个例子:

f = open('thefile.txt','w')    #以写方式打开,
try:
    f.write('wokao')
finally:
    f.close()

文件的打开方式:
f = open(‘文件’,’mode’)
‘r’:只读(缺省。如果文件不存在,则抛出错误)
‘w’:只写(如果文件不存在,则自动创建文件),此时无法调用f.read()方法,且当调用f.write()时,将清空文件原有内容
‘a’:附加到文件末尾
‘r+’:读写
如果需要以二进制方式打开文件,需要在mode后面加上字符”b”,比如”rb”,”wb”等 (more…)

Read More

修改shell终端提示信息

Shell终端默认只显示用户名、主机名、工作目录,有时候我们需要对Shell终端显示的信息简单调整一下,以便使工作更有效率。比如我们可以给Shell终端加上时间,以便我们计算脚本执行的时间,如下所示:

[root@localhost src]$echo $PS1
[\u@\h \W]$    #读取默认终端显示信息
[root@localhost src]$export PS1="[\u@\h \W \t]$"    #给Shell终端加上时间显示
[root@localhost src 16:19:18]$    #时间已经显示出来了

Shell终端的显示,使用到以下两个环境变量
PS1:就是用户平时的提示符。
PS2:第一行没输完,等待第二行输入的提示符。

[root@localhost src]$echo $PS1
[\u@\h \W]$    #读取默认终端显示信息

想重启后继续生效,只需要修改配置文件即可。
对于当前用户只需修改~/.bashrc,对于系统所有用户我们修改/etc/bashrc。 (more…)

Read More