分类 默认分类 下的文章

我想问只要重启esxi主机后
浏览器登录主机就会出现503 Service Unavailable。。。。
要每次ssh进去操作/etc/init.d/hostd start
那就可以进入界面

Ventoy官网
Ventoy是一个制作可启动U盘的开源工具。有了Ventoy你就无需反复地格式化U盘,你只需要把ISO/WIM/IMG/EFI文件拷贝到U盘里面就可以启动了,无需其他操作。 你可以一次性拷贝很多个不同类型的ISO文件,在启动时Ventoy会显示一个菜单来选择(截图)。
无差异支持Legacy BIOS和UEFI模式。支持大部分常见操作系统 (Windows/WinPE/Linux/Unix/VMware/Xen ...)

全局设置 ## ============================================================

日志

log-level=warn

log=/PATH/.aria2/aria2.log

后台运行

daemon=true

下载位置, 默认: 当前启动位置

dir=/PATH/Downloads

从会话文件中读取下载任务

input-file=/PATH/.aria2/aria2.session

在Aria2退出时保存错误/未完成的下载任务到会话文件

save-session=/PATH/.aria2/aria2.session

定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0

save-session-interval=30

断点续传

continue=true

启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M

disk-cache=32M

文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc

预分配所需时间: none < falloc ? trunc < prealloc

falloc和trunc则需要文件系统和内核支持

NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项

file-allocation=none

客户端伪装

user-agent=netdisk;5.2.6;PC;PC-Windows;6.2.9200;WindowsBaiduYunGuanJia
referer=http://pan.baidu.com/disk/home

禁用IPv6, 默认:false

disable-ipv6=true

其他

always-resume=true
check-integrity=true

下载位置 ## ============================================================

最大同时下载任务数, 运行时可修改, 默认:5

max-concurrent-downloads=5

同一服务器连接数, 添加时可指定, 默认:1

max-connection-per-server=5

最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M

假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载

min-split-size=10M

单个任务最大线程数, 添加时可指定, 默认:5

split=5

整体下载速度限制, 运行时可修改, 默认:0

max-overall-download-limit=0

单个任务下载速度限制, 默认:0

max-download-limit=0

整体上传速度限制, 运行时可修改, 默认:0

max-overall-upload-limit=0

单个任务上传速度限制, 默认:0

max-upload-limit=0

RPC设置 ## ============================================================

启用RPC, 默认:false

enable-rpc=true

允许所有来源, 默认:false

rpc-allow-origin-all=true

允许非外部访问, 默认:false

rpc-listen-all=true

事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同

event-poll=select

RPC监听端口, 端口被占用时可以修改, 默认:6800

rpc-listen-port=6800

设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项

rpc-secret=

是否启用 RPC 服务的 SSL/TLS 加密,

启用加密后 RPC 服务需要使用 https 或者 wss 协议连接

rpc-secure=true

在 RPC 服务中启用 SSL/TLS 加密时的证书文件,

使用 PEM 格式时,您必须通过 --rpc-private-key 指定私钥

rpc-certificate=/path/to/certificate.pem

在 RPC 服务中启用 SSL/TLS 加密时的私钥文件

rpc-private-key=/path/to/certificate.key

BT/PT下载相关 ## ============================================================

当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true

follow-torrent=true

BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999

listen-port=51413

单个种子最大连接数, 默认:55

bt-max-peers=55

trackers 列表

bt-tracker=udp://tracker.coppersurfer.tk:6969/announce,udp://tracker.opentrackr.org:1337/announce,udp://tracker.leechers-paradise.org:6969/announce,udp://p4p.arenabg.ch:1337/announce,http://p4p.arenabg.com:1337/announce,udp://9.rarbg.to:2710/announce,udp://9.rarbg.me:2710/announce,udp://exodus.desync.com:6969/announce,udp://tracker.cyberia.is:6969/announce,udp://open.stealth.si:80/announce,udp://tracker.tiny-vps.com:6969/announce,udp://retracker.lanta-net.ru:2710/announce,udp://tracker.torrent.eu.org:451/announce,udp://tracker3.itzmx.com:6961/announce,udp://tracker.moeking.me:6969/announce,http://tracker4.itzmx.com:2710/announce,http://tracker1.itzmx.com:8080/announce,udp://ipv4.tracker.harry.lu:80/announce,udp://explodie.org:6969/announce,udp://bt2.archive.org:6969/announce

打开DHT功能, PT需要禁用, 默认:true

enable-dht=false

打开IPv6 DHT功能, PT需要禁用

enable-dht6=false

DHT网络监听端口, 默认:6881-6999

dht-listen-port=6994

dht-file-path=/var/opt/aria2/dht.dat
dht-file-path6=/var/opt/aria2/dht6.dat

