文档章节

Centos7+Nginx+PHP 基础WEB运行环境-多虚拟主机配置

Eller
 Eller
发布于 2017/05/15 13:14
字数 853
阅读 521
收藏 0

前文:Centos7+Nginx+PHP 基础WEB运行环境手工部署

此前我们在Centos7上手工部署了Nginx+PHP的运行环境,然而并没有说到虚拟主机多个站点的部署方法,此文将继续记录Nginx虚拟主机多站点的一些部署及注意细节。

Nginx安装路径:/usr/local/nginx

Nginx主配置:/usr/local/nginx/nginx.conf

默认网站目录:/usr/local/nginx/html

如果您的配置和当前的配置不一样,注意将文中路径替换。

 

准备工作

创建网站目录以及配置目录

#创建网站目录及网站产生的日志存放目录
mkdir /mnt/web/example/wwwroot -p
mkdir /mnt/web/example/log -p

#创建 nginx 加载的虚拟主机配置存放目录
mkdir /usr/local/nginx/vhost

#增加配置文件引入
vi /usr/local/nginx/nginx.conf
#在 http 段尾部增加 include /usr/local/nginx/vhost/*.conf;

#创建默认文件
echo "<?php phpinfo();>" > /mnt/web/example/wwwroot/index.php
echo "hi example.com" > /mnt/web/example/wwwroot/index.html

#设置权限
chown -R php-fpm:www /mnt/web
chmod -R 775 /mnt/web

 

配置文件

普通虚拟主机配置(不支持PHP)

增加一个网站配置

cd /usr/local/nginx/vhost
vi example.conf

配置文件内容如下

log_format soshash.log.format '$remote_addr - $remote_user [$time_local] $request'
        '$status $body_bytes_sent $http_referer '
        '$http_user_agent $http_x_forwarded_for';
server {
        listen       80;
        server_name example.com www.example.com *.demo.example.com;
        index index.html index.htm index.php;
        root  /mnt/web/example/wwwroot;
        access_log  /mnt/web/example/log/access.log example.log.format;
        error_log  /mnt/web/example/log/error.log;
}

域名绑定(server_name):

  • 单域名:server_name www.example.com
  • 多域名:server_name www.example.com php.example.com
  • 泛域名:server_name *.demo.example.com
  • 以及正则匹配域名。域名可以绑定多个,只需要用空格分割开即可。

默认文件(index):按照优先顺序显示默认网页。

网站目录(root):填写我们预先创建的网站目录。

访问日志文件(access_log):

  • access_log 产生日志文件存储路径 日志内容的格式(example.log.format)
  • example.log.format 相当于变量一样,需要提前声明。
  • 最新版本的 nginx(1.12.0)需要 将log_format 放置到 server段外部,否则会报一个类似:nginx: [emerg] "log_format" directive is not allowed here in xxx 的错误。

错误日志文件(error_log):

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

重载nginx配置

/usr/local/nginx/nginx -s reload

 

PHP虚拟主机配置(支持PHP)

解析域名并测试访问

http://www.example.com/index.html  有效

http://www.example.com/index.php  错误(下载资源文件)

显然是我们的虚拟主机没有对PHP文件进行加载执行

给虚拟主机文件增加配置,如下:

log_format soshash.log.format '$remote_addr - $remote_user [$time_local] $request'
        '$status $body_bytes_sent $http_referer '
        '$http_user_agent $http_x_forwarded_for';
server {
        listen       80;
        server_name example.com www.example.com *.demo.example.com;
        index index.html index.htm index.php;
        root  /mnt/web/example/wwwroot;

        #新增配置如下
	    location ~ .*\.(php|php5)?$ {
	    	fastcgi_pass 127.0.0.1:9000;
		    fastcgi_index index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  SCRIPT_NAME $fastcgi_script_name;
		    include fastcgi_params;
	    }
        access_log  /mnt/web/example/log/access.log example.log.format;
        error_log  /mnt/web/example/log/error.log;
}

重载nginx

/usr/local/nginx/nginx -s reload

 再次测试通过。

类同,配置其他多个虚拟主机也一样如此简单。

 

