LNAMP 环境配置小结

前段时间配置 LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境,遇到过一些小问题,今天有空做个小结,正好也复习一下。

VPS 为 RamHost 的 Standard Plan,系统为 CentOS 5.5。

系统优化的不错,开机只占用 5M 内存,不过他家的 Debian 系统优化得更厉害,开机仅占用 3M,但同时也带来一些小问题:

1. Apache 启动故障:

直接在 /etc/rc.local 中添加 /usr/local/apache/bin/apachectl start 无法开机自启动,原因未知。解决方法:重建启动脚本,添加到系统服务,脚本如下: 继续阅读“LNAMP 环境配置小结”

eAccelerator 配置参数详解

eAccelerator 是一个自由开放源码 PHP 加速器,优化和动态内容缓存,提高了 PHP 脚本的缓存性能。

eaccelerator.shm_size = "32"

eAccelerator 可以使用的共享内存的数量(以兆为单位)。"0" 是指操作系统的默认值。默认值是 "0"。可根据服务器的实际情况来调整,16,32,64,128 都是可以的。

eaccelerator.cache_dir = "/tmp/eaccelerator"

这个目录是给磁盘缓存使用。eAccelerator 在这里储存预先编译好的代码,进程数据,内容以及用户的自定义内容。同样的数据也能被储存在共享内存中 (这样可以提高访问速度)。默认的设置是 "/tmp/eaccelerator"。

eaccelerator.enable = "1"

开启或关闭 eAccelerator。"1" 为开启,"0"为关闭。默认值为 "1"。
继续阅读“eAccelerator 配置参数详解”

如何在 Windows 系统编译 PHP5

类 Unix 系统上的编译方式各位基本都很熟悉,网上也有大把的资料可以查询。但是却很少见到 PHP 在 Windows 平台上的编译方法。因此也导致了本文的诞生。你可以将本文当作对 PHP 手册上对 Windows 上编译 PHP 一章的扩充版本。
首先,借用 PHP 手册上的一段话:
开始之前,很值得回答一下这个问题:为什么在 Windows 下编译这么难?
Windows 下还没有愿意免费共享代码的开发人员群体。直接结果就是没有足够的投资去建立支持这种开发方式的体系。大体上,尽量得到的可用资源都是从 Unix 下的工具来的。

环境需求

首先,为了在 Windows 上安编译,我们需要有 Microsoft 开发环境。推荐使用 Mirosoft Visual C++ 6.0,当然 VC++.net 也同样可以。
从 PHP5 开始,支持 Microsoft .NET 的工具链(你需要安装 Windows Platform SDK, Visual C++ Toolkit and .NET Framework SDK)
继续阅读“如何在 Windows 系统编译 PHP5”

Nginx PHP-FPM 502 504 自动重启脚本

网上有很多方法了:增加 php-cgi 进程 增加时间 等等 试了很多都没法完全杜绝 502 和 504 的发生,而且一旦发生了 502 错误,而且我们又不在电脑旁时就可能会损失大量的流量,于是就想让服务器自动检测 php 是否运行正常,若不正常重启之,这样就可以在 php 出现 502 等情况时尽快恢复正常。完全杜绝的方法还在摸索中…

首先新建一个 x.php 文件放入网站根目录:

<?php echo 'onens.com';

然后 编写脚本 内容如下。此脚本并无判断是否是 502 还是 504 还是其他,只要 http 请求返回值不是 200,就重启!

vim restart-php-fpm.sh

#!/bin/sh
wget http://onens.com/x.php --spider

re=$?

if [ $re = "1" ]; then
    echo "##" "502" $(date +"%y-%m-%d %H:%M:%S") "restart php-fpm " | mail -s "Critical Info" 13888888888@139.com
    /etc/init.d/php-fpm restart
    echo "restart php-fpm"
fi

继续阅读“Nginx PHP-FPM 502 504 自动重启脚本”

Nginx PHP-FPM 服务脚本

nginxphp-fpm 添加到系统服务:

