华域联盟 Linux CentOS 6.1 环境中部署nginx、php(包括fastcgi)、虚拟主机配置

CentOS 6.1 环境中部署nginx、php(包括fastcgi)、虚拟主机配置

部署时间:2012-07-24

OS环境:CentOS 6.1

nginx:nginx-1.2.2

PHP:PHP5.3.14

0、安装依赖包


复制代码 代码如下: yum install openssl-devel pcre-devel zlib-devel libjpeg-devel libpng-devel freetype-devel gcc make

1、添加 www 用户用来执行nginx


复制代码 代码如下: useradd -M -r -s /sbin/nologin -d /opt/web/ www

2、创建临时目录


复制代码 代码如下:

mkdir -p /var/tmp/nginx/client/

mkdir -p /var/tmp/nginx/proxy/

mkdir -p /var/tmp/nginx/fcgi/

3、下载nginx最新稳定版源代码


复制代码 代码如下:

cd /usr/local/src/

wget http://nginx.org/download/nginx-1.2.2.tar.gz

4、解压,编译,安装


复制代码 代码如下:

tar vxzf nginx-1.2.2.tar.gz

cd nginx-1.2.2/

./configure \

--prefix=/opt/web/nginx \

--error-log-path=/var/log/nginx/error.log \

--pid-path=/var/run/nginx/nginx.pid \

--lock-path=/var/lock/nginx.lock \

--user=www \

--group=www \

--with-http_ssl_module \

--with-http_stub_status_module \

--with-http_gzip_static_module \

--http-log-path=/var/log/nginx/access.log \

--http-client-body-temp-path=/var/tmp/nginx/client/ \

--http-proxy-temp-path=/var/tmp/nginx/proxy/ \

--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \

--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi/

make

make install

5、配置nginx


复制代码 代码如下:

vim /opt/web/nginx/conf/nginx.conf

# 指定启动用户:

user www www;

# 进程数量,nginx作者认为一个就可以,根据自己的访问量修改

worker_processes 1;

# 设置错误日志:

#error_log logs/error.log notice;

#error_log logs/error.log info;

error_log /var/log/nginx/error.default.log;

pid /opt/web/nginx/nginx.pid;

events {

use epoll;

worker_connections 1024;

}

http {

charset utf-8;

include mime.types;

default_type application/octet-stream;

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '

# '$status $body_bytes_sent "$http_referer" '

# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;

sendfile on;

tcp_nopush on;

tcp_nodelay on;

#keepalive_timeout 0;

keepalive_timeout 65;

gzip on;

gzip_min_length 1000;

gzip_proxied any;

gzip_types text/plain text/css text/xml

application/x-javascript application/xml

application/atom+xml text/javascript;

server {

listen 80;

server_name localhost;

charset utf-8;

#access_log logs/host.access.log main;

location / {

root html;

index index.html index.htm;

}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html

#

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80

#

#location ~ \.php$ {

# proxy_pass http://127.0.0.1;

#}

# 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 /scripts$fastcgi_script_name;

#include fastcgi_params;

include fastcgi.conf;

}

# deny access to .htaccess files, if Apache's document root

# concurs with nginx's one

#

location ~ /\.ht {

deny all;

}

}

# another virtual host using mix of IP-, name-, and port-based configuration

#

#server {

# listen 8000;

# listen somename:8080;

# server_name somename alias another.alias;

# location / {

# root html;

# index index.html index.htm;

# }

#}

# HTTPS server

#

#server {

# listen 443;

# server_name localhost;

# ssl on;

# ssl_certificate cert.pem;

# ssl_certificate_key cert.key;

# ssl_session_timeout 5m;

# ssl_protocols SSLv2 SSLv3 TLSv1;

# ssl_ciphers HIGH:!aNULL:!MD5;

# ssl_prefer_server_ciphers on;

# location / {

# root html;

# index index.html index.htm;

# }

#}

proxy_read_timeout 200;

# Only retry if there was a communication error, not a timeout

# on the Tornado server (to avoid propagating "queries of death"

# to all frontends)

proxy_next_upstream error;

proxy_set_header X-Scheme $scheme;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

# 引入虚拟主机文件