多版本PHP简单说明

对于多版本PHP的话,只需要将其他PHP编译安装到另外一个目录,配置网站时监听对应的端口即可。

如:/usr/local/php/php7/

修改配置:php-fpm.conf

listen = 127.0.0.1:9001  

对应nginx虚拟主机的配置更改

	    location ~ .*\.(php|php5)?$ {
	    	fastcgi_pass 127.0.0.1:9001;#不同端口对应不同php版本
		    fastcgi_index index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  SCRIPT_NAME $fastcgi_script_name;
		    include fastcgi_params;
	    }

异同之处只有这些,配置起来是比较简单的。

 

© 著作权归作者所有

Eller
粉丝 13
博文 46
码字总数 43999
作品 0
深圳
程序员
私信 提问
Centos7+Nginx+PHP 基础WEB运行环境手工部署

Centos7+nginx+php(php-fpm)基础web运行环境手工部署 准备工作 1.安装编译支持库 2.安装PCRE 3.安装zlib 4.安装openssl 安装nginx 官方下载 http://nginx.org/en/download.html 安装PHP 安...

Eller
2017/05/06
0
0
虚拟化概述及VMware VSphere介绍

虚拟化概述及VMware VSphere介绍: 虚拟化打破了物理硬件与操作系统及在其上运行的应用程序之间的硬性连接。操作系统和应用程序在虚拟机中实现虚拟化之后,便不再因位于单台物理计算机中而受...

甘兵
2013/08/07
0
0
网站访问速度提升200%以上,阿里云虚拟主机支持PHP最新版本

日前,阿里云虚拟主机推出了新功能,支持PHP的最新版本 7.0和7.1,并支持用户在多个不同PHP版本之间切换。 PHP 作为最好的Web编程语言,最新版本已经更新到了7.0和7.1。阿里云作为国内虚拟主...

云攻略小攻
2017/12/28
0
0
Citrix虚拟化技术之八XenDesktop7.1部署和Win7虚拟桌面发布

在部署XenDesktop之前,先对XenDesktop环境进行合理有效的规划,可减少在项目实施过程中出现不必要的麻烦,也便于日后维护。 部署规划建议 网络规划: Citrix虚拟桌面部署时底层的物理组网建议...

Virtual_will
2014/01/23
0
0
IaaS,PaaS和SaaS

云计算的三种服务模式:IaaS,PaaS和SaaS Infrastructure(基础设施)-as-a-Service,Platform(平台)-as-a-Service,Software(软件)-as-a-Service。基础设施在最下端,平台在中间,软件在...

八戒_o
2016/04/14
96
0

没有更多内容

加载失败,请刷新页面

加载更多

C 语言 二级指针的使用

#include <stdio.h>#include <stdlib.h>typedef struct node Node;struct node {int data;struct node* next;struct node* prev;};Node head;Node* insert(Node......

小张525
10分钟前
1
0
【大数据技术】——Hadoop(1)

什么是大数据 基本概念 《数据处理》 在互联网技术发展到现今阶段,大量日常、工作等事务产生的数据都已经信息化,人类产生的数据量相比以前有了爆炸式的增长,以前的传统的数据处理技术已经...

须臾之余
24分钟前
6
0
比特币从地址逆向计算私钥

区块链 区块链简介 说到比特币,就不得不提区块链。那什么是区块链呢? 区块链本质是一个数据集,只不过数据的组织采用了比较特殊的方式,就是把数据拆分为一块一块的小数据集。 为什么要进行...

trayvon
38分钟前
1
0
TypeScript……真香

写前端或者用 node 写命令行小工具一直采用的 es6 的语法,对于 TypeScript 则是秉持敬而远之的态度,毕竟团队中多推广一门语言所需要花费的精力都是让人望而却步的。所以对于 JavaScript 的...

郁也风
44分钟前
3
0
shell基本案例

1、自定义rm linux系统的rm命令太危险,一不小心就会删除掉系统文件。 写一个shell脚本来替换系统的rm命令,要求当删除一个文件或者目录时,都要做一个备份,然后再删除。下面分两种情况,做...

寰宇01
51分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部