Skip to content
This repository has been archived by the owner on Feb 28, 2019. It is now read-only.

在一台VPS部署多个zmirror镜像

Aploium edited this page Aug 20, 2016 · 2 revisions

以下为手动部署教程, 非常建议使用一键部署脚本:
https://github.com/aploium/zmirror-onekey

前置需求

  • 一台国外的服务器

    • Ubuntu 14.04/15.10/16.04+
      建议的系统为 Ubuntu16.04-x86_64
    • 全新安装的系统
  • 至少两个三级域名(每个镜像一个), 已经解析到你服务器, 不支持中文域名

    三级域名指类似于这样的: g.mydomain.com 域名里有两个点, 三部分的

    至于如何将域名解析到你的服务器, 请自行Google相关说明
    本教程以 m2.zmirrordemo.com 为例

预先部署第一个镜像

请先按照部署支持HTTPS和HTTP/2的镜像中的步骤完成第一个镜像的部署, 并且测试可用以后, 再继续本教程

后续部署步骤中, 假定部署者已经按照以上教程成功完成了第一个镜像的部署

如果部署中出现任何问题或者不清楚的地方
点此发issue 提出
或者在 gitter 中请求实时帮助, 可以点击右边的图标进入gitter聊天室 Gitter
您会被加入到 CONTRIBUTORS.md 的贡献者列表中

第二个镜像

在本教程中, 以部署youtube-PC为第二镜像为例
部署完成后的效果可参考 https://ytb-pc.zmirrordemo.com/

安装并配置zmirror本身

第一镜像是Google, 之前已经安装到了/var/www/zmirror

很遗憾, 在目前, 一个zmirror文件夹只能放一个镜像
不同的镜像只能放在不同的zmirror安装文件夹中
所以如果需要部署第二镜像, 那么就需要单独开一个zmirror文件夹

假设将第二镜像(youtube-PC)的安装到 /var/www/youtube-pc

首先跟之前的教程一样, clone一份zmirror, 并且修改所有者为www-data(apache的用户, 给予写入权限)

以下脚本可以原样复制到shell中执行

cd /var/www &&
git clone https://github.com/aploium/zmirror.git youtube-pc &&
cd youtube-pc &&
chown -R www-data . && 
chgrp -R www-data .

youtube镜像需要使用自带的两个配置文件config_youtube.pycustom_func_youtube.py 需要把他们拷贝到程序根目录

cp more_configs/config_youtube.py config.py &&
cp more_configs/custom_func_youtube.py.py custom_func.py

之后需要手动修改 config.py, 在里面加上自己的域名

在大约第40行开始处, 的

# ############## Local Domain Settings ##############
my_host_name = 'www.localhost.com'
my_host_scheme = 'http://'

修改为如下, 修改两行, 添加一行

# ############## Local Domain Settings ##############
my_host_name = 'm2.zmirrordemo.com'
my_host_scheme = 'https://' # 注意把上面这行的http改成https
verbose_level = 2

请将其中的m2.zmirrordemo.com替换为你是自己实际的域名

新添加的 verbose_level = 2 这一行, 把zmirror的日志级别设置为Warning, 减少日志产生量.
默认是3级, 会产生大量debug日志

注意
只需要修改config.py. 不需要修改custom_func.py

使用let's encrypt获取证书

本步骤请参考上一篇教程中的部分 部署支持HTTPS和HTTP/2的镜像-获取证书

sudo service apache2 stop &&
cd ~/certbot &&
./certbot-auto certonly --agree-tos -t --standalone -d m2.zmirrordemo.com

请将上面脚本中 m2.zmirrordemo.com 替换为你自己的域名

配置Apache2

进入Apache2的配置文件夹, 将上一个教程中创建的配置文件复制一份为youtube-pc.conf
原有配置文件不需要修改

cd /etc/apache2/sites-enabled &&
cp my-first-mirror-site.conf youtube-pc.conf

