CentOS 5 服务器 Nginx 环境安装

十月 21st, 2011 | JigWang | PHP研究 | Tags: , | 抢沙发 »

一、系统约定

软件源代码包存放位置 /usr/local/src

源码包编译安装位置(prefix) /usr/local/software_name

脚本以及维护程序存放位置 /usr/local/sbin

MySQL 数据库位置 /var/lib/mysql(可按情况设置)

网站根目录 /home/www/wwwroot(可按情况设置)

虚拟主机日志根目录 /home/www/logs(可按情况设置)

运行账户 www:www

二、系统环境部署及调整

1、检查系统是否正常

# more /var/log/messages (检查有无系统级错误信息)

# dmesg (检查硬件设备是否有错误信息)

# ifconfig(检查网卡设置是否正确)

# ping www.163.com (检查网络是否正常)

# cat /proc/cpuinfo (检查CPU频率是否正常)

# top (按1检测CPU核数是否正常,内存大小是否正常)

2、关闭不需要的服务

# ntsysv

以下仅列出需要启动的服务,未列出的服务一律推荐关闭:

atd

crond

irqbalance

microcode_ctl

network

sendmail

sshd

syslog

关闭SElinux:修改/etc/selinux/config文件中的SELINUX= 为 disabled

3、更换yum国内源

# cd /etc/yum.repos.d

# mv CentOS-Base.repo CentOS-Base.repo.save

# wget http://centos.ustc.edu.cn/CentOS-Base.repo.5

# mv CentOS-Base.repo.5 CentOS-Base.repo

# yum clean all

4、服务器时间检查和设置

#data (检查时间是否正确,是否是中国时间CST)

#cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime (如果时区不对,则执行,时间正常的跳过)

#yum -y install ntp (安装ntp对时工具)

#chkconfig ntpd on (让对时服务开机启动)

5、使用 yum 对系统进行更新并且安装必要软件包

#yum update –y

#yum -y install make openssl openssl-devel pcre pcre-devel libpng libpng-devel libjpeg-6b libjpeg-devel-6b freetype freetype-devel gd gd-devel zlib zlib-devel gcc gcc-c++ libXpm libXpm-devel ncurses ncurses-devel libmcrypt libmcrypt-devel libxml2 libxml2-devel imake autoconf automake screen sysstat compat-libstdc++-33 curl curl-devel

6. 重新启动系统

# init 6

三、编译安装L.A.M.P环境

1、下载软件(截止到09年10月的最新版本)

# cd /usr/local/src

#wget http://sysoev.ru/nginx/nginx-0.7.63.tar.gz

#wget http://download.scientificlinux.net/nginx

#wget http://download.scientificlinux.net/php-fpm.conf

#wget http://download.scientificlinux.net/nginx.conf

#wget http://download.scientificlinux.net/fcgi.conf

#wget http://download.scientificlinux.net/php-5.2.10.tar.gz

#wget http://download.scientificlinux.net/php-5.2.10-fpm-0.5.13.diff.gz

#wget http://download.scientificlinux.net/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz (32位系统)

#wget http://download.scientificlinux.net/ZendOptimizer-3.3.3-linux-glibc23-x86_64.tar.gz (64位系统)

#wget http://download.scientificlinux.net/mysql-5.1.39-linux-i686-glibc23.tar.gz (32位系统)

#wget http://download.scientificlinux.net/mysql-5.1.39-linux-x86_64-glibc23.tar.gz (64位系统)

2、安装MySQL

cd /usr/local/src

tar zxvf mysql-5.1.39-linux-i686-glibc23.tar.gz

mv mysql-5.1.39-linux-i686-glibc23 /usr/local/

ln -s /usr/local/mysql-5.1.39-linux-i686-glibc23/ /usr/local/mysql

groupadd mysql

useradd -g mysql mysql

chown -R mysql:mysql /usr/local/mysql

chown -R mysql:mysql /usr/local/mysql-5.1.39-linux-i686-glibc23/

cd /usr/local/mysql

./scripts/mysql_install_db –user=mysql

cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld

chmod 755 /etc/rc.d/init.d/mysqld

chkconfig –add mysqld

chkconfig –level 3 mysqld on

cp ./support-files/my-huge.cnf /etc/my.cnf

mv /usr/local/mysql/data /var/lib/mysql

chown -R mysql:mysql /var/lib/mysql

编辑/etc/my.cnf

在 [mysqld] 段增加

datadir = /var/lib/mysql

skip-innodb

wait-timeout = 10

max_connections = 512

max_connect_errors = 10000000

在 [mysqld] 段修改

max_allowed_packet = 16M

thread_cache_size = CPU个数*2

将 log-bin 注释

service mysqld start