include /opt/web/nginx/conf/sites/*.conf;

}

6、建立虚拟机配置文件存放的目录


复制代码 代码如下: mkdir /opt/web/nginx/conf/sites

这样配置后,需要新增加虚拟主机的直接在 nginx/conf/sites/目录下,添加配置文件即可

例如:现在有 www.cnhackhy.com 域名

建立:/opt/web/nginx/conf/sites/www.cnhackhy.com.conf 文件

内容如下:


复制代码 代码如下:

server {

listen 80;

client_max_body_size 10M;

#多个域名用空格分割,第一个为默认

server_name www.cnhackhy.com jb51.net;

charset UTF-8;

index index.html index.htm index.php;

# 定义根目录

set $root /var/webroot/www.cnhackhy.com/;

# 设置站点路径

root $root;

# 防止目录浏览

autoindex off;

if ($host != 'www.cnhackhy.com') {

rewrite ^/(.*)$ https://www.cnhackhy.com/$1 permanent;

}

# 防止.htaccess文件被请求

location ~ /\.ht {

deny all;

}

error_page 404 /404.html;

index index.html index.htm;

location /uploads/ {

alias /data/webroot/www.cnhackhy.com/uploads/;

}

try_files $uri @uwsgi;

location @uwsgi{

# 将其它的请求转交给uwsgi

include uwsgi_params;

uwsgi_pass unix:/tmp/360ito_uwsgi.sock;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

#proxy_pass http://localhost:5000;

}

# 将php类型的请求转交给fastcgi

location ~ \.php$ {

root html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

include fastcgi.conf;

}

# 访问日志:

access_log /var/log/nginx/access.www.cnhackhy.com.log;

# 加载.htaccess重写文件,注意,这里不支持变量路径

# 不能写成 include $root/www.cnhackhy.com/.htaccess;

# include /var/webroot/www.cnhackhy.com/.htaccess;

# 开启域名跳转,则当访问出错后,其他域名会自动跳转到 www.cnhackhy.com

# 注意,这里我说的是,仅仅当访问出错后,才会跳转,所以,这里并不能实现301重定向!

server_name_in_redirect on;

}

7、安装最新版本PHP( PHP5.3.14 )


复制代码 代码如下:

cd /usr/local/src/

wget http://cn.php.net/get/php-5.3.14.tar.bz2/from/this/mirror

tar xjvf php-5.3.14.tar.bz2

cd php-5.3.14

执行:


复制代码 代码如下: ./buildconf --force

如果报错,可能是你的 autoconf不是 2.13 版本的,PHP5.3.系列的bug,需要安装 autoconf为2.13的版本:


复制代码 代码如下:

CentOS : # yum install autoconf213

Debian : # apt-get install autoconf2.13

设置环境变量


复制代码 代码如下:

# CentOS :

export PHP_AUTOCONF="/usr/bin/autoconf-2.13"

# Debian :

export PHP_AUTOCONF="/usr/bin/autoconf2.13"

再次运行:./buildconf --force ,出现 buildconf: autoconf version 2.13 (ok)

,则表示成功。

编译安装 PHP


复制代码 代码如下:

./configure \

--prefix=/opt/web/php \

--with-config-file-path=/opt/web/php/etc \

--with-config-file-scan-dir=/opt/web/php/etc/conf.d \

--enable-fpm \

--with-fpm-user=www \

--with-fpm-group=www \

--with-mysql=/opt/db/Percona-Server-5.5.14-rel20.5 \

--with-mysqli=/opt/db/Percona-Server-5.5.14-rel20.5/bin/mysql_config \

--with-iconv-dir \

--with-freetype-dir \

--with-jpeg-dir \

--with-png-dir \

--with-zlib \

--with-libxml-dir \

--enable-xml \

--enable-mbstring \

--with-gd \

--enable-gd-native-ttf \

--with-openssl \

--enable-inline-optimization

make && make install

cp php.ini-production /opt/web/php/etc/php.ini

cd /opt/web/php/etc

cp php-fpm.conf.default php-fpm.conf

修改php-fpm.conf 启用如下几行,即去掉前面的分号(;)


复制代码 代码如下:

pid = run/php-fpm.pid

error_log = log/php-fpm.log

log_level = notice

listen = 127.0.0.1:9000

listen.allowed_clients = 127.0.0.1

listen.owner = www

listen.group = www

listen.mode = 0666

user = www

group = www

pm = dynamic

pm.max_children = 50

pm.start_servers = 5

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

env[HOSTNAME] = $HOSTNAME

env[PATH] = /usr/local/bin:/usr/bin:/bin

env[TMP] = /tmp

env[TMPDIR] = /tmp

env[TEMP] = /tmp

8、启动php-fpm


复制代码 代码如下: /opt/web/php/sbin/php-fpm

启动nginx


复制代码 代码如下: /opt/web/nginx/sbin/nginx

9、测试一下


复制代码 代码如下: vim /var/webroot/www.cnhackhy.com/tz.php

输入和保存


复制代码 代码如下:

<?PHP

phpinfo();

?>

10、在浏览器地址栏输入:http://php.jb51.net/tz.php

成功的话,可以看到phpinfo()输出的信息
您可能感兴趣的文章:

本文由 华域联盟 原创撰写:华域联盟 » CentOS 6.1 环境中部署nginx、php(包括fastcgi)、虚拟主机配置

转载请保留出处和原文链接:https://www.cnhackhy.com/44789.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部