阅读前提:了解国内外云服务(如阿里云、Amazon Web Services),并有一定的使用经验

注册

注册一个微软账户即可,具体步骤可以参考知乎的这篇文章(如何白嫖微软Azure12个月及避坑指南 - 知乎 (zhihu.com)),

注意:这篇文章写了有很久了,azure的策略可能已经更改,由此可能产生费用,大家实践的时候一定要看清收费策略,或者提前咨询客服,避免不必要的损失。

Azure服务

以下是常用的azure服务:

1.png

以下表格是Azure、阿里云和AWS的云服务的对应关系

Azure阿里云AWS备注
订阅(Subscriptions)
资源组(Resource groups)资源组
虚拟机(Virtual machine)云服务器ECSEC2
磁盘(Disk)云盘卷(Volume)
虚拟网络(Virtual network)专有网络VPC
网络接口(Network Interface)交换机网络接口(Network interface)
网络安全组(Network security group)安全组安全组(Security Group)
公共 IP 地址(Public IP address)公网IP公有 IPv4 /IPv6地址(Public IPv4/IPv6 address)
SSH 密钥(SSH key)密钥对密钥对(Key Pair)

虚拟机

创建

基本

createvm1png

项目详情信息

    订阅(一个 Azure 订阅中的所有资源在一起计费。):默认。

        资源组(资源组是共享相同生命周期、权限和策略的资源的集合。):一般按环境(dev、test、prod)或产品或地域来划分资源组,根据实际情况选择。

实例详细信息

    虚拟机名称Azure 中的虚拟机有两个不同的名称: 用作 Azure 资源标识符的虚拟机名称,以及来宾主机名称中的名称。在门户中创建 VM 时,虚拟机名称和主机名称相同。创建 VM 后,不可更改虚拟机名称。但可在登录虚拟机时更改主机名称。):根据实际情况命名。

    区域(选择适合你和你的客户的 Azure 区域。并非所有 VM 大小在所有区域中可用。):根据实际情况选择。如访问者在国内居多,建议使用((Asia Paciffic) Japan East 日本东京 、 (Asia Paciffic) East Asia 香港 、 (Asia Paciffic) Korea South 韩国首尔),实测日本东京效果最好,实际情况可能还会因地域、电信运营商、网络环境、时间等因素而产生差异。

    可用性选项(Azure 提供一系列用于管理应用可用性和复原性的选项。构建自己的解决方案,在可用性区域或可用性集中使用复制的虚拟机,以便在数据中心运行中断和维护时为应用和数据提供保护。了解详细信息):根据实际情况选择。

    安全类型(安全类型是指可用于虚拟机的不同安全功能。受信任的启动和机密虚拟机等安全功能有助于提高 Azure 第 2 代虚拟机的安全性。但是,其他安全功能有一些限制,包括不支持备份、托管磁盘和临时 OS 磁盘。详细了解受信任的启动虚拟机机密虚拟机。):默认

    映像(为 VM 选择基本操作系统或应用程序):根据实际情况选择。如果选择内存较小的虚拟机,建议使用Debian系列映像

    VM 体系结构(Azure 提供了基于 x64 或 Arm64 的虚拟机选项来运行你的应用程序。基于 x64 的 VM 提供最强的软件兼容性,而基于 Arm64 的 VM 的性价比相比可比较的 x64 VM 最多高出 50%。基于 Arm64 的 VM 还可帮助开发人员无需进行交叉编译即可构建与 Arm 兼容的软件。了解更多信息):根据实际情况选择。一般选择x64

    使用 Azure 现成虚拟机折扣运行(Azure 现成 VM 分别按折扣费率和即用即付价格来提供未使用的 Azure 容量。工作负载应能够容忍基础结构丢失,因为 Azure 可能会撤回即用即付工作负载的容量。详细了解 Azure 现成 VM 实例。):这是为了防止你的用量超过免费额度。根据实际情况选择。

    大小:如果要使用免费额度,就选择Standard_B1s,否则根据实际情况选择。

管理员帐户

    身份验证类型(选择管理员帐户是使用用户名/密码还是 SSH 密钥进行身份验证。):建议使用SSH公钥而非密码。

    用户名(VM 的管理员用户名):自定义。

    SSH公钥源:①如果你的Azure已有密钥对,直接选择使用Azure中存储的现有密钥对;②如果你确保你的上网环境及设备是安全的,就选择生成新密钥对,在完成创建虚拟机后,你有一次下载私钥的机会,公钥将由Azure-SSH密钥保管;③如果你无法确保你的上网环境是安全的或者你在本地已经拥有密钥,建议选择使用现有公钥,并输入你的公钥。

