【一台服务器上如何创建多个网站?】

原理分析

本质就是Nginx监听一台服务器的80端口,使用不同的域名映射到不同的Linux文件目录(站点发布的目录)

首先就是多个域名可以解析到同一个ip地址。我们的虚拟主机技术就是利用这一点来实现的。一般情况下,我们标识一个网站是通过网站的ip和端口以及网站项目名称来标识的。
在测试环境下,你可以通过修改成不同的端口,或者修改网站的项目名称来实现在同一台主机下部署多个网站。
但是在真正的生产环境下,我们的网站往往都是采用的80端口,而且都是不带有网站目录路径的。这个时候就可以通过不同的域名来对网站加以区分了。具体的实现过程是这样的,首先通过配置域名解析,将多个域名都解析到同一个主机ip,然后我们在该主机上通过配置来让主机可以将来自不同域名的请求转发给不同的网站程序去处理。主机会截获到请求的请求头信息,然后获取到host这个请求头的值,这个值也就是该请求的来源域名。主机根据所配置的域名与网站程序的对应关系,将来自不同的域名的请求转发给不同的程序去处理。

有了这个映射关系以后,那么主机在接到请求时,首先就会获得该请求来在哪个域名,然后根据配置的域名到网站根目录的对应关系,将该请求转发给对应的网站根目录去进行处理。

这样就实现了一个ip一个80端口上部署无穷多个网站的效果。


具体方案实现

其实很简单,我们以阿里云服务器(这里有阿里云的最新优惠活动,记得领券再买,节省一点是一点)为例。教大家用宝塔面板一键部署,轻松添加多个站点。(在步骤12)

什么是宝塔面板:宝塔Linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能。

使用代理转发软件。比如Nginx反向代理。以前我没有了解Nginx的时候,也为这个问题苦恼很久。后面随着知识的学习,发现问题很简单,解决方法也简单,通过Nginx反向代理的方式的能解决你的问题。

就是利用Nginx共同监听同一台云服务器的同一端口(80端口),然后通过不同的域名的方式代理转发,在云服务器下可以指定每个域名访问特定的Linux文件目录,每个文件目录发布你的一个站点。这样就一台服务器就可以发布多个网站站点了。

server
{listen 80 default_server;server_name www.yundashi168.com;                  # 域名1index index.php index.html index.htm default.php default.htm default.html;root /www/wwwroot/www.yundashi168.com/site1       # 站点1//以下代码省略
}server
{listen 80 default_server;server_name tencent.yundashi168.com;             #域名2  以此类推,你可以搭建无数个站点index index.php index.html index.htm default.php default.htm default.html;root /www/wwwroot/tencent.yundashi168.com/site2      # 站点2//以下代码省略
}多个nginx配置文件可以分割#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效include /www/server/panel/vhost/rewrite/www.yundashi168.com.conf;   #在总的配置文件里面引用站点1的配置文件

如果你是纯小白,不是很懂技术,那建议使用宝塔面板,宝塔面板一键安装部署Nginx软件环境,不用你手工搭建,而且在使用上,也不用写什么命令。只要会使用宝塔面板就可以了。

以前我是手工搭建nginx+mysql+php等运行环境,后台为了省时间和精力,就直接用宝塔面板。然后宝塔面板就可以帮助我在一台服务器上搭建多个网站。

至于能搭建几个网站?完全取决于你服务器能承载多少个网站访问量和资源消耗。如果你的云服务器配置很高,比如4核16G的配置,那就可以搭建几十个小网站都没有问题。当然还得考虑带宽问题。

宝塔面板搭建多个网站

如果你想参考相关教程,那刚好我总结好了我以前建站写的经典教程。教你如何在一台服务器上安装多个网站站点。本质是在宝塔面板上安装LNMP(Linux+Nginx+Mysql+PHP)环境,利用nginx来实现。

具体教程:宝塔面板添加WordPress站点详细图文教程 (当然你不一定要搭建WordPress程序,也可以是其它任何程序和网站系统)

如果是你懂技术的,那么只要了解下Nginx,自己实现Nginx代理在服务器上部署多个网站,那完全没有问题。

Nginx部署多个项目


整体流程遵循着一套核心概念

需求:将多个 WEB 项目,部署在一台服务器上。并且每一个项目,都有一个自己的域名可以访问。

解决方案:

  1. 购买云服务器,获得 IP 地址
  2. 购买域名,并将多个二级域名解析到该 IP 地址上;(www.xxx.com->192.168.0.1;cms.xxx.com->192.168.0.1;abc.xxx.com->192.168.0.1)
  3. 利用 Docker 安装 nginx,它运行在服务器的某一个端口上(我们自己指定)
  4. 利用 xshell 或者 finalshell 这种 SSH 软件,将我们的项目传输到上一步安装的 nginx 的静态资源文件夹中,于是我们就可以用 192.168.0.1:90 这样的「ip地址:端口号」的形式访问到我们的「一个 WEB 项目」了
  5. 当我们访问一个地址如 192.168.0.1 时,我们默认访问的是它的 80 端口
  6. 于是我们可以用 docker 部署多个 nginx 在同一台服务器的非 80 端口上,它们中都部署着不同的 WEB 项目,比如 192.168.0.1:90 中部署的是「官方网站」,192.168.0.1:100 中部署的是「网页游戏」
  7. 最后我们部署一个 nginx 作为「反向代理服务器」在服务器的 80 端口上,在这个反向代理服务器配置「域名」与「ip:端口号」的对应关系。(如下图)
  8. 于是我们就可以通过不同域名,访问同一个服务器上部署的不同项目了!就是这样!


