当前位置:首页 服务器 正文

centos中nginx多站点独立虚拟主机配置

2014年05月25日 | 作者: 米豆网 - 1000seo | 分类: 服务器 | 

在一台服务器上配置多个php站点的时候,我们希望每个站点都可以单独的停止/启动并且各站之间php运行权限相互隔离,不能跨目录浏览.本文以CentOS6.5编译安装Nginx1.70 +PHP5.59+MySQL5.6.16″为前提。
假设存在如下两个站点:
1.blog.1000seo.com  目录:/webdata/blog.1000seo.com
2.crm.1000seo.com   目录:/webdata/crm.1000seo.com
操作方法
1.为每个站点创建php-fpm.pid文件,为了能清楚方便的识别,我们使用域名作为文件名的一部分
>cd /usr/local/php5/var/run
>touch php-fpm-blog.1000seo.com.pid
>touch php-fpm-crm.1000seo.com.pid
2.为每个站点创建php-fpm.conf文件.
>cd /usr/local/php5/etc/
>cp php-fpm.conf  php-fpm-blog.1000seo.com.conf
>cp php-fpm.conf  php-fpm-crm.1000seo.com.conf
3.为每个站点创建php-cgi.sock文件.
>touch /tmp/php-cgi-blog.1000seo.com.sock
>chown webuser.webuser /tmp/php-cgi-blog.1000seo.com.sock
>touch /tmp/php-cgi-crm.1000seo.com.sock
>chown webuser.webuser /tmp/php-cgi-crm.1000seo.com.sock
4.编辑相关文件
>vi  /usr/local/php5/etc/php-fpm-blog.1000seo.com.conf
找到这一行pid = run/php-fpm.pid 改为:pid = run/php-fpm-blog.1000seo.com.pid
找到这一行listen = 127.0.0.1:9000;改为:listen =/tmp/php-cgi-blog.1000seo.com.sock
:wq #保存退出

>vi  /usr/local/php5/etc/php-fpm-crm.1000seo.com.conf
找到这一行pid = run/php-fpm.pid 改为:pid = run/php-fpm-crm.1000seo.com.pid
找到这一行listen = 127.0.0.1:9000;改为:listen =/tmp/php-cgi-crm.1000seo.com.sock
:wq #保存退出

>vi /etc/rc.d/init.d/php-fpm #请参照下面的内容修改
#! /bin/sh

### BEGIN INIT INFO
# Provides:          php-fpm
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-fpm
# Description:       starts the PHP FastCGI Process Manager daemon
### END INIT INFO
vhost=$2
prefix=/usr/local/php5
exec_prefix=${prefix}

php_fpm_BIN=${exec_prefix}/sbin/php-fpm
php_fpm_CONF=${prefix}/etc/php-fpm-$vhost.conf
php_fpm_PID=${prefix}/var/run/php-fpm-$vhost.pid

php_opts=”-d open_basedir=/webdata/$vhost/:/tmp/ –fpm-config $php_fpm_CONF –pid $php_fpm_PID”

wait_for_pid () {
try=0

while test $try -lt 35 ; do

case “$1” in
‘created’)
if [ -f “$2″ ] ; then
try=”
break
fi
;;

‘removed’)
if [ ! -f “$2″ ] ; then
try=”
break
fi
;;
esac

echo -n .
try=`expr $try + 1`
sleep 1

done

}

case “$1” in
start)
echo -n “Starting php-fpm ”

$php_fpm_BIN –daemonize $php_opts

if [ “$?” != 0 ] ; then
echo ” failed”
exit 1
fi

wait_for_pid created $php_fpm_PID

if [ -n “$try” ] ; then
echo ” failed”
exit 1
else
echo ” done”
fi
;;

stop)
echo -n “Gracefully shutting down php-fpm ”

if [ ! -r $php_fpm_PID ] ; then
echo “warning, no pid file found – php-fpm is not running ?”
exit 1
fi

kill -QUIT `cat $php_fpm_PID`

wait_for_pid removed $php_fpm_PID

if [ -n “$try” ] ; then
echo ” failed. Use force-quit”
exit 1
else
echo ” done”
fi
;;

status)
if [ ! -r $php_fpm_PID ] ; then
echo “php-fpm is stopped”
exit 0
fi

PID=`cat $php_fpm_PID`
if ps -p $PID | grep -q $PID; then
echo “php-fpm (pid $PID) is running…”
else
echo “php-fpm dead but pid file exists”
fi
;;

force-quit)
echo -n “Terminating php-fpm ”

if [ ! -r $php_fpm_PID ] ; then
echo “warning, no pid file found – php-fpm is not running ?”
exit 1
fi

kill -TERM `cat $php_fpm_PID`

