跳至主要内容

博文

在严格限制的网络环境中自建docker仓库及代理dockerhub

  实现 Docker 镜像代理的工具有很多,但相对通用的却不多。本文将介绍如何使用 Docker Compose 快速搭建一个镜像代理,此方法也适用于其他软件源的代理。 如果你仅需要对单台机器设置docker网络代理,请查看这篇文章 原始链接 永久链接 所需软件 为了快速搭建环境,我们将使用 Docker Compose。对于 Docker Compose 的安装,这个先有鸡还是先有蛋的问题,还是交给魔法解决吧。以下是配置文件 docker-compose.yml : services: nexus: image: sonatype/nexus3:latest user: 0:0 # 仅因为该 yml 文件放在 /root 目录下,Docker 容器用户无权限,如放在其他目录且注重安全可删除此行 container_name: nexus3 restart: always ports: - 1024:8081 - 8001:8001 volumes: - ./nexus-data:/nexus-data 建议使用 Nginx 进行反向代理,并设置好单个请求文件的最大限制。 本文不涉及反向代理配置。 Nginx配置文件示例 启动并配置 启动 使用以下命令启动服务: docker compose up 启动后,使用以下命令获取管理员密码: docker exec -it nexus3 /bin/bash cat /nexus-data/admin.password 获取到的字符串即为 admin 用户的密码。首次登录时会要求修改密码。 在设置过程中,会询问是否允许匿名访问。如果只需要 Docker 仓库,建议设置为不允许,否则可以允许。但最终使用 Docker 仓库仍需执行 docker login 。 配置 配置 HTTP 代理 首先配置 HTTP 代理,访问 [server-ip]:1024/#admin/system/http ,在 Proxy Settings 中填写正确的 HTTP 代理。 配置仓库 删除无用的镜像仓库。 点击 “Create repository”,选择 “docker (proxy)”。 配置如...

Google Search Console 提交 Sitemap 的离奇错误

  Google Search Console 实在是太不人性化了。出现错误就是不说错误原因。 总结 如果你认为已经做了很多尝试,不会有其他遗漏的了.请直接将 https://20220228.xyz/sitemap.xml 修改为类似下面的结构 https://20220228.xyz//sitemap.xml/ 否则请往下看。 验证 sitemap 存在 curl https://20220228.xyz/sitemap.xml -I 验证 robots.txt 存在 及允许 谷歌机器人抓取 curl https://20220228.xyz/robots.txt 我的配置文件如下 # 允许Google和Bing的机器人抓取 User-agent: Googlebot Allow: / User-agent: Bingbot Allow: / # 拒绝其他所有机器人抓取 User-agent: * Disallow: / # 明确拒绝一些中国的机器人抓取 User-agent: Baiduspider Disallow: / User-agent: Sogou Disallow: / User-agent: 360Spider Disallow: / User-agent: YisouSpider Disallow: / 需要注意的是,如果想要更彻底地拒绝抓取,建议使用 CDN 的防火墙功能,因为 robots.txt 仅仅是一个建议标准。

mysql 性能调优教程及结果对比

  安装 为了便于对性能差异进行测试,本次使用 Docker 进行环境搭建。当然,这可能会导致性能瓶颈出现在磁盘和网络 I/O 上。 不过,就本次测试结果而言,并未出现这类问题。 services: mysql80_2gb: image: mysql:8.0 container_name: mysql80_2gb environment: MYSQL_ROOT_PASSWORD: rootpassword deploy: resources: limits: memory: 2g volumes: - mysql80_2gb_data:/var/lib/mysql command: > --default-authentication-plugin=mysql_native_password mysql80_8gb: image: mysql:8.0 container_name: mysql80_8gb environment: MYSQL_ROOT_PASSWORD: rootpassword deploy: resources: limits: memory: 8g volumes: - mysql80_8gb_data:/var/lib/mysql command: > --default-authentication-plugin=mysql_native_password mysql80_8gb_tuning: image: mysql:8.0 container_name: mysql80_8gb environment: MYSQL_ROOT_PASSWORD: rootpassword deploy: resources: limits: memory: 8g volumes: - mysql80_8gb_tuning:/var/lib/...

VirtualBox 开机自启动虚拟机

  在无法完全脱离Windows生态系统的情况下,我们可能需要在Linux环境下运行虚拟机来解决问题。 然而,每次手动启动虚拟机可能会有些麻烦,因此我们可以设置自动启动功能。 创建配置文件 touch /etc/default/virtualbox nano /etc/default/virtualbox 在打开的编辑器中添加以下内容: VBOXAUTOSTART_DB=/etc/vbox VBOXAUTOSTART_CONFIG=/etc/vbox/vbox.cfg 接下来,我们需要编辑虚拟机配置文件: nano /etc/vbox/vbox.cfg 确保文件中包含以下内容: INSTALL_DIR=/usr/lib/virtualbox 然后,在文件末尾添加以下内容: default_policy = deny user1[seele] = { allow = true } 接着,我们需要修改文件的权限和所属组: sudo chgrp vboxusers /etc/vbox sudo chmod 1775 /etc/vbox 最后,设置自动启动的数据库路径: VBoxManage setproperty autostartdbpath /etc/vbox 创建系统服务 现在,我们将创建一个 systemd 服务以实现虚拟机的自动启动: sudo nano /etc/systemd/system/autostart_vm@.service 在编辑器中添加以下内容: [Unit] Description=Guest VM %I After=network.target vboxdrv.service Before=runlevel2.target shutdown.target [Service] User=seele Group=vboxusers Type=forking TimeoutSec=5min IgnoreSIGPIPE=no KillMode=process GuessMainPID=no RemainAfterExit=yes ExecStart=/usr/bin/VBoxManage startvm %i --type headless ExecStop=/usr/bin/VBoxMa...

使用 galera创建mariaDB集群

  使用 galera创建mariaDB集群 OS-RELEASE PRETTY_NAME="Ubuntu 22.04.4 LTS" NAME="Ubuntu" VERSION_ID="22.04" VERSION="22.04.4 LTS (Jammy Jellyfish)" VERSION_CODENAME=jammy ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=jammy 1. 安装mariadb apt install mariadb-server-10.6 安装galera apt install galera-4 对应版本 注意版本问题,坑死我了。 2. 配置mariadb 2.1 配置mariadb远程访问 配置默认密码 mysql_secure_installation 允许远程以root用户登录 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; FLUSH PRIVILEGES; 2.2 配置mariadb为集群 nano /etc/mysql/conf.d/galera.cnf [mysqld] binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 bind-address=0.0.0.0 # Galera Provider Configura...