原文链接:http://www.wp31.com/1358.html

varnish是优秀的缓存服务器,配置简单,命中率高,性能高效。下面我们以wordpress博客程序为例看看如何配置varnish。
1、首先安装好web环境,可以使用本站的LNMP一键安装包配置。
2、安装varnish。

rpm -i
yum install varnish

下载default.vcl文件覆盖/etc/varnish/default.vcl文件。

3、修改varnish配置文件/etc/varnish/default.vcl

backend default {
host = “127.0.0.1″;
port = “8080″;
}

8080端口是后缀nginx或apache的端口。

# Only cache the following site
if (req.http.host ~ “(localhost)”) {
set req.backend = default;
} else {
return (pass);
}

这个是只允许localhost缓存,需要改成自己的wordpress域名。

[………]
set beresp.ttl = 1h;
[………]

这个是设置缓存页面过期时间为1h,单位可以是s(秒),h(小时),d(天)等。
4、修改/etc/sysconfig/varnish配置文件
重要的有两个值:
VARNISH_LISTEN_PORT=80 定义varnish的端口为80。
VARNISH_STORAGE_SIZE=1G 定义varnish最大缓存大小为1G
5、管理varnish的命令
service varnish start(restart|reload) 进程的启动,重启,配置重载。
varnishstat 实时查看varnish缓存命中状态。
varnishadm varnish后台管理命令。
6、最后需要安装wordpress清除varnish缓存的插件wordpress varnish
可以在后台搜索,也可以直接下载http://wordpress.org/extend/plugins/wordpress-varnish/。
经过简单的六步,就完全了wordpress varnish缓存的配置。
更多varnish详细配置说明:https://www.varnish-cache.org/docs/3.0/

鉴于Centos5.6上Proftpd比Vsftpd有更好的表现,于是果断卸载Vsftpd

yum remove vsftpd

因为Centos5.6上默认没有Proftpd的源,因此我们选择了编译安装:

cd /tmp/
wget –passive-ftp ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.3e.tar.gz
tar xvfz proftpd-1.3.3e.tar.gz
cd proftpd-1.3.3e/
./configure –sysconfdir=/etc
make
make install
cd ..
rm -fr proftpd-1.3.3e*

proftpd被安装在了 /usr/local/sbin, 但是我们需要它安装在 /usr/sbin,因此我们建立一个符号链接:

ln -s /usr/local/sbin/proftpd /usr/sbin/proftpd

现在我们新建 /etc/init.d/proftpd:

vi /etc/init.d/proftpd

#!/bin/sh
# $Id: proftpd.init,v 1.1 2004/02/26 17:54:30 thias Exp $
#
# proftpd        This shell script takes care of starting and stopping
#                proftpd.
#
# chkconfig: - 80 30
# description: ProFTPD is an enhanced FTP server with a focus towards \
#              simplicity, security, and ease of configuration. \
#              It features a very Apache-like configuration syntax, \
#              and a highly customizable server infrastructure, \
#              including support for multiple 'virtual' FTP servers, \
#              anonymous FTP, and permission-based directory visibility.
# processname: proftpd
# config: /etc/proftp.conf
# pidfile: /var/run/proftpd.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

[ -x /usr/sbin/proftpd ] || exit 0

RETVAL=0

prog="proftpd"

start() {
        echo -n $"Starting $prog: "
        daemon proftpd
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/proftpd
}

stop() {
        echo -n $"Shutting down $prog: "
        killproc proftpd
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/proftpd
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status proftpd
        RETVAL=$?
        ;;
  restart)
        stop
        start
        ;;
  condrestart)
        if [ -f /var/lock/subsys/proftpd ]; then
          stop
          start
        fi
        ;;
  reload)
        echo -n $"Re-reading $prog configuration: "
        killproc proftpd -HUP
        RETVAL=$?
        echo
        ;;
  *)
        echo "Usage: $prog {start|stop|restart|reload|condrestart|status}"
        exit 1
esac

exit $RETVAL

然后我们使它可执行:

chmod 755 /etc/init.d/proftpd

接着我们打开 /etc/proftpd.conf 修改其中的 Group 为 nobody:

vi /etc/proftpd.conf