bin/mysqladmin -u root password ‘password_for_root’

其中引号内的password_for_root是要设置的root密码

3、安装Nginx

cd /usr/local/src/

tar zxvf nginx-0.7.63.tar.gz

cd nginx-0.7.63

./configure –prefix=/usr/local/nginx –conf-path=/usr/local/nginx/conf/nginx.conf –with-http_realip_module –with-http_addition_module –with-http_gzip_static_module –with-http_random_index_module –with-http_stub_status_module –with-http_sub_module –with-http_dav_module

make

make install

cp /usr/local/src/nginx /etc/init.d/nginx

chmod 755 /etc/init.d/nginx

chkconfig –add nginx

chkconfig nginx on

4、安装PHP和Zend

cd /usr/local/src

tar zxvf php-5.2.10.tar.gz

gzip -cd php-5.2.10-fpm-0.5.13.diff.gz | patch -d php-5.2.10 -p1

cd php-5.2.10

./configure –prefix=/usr/local/php5 –with-config-file-path=/usr/local/etc/cgi –enable-mbstring –enable-ftp –with-gd –with-jpeg-dir=/usr –with-png-dir=/usr –enable-magic-quotes –with-mysql=/usr/local/mysql –with-pear –enable-sockets –with-ttf –with-freetype-dir=/usr –enable-gd-native-ttf –with-zlib –enable-sysvsem –enable-sysvshm –with-libxml-dir=/usr –enable-force-cgi-redirect –enable-fastcgi –with-xmlrpc –enable-zip –enable-fpm

make

make install

mkdir -p /usr/local/etc/cgi/

cp php.ini-dist /usr/local/etc/cgi/php.ini

mv -f /usr/local/src/php-fpm.conf /usr/local/php5/etc/php-fpm.conf

groupadd www

useradd -g www www

echo ‘ulimit -SHn 65535′ >> /etc/rc.local

echo ‘/usr/local/php5/sbin/php-fpm start’ >> /etc/rc.local

cd /usr/local/src

tar zxvf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz

cd ZendOptimizer-3.3.3-linux-glibc23-i386

./install

(注意第一个要填的路径是Zend安装路径,第二个是php.ini所在的路径,即/usr/local/etc/cgi)

(不要选重启apache)

5、启动Nginx和php

mv -f /usr/local/src/fcgi.conf /usr/local/nginx/conf/

cp -f /usr/local/src/nginx.conf /usr/local/nginx/conf/nginx.conf

mkdir -p /home/www/wwwroot

ulimit -SHn 65535

/usr/local/php5/sbin/php-fpm start

service nginx start

在/home/www/wwwroot放入一个index.php,内容为

打开浏览器访问,即可看到phpinfo页面

6、设置系统防火墙

编辑/usr/local/sbin/fw.sh

复制以下内容进去

#!/bin/bash

# Stop iptables service first

service iptables stop

# Load FTP Kernel modules

/sbin/modprobe ip_conntrack_ftp

/sbin/modprobe ip_nat_ftp

# Inital chains default policy

/sbin/iptables -F -t filter

/sbin/iptables -P INPUT DROP

/sbin/iptables -P OUTPUT ACCEPT

# Enable Native Network Transfer

/sbin/iptables -A INPUT -i lo -j ACCEPT

# Accept Established Connections

/sbin/iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

# ICMP Control

/sbin/iptables -A INPUT -p icmp -m limit –limit 1/s –limit-burst 10 -j ACCEPT

# WWW Service

/sbin/iptables -A INPUT -p tcp –dport 80 -j ACCEPT

# FTP Service

/sbin/iptables -A INPUT -p tcp –dport 21 -j ACCEPT

# SSH Service

/sbin/iptables -A INPUT -p tcp –dport 22 -j ACCEPT

退出编辑,执行以下命令

# chmod 755 /usr/local/sbin/fw.sh

# echo ‘/usr/local/sbin/fw.sh’ >> /etc/rc.local

# /usr/local/sbin/fw.sh


PHP人民币大写转换函数

九月 24th, 2011 | JigWang | PHP研究 | Tags: | 1 Comment »
PHP Code:
<?php

/***
*
* 人民币大写转换函数
* http://qun.t.qq.com/55576161
*
*/

