说明:转自osyunwei
操作系统:CentOS 6.2 64位
准备篇:
一、配置好IP、DNS 、网关,确保使用远程连接工具能够连接服务器
CentOS 设置IP地址、网关、DNS教程:http://www.osyunwei.com/archives/423.html
二、配置防火墙,开启80端口、3306端口

1
2
3
4
5
6
7
8
  
vi /etc/sysconfig/iptables  
  
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT(允许80端口通过防火墙)  
  
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT(允许3306端口通过防火墙)

  

特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面
添加好之后防火墙规则如下所示:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
  
# Firewall configuration written by system-config-firewall  
  
# Manual customization of this file is not recommended.  
  
*filter  
  
:INPUT ACCEPT [0:0]  
  
:FORWARD ACCEPT [0:0]  
  
:OUTPUT ACCEPT [0:0]  
  
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  
  
-A INPUT -p icmp -j ACCEPT  
  
-A INPUT -i lo -j ACCEPT  
  
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT  
  
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT  
  
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT  
  
-A INPUT -j REJECT --reject-with icmp-host-prohibited  
  
-A FORWARD -j REJECT --reject-with icmp-host-prohibited  
  
COMMIT  
  
/etc/init.d/iptables restart #最后重启防火墙使配置生效

  

三、关闭SELINUX

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
  
vi /etc/selinux/config  
  
#SELINUX=enforcing #注释掉  
  
#SELINUXTYPE=targeted #注释掉  
  
SELINUX=disabled #增加  
  
:wq 保存,关闭  
  
shutdown -r now #重启系统

  

四 、系统约定
软件源代码包存放位置:/usr/local/src
源码包编译安装位置:/usr/local/软件名字

五、下载软件包

1、下载nginx(目前稳定版)
http://nginx.org/download/nginx-1.2.1.tar.gz
2、下载pcre (支持nginx伪静态)
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.30.tar.gz
3、下载MySQL
http://mysql.mirror.kangaroot.net/Downloads/MySQL-5.5/mysql-5.5.21.tar.gz
4、下载php
http://cn2.php.net/distributions/php-5.3.18.tar.gz
5、下载cmake(MySQL编译工具)
http://www.cmake.org/files/v2.8/cmake-2.8.7.tar.gz
6、下载libmcrypt(PHPlibmcrypt模块)
ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
7、下载Zend Guard
 http://downloads.zend.com/guard/5.5.0/ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz

六、安装编译工具及库文件(使用CentOS yum命令安装)

1
2
3
4
  
yum install make apr* autoconf automake curl curl-devel gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel gd kernel keyutils patch perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel ppl cloog-ppl keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel zlib-devel libXpm* freetype libjpeg* libpng* php-common php-gd ncurses* libtool* libxml2 libxml2-devel patch

  

安装篇

以下是用putty工具远程登录到服务器,在命令行下面操作的
一、安装libmcrypt

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
  
cd /usr/local/src  
  
tar zxvf libmcrypt-2.5.7.tar.gz #解压  
  
cd libmcrypt-2.5.7 #进入目录  
  
./configure #配置  
  
make #编译  
  
make install #安装

  

二、安装cmake

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
  
cd /usr/local/src  
  
tar zxvf cmake-2.8.7.tar.gz  
  
cd cmake-2.8.7  
  
./configure  
  
make #编译  
  
make install #安装

  

三、安装pcre

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
  
cd /usr/local/src  
  
mkdir /usr/local/pcre #创建安装目录  
  
tar zxvf pcre-8.30.tar.gz  
  
cd pcre-8.30  
  
./configure --prefix=/usr/local/pcre #配置  
  
make  
  
make install

  

四、安装mysql

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
  
groupadd mysql #添加mysql组  
  
useradd -g mysql mysql -s /bin/false #创建用户mysql并加入到mysql组,不允许mysql用户直接登录系统  
  
mkdir -p /data/mysql #创建MySQL数据库存放目录  
  
chown -R mysql:mysql /data/mysql #设置MySQL数据库目录权限  
  
mkdir -p /usr/local/mysql #创建MySQL安装目录  
  
cd /usr/local/src  
  
tar zxvf mysql-5.5.21.tar.gz #解压  
  
cd mysql-5.5.21  
  
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc #配置  
  
make #编译  
  
make install #安装  
  
cd /usr/local/mysql  
  
cp ./support-files/my-huge.cnf /etc/my.cnf #拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)  
  
vi /etc/my.cnf #编辑配置文件,在 [mysqld] 部分增加  
  
datadir = /data/mysql #添加MySQL数据库路径  
  
./scripts/mysql_install_db --user=mysql #生成mysql系统数据库  
  
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld #把Mysql加入系统启动  
  