[...]
Group                           nobody
[...]

出于安全考虑您也可以加入以下到 /etc/proftpd.conf (更多详情请访问: :

vi /etc/proftpd.conf

[...]
DefaultRoot ~
IdentLookups off
ServerIdent on "FTP Server ready."
[...]

为了使ftp用户能使用 chmod 命令, 请注释掉 <Limit SITE_CHMOD> 部分:

[...]
# Bar use of SITE CHMOD by default
#<Limit SITE_CHMOD>
#  DenyAll
#</Limit>
[...]

现在我们让Proftpd随系统自启动:

chkconfig –levels 235 proftpd on

最后我们启动Proftpd:

/etc/init.d/proftpd start

搞定收工

参考教程出处:

限制 sftp 用户登陆后,只能在家目录下活动,不能到其他或上级目录,可以按照下面方法进行操作:

一、升级ssh软件,版本必须在 4.8 以上;

二、备份配置文件:(以下所有命令,都需要使用root用户来执行)

cd /etc/ssh/
mv sshd_config sshd_config.bak
mv sshd_config.rpmnew sshd_config

三、修改 /etc/ssh/sshd_config

#Subsystem sftp /usr/libexec/openssh/sftp-server (这行必须注释掉)
Subsystem sftp internal-sftp
Match Group chroot
ChrootDirectory /chroot/%u
ForceCommand internal-sftp

说明:本配置中,ChrootDirectory 是 /chroot/%u,匹配这个规则的组名为 chroot,所以以后添加需要限制活动目录的用户时,必须属于chroot这个组;

四、建立相关目录,添加用户和组,这里以work用户为例:

cd /
mkdir chroot
groupadd chroot
useradd -d /chroot/work -g chroot -s /bin/false work
passwd work
chown root /chroot/work
chmod 750 /chroot/work

说明:在/chroot目录下,用户家目录 work 的属主必须是root,而不能是用户本身,属组的话,必须是chroot,权限 750 (需要注意的是,新建用户的家目录,权限是700,但这样sftp登陆的话,是看不到目录下的列表的,所以,必须是750的权限) 例如:

drwxr-x— 7 root chroot 4096 Aug 5 13:23 work

五、如果需要上传文件,则按照下面执行:

cd /chroot/work
mkdir {upload,pub}
chmod a+w upload -R upload

其中,upload目录为可读写权限,可以用来上传,pub目录为只读权限,可以用来下载。

六、测试

service sshd restart
sftp -oPort=24 work@ip

参考教程出处:

因为 CentOS 5.6 上的 SSH/SFTP 服务还是很老的版本 (OpenSSH_4.3p2),不支持 chroot。 CentOS 源上没有更新的版本,YUM 也无法获取到升级。因此只能从源代码编译安装,这里介绍详细完整的步骤。

1. 准备相关软件

yum install gcc
yum install openssl-devel
yum install pam-devel
yum install rpm-build

2. 下载 OpenSSH 当前最新版本,并解压缩

wget 
tar -xvzf openssh-5.8p2.tar.gz

3. 编译源程序为 RPM 安装包

cp ./openssh-5.8p2/contrib/redhat/openssh.spec /usr/src/redhat/SPECS/
cp openssh-5.8p2.tar.gz /usr/src/redhat/SOURCES/
cd /usr/src/redhat/SPECS
perl -i.bak -pe 's/^(%define no_(gnome|x11)_askpass)\s+0$/$1 1/' openssh.spec
rpmbuild -bb openssh.spec

4. 安装编译好了的 RPM 包

cd /usr/src/redhat/RPMS/`uname -i`
rpm -Uvh openssh*rpm

5. 查看更新后的版本并测试连接

ssh -v -p 12345 localhost

注意-p 后边的12345为端口号,如果SSH默认端口号没有修改过,这个参数可以省略

6. 重启服务

service sshd restart

7. 重新SSH登陆进去

ssh -p 12345 user@ip
ssh -V

显示为 OpenSSH_5.8p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008,说明成功的升级到了最新版本,搞定收工!

最近有意关注服务器数据的安全性,考虑到数据的不可逆性,定时备份便显得尤其重要,但是众多独立的数据库挨个命令行或者phpmyadmin备份显然不明智,于是参考网上类似的脚本改写了一个很简单但很实用的脚本分享给大家。

一,新建一个脚本;
vim /home/mysql-db-backup/backup.sh

#!/bin/bash
cd /home/mysql-db-backup
mysqldump -A -i --opt --lock-tables=0 -u root -p111111 > all_$(date +%y%m%d)_database.sql

参数说明:

-A 代表导出MYSQL里边所有数据库的数据到一个SQL文件里边;

-i 设置这个参数以后,可自动输入密码;

-p111111 其中111111为root密码,注意与-p之间不能有空格,否则将出错;

--lock-tables=0 防止出现 mysqldump: Got error: 1556: You can’t use locks with log tables. when using LOCK TABLES 这个错误;

$(date +%y%m%d) 导出的数据库文件按当前年月日命名,防止重复。

二,然后修改文件属性,使其可执行

chmod 750 /home/mysql-db-backup/backup.sh

三,添加到计划任务里边;

crontab -e

输入

00 00 * * 7   /bin/bash /home/mysql-db-backup/backup.sh

每周第七天晚上12点执行一次脚本。

四,重启crontab。

service crond restart

搞定收工!  ^_^

这两天经检测发现,Next Smooth Gallery还是存在潜在的问题,正常访问网站,载入一切正常,但是一旦登陆会员,然后退出登陆,再回到首页的时候发觉Next Smooth Gallery相册部分一直在载入中,要很长时间才能载入完成,而事实上里边的内容早就完成了,这个时候点停止按钮,网站显示完整正常的,经研究发现是php.ini里边的zlib.output_compression参数在作怪,之前因为网上看到有人建议开启此参数,对所有php页面都进行Gzip压缩,提高载入速度,但是发现这样以后服务器对任何动态的php页面均进行gzip压缩,导致服务器消耗资源过大,同时对于wordpress开启了super cache功能的来说,反倒起到了反作用,因为wordpress super cache已经对页面进行了一次性的gzip压缩,而如果开启了此参数,那么服务器对压缩过的页面仍然进行重复的压缩,反倒降低了网页载入速度,甚至导致网页一直loading状态而无法载入完全,于是果断的将zlib.output_compression参数注释掉,重启php-fpm以后,经测试一切正常,搞定收工。

linux服务器sshd安全性非常关键,根据自己服务器设置过程,记录如下:

1、修改sshd服务器的配置文件/etc/ssh/sshd_config,将部分参数参照如下修改,增强安全性。
#vi /etc/ssh/sshd_config

Port 3333

禁止root用户登陆

PermitRootLogin no

禁止空密码存在

PermitEmptyPasswords no

禁止使用版本1协议,因为其存在设计缺陷,很容易使密码被黑掉。

Protocol 2

禁止所有不需要的(或不安全的)授权认证方式。

X11Forwarding no

关闭X11Forwarding,防止会话被劫持。

MaxStartups 5

2. 修改sshd服务器的配置文件/etc/ssh/sshd_config的读写权限,对所有非root用户设置只读权限,防止非授权用户修改sshd 服务的安全设置。

chmod 644 /etc/ssh/sshd_config

3. 设置TCP Wrappers。服务器默认接受所有的请求连接,这是非常危险的。使用TCP Wrappers可以阻止或允许应用服务仅对某些主机开放,给系统在增加一道安全屏障。这部分设置共涉计到两个文件:hosts.allow和 hosts.deny。

将那些明确允许的请求添加到/etc/hosts.allow中。如系统仅允许IP地址为192.168.0.15和10.0.0.11的主机使用 sshd服务,则添加如下内容:

sshd:192.168.0.15 10.0.0.11

将需要禁止使用的信息添加到/etc/hosts.deny中。如对除了在hosts.allow列表中明确允许使用sshd的用户外,所有其他用户都禁 止使用sshd服务,则添加如下内容到hosts.deny文件中:

sshd:All

注意:系统对上述两个文件的判断顺序是先检查hosts.allow文件再查看hosts.deny文件,因此一个用户在hosts.allow允 许使用 网络资源,而同时在hosts.deny中禁止使用该网络资源,在这种情况下系统优先选择使用hosts.allow配置,允许用户使用该网络资源。

最后,重启sshd服务

#/sbin/service sshd restart    #注意此处一定要加上service的绝对路径,否则会提示无法找到命令的错误

用普通账号登陆SSHD,格式如下:

ssh -p 3333 user@address

#3333为修改后的端口号,登陆以后,通过输入su然后输入root密码来获得root权限。

最近升级了服务器架构为最新的PHP5.3.8+Nginx1.0.9+Mysql5.5.17,现记录步骤如下:

1、yum update

2、#依赖库和开发工具

yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers

#Nginx
yum -y install pcre-devel zlib-devel

#Php
yum -y install gd-devel libjpeg-devel libpng-devel freetype-devel libxml2-devel curl-devel freetype-devel

#Mysql
yum -y install bison gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libtool-ltdl-devel*

3、时区设置和同步时间

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

ntpdate us.pool.ntp.org

第一句,将我们的时区文件复制到系统位置。

第二句,在网上更新时间。

第一句是把当前时区调整为上海就是+8区,想改其他时区也可以去看看/usr/share/zoneinfo目录;然后第二句是利用ntpdate同步标准时间.

如果 ntpdate 无法运行,那么需要 yum install -y ntpdate 安装一下服务

4、下载软件包

#创建目录

mkdir /web
cd /web
#PHP5.3.8
wget
#PHP库文件
wget
wget
wget
wget
eaccelerator-0.9.6.1.tar.bz2
wget
#Nginx1.0.9
wget
#Nginx(pcre)
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.13.tar.gz
#Mysql5.5.17
wget
#Mysql(cmake)
wget

5、安装Mysql

#安装cmake
tar -zxvf cmake-2.8.6.tar.gz
cd cmake-2.8.6/
./configure
gmake && gmake install && cd ../
#添加mysql用户
/usr/sbin/groupadd mysql
/usr/sbin/useradd -g mysql mysql
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql
#安装Mysql
tar -zxvf mysql-5.5.17.tar.gz
cd mysql-5.5.17
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc/ -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DMYSQL_TCP_PORT=3306

#设置Mysql
#在support-files目录中有五个配置信息文件:
#my-small.cnf (内存<=64M)
#my-medium.cnf (内存 128M)
#my-large.cnf (内存 512M)
#my-huge.cnf (内存 1G-2G)
#my-innodb-heavy-4G.cnf (内存 4GB)
cd /usr/local/mysql
cp ./support-files/my-medium.cnf /etc/my.cnf
vi /etc/my.cnf
#在 [mysqld] 段增加
datadir = /data/mysql
wait-timeout = 30
max_connections = 512
default-storage-engine = MyISAM
#在 [mysqld] 段修改
max_allowed_packet = 16M
#生成授权表
cd /usr/local/mysql
./scripts/mysql_install_db –user=mysql
#更改密码
/usr/local/mysql/bin/mysqladmin -u root password 123456
#开启mysql
/usr/local/mysql/bin/mysqld_safe &
#测试连接mysql
/usr/local/mysql/bin/mysql -u root -p 123456
show databases;
exit;
#设置相关脚本
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig –add mysqld
chkconfig mysqld on
service mysqld restart
netstat -tnlp |grep 3306
cd /usr/local/bin //进入用户的默认搜索路径下建立mysql命令的软连接,可以直接执行mysql命令
ln -s /usr/local/mysql/bin/mysql mysql
ln -s /usr/local/mysql/bin/mysqlduamp mysqldump
ln -s /usr/local/mysql/bin/mysqladmin mysqladmin
mysqladmin -u root -p password
mysql -u root -p
flush privileges;

vim /etc/my.cnf //Mysql 优化,在[mysqld]配置参数下面添加下面几行(大概37行下面)

innodb_file_per_table
log-bin-trust-function-creators=1
skip-name-resolv
innodb_flush_log_at_trx_commit=1
sync-binlog=1
lower_case_table_names=1
max_connections = 1500 (默认100)
#修改配置文件里下面的参数,去掉前面的#
innodb_buffer_pool_size = 2048M (默认16M,可以为系统内存50%~70%)
innodb_additional_mem_pool_size = 256M (默认2M)
innodb_log_file_size = 512M (默认5M,innodb_buffer_pool_size的四分之一)
max_allowed_packet = 500M
#设置开机启动
vi /etc/rc.d/rc.local
#加入
/usr/local/mysql/bin/mysqld_safe &

6、安装PHP

#1
tar -zxvf libiconv-1.14.tar.gz && cd libiconv-1.14/
./configure –prefix=/usr/local
make && make install && cd ../

#2
tar -zxvf libmcrypt-2.5.8.tar.gz && cd libmcrypt-2.5.8/
./configure && make && make install
/sbin/ldconfig && cd libltdl/ && ./configure –enable-ltdl-install
make && make install && cd ../

#3
tar -zxvf mhash-0.9.9.9.tar.gz && cd mhash-0.9.9.9/ && ./configure
make && make install && cd ../

#4
ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config

#5
tar -zxvf mcrypt-2.6.8.tar.gz &&cd mcrypt-2.6.8/
/sbin/ldconfig
./configure
make && make install && cd ../

#6
tar -xjvf php-5.3.8.tar.bz2
cd php-5.3.8

#7
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18 #(64Bit)
/sbin/ldconfig

./configure –prefix=/usr/local/php –with-config-file-path=/usr/local/php/etc –with-iconv-dir=/usr/local/ –with-freetype-dir –with-mysql=/usr/local/mysql –with-mysqli=/usr/local/mysql/bin/mysql_config –with-jpeg-dir –with-png-dir –with-zlib –with-mhash –enable-sockets –enable-ftp –with-libxml-dir –enable-xml –disable-rpath –enable-safe-mode –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –with-curl –with-curlwrappers –enable-mbregex –enable-mbstring –with-mcrypt –with-gd –enable-gd-native-ttf –with-openssl –with-mhash –enable-pcntl –enable-sockets –with-ldap –with-ldap-sasl –enable-fpm –with-xmlrpc –enable-zip –enable-soap –with-gettext –without-pear

make ZEND_EXTRA_LIBS=’-liconv’

#注意这里容易出现 make: *** [ext/phar/phar.php] 错误 127

#出现mysql client解决方法

#ln -s /usr/local/mysql/lib/libmysqlclient.so /usr/lib/
#ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18

#或者chmod: 无法访问 “ext/phar/phar.phar”: 没有那个文件或目录
#make: [ext/phar/phar.phar] 错误 1 (忽略)
#解决方法在编译的时候加–without-pear参数
#如果还不行,make的时候不添加 ZEND_EXTRA_LIBS=’-liconv’ 参数

make install

#选择PHP.ini配置文件

cp php.ini-production /usr/local/php/etc/php.ini

7、更改PHP-FPM

#添加WWW用户

/usr/sbin/groupadd www && /usr/sbin/useradd -g www www
mkdir -p /var/log/nginx && chmod +w /var/log/nginx &&chown -R www:www /var/log/nginx
mkdir -p /data/www && chmod +w /data/www && chown -R www:www /data/www

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

#去掉/更改 配置文件中的;

pm.max_children = 64
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 1024
user = www
group = www

#检查语法是否正确
/usr/local/php/sbin/php-fpm -t
#出现NOTICE: configuration file /usr/local/php/etc/php-fpm.conf test is successful 测试成功
/usr/local/php/sbin/php-fpm &
#设置开机启动
vi /etc/rc.d/rc.local
#在行末加入
/usr/local/php/sbin/php-fpm &

#返回安装包目录
cd /web

8、安装PHP扩展

eaccelerator是一个自由开放源码PHP加速器,优化和动态内容缓存,提高了性能php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。使您的PHP程序代码执效率能提高1-10倍;

tar jxvf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1/
/usr/local/php/bin/phpize
./configure –enable-eaccelerator=shared –with-php-config=/usr/local/php/bin/php-config
make
make install
/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/

9、安装Nginx

#安装pcre库
tar -zxvf pcre-8.13.tar.gz && cd pcre-8.13/ && ./configure
make && make install && cd ../

#安装Nginx
tar -zxvf nginx-1.0.9.tar.gz && cd nginx-1.0.9 &&
tar -zxvf nginx-1.0.9.tar.gz && cd nginx-1.0.9 && ./configure –user=www –group=www –prefix=/usr/local/nginx –sbin-path=/usr/local/nginx/sbin/nginx –conf-path=/usr/local/nginx/conf/nginx.conf –with-http_stub_status_module –with-http_ssl_module –with-pcre –lock-path=/var/run/nginx.lock –pid-path=/var/run/nginx.pid –with-ipv6

make && make install && cd ../

vim /etc/init.d/nginxd/ //添加下面内容,让nginx 支持service 启动关闭

#!/bin/sh
#
# nginx – this script starts and stops the nginx daemon
#
# chkconfig: – 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ “$NETWORKING” = “no” ] && exit 0
nginx=”/usr/local/nginx/sbin/nginx”
prog=$(basename $nginx)
NGINX_CONF_FILE=”/usr/local/nginx/conf/nginx.conf”
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/run/nginx.lock
make_dirs() {
# make required directories
user=`nginx -V 2>&1 | grep “configure arguments:” | sed ‘s/[^*]*–user=\([^ ]*\).*/\1/g’ -`
options=`$nginx -V 2>&1 | grep ‘configure arguments:’`
for opt in $options; do
if [ `echo $opt | grep ‘.*-temp-path’` ]; then
value=`echo $opt | cut -d “=” -f 2`
if [ ! -d “$value” ]; then
# echo “creating” $value
mkdir -p $value && chown -R $user $value
fi
fi
done
}
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $”Starting $prog: ”
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}

