zmirror 一键部署脚本

运行方法

我没有SSL证书 (如果不懂, 请使用这个)

sudo apt-get -y update && sudo apt-get -y install python3 git
git clone https://github.com/aploium/zmirror-onekey.git --depth=1
cd zmirror-onekey
sudo python3 deploy.py
然后按照脚本给予的提示继续, 过程中会自动获取SSL证书
如果有不懂的, 可参考下面的安装视频
如果遇到bug, 请发issues提出

我已有SSL证书
如果已有证书, 希望使用自己提供的证书, 而不是通过 let’s encrypt 获取
请将上面代码中的第四行替换成下面的样子, 在运行期间会提示你输入证书路径的:

sudo python3 deploy.py --i-have-cert
ubuntu 出错 :apt-get install -y python-pip
pem 转发crt :openssl x509 -outform der -in certificate.pem -out certificate.crt
警告
不支持加密的私钥, 如果私钥有密码加密, 请先解密

部署多个 zmirror 镜像(以 tumblr 为例)

  • 已经部署了一个镜像,想部署第二个
  • 下载 zmirror clone 一份 zmirror, 并且修改所有者为 www-data (apache 的用户, 给予写入权限)
cd /var/www &&
git clone https://github.com/aploium/zmirror.git tumblr &&
cd tumblr &&
chown -R www-data . && 
chgrp -R www-data .
  • 配置 zmirror
cp more_configs/config_thumblr.py config.py
  • 手动修改 config.py, 在里面加上自己的域名
# ############## Local Domain Settings ##############
my_host_name = 'www.localhost.com'
my_host_scheme = 'http://'
  • 修改为如下, 修改两行, 添加一行

请将其中的g.caisan.ml替换为你是自己实际的域名 新添加的 verbose_level = 2 这一行, 把 zmirror 的日志级别设置为Warning, 减少日志产生量. 默认是 3 级, 会产生大量 debug 日志

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

请将其中的tumblr.caisan.ml替换为你是自己实际的域名

  • 使用 let’s encrypt 获取证书 本教程使用 let’s encrypt 证书, 获取非常快, 但是有效期只有 90 天, 到期前需要重新获取 请将下面脚本中 g.caisan.ml 域名修改为你自己的域名, 修改后能直接复制进去运行 为保证兼容性, 本教程使用 standalone 模式获取证书, 所以需要先停掉 apache(包含在下面脚本中了)
sudo service apache2 stop &&
cd ~ &&
git clone https://github.com/certbot/certbot &&
cd certbot &&
./certbot-auto certonly --agree-tos -t --standalone -d g.caisan.ml

生成的证书存储在/etc/letsencrypt/live/g.caisan.ml/

  • 配置 Apache2

进入 Apache2 的配置文件夹, 新建一个tumblr.conf文件 cd /etc/apache2/sites-enabled && vi tumblr.conf

然后进入/etc/apache2/sites-enabled文件夹,创建一个google.conf文件, 内容如下 (记得修改对应的域名和文件夹等东西)

<IfModule mod_ssl.c>
    SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
    <VirtualHost *:443>
        # 域名, 记得修改成你自己的
        ServerName tumblr.caisan.ml

        # 这个没用的
        ServerAdmin root@localhost


        # 下面两个log文件路径也建议按实际修改
        # 默认保存在 /var/log/apache2/ 文件夹下
        # ErrorLog 中包含了zmirror产生的stdout输出, 若需要debug可以看它
        ErrorLog ${APACHE_LOG_DIR}/zmirror-tumblr_ssl_error.log
        CustomLog ${APACHE_LOG_DIR}/zmirror-tumblr_access.log combined

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

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

       # ######### SSL部分 这部分告诉Apache你的证书和私钥在哪 #########
       # 下面使用的是刚刚let's encrypt给我们的证书, 你也可以用别的
        SSLEngine on
        # 私钥
        SSLCertificateFile /etc/letsencrypt/live/tumblr.caisan.ml/cert.pem
        # 证书
        SSLCertificateKeyFile /etc/letsencrypt/tumblr.caisan.ml/privkey.pem
        # 证书链
        SSLCertificateChainFile /etc/letsencrypt/live/tumblr.caisan.ml/chain.pem

       # HTTP/2
        <IfModule http2_module>
            Protocols h2 h2c http/1.1
        </IfModule>
    </VirtualHost>
</IfModule>
  • 重启 Apache2
sudo service apache2 restart
  • 设置重定向 在/etc/apache2/sites-available/000-default.conf 中加入以下设置, 使得 HTTP 能自动跳转到 HTTPS 加在<VirtualHost> </VirtualHost>括起来范围的里面
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</IfModule>