入站端口规则

    公共入站端口 (默认情况下,对虚拟机的访问仅限于同一虚拟网络中的源和 Azure 负载均衡解决方案中的流量。选择“无”以确认,或选择允许通信流从公共 Internet 到达这些常用端口中的一个。):建议选择允许选定的端口

    选择入站端口: 选择SSH(22),并根据实际需求尽量少地添加入站端口。

磁盘

createvm2png

VM磁盘加密

    主机加密(主机加密通过平台管理的密钥、OS 和数据磁盘缓存,使用密钥管理下拉列表中指定的密钥加密临时磁盘和临时 OS 磁盘,并将加密内容流动到存储服务。了解更多信息): 默认。

OS磁盘

    OS磁盘大小(通过 Azure 免费帐户可能免费获得特定的 OS 磁盘大小。了解详细信息):如果要使用免费额度,那就选择重设大小为64GB(P6)免费账户可用。否则根据实际情况选择。

    OS磁盘类型(可以选择用于支持工作负荷或方案的 Azure 托管磁盘类型。了解托管磁盘的类型):如果要使用免费额度,那就选择高级SSD(本地冗余存储)

    使用 VM 删除(磁盘独立于虚拟机继续存在。当删除关联的虚拟机时,可以选择自动删除磁盘。了解详细信息):根据实际情况选择

密钥管理(磁盘加密集存储客户密钥,磁盘或快照将使用该密钥加密其数据。在此步骤中必须选择现有磁盘加密集。磁盘加密集需要访问密钥保管库和密钥。详细了解磁盘加密集。):取决于SSH公钥源

启用超级磁盘兼容性(Azure 超级磁盘可为 Azure IaaS VM 提供高吞吐量、高 IOPS 和一致的低延迟磁盘存储。超级磁盘适用于数据密集型工作负载(如 SAP HANA)、顶层数据库和事务繁重型工作负载。添加此功能会产生保留费用,但只有在 VM 上启用超级磁盘功能而不附加超级磁盘时,才会收取该保留费用。了解详细信息):默认。

数据磁盘:根据实际需求而定。

网络

createvm3png

网络接口

虚拟网络:根据实际情况选择。如果没有,则新建。

公用IP:根据实际情况选择。如果没有,则新建。

    创建公共IP地址

        名称:自定义。建议命名方式“{虚拟机名称}-ip-{第几个}”

        SKU(公共 IP 的 SKU 必须与搭配使用的负载均衡器的 SKU 一致。了解详细信息):选择标准

        分配(标准 SKU 仅支持静态分配。):静态

        路由首选项(确定流量在 Azure 和 Internet 之间的路由方式。选择 Microsoft 全球网络可通过距离用户最近的 Microsoft 全局网络传递流量。Internet 路由选项使用中转 ISP 网络。流出数据传输价格因选择的路由方式而异。公共 IP 的路由首选项一旦创建就不能更改了。详细了解路由首选项):

管理

createvm4png

缺省。

监视

createvm5png

缺省。

高级

createvm6png

缺省。

标记

createvm7png

缺省。

查看 + 创建

createvm8png

连接

createvm9png