stop() {
echo -n $”Stopping $prog: ”
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}

restart() {
configtest || return $?
stop
sleep 1
start
}

reload() {
configtest || return $?
echo -n $”Reloading $prog: ”
killproc $nginx -HUP
RETVAL=$?
echo
}

force_reload() {
restart
}

configtest() {
$nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
status $prog
}

rh_status_q() {
rh_status >/dev/null 2>&1
}

case “$1″ in
start)
rh_status_q && exit 0
$1
;;

stop)
rh_status_q || exit 0
$1
;;

restart|configtest)
$1
;;

reload)
rh_status_q || exit 7
$1
;;

force-reload)
force_reload
;;

status)
rh_status
;;

condrestart|try-restart)
rh_status_q || exit 0
;;
*)

echo $”Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}”

exit 2

esac

赋予权限:
chmod +x /etc/init.d/nginxd

service nginxd start

chkconfig –add nginxd

chkconfig nginxd on

chkconfig –list nginxd

通过浏览器访问服务器,出现welcome to nginx!表示成功

#更改配置
vi /usr/local/nginx/conf/nginx.conf

#修改一些参数,别直接替换文件,这只是一部分
user www

events {
use epoll;
worker_connections 1024;
}

server {
listen 80;
server_name eastdesign.net www.eastdesign.net;
index index.html index.htm index.php;
root /home/eastdesign;
#include wp_rewrite.conf;

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

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}

location ~ .*\.(js|css)?$
{
expires 1d;
}

access_log /data1/logs/eastdesign.net.access.log;
error_log /data1/logs/eastdesign.net.error.log;
location ~ /\.ht {
deny all;
}
}
#注意这里
#$document_root$fastcgi_script_name;

#检测配置文件
/usr/local/nginx/sbin/nginx -t

#提示表示成功
#nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
#nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

#开启Nginx
/usr/local/nginx/sbin/nginx

#平滑重启Nginx
/usr/local/nginx/sbin/nginx -s reload

#添加开机启动
vi /etc/rc.d/rc.local
#最后移行加入
/usr/local/nginx/sbin/nginx

10、过程总结:
一共花了将近三天的时间搞定所有的编译安装和配置,个人感觉网上所有的教程或多或少都有一些问题,教程制作者发布教程的初衷也大多是为了方便自己下次使用,或者经验总结,所以教程不可能囊括安装过程中发生的所有问题,因此导致如果按照教程按部就班一步一步操作下来,一般都会出现一些问题,所以不要单纯指望根据某个教程做好所有的设置,可以综合借鉴几个不错的教程,再结合自己摸索体验,当然DIY的体验过程是很有成就感的。