本地节点查找, PT需要禁用, 默认:false

bt-enable-lpd=false

种子交换, PT需要禁用, 默认:true

enable-peer-exchange=true

每个种子限速, 对少种的PT很有用, 默认:50K

bt-request-peer-speed-limit=50K

设置 peer id 前缀

peer-id-prefix=-TR2770-

当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0

seed-ratio=0

强制保存会话, 即使任务已经完成, 默认:false

较新的版本开启后会在任务完成后依然保留.aria2文件

force-save=false

BT校验相关, 默认:true

bt-hash-check-seed=true

继续之前的BT任务时, 无需再次校验, 默认:false

bt-seed-unverified=true

保存磁力链接元数据为种子文件(.torrent文件), 默认:false

bt-save-metadata=true

bt-max-open-files=16

参考:https://iclart.com/archives/391

安装
Pre-1.前言
ACME.sh是一个基于ACME协议的证书小工具,可以很方便的获取、续费基于ACME协议CA的证书

Part-1. ACME.sh的安装
ACME.sh的安装非常简单,仅需一个命令就可以搞定,该命令可以更新acme.sh
curl https://get.acme.sh | sh

由于部分过于纯净的系统没有cron,在安装ACME之前应该先运行此命令
sudo yum install cron* -y

会安装在 ~/.acme.sh/ 目录下,以后生成的证书也会在这里面,按照域名为文件夹安置。

理论上会自动添加一个 acme.sh 别名,但有时候并不会生成,需要手动执行以下命令:

source ~/.bashrc

使用dns api的模式进行证书申请

在阿里云获取AccessKey ID和AccessKey Secret
https://usercenter.console.aliyun.com/#/manage/ak
查看一下

export Ali_Key="key值"
export Ali_Secret="key Secret"

首次签发证书,下次就不用再次执行这个命令了

acme.sh --issue --dns dns_ali -d dgq.msdgq.com --force

安装证书:
运行如下命令即可自动安装(此命令会被ACME记录下来,当证书续期/更新时会自动执行)

acme.sh --install-cert -d dgq.msdgq.com \
--cert-file /etc/pki/tls/certs/dgq.msdgq.com.key \
--key-file /etc/pki/tls/private/dgq.msdgq.com.pem \
--fullchain-file /etc/pki/tls/certs/dgq.msdgq.com.cer \
--reloadcmd "systemctl reload httpd"

自动更新证书
Let's 的证书有效期为90天