vim /etc/init.d/nginx
# Copy the "nginx" into "/etc/init.d/nginx"
chmod 755 /etc/init.d/nginx
chkconfig --level 345 nginx on
vim /etc/init.d/php-fpm
# Copy the "php-fpm" into "/etc/init.d/nginx"
chmod 755 /etc/init.d/php-fpm
chkconfig --level 345 php-fpm on
# Or simply:
echo "/usr/sbin/nginx" >> /etc/rc.local
# Stop
pkill -9 nginx
# Reload
/usr/sbin/nginx -s reload
echo "/usr/sbin/php-fpm -y /etc/php-fpm.conf" >> /etc/rc.local
# Stop
pkill -9 php-fpm

继续阅读“Nginx PHP-FPM 服务脚本”

[转] EPEL 快速安装 Nginx + PHP-FPM + MySQL

现在,我们可以快速全自动搞定 CentOS + Nginx + PHP-FPM + MySQL 的安装了。

这个可比网上流传的什么一键安装包要好得多,强烈推荐此法安装,适合所有菜鸟和高手
这个装完已经包含 php 的一些常用扩展:PDO, eAccelerator, memcache, tidy 等等

先新建一个 repo:

vim /etc/yum.repos.d/Centos-Base-21andy.repo

放入如下内容:

[21Andy.com]
name=21Andy.com Packages for Enterprise Linux 5 - $basearch
baseurl=http://www.21andy.com/centos/5/$basearch/
enabled=1
gpgcheck=0
protect=1

继续阅读“[转] EPEL 快速安装 Nginx + PHP-FPM + MySQL”

Windows 下快速配置 nginx + php 5.3

一、下载最新的稳定的 nginx 的版本:http://nginx.org/

解压到 D:\nginx,修改配置文件 D:\nginx\conf\nginx.conf,找到:

#location ~ \.php$ {
#    root           html;
#    fastcgi_pass   127.0.0.1:9000;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#    include        fastcgi_params;
#}

修改为:

location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  html$fastcgi_script_name;
    include        fastcgi_params;
}

继续阅读“Windows 下快速配置 nginx + php 5.3”

PHP 5.3 版本选择

最近在 PHP 官网上看到又有新版的 PHP 下载了,于是上去找找 For Windows 的版本,可是一看确傻眼了,一共给了四个版本,VC9 x86 Non Thread Safe、VC9 x86 Thread Safe、VC6 x86 Non Thread Safe、VC6 x86 Thread Safe,这让我这个菜鸟头疼啊,还好 PHP 官网提供下载的地方左边有个英文 choose 我看懂了,我估摸着就是如何来选择版本的意思吧,于是开始查字典及上网查找,终于看明白了具体意思,拿来做个备忘先。

一、如何选择 PHP 5.3 的 VC9 版本和 VC6 版本

VC6 版本是使用 Visual Studio 6 编译器编译的,如果你的 PHP 是用 Apache 来架设的,那你就选择 VC6 版本。

VC9 版本是使用 Visual Studio 2008 编译器编译的,如果你的 PHP 是用 IIS 来架设的,那你就选择 VC9 版本。

二、如何选择 PHP 5.3 的 Thread Safe 和 Non Thread Safe 版本

先从字面意思上理解,Thread Safe 是线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的 CGI 执行方式而耗尽系统资源。Non Thread Safe 是非线程安全,在执行时不进行线程(Thread)安全检查。
继续阅读“PHP 5.3 版本选择”

[分享] 一些 PHP tips

先说几个比较重要的:

数据变量在用foreach前一定要先验证是否是数组类型,否则是个Error!

所有的返回值都要判断,不要认为它一定会如你所愿返回正确的值。

1.如果在写PHP的一个方法的时候能被静态,那就声明他为静态的,速度可提高1/4; //但要注意,static变量是文件被引用的时候就分配内存,而不是被调用时;
2.在PHP的输出语句中,echo的效率高于 print,因为echo没有返回值,print返回一个整型;
3.在循环之前设置循环的最大次数,而非在在循环中;
4.销毁变量去释放 内存,特别是大的数组;
5.避免使用像__get, _set, __autoload等魔术方法;
6.requiere_once() 比较耗资源;
7.在includes和requires中使用绝对路径,这样在分析路径花的时间更少;
8.如果你需要得sexinsex 到脚本执行时的时间,$_SERVER[‘REQUSET_TIME’]优于time();
9.能使用字符处理函数的,尽量用他们,因为效率高于 正则;
10.str_replace字符替换比正则替换preg_replace快,但strtr比str_replace又快1/4;
继续阅读“[分享] 一些 PHP tips”