Tunasync 搭建私有镜像站

Tunasync 项目简介

Tunasync 是一个开源的镜像站点镜像工具,可以帮助你快速搭建一个镜像站点,也可以帮助你快速的同步镜像站点的镜像。我们所熟知的清华大学镜像站就是使用 Tunasync 来同步镜像的。

准备 workspace

创建目录用于存放 Tunasync 的程序、配置文件和数据库文件:

mkdir /home/username/tunasync
mkdir /home/username/tunasync/conf
mkdir /home/username/tunasync/db

创建目录用于存放镜像文件:

sudo mkdir /srv/mirrors

srv 目录需要 root 权限,将 mirrors 目录的所有者改为当前用户:

sudo chown -R username:username /srv/mirrors

下载 Tunasync

可以从 Tunasync 项目的 Github releases 编译好的程序直接使用。

cd /home/username/tunasync
wget https://github.com/tuna/tunasync/releases/download/v0.8.0/tunasync-linux-amd64-bin.tar.gz
tar -zxvf tunasync-linux-amd64-bin.tar.gz

配置 Tunasync

Manager 配置

创建配置文件/home/username/tunasync/conf/manager.conf,并添加以下内容:

debug = false

[server]
addr = "127.0.0.1"
port = 12345
ssl_cert = ""
ssl_key = ""

[files]
db_type = "bolt"
db_file = "/home/username/tunasync/db/manager.db"
ca_cert = ""

Worker 配置

创建配置文件/home/username/tunasync/conf/worker-openeuler.conf,并添加以下内容:

[global]
name = "openeuler_worker"
log_dir = "/srv/mirrors/log/tunasync/{{.Name}}"
mirror_dir = "/srv/mirrors"
concurrent = 10
interval = 1440

[manager]
api_base = "http://localhost:12345"
token = "some_token"
ca_cert = ""

[cgroup]
enable = false
base_path = "/sys/fs/cgroup"
group = "tunasync"

[server]
hostname = "localhost"
listen_addr = "127.0.0.1"
listen_port = 16010
ssl_cert = ""
ssl_key = ""

[[mirrors]]
name = "centos"
provider = "rsync"
upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/openeuler/"
use_ipv6 = false

启动 Tunasync

启动 Manager

cd /home/username/tunasync
./tunasync manager -c conf/manager.conf >> /srv/mirrors/log/plog/manager.log &

启动 Worker

cd /home/username/tunasync
./tunasync worker -c conf/worker-openeuler.conf >> /srv/mirrors/log/plog/worker-openeuler.log &

通常可能同步不止一个镜像站点,可以创建多个 Worker 配置文件,然后启动多个 Worker。

创建 web 服务

  1. 安装 Apache2:

    sudo apt update
    sudo apt install apache2
  2. 修改配置文件:

    Ubuntu 中的 Apache2 主要配置文件是 /etc/apache2/apache2.conf。可以在此文件中进行全局配置,也可以使用专门的配置文件,例如 /etc/apache2/sites-available/your-site.conf

    sudo nano /etc/apache2/apache2.conf

    apache2.conf 文件中,添加以下行,设置 DocumentRoot 和目录访问权限:

    DocumentRoot /mirrors
    
    <Directory "/mirrors">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

    请确保将 <Directory> 部分添加到正确的位置。可以在文件中找到 <Directory /var/www/> 部分,然后在该部分下添加配置。

  3. 重新启动 Apache2 服务:

    在进行配置更改后,需要重新启动 Apache2 服务以使更改生效:

    sudo systemctl restart apache2
  4. 补充文件:

    index.html 文件和其他需要的文件添加到 /srv/mirrors 目录中。

  5. 测试:

    打开 Web 浏览器,访问 http://your-server-iphttp://localhost,应该能够看到 /srv/mirrors 目录中的文件。

  6. 如打不开,需要开启防火墙

    sudo ufw allow http
    sudo ufw allow https
  7. 修改 Web 服务端口

    1. 编辑 Apache2 配置文件:

      sudo nano /etc/apache2/ports.conf
    2. **在文件中找到 Listen​ ** 行,修改端口:

      Listen 2081
    3. 编辑虚拟主机配置(如果有):

      如果你有虚拟主机配置文件(通常在 /etc/apache2/sites-available/ 中),确保其中的 <VirtualHost> 部分中的端口也被修改为 2081。

    4. 保存并退出配置文件。

    5. 重启 Apache 服务:

      sudo systemctl restart apache2

打开防火墙端口

1. **打开 2081 端口:**

    
sudo ufw allow 2081
2. **检查配置:**
sudo ufw status
确保 2081 端口已经正确添加。 3. **重启防火墙(可选):**
sudo ufw reload
或者
sudo systemctl restart ufw
这样,你就将 Apache2 Web 服务的端口修改为 2081,并且只开放了 2081 端口。确保修改了防火墙规则后,仍能够通过新的端口访问你的网站。