function Chinese_RMB($money) {
    $money = round($money, 2);    // 四舍五入
   
    if ($money <= 0) {
        return '零元';
    }
   
    $units = array ( '', '拾', '佰', '仟', '', '万', '亿', '兆' );
    $amount = array( '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' );
   
    $arr = explode('.', $money);    // 拆分小数点
    $money = strrev($arr[0]);        // 翻转整数
    $length = strlen($money);        // 获取数字的长度
   
    for ($i = 0; $i < $length; $i++) {
        $int[$i] = $amount[$money[$i]];    // 获取大写数字
        if (!empty($money[$i])) {
            $int[$i] .= $units[$i%4];    // 获取整数位
        }
       
        if ($i%4 == 0) {
            $int[$i] .= $units[4+floor($i/4)];    // 取整
        }
    }
   
    $con = isset($arr[1]) ? '元' . $amount[$arr[1][0]] . '角' . $amount[$arr[1][1]] . '分' : '元整';
    return implode('', array_reverse($int)) . $con;    // 整合数组为字符串
}

//  调用函数
echo $num = "730213.56";
echo "<br />";
echo Chinese_RMB($num);

?>


PHP JavaScript两个截取字符串函数

九月 20th, 2011 | JigWang | PHP研究 | Tags: , | 抢沙发 »

只是一个截取字符串函数而已…

PHP Code
//截取字符串
function SubString($str,$len=0,$fix="")
{
    if(strlen($str)/2<=$len)
    return $str;
   
    $tmplen=0;
    for( $i=0; $i<=strlen($str); $i++)
    {
        if(ord(substr($str, $i, 1)) > 0xa0 )
        {
            if($tmplen+1>$len)
                break;
            $tmpstr.=$str[$i].$str[$i+1];
            $tmplen+=1;
            $i++;
        }
        else
        {
            if($tmplen+1>$len)
                break;
            $tmpstr.= $str[$i];
            $tmplen+=1;
        }            
    }
    return $tmpstr.$fix;
}

JavaScript 的截取字符串 函数

JavaScriptCode
//截取字符串
function countCharacters(str, size) {
    var totalCount = 0;
    var newStr = "";
    for (var i = 0; i < str.length; i++) {
        var c = str.charCodeAt(i);
        if ((c >= 1 && c <= 126) || (65376 <= c && c <= 65439)) {
            totalCount++;
        } else {
            totalCount += 2;
        }
        if (totalCount < size) {
            newStr = str.substring(0, i + 1);
        } else {
            return newStr + "…";
        }
    }
    return newStr;
}

CSS背景透明

九月 16th, 2011 | JigWang | PHP研究 | Tags: | 抢沙发 »

记一个css背景透明的一段code:
position:relative;
z-index:1;
filter:alpha(opacity=40);
-moz-opacity:0.4;
opacity:0.4;
background: red;


基于 DOMDocument 对象的 XML 生成类

九月 11th, 2011 | JigWang | PHP研究 | 抢沙发 »
一个PHP基于 DOMDocument 对象的 XML 生成类
一直想找一个好用的xml生成类,没找到 失望    以前都一直用直接xml的类  有时间 自己就写了一个基于DOMDocument 对象的XML类
如果对PHP 的 DOMDocument  对象不熟悉 可以查看手册
这里  查看实例
下面是代码  有需要的童鞋 可以点击详情 查看源码
阅读全文 »

360你Out了,现在收回这句话

八月 30th, 2011 | JigWang | 互联网 | 抢沙发 »

下面是某天下午调试IE6兼容性后,发的牢骚.大家都知道现在很多国内的浏览器陆续的出现,其实,都是挂羊皮卖狗肉,基本是基于IE6的内容二次开发的,其中典型的代表就是360公司的,所谓的安全浏览器,然后就 发给360的一封Email

360你out咯

阅读全文 »


PHP, Perl, Python, Ruby 基础语法对照表

八月 24th, 2011 | JigWang | Python, 综合技术 | 抢沙发 »

一个简单的页面…..

http://hyperpolyglot.org/scripting

自己看吧


mysql函数replace替换字符串

七月 13th, 2011 | JigWang | 数据库 | 抢沙发 »

在项目开发的过程中我们经常会对存储的内容进行更新。

很多时候,都是查询出来,在用PHP处理,其实,在mysql中有一个非常好用的替换函数 replace

比如在 table 表中的字段 title 的 存储数据有  我用的是中文字符

id             title

1              二天

2             二个人

3            二座城

现在要把,title字段中所有的 “二” 替换成 “两”   的SQL语句:

UPDATE `table` SET title = REPLACE(title,’二’, ‘两’);
替换后:

id             title

1              两天

2              两个人

3              两座城

一条语句就搞定,很简单吧
–EOF–


在ThinPHP使用xheditor多图上传

七月 7th, 2011 | JigWang | ThinkPHP | 抢沙发 »

xhEditor ?

xhEditor是一个基于jQuery开发的简单迷你并且高效的在线可视化HTML编辑器, 是国人开发的一个开源的编辑器项目。一直喜欢这种简单、简洁系,没在相木中完全的用过xhEditor。