chmod 755 /etc/init.d/mysqld #增加执行权限  
  
chkconfig mysqld on #加入开机启动  
  
vi /etc/rc.d/init.d/mysqld #编辑  
  
basedir=/usr/local/mysql #MySQL程序安装路径 等号两边不能有空格  
  
datadir=/data/mysql #MySQl数据库存放目录 等号两边不能有空格  
  
service mysqld start #启动  
  
vi /etc/profile #把mysql服务加入系统环境变量:在最后添加下面这一行  
  
export PATH=$PATH:/usr/local/mysql/bin

  

下面这两行把myslq的库文件链接到系统默认的位置,这样你在编译类似PHP等软件时可以不用指定mysql的库文件地址。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
  
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql  
  
ln -s /usr/local/mysql/include/mysql /usr/include/mysql  
  
shutdown -r now #需要重启系统,等待系统重新启动之后继续在终端命令行下面操作  
  
mysql_secure_installation #设置Mysql密码  
  
根据提示按Y 回车输入2次密码  
  
或者直接修改密码/usr/local/mysql/bin/mysqladmin -u root -p password "123456" #修改密码  
  
service mysqld restart #重启

  

到此,mysql安装完成!
五、安装 nginx

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
  
groupadd www #添加www组  
  
useradd -g www www -s /bin/false #创建nginx运行账户www并加入到www组,不允许www用户直接登录系统cd /usr/local/src  
  
tar zxvf nginx-1.0.12.tar.gz  
  
cd nginx-1.0.12  
  
./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-openssl=/usr/ --with-pcre=/usr/local/src/pcre-8.30  
  
注意:--with-pcre=/usr/local/src/pcre-8.30指向的是源码包解压的路径,而不是安装的路径,否则会报错  
  
make   
  
make install  
  
/usr/local/nginx/sbin/nginx #启动nginx

  

设置nginx开启启动

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
  
vi /etc/rc.d/init.d/nginx #编辑启动文件添加下面内容  
  
  
  
#!/bin/bash  
  
# nginx Startup script for the Nginx HTTP Server  
  
# it is v.0.0.2 version.  
  
# chkconfig: - 85 15  
  
# description: Nginx is a high-performance web and proxy server.  
  
# It has a lot of features, but it's not for everyone.  
  
# processname: nginx  
  
# pidfile: /var/run/nginx.pid  
  
# config: /usr/local/nginx/conf/nginx.conf  
  
nginxd=/usr/local/nginx/sbin/nginx  
  
nginx_config=/usr/local/nginx/conf/nginx.conf  
  
nginx_pid=/usr/local/nginx/logs/nginx.pid  
  
RETVAL=0  
  
prog="nginx"  
  
# 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 $nginxd ] || exit 0  
  
# Start nginx daemons functions.  
  
start() {  
  
if [ -e $nginx_pid ];then  
  
echo "nginx already running...."  
  
exit 1  
  
fi  
  
echo -n $"Starting $prog: "  
  
daemon $nginxd -c ${nginx_config}  
  
RETVAL=$?  
  
echo  
  
[ $RETVAL = 0 ] && touch /var/lock/subsys/nginx  
  
return $RETVAL  
  
}  
  
# Stop nginx daemons functions.  
  
stop() {  
  
echo -n $"Stopping $prog: "  
  
killproc $nginxd  
  
RETVAL=$?  
  
echo  
  
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/nginx/logs/nginx.pid  
  
}  
  
reload() {  
  
echo -n $"Reloading $prog: "  
  
#kill -HUP `cat ${nginx_pid}`  
  
killproc $nginxd -HUP  
  
RETVAL=$?  
  
echo  
  
}  
  
# See how we were called.  
  
case "$1" in  
  
start)  
  
start  
  
;;  
  
stop)  
  
stop  
  
;;  
  
reload)  
  
reload  
  
;;  
  
restart)  
  
stop  
  
start  
  
;;  
  
  
  
status)  
  
status $prog  
  
RETVAL=$?  
  
;;  
  
*)  
  
echo $"Usage: $prog {start|stop|restart|reload|status|help}"  
  
exit 1  
  
esac  
  
exit $RETVAL  
  
  
  
:wq!保存退出  
  
chmod 775 /etc/rc.d/init.d/nginx #赋予文件执行权限  
  
chkconfig nginx on #设置开机启动

  
1
2
3
4
5
6
  
/etc/rc.d/init.d/nginx restart  
  
service nginx restart

  

六、安装php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  
cd /usr/local/src  
  
tar -zvxf php-5.3.10.tar.gz  
  
cd php-5.3.10  
  
mkdir -p /usr/local/php5 #建立php安装目录  
  
./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock --with-gd --with-iconv --with-zlib --enable-xml --enable-magic-quotes --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curlwrappers --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl #配置  
  
