阿里云·万网虚拟机安装多站点教程

原创 楚盟  2016-11-04 20:49  阅读 4,774 views 次

八月份在淘宝上买了一个阿里云·万网基础版虚拟机120元(官方价288),2G空间、100M数据库、月流量20G、并发150个连接、千兆共享,支持绑定30个域名;

之所以没有选VPS的原因是国内带宽太贵而且1M起步,最低都要480一年,所以感觉不划算,还有个问题是我现在不是很喜欢折腾运行环境,用虚拟机省事专心建站就好了;

我手下目前有四个流量不大的站点,其中三个小的可怜流量可以忽略不计,也就本博客一个月有个那么3万ip流量,并且我的站点图片和视频托管在七牛上,这样一来2G空间跟20G流量一个月是足够满足需求的;

这次遇到的问题是,阿里云·万网虚拟机可以绑定三十个域名但是在控制面板中无法直接建立多站点,官方这方面有点坑,说是支持30个域名却不能直接建立30个对应的不同站点那还有个鸟用,正常站点谁会吃饱了绑定30个域名呢~~

不过呢可以通过分布式配置文件.htaccess来手动实现多站点功能

阿里云·万网虚拟机安装多站点教程

首先新建一个.htaccess文件放ftp下的htdocs目录中,这个用来引导不同域名访问对应目录下的网站;
比如我把www.5yun.org这个域名绑定在了5yun这个目录下面,www.zhousiyu.com这个域名绑定在了siyu这个目录下面

.htaccess配置内容如下:

RewriteEngine On
RewriteBase /

# 绑定域名5yun.org及www.5yun.org到5yun目录
RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{HTTP_HOST} ^(www\.)?5yun\.org$ [NC]
RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{REQUEST_URI} !^/5yun/
RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{REQUEST_FILENAME} !-f
RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ 5yun/$1
RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{HTTP_HOST} ^(www\.)?5yun\.org$ [NC]
RewriteRule ^(/)?$ 5yun/index.php [L]



# 绑定域名zhousiyu.com及www.zhousiyu.com到siyu目录
RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{HTTP_HOST} ^(www\.)?zhousiyu\.com$ [NC]
RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{REQUEST_URI} !^/siyu/
RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{REQUEST_FILENAME} !-f
RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ siyu/$1
RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{HTTP_HOST} ^(www\.)?zhousiyu\.com$ [NC]
RewriteRule ^(/)?$ siyu/index.php [L]

也就是说这个.htaccess文件负责引导对应域名访问指定目录下的站点;通过这个设置已经可以正常访问绑定的域名站点;
至此还没有完,因为两个域名之间可以跨域访问,非常不利于SEO,比如可以用www.5yun.org/siyu来访问www.zhousiyu.com的站点,搜索引擎会被访问到跨域网址;这对优化很不利,所以要禁止跨域加载问题;

进入到5yun目录下编辑.htaccess这个文件

阿里云·万网虚拟机安装多站点教程

.htaccess内容如下

RewriteEngine On
# 禁止通过非本网站域名访问
RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{HTTP_HOST} !^(www.)?5yun.org$ [NC]
RewriteRule ^.*$ [L,r=404]

有多少个站点就要分别对每个站点添加这样的限制访问规则,这样就不怕跨域访问问题了!

最后说说关于数据库的问题:

因为虚拟机只有一个数据库,如果建多站点就只能把多站点的数据库混合在一个库中,这个操作对小白来说非常危险,因为数据库前缀千万不能相同不然会破坏掉其它站点的数据库,必须修改数据库前缀防止冲突,操作前一定要备份原有数据再操作!

本文地址:https://www.5yun.org/9651.html
关注我们:请关注一下我们的微信公众号:扫描二维码楚盟网的公众号,公众号:chubin5yun
版权声明:本文为原创文章,版权归 楚盟 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

  1. 广告任务网
    广告任务网 【农民】 @回复

    很不错的样子⊙0⊙

  2. 一生一世套图
    一生一世套图 【农民】 @回复

    没玩过博客,来看看了!

  3. 工控资料窝
    工控资料窝 【农民】 @回复

    很厉害 阿里云 有点贵的

  4. 阿策阳光
    阿策阳光 【农民】 @回复

    WordPress mutisite 自带的.htaccess 就可以

    • 楚斌
      楚斌【站长】2017-01-27 at 00:12  回复

      @阿策阳光这个我还真没想到,下次我试试 :mrgreen: :mrgreen: :mrgreen:

  5. 管不着
    管不着 【农民】 @回复

    因为两个域名之间可以跨域访问,非常不利于SEO,比如可以用www.5yun.org/siyu来访问www.zhousiyu.com的站点。直接可以跨域访问????

    • 楚盟
      楚盟【站长】2017-02-28 at 20:46  回复

      @管不着或许做个301跳转能搞定,现在我已经放弃阿里云虚拟机建多站点了 :cry:

  6. 管不着
    管不着 【农民】 @回复

    早上好。我是阿里云linux虚拟机上配置api服务器。希望达到的效果是www域名去请求api域名下面的数据(api域名是www域名的二级子域名)。看到你的文章以后我尝试在linux虚拟机上配置了.htaccess文件

    我在虚拟机里面。是这样配置.htaccess文件的。

    但是结果是。api域名和www域名可以单独访问,并且进入不同的目录。但是www域名还是无法访问api下面的数据。提示没有Access-Control-Allow-Origin。
    不过同样的程序在linux服务器上配置nginx以后就可以成功。
    为什么虚拟机上不可以呢。我配置nginx的时候感觉和配置.htaccess文件是一样的:都是把域名引入到nginx下面。而且在windows上用apache也可以成功。好起奇怪

    RewriteEngine On
    RewriteBase /
    
    RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{HTTP_HOST} ^(www\.)?zds2016\.com$ [NC]
    RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{REQUEST_URI} !^/ECShop/source/ecshop
    RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{REQUEST_FILENAME} !-f
    RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ zds2016/$1
    RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{HTTP_HOST} ^(www\.)?zds2016\.com$ [NC]
    RewriteRule ^(/)?$ ECShop/source/ecshop [L]
    
    RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{HTTP_HOST} ^(api\.)?zds2016\.com$ [NC]
    RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{REQUEST_URI} !^/ECShop/source/appserver/public
    RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{REQUEST_FILENAME} !-f
    RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ zds2016/$1
    RewriteCond {81884d97e9b29c62b51e96f64ab73971eea5e110197642196c83fe2aecc74b14}{HTTP_HOST} ^(api\.)?zds2016\.com$ [NC]
    RewriteRule ^(/)?$ ECShop/source/appserver/public/index.php [L]
    
    • 楚盟
      楚盟【站长】2017-03-01 at 23:37  回复

      @管不着Access-Control-Allow-Origin这个提示应该是提示不允许跨域访问,虚拟机做了限制,还是用服务器吧,虚拟机太折腾了我都放弃了不玩了; :arrow:万网虚拟机真的很坑,功能有限还不如类似衡天主机之类的小IDC,如果不是备案麻烦我就搬家咯;对于你这个问题我也搞不定;

      • 哈哈
        哈哈 【农民】2017-03-02 at 14:13  回复

        @楚盟换成服务器了。谢谢楼主

        • 楚盟
          楚盟【站长】2017-03-02 at 14:53  回复

          @哈哈客气了,我也一点忙都没有帮上

  7. A旗舰店
    A旗舰店 【农民】 @回复

    这个不错!