今天写了一个基于xhEditor做多图片上传的应用 开发框架用的是ThinkPHP

直接上代码,不多啰嗦,对xhEditor感兴趣的童鞋可以去 xhEditor官网 有很好的Demo和技术手册,不过也可以给他们团队进行捐赠

我把xhEditor放在ThinkPHP项目的 Public 文件夹下面

add.html
<script type=“text/javascript” src=“__PUBLIC__/xheditor/xheditor-1.1.7-zh-cn.min.js”></script>
<script type=“text/javascript”>
$(pageInit);
function pageInit() {
$(‘#elm2′).xheditor({
tools:‘Img,Fullscreen’, // 调用图片
skin:‘nostyle’, // 皮肤
upBtnText:‘浏览’, // 上传按钮文字
upMultiple:’5′, // 允许一次上传多少个文件
upImgUrl:“__APP__/Ajax/upload?immediate=1″, // 图片文件上传接收URL 发生到Ajax控制器的upload方法
upImgExt:“jpg,jpeg,gif,png”, // 限制图片上传扩展名
shortcuts:{
‘ctrl+enter’:submitForm
}
});
}
function submitForm(){
$(‘#frmDemo’).submit();
}
</script>
<textarea id=“elm2″ name=“elm2″ rows=“20″ cols=“60″></textarea>
上面的的__APP__/Ajax/upload  发送到 ajax控制器的upload方法

class AjaxAction extends Action{

public function upload(){

// 上传操作

}

}

在xhEditor的Demo 例子的 demo8.html 中有上传的例子  这里的upload方法可以自己写 封装起来
如果为了懒,可以把 demo文件夹下面的 upload.php 文件直接拷贝到upload方法中
为了懒 我就这么干的…
把 上传的地址修改为 变量 $attachDir  = ” /Public/Uploads”;
最后,给看一下效果吧 。。。

关于IT是吃青春吃饭 — 看体育

六月 28th, 2011 | JigWang | 互联网 | 抢沙发 »

相信每一个在刚准备入行这个行业之前就听到无数的“前辈”说 这一行是吃请吃饭的,到30岁了 必须选择转换 怎么样…

其实,我觉得 这种观点很片面.    如果,说是吃青青吃饭,为什么大家没有说体育呢? 大部分的运动员,都是在30岁 就叫老运动员,很多是10几岁就开始走上运动职业之路的.

而且,尤其是足球,篮球这样的高强度运动,而且,这些运动员的巅峰期一般都在27-30左右,所以,从10几岁,开始 同样需要经历一个漫长的积累才能达到一定的高度,

最近,大家比较关注的NBA季后赛热火和小牛的总冠军之争,法网李娜夺冠,

先啰嗦点NBA 热火 – 小牛季后赛, 关注篮球 NBA的朋友都知道James 、 知道 诺维斯基,知道 5年前的那场季后赛,也是热火和小牛,当年的有着老将奥尼尔、莫宁的热火战胜了年轻的小牛,5年后,小牛的换来了基德、马里昂都老将,热火,也已经组成了呼啸全联盟的三巨头,在面对年轻的三巨头,小牛这批老将,凭着他们在联盟多年滚打,有他们的经验战胜了年轻活力的三巨头, 很多,很多,看到小牛,看到他们的默默的一步一步的…   诺维斯基在小牛的坚守,库班的成长,成熟, 在看到的是詹姆斯对骑士的抱怨,到离开,总决赛告诉我们的不仅仅是一场比赛而已,还有更多…

如果,是青春饭,也只有付出青春才有收获,是诺维斯基在小牛10年坚守…  总决赛,让我们懂了

在说李娜,最近,大家看新闻,互联网,报纸,看到都能看到李娜的名字,因为,她拿到了中国人在网球舞台上的第一个法网的大满贯

李娜是谁? 6岁开始练习网球,99年成为职业网球运动员,从网球低级赛事打到四大满贯,在拿到大满贯冠军。。

如果,从99年开始算,李娜经历了11年,30岁拿到职业生涯第一个大满贯,11年告诉了我们什么? 是做到每一天的训练,每一天的进步,伤病…

在啰唆一下咋们的国家队,男篮吧,从东亚四强赛,输给了日本,再到输给澳大利亚,让人看到年轻的中国男篮的只有,急躁,自满,浮躁,抱怨…  有人说是他们年轻,

这些词,给今天中国的年轻人,也代表了现在很多年轻人的一个状态又有几个不是这样呢? 大家快点醒醒吧 踏踏实实的做事… 踏踏实实的训练,打球,中国篮球靠的是你们,你们的确给中国篮球带来了辉煌,那是姚明的时代和你们无关.

在看中国足球 国奥队vs阿曼,带给了我们希望..


Navigation »