acme升级
目前由于 acme 协议和 Let`s CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.

升级 acme.sh 到最新版 :

acme.sh --upgrade
如果你不想手动升级, 可以开启自动升级:

acme.sh --upgrade --auto-upgrade
之后, acme.sh 就会自动保持更新了.

你也可以随时关闭自动更新:

acme.sh --upgrade --auto-upgrade 0

Part-9. ACME.sh支持的其他命令/参数
ACME.sh命令构成
acme.sh [命令] [参数]

ACME.sh命令(只说常用的)
--uninstall
卸载ACME.sh

--upgrade
升级ACME.sh

--issue
签发新的证书

--install-cert
讲过了,参照上文

--renew, -r -d 域名
讲过了,参照上文

--renew-all
续期全部证书

--revoke
吊销证书

--remove
从ACME.sh中删除一张证书(记得先吊销)

--list
列出ACME.sh中的所有证书

--toPkcs
转换到pckcs12格式(pfx/p12),可以用于IIS

ACME.sh参数
--keylength, -k
指定密钥的长度,例如-k 2048,如需签发ECC算法密钥的证书,使用-k ec-256或-k ec-384即可

--ocsp-must-staple, --ocsp
签发带有OCSP Must Staple拓展的证书,先挖坑,过后再填

--server
指定ACME服务器,默认为Let's Encrypt,如果需要签发其他CA的证书(比如Buypass),可使用此参数指定,for example
acme.sh --issue -d example.com -d www.example.com --webroot /path/to/your/webroot --server https://api.buypass.com/acme/directory

每月自动更新证书
vi /etc/crontab
00 7 1 "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

免费SSL证书Let's Encrypt(certbot)安装使用教程

安装方法:
如果是CentOS 6、7,先执行:yum install epel-release

cd /root/
wget https://dl.eff.org/certbot-auto --no-check-certificate
chmod +x ./certbot-auto
./certbot-auto -n
./certbot-auto -n只是用来安装依赖包的,也可以跳过直接到下面的生成证书的步骤,国内VPS或服务器上使用的话建议先修改为国内的pip源。

修改pip源为国内的:
mkdir ~/.pip
cat > ~/.pip/pip.conf <<EOF
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=https://pypi.tuna.tsinghua.edu.cn
EOF

单域名生成证书:
./certbot-auto certonly --email youemail@vpser.net --agree-tos --no-eff-email --webroot -w /home/wwwroot/www.vpser.net -d www.vpser.net

多域名单目录生成单证书:(即一个网站多个域名使用同一个证书)

./certbot-auto certonly --email youemail@vpser.net --agree-tos --no-eff-email --webroot -w /home/wwwroot/www.vpser.net -d www.vpser.net -d bbs.vpser.net

多域名多目录生成一个证书:(即一次生成多个域名的一个证书)
/certbot-auto certonly --email youemail@vpser.net --agree-tos --no-eff-email --webroot -w /home/wwwroot/www.vpser.net -d www.vpser.net -d bbs.vpser.net -w /home/wwwroot/lnmp.org -d www.lnmp.org -d lnmp.org
就是生成成功。

生成的证书会存在:/etc/letsencrypt/live/www.vpser.net/ 目录下

证书续期
cerrbot的续期比原来的更加简单,因为证书只有90天,所以建议使用crontab进行自动续期:

crontab 里加上如下规则:0 3 /5 * /root/certbot-auto renew --disable-hook-validation --renew-hook "/etc/init.d/nginx reload" 这样每5天就会执行一次所有域名的续期操作。当然时间也可以自行进行调整,建议别太频繁,因为他们都有请求次数的限制,如果需要强制更新可以在前面命令上加上 --force-renew 参数。

第1章 Docker容器技术

1.1 容器技术核心概念

​ 抓住两点核心概念,轻松理解容器技术

  • 容器化技术是一种 划分硬件资源 的技术。

    将真实机的硬件资源,按照工程需要,划分成小块,形成容器

  • 一个容器,就是一个主机

    具备CPU、内存、磁盘、网卡等硬件资源,具有一台主机的完整机能

​ 容器技术有几项重大优势:

  • 安全性:约束了风险范围
  • 隔离性:进程与文件隔离,容易解决批量进程端口冲突问题
  • 低成本:容器按需分配硬件资源,资源冗余少,无需购置额外硬件
  • 易移植:容器中的软件不直接依赖真实机系统和CPU架构,一次编译,到处运行

1.2 Docker安装部署

​ Docker官网: https://www.docker.com/
​ Docker官方文档: https://docs.docker.com/engine/install/centos/

实训:安装Docker

#安装yum管理工具
yum install -y yum-utils

#设置docker官方软件仓库
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
    
#安装docker相关软件
yum install docker-ce docker-ce-cli containerd.io

#centos8需要安装依赖:
yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm
#安装docker相关软件
yum install docker-ce docker-ce-cli
#查看docker版本 验证安装
docker -v

#启动docker服务
systemctl start docker

#设置随机启动服务
systemctl enable docker

实训:优化Docker镜像代理

#查看docker信息
docker info

#更改docker**镜像保存目录**为/home/docker,通过**代理**拉取镜像
vim /etc/docker/daemon.json

在daemon.json文件中输入以下代理配置

{
"graph": "/home/docker"
"registry-mirrors":["https://obou6wyb.mirror.aliyuncs.com"]
}

加载代理配置

#建立docker代理文件
mkdir /etc/systemd/system/docker.service.d
vi /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://ip:port/"

#加载代理配置
systemctl daemon-reload

#重启docker服务
systemctl restart docker

#查看docker信息 验证配置
docker info

1.3 镜像管理

​ 镜像的核心概念

  • 容器技术募集硬件资源的目的,是为了运行软件,提供服务
  • 镜像是容器中运行软件的集合

    Docker镜像仓库: https://hub.docker.com/
    ​ 镜像管理命令主要有:

#搜索镜像 docker search [keyword]
docker search httpd

#拉取镜像 docker pull [image]
docker pull httpd
docker pull centos/httpd

#查看本地镜像
docker images

#高阶技巧 grep指令+regex正则 匹配特定镜像
docker images | grep '正则表达式' | awk '{print $3}'

1.4 容器管理

​ 有了镜像后,容器才能运行
​ 容器管理命令主要有:

#创建容器 容器的作用是运行镜像 docker run -it [image] 
docker run -it httpd

#退出容器 组合键 ctrl+c

#进入容器
docker exec -it 复制容器名称 bash

#查看容器
docker ps -a

#启动容器 docker start [containerID/containerName]
docker rm 复制容器名称
#停止容器 docker stop [containerID/containerName]
docker stop 复制容器名称

#删除容器 docker rm [containerID/containerName]
docker rm 复制容器名称

#高阶技巧 批量删除容器
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)

1.5 容器优化

​ 目前创建的容器还有几个问题:

  1. 容器创建后,会自动进入容器内部,没有后台运行
  2. 容器名称随机生成,不利于运维管理
    ​ 为了解决上述问题,需要掌握以下参数

    docker run 
     -d 容器后台运行
     --name 容器命名
     
    #优化httpd服务容器
    docker run -d --name webserver httpd
    
    #方便容器管理
    docker stop webserver
    docker rm webserver

1.6 端口映射

​ 为了将容器服务对外暴露,应当把容器服务监听端口映射到真实机端口,让外界可以访问

docker run 
    -p 真实机端口:容器服务端口

#端口映射
docker run -d --name webserver -p 8080:80 centos/httpd

服务的访问方式有三种:

  1. 容器ip地址:容器服务端口
  2. localhost:真实机端口 (本地访问)
  3. 真实机ip地址:真实机端口 (外部访问)

    创建与主机通网段的网络

    docker network create -d macvlan --subnet=192.168.10.0/24 --gateway=192.168.10.1 -o parent=enp2s0 macnet
    docker run -it --name vm2 --network=macnet --ip=192.168.10.3 ubuntu:dgq bash

1.7 文件映射

​ 容器服务重运算,轻存储。容器本身不宜存放大量数据
​ 数据、网页等文件应当存储在真实机磁盘中,不会随着容器删除而丢失
​ 将存储在真实机中的文件映射到容器中,容器服务可以使用这些文件

docker run 
    -v 真实机目录:容器目录
    
#文件映射
docker run -d --name webserver -p 8080:80 -v /root/html:/var/www/html centos/httpd

1.8 docker-compose介绍

​ docker-compose是docker官方提供的容器集群管理工具
​ docker-compose官网: https://docs.docker.com/compose/install/
docker-compose采用配置文件的方式管理工程,有以下优点:

  1. 把临时性的搭建工程,转变为有文件记载的工程,利于维护
  2. 把多步骤逐个搭建,转变为一次性批量搭建,效率高

    1.9 docker-compose安装

#下载docker-compose源码 
#curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

或者
#curl -L "http://dgq.msdgq.com/down/docker-compose" -o /usr/local/bin/docker-compose

#添加可执行权限
chmod +x /usr/local/bin/docker-compose

#查看docker-compose版本 验证安装
docker-compose version

1.10 docker-compose使用

​ docker-compose的使用重点在于配置文件的编写,以下为主要配置项:

一级配置二级配置配置作用与含义
version/版本声明
servicescontainer_name容器名称
image所用镜像
volumes数据卷映射
ports端口号映射
environment环境变量设置
working_directory工作目录设置
command启动执行命令

​ 编写一个web服务容器配置

version: "2"
services:
  webserver1:
    container_name: "webserver1"
    image: "centos/httpd"
    volumes:
      - /root/html:/var/www/html
    ports:
      - 8080:80

容器配置编写完成后,可通过docker-compose指令进行批量管理:

[root@localhost ~]# docker-compose -h
Define and run multi-container applications with Docker.
Options:
  -f, --file FILE             Specify an alternate compose file
                              (default: docker-compose.yml)
#查看docker-compose指令帮助可知:
##这是一个多容器集群管理工具
##默认配置文件名为docker-compose.yml

#启动集群
docker-compose up -d
docker-compose -f 配置文件路径 up -d

#关闭集群
docker-compose down -d

实训:搭建web服务容器集群

​ 编写docker-compose.yaml文件,定义多个web服务

version: "2"
services:
  web_server1:
    container_name: web_server1
    image: centos/httpd
    ports:
      - 80:80
    volumes:
      - /root/html:/var/www/html

  web_server2:
    container_name: web_server2
    image: httpd
    ports:
      - 8080:80
    volumes:
      - /root/html:/usr/local/apache2/htdocs

​ 完成后,在配置文件所在目录,执行docker-compose up -d指令启动容器

#清除多余容器
docker rm $(docker stop $(docker ps -aq))

#以下为界面显示内容,请勿直接复制
[root@localhost deploy]# pwd
/root/deploy
[root@localhost deploy]# ll
总用量 4
-rw-r--r-- 1 root root 318 6月  17 13:17 docker-compose.yaml
[root@localhost deploy]# docker-compose up -d
Creating web_server2 ... done
Creating web_server1 ... done
[root@localhost deploy]# docker ps -a
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                  NAMES
b861b14d5b41        centos/httpd        "/run-httpd.sh"      7 seconds ago       Up 6 seconds        0.0.0.0:80->80/tcp     web_server1
fe5b9b7a173b        httpd               "httpd-foreground"   7 seconds ago       Up 6 seconds        0.0.0.0:8080->80/tcp   web_server2