以上讲到了宝塔面板部署WordPress网站和不用宝塔面板两种方法来实现。宝塔面板的方法适合技术小白,自己使用Nginx的方法适合懂技术的程序员,自己权衡一下怎么去做。其实宝塔也是使用Nginx来实现多站点的映射,以及创建多个站点的方法,相信大家自己操作一遍就会了。如果我的文章对你有帮助,可以给我点个赞,谢谢!

原文地址:http://tencent.yundashi168.com/791.html

一台服务器上如何创建多个网站多个站点?相关推荐

  1. 一台服务器上如何创建多个网站

    本质就是Nginx监听一台服务器的80端口,使用不同的域名映射到不同的Linux文件目录(站点发布的目录) 首先就是多个域名可以解析到同一个ip地址.我们的虚拟主机技术就是利用这一点来实现的.一般情况 ...

  2. [投稿]通过Web界面在多台服务器上批量创建文件

    最近在EDAS产品上发现了一个有意思的功能,能够在Web界面上向多台服务批量下发命令执行,觉得这个功能能够极大的提升效率,因此想分享给其他小伙伴. 这里我以"通过Web界面在多台服务器上批量 ...

  3. 在一台服务器上搭多个网站的解决方案

    以前一直困惑于80端口就一个,如何才能在一台服务器上布署多个网站呢?最近因为公司服务器需要实现这个需求,才去认真的研究其中的原理与布署方案,本文总要记录winodws服务器下apache与iis的配置 ...

  4. 一台服务器两个mysql_在一台服务器上安装两个或多个mysql的实现步骤_MySQL

    如何在一台服务器上安装两个或者更多个的mysql呢?下面是详细的操作步骤,一起来学习学习吧. 一.环境 mysql软件包: mysql-5.6.31.tar mysql-5.5.32.tar 操作系统 ...

  5. 在多台服务器上简单实现Redis的数据主从复制

    http://www.cnblogs.com/liping13599168/archive/2011/04/14/2016226.html Redis的主从复制功能非常强大,一个master可以拥有多 ...

  6. 在同一台服务器上启动多个 FreeSWITCH 实例

    有时候,需要用到多个FreeSWITCH进行测试,或者需要在一台服务器上部署多个"不兼容"的系统.我们在这一节探讨一下怎么做. 背景故事 几年前我还在Idapted工作的时候,由于 ...

  7. Centos7把一个文件复制到另外一台服务器上的scp命令

    通过scp命令把本地文件传到外网去:scp 当前目录下的文件名 root@ip地址:/mnt 1.从本地复制到远程 现在有一个需求,有一台centos服务器是安装了maven.Jenkins这些工具, ...

  8. 单台mysql增加节点_如何在一台服务器上安装两个PXC集群节点

    我认为在单个物理服务器上运行2个或多个Percona XtraDB Cluster(PXC)节点这样没有什么意义,除了教育和测试目的,但在这种情况下这样做仍然是有用的.最受欢迎的实现方式似乎是服务器的 ...

  9. 在一台服务器上配置多个Tomcat的方法

    这段时间在开发智能导航的热部署功能,需要从一台服务器去访问其它的24台服务器去进行相关配置的热部署. 如果要在一台服务器上配置多个Tomcat,主要就是要避免Tomcat服务器的端口冲突的问题.只需要 ...

最新文章

  1. 使用 Maven 执行 java main class(java应用程序)
  2. Byte Cup 2018机器学习大赛进入冲刺阶段,最全资料帮你快速上手!
  3. c语言case可以判断多个条件吗,case 多个条件
  4. 微信小程序 保存持久化cookie
  5. Git [收藏链接]
  6. 每天进步一点点——Linux系统时间来处理
  7. 减少系统进程【ZT】
  8. Unity字节序问题
  9. 每天一算:Two Sum II
  10. 用crontab、crond在嵌入式系统中添加定时任务
  11. 2015上海网络赛 HDU 5475 An easy problem 线段树
  12. C#Winform使用火狐firefox内核GeckoWebBrowser
  13. 按键双击和单击c语言,【按键】[独立按键] - 单击,双击,三击以及N击
  14. ECDSA_SVP_Attack
  15. macOS pages 插入公式快捷键
  16. linux chm 阅读器,linux下最好的chm阅读器KchmViewer,安装使用/与oklular,xCHM,gnochm简单比较...
  17. 2020年9大IT互联网大佬扎心语录
  18. Failed to load ‘D:\note\笔记\javaweb\webpack\webpack.config.js‘ config
  19. java 鼠标动眼睛动_java实现眼睛跟着鼠标转动的跟踪眼代码
  20. 【云原生 | Kubernetes 系列】---CephFS和OSS

热门文章

  1. AI绘图软件分享:Midjourney 基础教程(二)
  2. 天地劫一直说服务器在维护,天地劫幽城再临3月11日登录失败怎么办?3.11服务器连接失败解决方法[多图]...
  3. (15.1.5.1)【涨姿势】如何用大数据思维勾搭到大胸萌妹纸
  4. Android 代码混淆规则
  5. 非常精美的电子书界面模板
  6. 海店湾:夏天晒不黑小妙招!女神的也在用哦!
  7. 在ubuntu16.04上使用源码安装caffe2
  8. 分享iPhone新系统的新功能
  9. Java 反射5-基础代理模式
  10. 史上最牛的Linux视频教程—兄弟连 学习笔记2