搜索
首页php教程php手册centos中nginx多站点独立虚拟主机配置
centos中nginx多站点独立虚拟主机配置Jun 06, 2016 pm 08:12 PM
centosnginx独立站点虚拟主机配置

在一台服务器上配置多个php站点的时候,我们希望每个站点都可以单独的停止/启动并且各站之间php运行权限相互隔离,不能跨目录浏览.本文以CentOS6.5编译安装Nginx1.70 +PHP5.59+MySQL5.6.16为前提。 假设存在如下两个站点: 1.blog.1000seo.com? 目录:/webda

在一台服务器上配置多个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

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
centos用什么命令可查版本号centos用什么命令可查版本号Mar 03, 2022 pm 06:10 PM

查版本号的命令:1、“cat /etc/issue”或“cat /etc/redhat-release”,可输出centos版本号;2、“cat /proc/version”、“uname -a”或“uname -r”,可输出内核版本号。

centos重启网卡的方法是什么centos重启网卡的方法是什么Feb 22, 2023 pm 04:00 PM

centos重启网卡的方法:1、对于centos6的网卡重启命令是“service network restart”;2、对于centos7的网卡重启命令是“systemctl restart network”。

centos php怎么安装opcachecentos php怎么安装opcacheJan 19, 2023 am 09:50 AM

centos php安装opcache的方法:1、执行“yum list php73* | grep opcache”命令;2、通过“yum install php73-php-opcache.x86_64”安装opcache;3、使用“find / -name opcache.so”查找“opcache.so”的位置并将其移动到php的扩展目录即可。

centos 怎么离线安装 mysqlcentos 怎么离线安装 mysqlFeb 15, 2023 am 09:56 AM

centos离线安装mysql的方法:1、将lib中的所有依赖上传到linux中,并用yum命令进行安装;2、解压MySQL并把文件复制到想要安装的目录;3、修改my.cnf配置文件;4、复制启动脚本到资源目录并修改启动脚本;5、将mysqld服务加入到系统服务里面;6、将mysql客户端配置到环境变量中,并使配置生效即可。

centos 7安装不出现界面怎么办centos 7安装不出现界面怎么办Jan 03, 2023 pm 05:33 PM

centos7安装不出现界面的解决办法:1、选择“Install CentOS 7”,按“e”进入启动引导界面;2、 将“inst.stage2=hd:LABEL=CentOS\x207\x20x86_64”改为“linux dd”;3、重新进入“Install CentOS 7”,按“e”将“hd:”后的字符替换成“/dev/sdd4”,然后按“Ctrl+x”执行即可。

centos 怎么删除 phpcentos 怎么删除 phpFeb 24, 2021 am 09:15 AM

centos删除php的方法:1、通过“#rpm -qa|grep php”命令查看全部php软件包;2、通过“rpm -e”命令卸载相应的依赖项;3、重新使用“php -v”命令查看版本信息即可。

centos中ls命令不显示颜色怎么办centos中ls命令不显示颜色怎么办Apr 20, 2022 pm 03:16 PM

方法:1、利用“vim ~/.bashrc”编辑用户目录(~)下的“.bashrc”文件;2、在文件内添加“alias ls="ls --color"”;3、利用“:wq!”命令保存文件内的更改;4、“exit”命令退出终端后重新连接即可。

如何在 CentOS 9 Stream 上安装 Nagios如何在 CentOS 9 Stream 上安装 NagiosMay 10, 2023 pm 07:58 PM

我们的PC中有一个磁盘驱动器专门用于所有与Windows操作系统相关的安装。该驱动器通常是C驱动器。如果您还在PC的C盘上安装了最新的Windows11操作系统,那么所有系统更新(很可能是您安装的所有软件)都会将其所有文件存储在C盘中。因此,保持此驱动器没有垃圾文件并在C驱动器中拥有足够的存储空间变得非常重要,因为该驱动器拥有的空间越多,您的Windows11操作系统运行起来就越顺畅。但是您可以在磁盘驱动器上增加多少空间以及可以删除多少文件是有限制的。在这种情况下,

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器