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

前文: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;
	    }

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据

Python爬取哔哩哔哩实时直播弹幕

用Python爬取哔哩哔哩直播弹幕,关键在于找到哔哩哔哩网站的一个POST网址,和应该POST的数据。代码不长,十分简单。关键在于浏览器开发者工具的使用。希望对...

25110
来自专栏狂码一生

ThinkPHP3.2.3+Nginx的伪静态配置

2455
来自专栏云计算教程系列

如何在CentOS 7上设置Apache虚拟主机

Apache Web服务器是在Internet上提供Web内容的最常用方式,将其功能和组件分解为可单独定制和配置的单个单元。描述单个站点或域的基本单元称为虚拟主...

3675
来自专栏Java开发

ElasticSearch5.x安装Elasticsearch-head插件

去https://github.com/mobz/elasticsearch-head下载代码上传到服务器上

1981
来自专栏铭毅天下

干货 | Elasticsearch 集群健康值红色终极解决方案

题记 Elasticsearch当清理缓存( echo 3 > /proc/sys/vm/drop_caches )的时候,出现 如下集群健康值:red,红...

8328
来自专栏我爱编程

如何安装https证书 (ubuntu+apache2)

搬运自知乎 FengYQ:https://zhuanlan.zhihu.com/p/43699640

3732
来自专栏散尽浮华

Nginx基于TCP/UDP端口的四层负载均衡(stream模块)配置梳理

通过我们会用Nginx的upstream做基于http/https端口的7层负载均衡,由于Nginx老版本不支持tcp协议,所以基于tcp/udp端口的四层负载...

5.8K8
来自专栏我是攻城师

手动从零使用ELK构建一套搜索服务

3565
来自专栏编程微刊

微信小程序从零开始开发步骤(六)4种页面跳转的方法

1773
来自专栏dalaoyang

Linux安装Logstash

本文环境是在腾讯云服务器CentOS7.2搭建的,JDK1.8,Logstash-5.4.2。

5382

扫码关注云+社区

领取腾讯云代金券