然后修改里面对应的内容, 适应新部署的镜像, 在本例中, 修改后的youtube-pc.conf内容如下

<IfModule mod_ssl.c>
    SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
    <VirtualHost *:443>
        # 域名, 记得修改成你自己的
        ServerName m2.zmirrordemo.com
        
        # 这个没用的
        ServerAdmin root@localhost
        
        
        # 下面两个log文件路径也建议按实际修改
        # 默认保存在 /var/log/apache2/ 文件夹下
        # ErrorLog 中包含了zmirror产生的stdout输出, 若需要debug可以看它
        ErrorLog ${APACHE_LOG_DIR}/zmirror-youtube_pc_ssl_error.log
        CustomLog ${APACHE_LOG_DIR}/zmirror-youtube_pc_access.log combined

        # ##### WSGI 这部分是重点  ######
        WSGIDaemonProcess zmirror_youtube_pc user=www-data group=www-data threads=16
        #这是刚刚安装的zmirror的路径
        WSGIScriptAlias / /var/www/youtube-pc/wsgi.py
        WSGIPassAuthorization On

        # 给予zmirror文件夹权限
        <Directory /var/www/youtube-pc>
            WSGIProcessGroup zmirror_youtube_pc
            WSGIApplicationGroup %{GLOBAL}
            Order deny,allow
            Allow from all
        </Directory>

       # ######### SSL部分 这部分告诉Apache你的证书和私钥在哪 #########
       # 下面使用的是刚刚let's encrypt给我们的证书, 你也可以用别的
        SSLEngine on
        # 私钥
        SSLCertificateFile /etc/letsencrypt/live/m2.zmirrordemo.com/cert.pem
        # 证书
        SSLCertificateKeyFile /etc/letsencrypt/live/m2.zmirrordemo.com/privkey.pem
        # 证书链
        SSLCertificateChainFile /etc/letsencrypt/live/m2.zmirrordemo.com/chain.pem
       
       # HTTP/2
        <IfModule http2_module>
            Protocols h2 h2c http/1.1
        </IfModule>
    </VirtualHost>
</IfModule>

完成

很好, 所有部署工作已经完成了!
现在只需要重启一下Apache即可
sudo service apache2 restart

现在, 你的VPS上就同时运行了Google镜像和Youtube-PC镜像
对应的域名(按你自己的域名为准)分别为https://lovelucia.zmirrordemo.comhttps://m2.zmirrordemo.com
两者互不干扰

总结

同VPS多镜像, 主要是利用了Apache的visual host功能, 允许同一台服务器运行多个域名, 多个网站
上面的步骤基本就是在重复部署第一个镜像,

创建新的zmirror文件夹 --> 获取证书 --> 加一个新的Apache2配置文件

可选: 替换Google镜像中的Youtube为你的镜像域名

在默认情况下, 由于Google镜像并不知道你配置的Youtube镜像的存在,
所以当搜索结果出现Youtube时, 跳转到的仍然是真正的youtube, 而不是你的Youtube镜像
并且doodle中的视频也无法播放(因为依赖youtube)

但是可以通过配置, 使用镜像Youtube来替换掉真正的Youtube
替换方法非常简陋, 只是单纯的字符串替换, 但是却相当有效
不仅对网页搜索结果有效, 还对视频搜索/Doodle等有效

打开Google镜像的配置文件/var/www/zmirror/config.py
在配置文件中加入以下内容

url_custom_redirect_enable = True
plain_replace_domain_alias = [
    ('www.youtube.com','m2.zmirrordemo.com'),
]

把其中m2.zmirrordemo.com替换为你Youtube镜像的域名

然后保存, 重启Apache
sudo service apache2 restart

这样一来, 所有www.youtube.com都会被替换成你的域名
效果可以看到, 当点击google搜索结果中的youtube时, 进入的是你的镜像
https://g.zmirrordemo.com/search?q=youtube