1. 首页
  2. Java实战教程

一台云服务器如何部署多个网站和多个站点?

阿里云服务器优惠

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

原理分析

本质就是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;                  # 域名1
    index 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

原创文章,作者:admin,如若转载,请注明出处:http://tencent.yundashi168.com/791.html

发表评论

邮箱地址不会被公开。 必填项已用*标注

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code

2020年阿里云618大促活动(有香港主机)

1核/2G/1M---91元1年,三年275元;
2核/4G/1M---320元1年,三年960元;
2核/8G/1M---416元1年,三年1093元;
4核/8G/1M---465元1年,三年1396元;
1核2G(香港,不用备案)---249元1年,三年888元;点击直达
还有还有4核8G6M、8核16G10M配置,价格很低很低!

注意:这个价,只有新用户才能看到;老用户借用家人身份重新注册,这个价格重新注册也不亏!

我知道了