wait_for_pid removed $php_fpm_PID

if [ -n “$try” ] ; then
echo ” failed”
exit 1
else
echo ” done”
fi
;;

restart)
$0 stop
$0 start
;;

reload)

echo -n “Reload service php-fpm ”

if [ ! -r $php_fpm_PID ] ; then
echo “warning, no pid file found – php-fpm is not running ?”
exit 1
fi

kill -USR2 `cat $php_fpm_PID`

echo ” done”
;;

*)
echo “Usage: $0 {start|stop|force-quit|restart|reload|status}”
exit 1
;;

esac
:wq #保存退出
>vi /usr/local/nginx/conf/vhost/blog.1000seo.com.conf
server
{
listen       80;
server_name blog.1000seo.com;
index index.php index.html index.htm default.html default.htm default.php;
root  /webdata/blog.1000seo.com;
location ~ .*\.(php|php5)?$
{
fastcgi_pass  unix:/tmp/php-cgi-blog.1000seo.com.sock;
fastcgi_index index.php;
include fcgi.conf;
}
location /status {
stub_status on;
access_log   off;
}

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

access_log off;
}

:wq #保存退出

>vi /usr/local/nginx/conf/vhost/crm.1000seo.com.conf
server
{
listen       80;
server_name crm.1000seo.com;
index index.php index.html index.htm default.html default.htm default.php;
root  /webdata/crm.1000seo.com;
location ~ .*\.(php|php5)?$
{
fastcgi_pass  unix:/tmp/php-cgi-crm.1000seo.com.sock;
fastcgi_index index.php;
include fcgi.conf;
}
location /status {
stub_status on;
access_log   off;
}

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

access_log off;
}
:wq #保存退出

>vi /usr/local/nginx/conf/nginx.conf #请参照下面的内容修改

user  webuser webuser;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
use epoll;
worker_connections  1024;
}

http {
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;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
sendfile        on;
tcp_nopush     on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
#keepalive_timeout  0;
keepalive_timeout  65;
tcp_nodelay on;
server_tokens off;
gzip  on;
gzip_min_length  1k;
gzip_buffers     4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types       text/plain application/x-javascript text/css application/xml;
gzip_vary on;

server {
listen       80 default;
server_name  _;

#charset koi8-r;

#access_log  logs/host.access.log  main;

location / {
root   html;
return 404;
}

#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  $document_root$fastcgi_script_name;
#    include        fastcgi_params;
#}

# deny access to .htaccess files, if Apache’s document root
# concurs with nginx’s one
#
location ~ /\.ht {
deny  all;
}
}
server {
listen    80;
index    index.html index.htm index.php;
location /status {
stub_status    on;
access_log    off;
}
location ~ .*\.(gif|jpg|png|bmp|swf)$ {
expires    30d;
}
location ~.C*\.(js|css)?$ {
expires    12h;
}
access_log    off;
}
include vhost/*.conf;

# 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 ssl;
#    server_name  localhost;

#    ssl_certificate      cert.pem;
#    ssl_certificate_key  cert.key;

#    ssl_session_cache    shared:SSL:1m;
#    ssl_session_timeout  5m;

#    ssl_ciphers  HIGH:!aNULL:!MD5;
#    ssl_prefer_server_ciphers  on;

#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}

}
:wq #保存退出

>cd /home
>vi start.sh
#!/bin/bash
actop=$1
/bin/bash /etc/rc.d/init.d/php-fpm $actop blog.1000seo.com
/bin/bash /etc/rc.d/init.d/php-fpm $actop crm.1000seo.com
:wq #保存退出
>chmod +x start.sh

>vi /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don’t
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
sh /home/start.sh start
:wq #保存退出
> /home/start.sh start
>service nginx restart
相关操作命令
启动所有站点
/home/start.sh start
停止所有站点
/home/start.sh stop
启动站点
>/etc/rc.d/init.d/php-fpm start blog.1000seo.com
>/etc/rc.d/init.d/php-fpm start crm.1000seo.com
停止站点
>/etc/rc.d/init.d/php-fpm stop blog.1000seo.com
>/etc/rc.d/init.d/php-fpm stop crm.1000seo.com

本文章由 米豆网 - 1000seo 于2014年05月25日发布在服务器分类下,您可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
+复制链接 转载请注明:centos中nginx多站点独立虚拟主机配置-米豆网
关键字:, ,

好文章就要一起分享!

更多

发表评论

你的大名(必填)

你的邮箱(必填)

你的网站(选填)

评论内容(必填)

😉 😐 😡 😈 🙂 😯 🙁 🙄 😛 😳 😮 mrgreen.png 😆 💡 😀 👿 😥 😎 ➡ 😕 ❓ ❗