make #编译  
  
make install #安装  
  
cp php.ini-production /usr/local/php5/etc/php.ini #复制php配置文件到安装目录  
  
rm -rf /etc/php.ini #删除系统自带配置文件  
  
ln -s /usr/local/php5/etc/php.ini /etc/php.ini #添加软链接  
  
cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf #拷贝模板文件为php-fpm配置文件  
  
vi /usr/local/php5/etc/php-fpm.conf #编辑  
  
user = www #设置php-fpm运行账号为www  
  
group = www #设置php-fpm运行组为www  
  
pid = run/php-fpm.pid #取消前面的分号

  

小内存VPS编译php会出现内存不够的问题”virtual memory exhausted: Cannot allocate memory”,在./configure 中加上 –disable-fileinfo

设置 php-fpm开机启动

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  
cp /usr/local/src/php-5.3.10/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm #拷贝php-fpm到启动目录  
  
chmod +x /etc/rc.d/init.d/php-fpm #添加执行权限  
  
chkconfig php-fpm on #设置开机启动  
  
vi /usr/local/php5/etc/php.ini #编辑配置文件  
  
找到:;open_basedir =  
  
修改为:open_basedir = .:/tmp/ #防止php木马跨站,重要!!  
  
找到:disable_functions =  
  
修改为:disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname  
  
#列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。  
  
找到:;date.timezone =  
  
修改为:date.timezone = PRC #设置时区  
  
找到:expose_php = On  
  
修改为:expose_php = OFF #禁止显示php版本的信息  
  
找到:display_errors = On  
  
修改为:display_errors = OFF #关闭错误提示

  

七、配置nginx支持php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  
vi /usr/local/nginx/conf/nginx.conf  
  
修改/usr/local/nginx/conf/nginx.conf 配置文件,需做如下修改  
  
user www www; #首行user去掉注释,修改Nginx运行组为www www;必须与/usr/local/php5/etc/php-fpm.conf中的user,group配置相同,否则php运行出错  
  
index index.php index.html index.htm; #添加index.php  
  
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000  
  
#  
  
location ~ .php$ {  
  
root html;  
  
fastcgi_pass 127.0.0.1:9000;  
  
fastcgi_index index.php;  
  
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  
  
include fastcgi_params;  
  
}  
  
#取消FastCGI server部分location的注释,并要注意fastcgi_param行的参数,改为$document_root$fastcgi_script_name,或者使用绝对路径  
  
/etc/init.d/nginx restart #重启nginx 

  

八、配置php支持Zend Guard

安装Zend Guard

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
  
cd /usr/local/src  
  
mkdir /usr/local/zend #建立Zend安装目录  
  
tar xvfz ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz #解压安装文件  
  
cp ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x/ZendGuardLoader.so /usr/local/zend/ #拷贝文件到安装目录  
  
vi /usr/local/php5/etc/php.ini #编辑文件

  

在最后位置添加以下内容

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
  
[Zend Guard]  
  
zend_extension=/usr/local/zend/ZendGuardLoader.so  
  
zend_loader.enable=1  
  
zend_loader.disable_licensing=0  
  
zend_loader.obfuscation_level_support=3  
  
zend_loader.license_path=

  

测试篇

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
  
cd /usr/local/nginx/html/ #进入nginx默认网站根目录  
  
rm -rf /usr/local/nginx/html/* #删除默认测试页  
  
vi index.php #新建index.php文件  
  
<?php  
  
phpinfo();  
  
?>  
  
:wq! #保存  
  
chown www.www /usr/local/nginx/html/ -R #设置目录所有者  
  
chmod 700 /usr/local/nginx/html/ -R #设置目录权限  
  
shutdown -r now #重启

  

在客户端浏览器输入服务器IP地址,可以看到相关的配置信息!

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
  
service nginx restart #重启nginx  
  
service mysqld restart #重启mysql  
  
/usr/local/php5/sbin/php-fpm #启动php-fpm  
  
/etc/rc.d/init.d/php-fpm restart #重启php-fpm  
  
/etc/rc.d/init.d/php-fpm stop #停止php-fpm  
  
/etc/rc.d/init.d/php-fpm start #启动php-fpm

  

备注:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
  
nginx默认站点目录是:/usr/local/nginx/html/   
  
权限设置:chown www.www /usr/local/nginx/html/ -R  
  
MySQL数据库目录是:/data/mysql  
  
权限设置:chown mysql.mysql -R /data/mysql

  

到此,CentOS 6.2下 Nginx1.0.12+MySQL5.5.21+PHP5.3.10+Zend Guard Loader基本运行环境搭建完成!

转自:http://www.osyunwei.com/archives/2708.html