以 WSL on Windows 为例:

  1. 打开WSL,进入~/.ssh目录(如果不存在则创建),将下载好的私钥文件拷贝到WSL下。`

    cd ~/.ssh
    cp /mnt/c/Users/CaoXuan/Downloads/my-zure.key .

    上面的命令将会把C:\Users\CaoXuan\Downloads\my-zure.key拷贝到WSL下。

  2. 在~/.ssh/config文件(如果不存在则创建)中追加以下内容(根据你的情况进行修改):

    Host    my-azure
         Hostname        0.0.0.0(你的虚拟机的公网IP)
         Port    22
         User    azureuser(你的用户名)
         IdentityFile    ~/.ssh/my-azure.pem(你的私钥)
  3. 连接虚拟机

    ssh my-azure

Debian/Ubuntu使用Nexus的私有镜像源

以Debian11为例

  1. 修改/etc/apt/source.list

    vim /etc/apt/source.list
    # deb cdrom:[Debian GNU/Linux 11.2.0 _Bullseye_ - Official amd64 DVD Binary-1 20211218-11:13]/ bullseye contrib main
    
    #deb cdrom:[Debian GNU/Linux 11.2.0 _Bullseye_ - Official amd64 DVD Binary-1 20211218-11:13]/ bullseye contrib main
    
    deb http://deb.debian.org/debian/ bullseye main
    deb-src http://deb.debian.org/debian/ bullseye main
    
    deb http://security.debian.org/debian-security bullseye-security main contrib
    deb-src http://security.debian.org/debian-security bullseye-security main contrib
    
    # bullseye-updates, to get updates before a point release is made;
    # see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports
    deb http://deb.debian.org/debian/ bullseye-updates main contrib
    deb-src http://deb.debian.org/debian/ bullseye-updates main contrib

    把其中的地址替换成你的私有镜像源地址

    # deb cdrom:[Debian GNU/Linux 11.2.0 _Bullseye_ - Official amd64 DVD Binary-1 20211218-11:13]/ bullseye contrib main
    
    #deb cdrom:[Debian GNU/Linux 11.2.0 _Bullseye_ - Official amd64 DVD Binary-1 20211218-11:13]/ bullseye contrib main
    
    deb http://mirror.nfools.org:8081/repository/debian-bullseye/ bullseye main
    deb-src http://mirror.nfools.org:8081/repository/debian-bullseye/ bullseye main
    
    deb http://security.debian.org/debian-security bullseye-security main contrib
    deb-src http://security.debian.org/debian-security bullseye-security main contrib
    
    # bullseye-updates, to get updates before a point release is made;
    # see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports
    deb http://deb.debian.org/debian/ bullseye-updates main contrib
    deb-src http://deb.debian.org/debian/ bullseye-updates main contrib

    保存并退出

  2. 创建/etc/apt/auth.conf.d/nexus.local.intranet.conf(如果你的仓库允许匿名访问,则忽略这一步)

    vim /etc/apt/auth.conf.d/nexus.local.intranet.conf

    配置你的镜像源地址、登录名和密码

    machine http://mirror.nfools.org:8081/
    login public
    password public

    保存并退出

  3. 更新apt

    apt update

以Ubuntu为例

同上,略。

假如你要使用if语句判断Query类的成员变量in是否为null,你可能会这么写: <if test="null != query.in"></if>(错误)


正确的做法是把Query类的in变量名改成其它名字,比如改成contains <if test="null != query.contains"></if>(正确)

1.在套件中心停用Gitlab。
屏幕截图 2022-10-07 225900.png
2.打开docker,右键编辑synology_gitlab,在端口设置中将本地端口44333(自定义), 映射到容器端口443,然后在环境变量中新增GITLAB_HTTPS true
屏幕截图 2022-10-07 230252.png
屏幕截图 2022-10-07 230325.png
完成以上步骤后,重启Gitlab,就可以在浏览器上使用https访问Gitlab了。
但是当使用克隆代码时,仍然是使用原来的端口。
3.在环境变量中修改GITLAB_PORT的值为44333(自定义)
屏幕截图 2022-10-07 230713.png
然后重启Gitlab就完事了。

MySQL8.0主从同步

参考:https://www.cnblogs.com/kylinlin/p/5258719.html

一、 主数据库

1.修改配置文件

vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]

log-bin=mysql-bin

server-id=1

2.锁表

mysql > flush tables with read lock;

3.备份

mysqldump -u root -p 'root' -S /var/run/mysqld/mysqld.sock kpc | gzip > /tmp/mysql_bak.$(date +%F).sql.gz

4.创建用户并授权

CREATE USER 'rep'@'%' IDENTIFIED WITH mysql_native_password BY 'rep';
GRANT REPLICATION SLAVE ON *.* TO 'rep'@'%';

5.记录信息

mysql > show master status;

6.重启

sudo systemctl restart mysql

二、从数据库

1.修改配置文件

vim /etc/mysql/mysql.conf.d/mysqld.cnf

server-id != 1

[mysqld]

server-id=2

2.配置Master

MASTER_USER

MASTER_PASSWORD

MASTER_LOG_FILE

MASTER_LOG_POS

mysql> CHANGE MASTER TO

-> MASTER_HOST='master_host_name',

-> MASTER_USER='rep',

-> MASTER_PASSWORD='rep',

-> MASTER_LOG_FILE='mysql-bin.000001',

-> MASTER_LOG_POS=156

3.运行

mysql > start slave;