Deploy Nginx, PHP (including fastcgi), virtual host configuration in CentOS 6.1 environment _linux

Source: Internet
Author: User
Tags bz2 fpm install openssl mkdir openssl phpinfo net domain percona
Deployment time: 2012-07-24
OS Environment: CentOS 6.1
nginx:nginx-1.2.2
php:php5.3.14
0, install the dependent package
Copy Code code as follows:
Yum install openssl-devel pcre-devel zlib-devel libjpeg-devel libpng-devel freetype-devel gcc make

1. Add www user to execute nginx
Copy Code code as follows:
Useradd-m-r-s/sbin/nologin-d/opt/web/www

2. Create a temporary directory
Copy Code code as follows:

Mkdir-p/var/tmp/nginx/client/
Mkdir-p/var/tmp/nginx/proxy/
Mkdir-p/var/tmp/nginx/fcgi/

3, download the latest stable version of Nginx source code
Copy Code code as follows:

cd/usr/local/src/
wget http://nginx.org/download/nginx-1.2.2.tar.gz

4, decompression, compilation, installation
Copy Code code as follows:

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. Configure Nginx
Copy Code code as follows:

Vim/opt/web/nginx/conf/nginx.conf
# Specify startup User:
User www www.
# Number of processes, nginx authors think one can, according to their own access to modify
Worker_processes 1;
# Set Error log:
#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 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 is 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;
# Introduction of Virtual Host files
include/opt/web/nginx/conf/sites/*.conf;
}

6, the establishment of virtual machine configuration files stored in the directory
Copy Code code as follows:
Mkdir/opt/web/nginx/conf/sites

After this configuration, you need to add a new virtual host directly in the nginx/conf/sites/directory, adding a configuration file can
For example: Now there are www.jb51.net domain names
Establish:/opt/web/nginx/conf/sites/www.jb51.net.conf file
The contents are as follows:
Copy Code code as follows:

server {
Listen 80;
Client_max_body_size 10M;
#多个域名用空格分割, the first one is the default
server_name www.jb51.net jb51.net;
CharSet UTF-8;
Index index.html index.htm index.php;
# define root directory
Set $root/var/webroot/www.jb51.net/;
# Set the site path
Root $root;
# Prevent Directory browsing
AutoIndex off;
if ($host!= ' www.jb51.net ') {
Rewrite ^/(. *) $ http://www.jb51.net/$1 permanent;
}
# Prevent. htaccess files from being requested
Location ~/\.ht {
Deny all;
}
Error_page 404/404.html;
Index index.html index.htm;
location/uploads/{
alias/data/webroot/www.jb51.net/uploads/;
}
Try_files $uri @uwsgi;
Location @uwsgi {
# turn over other requests to 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;
}
# transfer PHP type request to fastcgi
Location ~ \.php$ {
root HTML;
Fastcgi_pass 127.0.0.1:9000;
Fastcgi_index index.php;
Include fastcgi.conf;
}
# Access log:
Access_log/var/log/nginx/access.www.jb51.net.log;
# load. htaccess rewrite file, note that the variable path is not supported here
# cannot be written as include $root/www.jb51.net/.htaccess;
# include/var/webroot/www.jb51.net/.htaccess;
# Open the domain name jump, then when the access error, the other domain name will automatically jump to www.jb51.net
# Note, here I say, only when the access error, will jump, so, here does not achieve 301 redirect!
Server_name_in_redirect on;
}

7, install the latest version of PHP (PHP5.3.14)
Copy Code code as follows:

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

Perform:
Copy Code code as follows:
./buildconf--force

If the error, may be your autoconf is not version 2.13, PHP5.3. Series of bugs, you need to install the version of Autoconf 2.13:
Copy Code code as follows:

CentOS: # yum Install autoconf213
Debian: # apt-get Install autoconf2.13

Setting environment variables
Copy Code code as follows:

# CentOS:
Export php_autoconf= "/usr/bin/autoconf-2.13"
# Debian:
Export php_autoconf= "/usr/bin/autoconf2.13"

Run again:./buildconf--force, appears buildconf:autoconf version 2.13 (OK)
, it indicates success.
Compiling and installing PHP
Copy Code code as follows:

./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

Modify php-fpm.conf enable the following lines, that is, remove the preceding semicolon (;)
Copy Code code as follows:

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, start PHP-FPM
Copy Code code as follows:
/opt/web/php/sbin/php-fpm

Start Nginx
Copy Code code as follows:
/opt/web/nginx/sbin/nginx

9. Test
Copy Code code as follows:
vim/var/webroot/www.jb51.net/tz.php

Enter and save
Copy Code code as follows:

? Php
Phpinfo ();
?>

10, in the browser address bar input: http://php.jb51.net/tz.php
Successful, you can see the phpinfo () output information

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.