Nginx多站点虚拟主机实现单独启动停止php-fpm、单独控制权限设置

Nginx多站点虚拟主机实现单独启动停止php-fpm、单独控制权限设置
说明:
站点1:bbs.osyunwei.com  程序所在目录/data/osyunwei/bbs
站点2:sns.osyunwei.com  程序所在目录/data/osyunwei/sns
相关配置文件目录:
nginx主配置文件:/usr/local/nginx/conf/nginx.conf
php安装目录:/usr/local/php5/
站点1虚拟主机配置配置文件:/usr/local/nginx/conf/vhost/bbs.conf
站点2虚拟主机配置配置文件:/usr/local/nginx/conf/vhost/sns.conf
实现目的:
1、可以对站点1和站点2单独启动、停止php-fpm
2、站点1和站点2的php运行权限相互隔离,不能跨目录浏览,即站点1内的php木马不能访问站点2中的内容,
    同理,站2内的php木马不能访问站点1中的内容。
实现方法:
一、为每个站点创建php-fpm.pid文件
cd /usr/local/php5/var/run
touch php-fpm-bbs.pid
touch php-fpm-sns.pid
二、为每个站点创建php-fpm.conf文件
cd /usr/local/php5/etc/
cp php-fpm.conf  php-fpm-bbs.conf
cp php-fpm.conf  php-fpm-sns.conf
三、为每个站点建立php-cgi.sock文件
touch /tmp/php-cgi-bbs.sock  #建立php-cgi.sock文件
chown www.www /tmp/php-cgi-bbs.sock  #设置文件所有者为www(必须与nginx的用户一致)
touch /tmp/php-cgi-sns.sock
chown www.www /tmp/php-cgi-sns.sock
四、编辑相关文件
vi  /usr/local/php5/etc/php-fpm-bbs.conf
pid = run/php-fpm-bbs.pid
listen =/tmp/php-cgi-bbs.sock;
vi /usr/local/php5/etc/php-fpm-sns.conf
pid = run/php-fpm-sns.pid
listen =/tmp/php-cgi-sns.sock;
vi /etc/rc.d/init.d/php-fpm
vhost=$2
php_fpm_CONF=${prefix}/etc/php-fpm-$vhost.conf
php_fpm_PID=${prefix}/var/run/php-fpm-$vhost.pid
php_opts="-d open_basedir=/data/osyunwei/$vhost/:/tmp/ --fpm-config $php_fpm_CONF"
vi /usr/local/nginx/conf/vhost/bbs.conf
fastcgi_pass  unix:/tmp/php-cgi-bbs.sock;
vi /usr/local/nginx/conf/vhost/sns.conf
fastcgi_pass  unix:/tmp/php-cgi-sns.sock;
cd /home
vi start.sh  #编辑开机启动脚本
#!/bin/bash
auto=$1
/bin/bash  /etc/rc.d/init.d/php-fpm $auto bbs
/bin/bash  /etc/rc.d/init.d/php-fpm $auto sns
chmod +x start.sh #添加脚本执行权限
vi /etc/rc.local  #编辑开机启动文件
sh /home/start.sh start  #加入开机启动
service nginx start
/etc/rc.d/init.d/php-fpm start bbs  #单独启动站点bbs.osyunwei.com
/etc/rc.d/init.d/php-fpm start sns
/etc/rc.d/init.d/php-fpm stop bbs  #单独停止站点sns.osyunwei.com
/etc/rc.d/init.d/php-fpm stop sns
五、相关配置文件内容
/usr/local/nginx/conf/nginx.conf
1    user  www www;
2    worker_processes  2;
3    #error_log  logs/error.log;
4    #error_log  logs/error.log  notice;
5    #error_log  logs/error.log  info;
6    #pid        logs/nginx.pid;
7    
8    events {
9        use epoll;
10        worker_connections  65535;
11    }
12    
13    http {
14        include       mime.types;
15        default_type  application/octet-stream;
16    
17        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
18        #                  '$status $body_bytes_sent "$http_referer" '
19        #                  '"$http_user_agent" "$http_x_forwarded_for"';
20    
21        #access_log  logs/access.log  main;
22        server_names_hash_bucket_size 128;
23        client_header_buffer_size 32k;
24        large_client_header_buffers 4 32k;
25        client_max_body_size 300m;
26        sendfile        on;
27        tcp_nopush     on;
28        fastcgi_connect_timeout 300;
29        fastcgi_send_timeout 300;
30        fastcgi_read_timeout 300;
31        fastcgi_buffer_size 64k;
32        fastcgi_buffers 4 64k;
33        fastcgi_busy_buffers_size 128k;
34        fastcgi_temp_file_write_size 128k;
35        #keepalive_timeout  0;
36        keepalive_timeout  60;
37        tcp_nodelay on;
38        server_tokens off;
39        gzip  on;
40        gzip_min_length  1k;
41        gzip_buffers     4 16k;
42        gzip_http_version 1.1;
43        gzip_comp_level 2;
44        gzip_types       text/plain application/x-javascript text/css application/xml;
45        gzip_vary on;
46       server
47           {
48         listen       80 default;
49         server_name  _;
50         location / {
51         root   html;
52         return 404;
53                        }
54         location ~ /.ht {
55         deny  all;
56                          }
57           }
58       server
59            {
60         listen       80;
61         #server_name localhost;
62         index index.php default.php index.html index.htm default.html default.htm ;
63        
64                    location /status {
65                            stub_status on;
66                            access_log   off;
67                    }
68    
69                    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
70                            {
71                                    expires      30d;
72                            }
73                    location ~ .*\.(js|css)?$
74                            {
75                                    expires      12h;
76                            }
77    
78                    access_log off;
79            }
80    
81    include  vhost/*.conf;
82    }
vi /usr/local/nginx/conf/vhost/bbs.conf
1    server
2            {
3                    listen       80;
4                    server_name bbs.osyunwei.com;
5                    index index.php index.html index.htm default.html default.htm default.php;
6                    root  /data/osyunwei/bbs;
7    location ~ .*\.(php|php5)?$
8                            {
9                                    fastcgi_pass  unix:/tmp/php-cgi-bbs.sock;
10                                    fastcgi_index index.php;
11                                    include fcgi.conf;
12                            }
13                    location /status {
14                            stub_status on;
15                            access_log   off;
16                    }
17    
18                    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
19                            {
20                                    expires      30d;
21                            }
22                    location ~ .*\.(js|css)?$
23                            {
24                                    expires      12h;
25                            }
26    
27                    access_log off;
28            }
vi /usr/local/nginx/conf/vhost/sns.conf
1    server
2            {
3                    listen       80;
4                    server_name sns.osyunwei.com;
5                    index index.php index.html index.htm default.html default.htm default.php;
6                    root  /data/osyunwei/sns;
7    location ~ .*\.(php|php5)?$
8                            {
9                                    fastcgi_pass  unix:/tmp/php-cgi-sns.sock;
10                                    fastcgi_index index.php;
11                                    include fcgi.conf;
12                            }
13                    location /status {
14                            stub_status on;
15                            access_log   off;
16                    }
17    
18                    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
19                            {
20                                    expires      30d;
21                            }
22                    location ~ .*\.(js|css)?$
23                            {
24                                    expires      12h;
25                            }
26    
27                    access_log off;
28            }
vi /usr/local/nginx/conf/fcgi.conf
1    fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
2    fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
3    
4    fastcgi_param  QUERY_STRING       $query_string;
5    fastcgi_param  REQUEST_METHOD     $request_method;
6    fastcgi_param  CONTENT_TYPE       $content_type;
7    fastcgi_param  CONTENT_LENGTH     $content_length;
8    
9    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
10    fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
11    fastcgi_param  REQUEST_URI        $request_uri;
12    fastcgi_param  DOCUMENT_URI       $document_uri;
13    fastcgi_param  DOCUMENT_ROOT      $document_root;
14    fastcgi_param  SERVER_PROTOCOL    $server_protocol;
15    
16    fastcgi_param  REMOTE_ADDR        $remote_addr;
17    fastcgi_param  REMOTE_PORT        $remote_port;
18    fastcgi_param  SERVER_ADDR        $server_addr;
19    fastcgi_param  SERVER_PORT        $server_port;
20    fastcgi_param  SERVER_NAME        $server_name;
21    
22    # PHP only, required if PHP was built with --enable-force-cgi-redirect
23    fastcgi_param  REDIRECT_STATUS    200;

你可能感兴趣的:(虚拟主机,多站点,单独控制,独立启动)