在Linux中将php-fpm配置成服务的方法

1.配置php-fpm.conf

vi /usr/local/php/etc/php-fpm.conf

php-fpm.pid 目录必须指向:/usr/local/php/var/run/php-fpm.pid

 

2.拷贝php-fpm脚本至/etc/init.d目录

cp /home/soft/php-5.3.15/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

 

3.设置权限并启动php-fpm:

chmod 755 /etc/init.d/php-fpm

/etc/init.d/php-fpm start

chkconfig –add php-fpm

 

最后,给出php-fpm以服务的方式启动、停止和重启:

service php-fpm start

service php-fpm stop

service php-fpm reload

 

备注:上述方法是基于PHP 5.3.15版本,其他版本仅供参考!

Nginx不间断服务的平滑升级方法

这是站长最近一次给服务器上Nginx升级的笔记,版本是从正在服役的1.0.12升级到1.0.15。

 

第一步:备份旧版的Nginx和配置文件

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/bak_nginx //备份旧版程序

cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/bak_nginx.conf //备份配置文件

 

第二步:编译新版的Nginx

tar zxvf ./nginx-1.0.15.tar.gz

cd nginx-1.0.15

./configure –prefix=/usr/local/nginx –with-http_stub_status_module –user=www –group=www

make

make install

 

第三步:检查新版是否正常

/usr/local/nginx/sbin/nginx -V //检查版本信息是否正确

/usr/local/nginx/sbin/nginx -t //测试新版本Nginx配置是否正常,如看到xxxxxx test is successful的提示,说明配置正常

 

第四步:切换新旧版工作进程

kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`

kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

用PHP获取客户端真实IP的函数代码分享

代码如下:

<?php
function getIp()
{
    $realip = null;

    if ($realip !== null) return $realip;
    if (isset($_SERVER)) {
        if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
            $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
            foreach ($arr as $ip) {
                $ip = trim($ip);
                if ($ip != 'unknown') {
                    $realip = $ip;
                    break;
                }
            }
        } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
            $realip = $_SERVER['HTTP_CLIENT_IP'];
        } else {
            if (isset($_SERVER['REMOTE_ADDR'])) {
                $realip = $_SERVER['REMOTE_ADDR'];
            } else {
                $realip = '0.0.0.0';
            }
        }
    } else {
        if (getenv('HTTP_X_FORWARDED_FOR')) {
            $realip = getenv('HTTP_X_FORWARDED_FOR');
        } elseif (getenv('HTTP_CLIENT_IP')) {
            $realip = getenv('HTTP_CLIENT_IP');
        } else {
            $realip = getenv('REMOTE_ADDR');
        }
    }
    preg_match("/[\d\.]{7,15}/", $realip, $onlineip);
    $realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';
    return $realip;
}
?>

PHP处理字符串技巧

PHP处理字符串的能力非常强大,方法也是多种多样,但有的时候你需要选择一种最简单且理想的解决方法。文章列举了10个PHP中常见的字符串处理案例,并提供了相对应的最理想的处理方法。

1.确定一个字符串的长度

这是文章中最明显的一个例子,其中的问题是我们如何来确定一个字符串的长度,这里我们不能不提的就是strlen()函数:

阅读更多

Linux下的NFS配置方法

NFS 是 Network File System 的简写,即网络文件系统。

网络文件系统是 Linux 支持的文件系统中的一种,也被称为NFS。NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。

下面来介绍一下 NFS 的配置。

假设有2台 Linux 服务器,IP地址分别为 192.168.0.1 和 192.168.0.2,我们希望将 192.168.0.1 作为 Server 端,把其 /home/public 目录共享给作为客户端的 192.168.0.2,方法如下:

阅读更多

为MySQL 5.1加装InnoDB引擎

在 Linux 下安装 MySQL 5.1 时,默认不会安装 InnoDB 引擎,需要以插件的形式进行安装。

登录到 MySQL 命令行,执行如下命令安装 InnoDB 引擎:

mysql>INSTALL PLUGIN InnoDB SONAME ‘ha_innodb.so’;

安装成功后,可以使用如下命令查询 InnoDB 引擎是否已被安装:

mysql>show engines;

Subversion添加到Windows服务的方法

在Windows中安装Subversion服务器时,将Subversion添加到Windows的服务中,需要在命令行状态下执行如下指令:

sc create svn
binpath= “D:\Subversion\bin\svnserve.exe –service -r E:\svn”
displayname= “Subversion Server”
depend= Tcpip
start= auto

提示:上面的5行命令应在同一行中输入,分开多行只为阅读方便。

第2行中的“E:\svn”是svn项目的根目录

成功后会提示:
[SC] CreateService 成功

Nginx出现“413 Request Entity Too Large”的解决方法

周末刚刚给公司的一台服务器更换了 Nginx ,编辑们在后台上传图片时,浏览器中总报如下错误:

413 Request Entity Too Large

先检查了 php.ini 文件,发现相关的设置都正常,后来想起来 Nginx 的配置文件中少设了一个参数:

client_max_body_size 8m;

将上面这行设置参数添加到 Nginx 配置文件 nginx.conf 的 http{…} 段中即可。

Fedora16通过yum源安装MySQL的正确方法

最近站长的笔记本刚刚换上了Fedora 16,通过yum安装MySQL时遇到了些问题,搜索了几个国内的网站,几乎都不对路,最后还是在国外的网站上找到了正确的方法,下面分享一下。

1.首先,通过yum源安装MySQL

yum install mysql mysql-server

2.启动MySQL,并设置MySQL随系统启动

systemctl start mysqld.service

systemctl enable mysqld.service

需要注意的是上面所有操作应以root身份执行。

提高PHP编程效率的若干技巧

0.用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。

1.如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。

2.$row[’id’] 的速度是$row[id]的7倍。

3.echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。

4.在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。

5.注销那些不用的变量尤其是大数组,以便释放内存。

阅读更多