Category

运维部署

docker 部署 nexus

运维部署

docker 安装 nexus

bash
#!/bin/bash

docker run -d --user root -p 8081:8081 -v /opt/nexus-data:/nexus-data --name nexus3 sonatype/nexus3:latest

数据目录映射到主机的 /opt/nexus-data,容器的/nexus-data

配置签名

本来不知道有这步的,但是偶然点进了system status界面,看到一个红叉和Nexus was not configured with an encryption key and is using the Default key.

签名配置是一个json文件,默认没有生成(起码我没找到),格式如下

json
{
  "active": "key-id",
  "keys": [
    {
      "id": "key-id",
      "key": "base64 key"
    }
  ]
}

这个key可以通过 openssl rand -base64 16 生成

有两种方式指定配置文件路径,一种是使用环境变量,另一种是nexus配置文件(/opt/nexus-data/etc/nexus.properties),我使用的是nexus配置文件,在配置文件添加一行

纯文本
nexus.secrets.file=/nexus-data/secrets.json

关闭central

因为我的nexus搭建在家里云,本身上行带宽就不高,不希望跑太多流量

取消勾选 repository > centralonline

安全

禁用admin用户

因为admin用户名是默认的管理员账号,所以禁用之,然后创建子管理用户,给管理角色,并保存

创建ci用户并分配权限

准备后续使用ci推送构件到nexus,所以专门分配一个ci用户

给了如下权限

  • nx-repository-view-maven2-maven-central-add
  • nx-repository-view-maven2-maven-central-browse
  • nx-repository-view-maven2-maven-central-edit
  • nx-repository-view-maven2-maven-central-read
  • nx-repository-view-maven2-maven-public-add
  • nx-repository-view-maven2-maven-public-browse
  • nx-repository-view-maven2-maven-public-edit
  • nx-repository-view-maven2-maven-public-read
  • nx-repository-view-maven2-maven-releases-add
  • nx-repository-view-maven2-maven-releases-browse
  • nx-repository-view-maven2-maven-releases-edit
  • nx-repository-view-maven2-maven-releases-read
  • nx-repository-view-maven2-maven-snapshots-add
  • nx-repository-view-maven2-maven-snapshots-browse
  • nx-repository-view-maven2-maven-snapshots-edit
  • nx-repository-view-maven2-maven-snapshots-read

尝试推送

招了一个gradle项目,配置publish

纯文本
publishing {
    repositories {
        maven {
            name = "snapshot"
            url = uri("http://localhost:8081/repository/maven-snapshots/")
            isAllowInsecureProtocol = true
            credentials {
                username = "homo"
                password = "114514"
            }
        }
    }
}

注意此处推送的是snapshot,需要在项目version后添加后缀-SNAPSHOT,否则推送响应400

总结

还没有使用所以没有总结(咕咕咕

安装docker

运维部署

2025-04-01ubuntu-24.04.1 上安装 docker

参考自 https://www.sysgeek.cn/install-docker-ubuntu/

安装前置

bash
sudo apt update
sudo apt install apt-transport-https curl

添加gpg密钥

这一步遇到问题,可能失败,失败后会在 /etc/apt/keyrings/docker.gpg 写一个空文件,需要删除后重试

bash
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

添加仓库

虽然格式和apt自带的不一致,但是能用

bash
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

更新软件包列表

bash
sudo apt update

安装

这一步下载很慢,选择给apt设置代理(http_proxy环境变量居然无效) 创建文件 /etc/apt/apt.conf.d/proxy.conf 并写入

ini
Acquire::http::Proxy "http://192.168.1.1:7890/";
Acquire::https::Proxy "http://192.168.1.1:7890/";
bash
# 安装
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

检查docker状态

bash
sudo systemctl is-active docker

hello world

下不动哈哈哈
https://cloud.tencent.com/developer/article/2485043 找到了可用的两个镜像源

编辑文件 /etc/docker/daemon.json

json
{
  "registry-mirrors": [
    "https://docker.xuanyuan.me",
    "https://docker.1ms.run"
  ]
}

配置完成后

bash
sudo systemctl daemon-reload
sudo systemctl restart docker

tmux

运维部署

在后台启动tmux tmux new -d -s name

给tmux输入发送指令 tmux send-keys -t name:0 "echo hello" C-m

Windows部署MongoDB

运维部署

下载

MongoDB 6 的zip中只包含mongod即服务端,需要额外下载mongosh作为客户端

mongo下载:https://www.mongodb.com/try/download/community

mongosh下载:https://www.mongodb.com/try/download/shell

两者的下载都需要选择平台和架构

mongod安装服务

下载的MongoDB解压到目标位置,然后在其中新建一个文件mongod.yml(名字和后缀名不重要,随便起)

这儿的两个path,都换成自己的,目录需要自己手动创建,比如我这儿就是在MongoDB文件夹下新建的data文件夹和logs文件夹

yaml
systemLog:
    destination: file
    path: D:\App\MongoDB\logs\mongod.log
storage:
    dbPath: D:\App\MongoDB\data

在命令行中执行以下指令注册服务(这儿的serviceName是不可缺少的)

bash
# 安装mongo服务
mongod --config "D:\App\MongoDB\mongo.yml" --install --serviceName "MongoDB"
# 启动mongo服务
net start MongoDB

此时mongodb的服务就已经安装并启动了,可以用mongosh连接了(添加path不再赘述)

创建用户

纯文本
// 参考 https://www.mongodb.com/docs/manual/tutorial/create-users/#create-additional-users-for-your-deployment
use test
db.createUser(
  {
    user: "用户名",
    // passwordPrompt()会要求在控制台中输入密码, 避免密码出现在日志中, 也可以直接使用密码
    pwd:  passwordPrompt(),
    // 权限参考 https://www.mongodb.com/docs/manual/reference/built-in-roles/#database-user-roles
    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "reporting" } ]
  }
)

mongosh登录

纯文本
mongosh "mongodb://admin:123456@localhost:27017/test?authSource=admin"

Ubuntu安装Mysql5.7笔记

运维部署

下载

https://downloads.mysql.com/archives/community/

解压

纯文本
tar -xf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz

创建linux用户和组

纯文本
groupadd mysql && useradd -r -g mysql mysql

设置

注意,以下示例步骤中安装mysql的位置为/usr/local/mysql,mysql数据文件夹为/usr/local/mysql/data

纯文本
vim /etc/my.cnf

参考:http://c.biancheng.net/view/7618.html

这儿的不要乱写,容易导致各种奇奇怪怪的问题

纯文本
[mysqld]
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
max_connections=200
symbolic-links=0
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysql]
default-character-set=utf8

[mysqld_safe]
log-error=/usr/local/mysql/error.log
pid-file=/usr/local/mysql/mysqld.pid

文档:https://www.mysqlzh.com/doc/13/78.html

bash
# 创建数据文件夹, 日志文件夹, 设置所有者
cd /usr/local/mysql && mkdir logs && touch error.log && chown mysql:mysql -R *

初始化

纯文本
bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql --initialize

解决./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

bash
sudo apt install -y libaio-dev numactl

复制 mysql 到系统服务

纯文本
cp support-files/mysql.server /etc/init.d/mysql

解决Unit mysql.service does not exist, proceeding anyway.

修改vim /etc/init.d/mysql

bash
# 若/etc/my.cnf中指定了mysql目录,则此处也需要指定
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

启动mysql

纯文本
systemctl enable mysql

或者

纯文本
service mysql start

进入mysql命令行

bash
mysql -u root -p
# 在接下来的一行中输入密码

解决./mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

纯文本
apt-get install -y libncurses*

修改密码

纯文本
-- 更新密码
alter user 'user'@'host' identified by 'password';
-- 刷新权限
flush privileges;

常用操作

以下内容参考于 https://blog.csdn.net/qpzkobe/article/details/102833458

bash
# 创建用户 username替换为用户名, host替换为地址, password替换为密码
# 示例 CREATE USER 'mc'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
# 删除用户 username替换为用户名, host替换为地址
# 示例 DROP USER 'mc'@'localhost';
DROP USER 'username'@'host';
# 授权 privileges替换为权限, databasename替换为库名, tablename替换为表名, username替换为用户名, host替换为地址
# 示例 GRANT all ON playerpoints.* TO 'mc'@'localhost';
GRANT privileges ON databasename.tablename TO 'username'@'host';
# 撤销授权 privileges替换为权限, databasename替换为库名, tablename替换为表名, username替换为用户名, host替换为地址
# 示例 REVOKE all ON playerpoints.* FROM 'mc'@'localhost';
REVOKE privilege ON databasename.tablename FROM 'username'@'host';

# 刷新权限
flush privileges;

screen简单教程

运维部署

Linux screen命令用于多重视窗管理程序。

screen为多重视窗管理程序。此处所谓的视窗,是指一个全屏幕的文字模式画面。通常只有在使用telnet登入主机或是使用老式的终端机时,才有可能用到screen程序。

https://www.runoob.com/linux/linux-comm-screen.html

下文中使用name作为默认的screen名字示例,实际使用中需要替换成你创建的screen的名字

简单的入门使用

创建并进入

纯文本
screen -S name # 创建一个名字为name的screen

挂起当前screen(还可以进入)

在screen中按下ctrl + a,然后按d(注意如果开启中文输入法可能会失效)

查看存在的screen

纯文本
screen -ls # 查看存在的screen

进入挂起的screen

纯文本
screen -x name # 进入名为name的screen(允许多个终端同时进入)

若打开了多个同名的screen, 则需要先使用 screen -ls 列出并找到要打开的screen对应的id, 然后使用 screen -x id 进入对应的screen

纯文本
screen -x 12345 # 进入id为12345的screen

退出当前screen(无法再进入)

纯文本
exit # 若当前处于screen则退出screen, 否则会退出当前bash

特殊用法

后台创建

纯文本
screen -dmS name # 创建一个名为name的screen但是不进入

外部执行指令

纯文本
screen -x -S name -p 0 -X stuff "ls\n" # 外部调用名为name的screen输入ls并回车(\n代表回车)

此处的 -p 0 意为若存在多个screen则选择第0个(从0开始),若你没有同名的screen则可以去掉

外部关闭screen

纯文本
screen -S name -X quit # 从外部关闭名为name的screen

滚动

先按 ctrl + a , 然后按esc

win10部署MySql5.7并修改密码

运维部署

下载

https://downloads.mysql.com/archives/community/

下载完成后解压到自己想安装到的文件夹

这里我使用的是 D:\app\MySql

配置

在此文件夹下新建 my.ini 文件

这里贴出我的配置文件

ini
[mysqld]
port=3306
basedir=D:/app/MySql
datadir=D:/appData/MySql
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
default-character-set=utf8

详细解释见中文文档 https://www.mysqlzh.com/doc/13/78.html

设置Path

  1. 此电脑右键 属性
  2. 点击 高级系统设置
  3. 点击 环境变量
  4. 在系统变量中找到Path
  5. 点击编辑
  6. 点击右侧的新建
  7. 输入 D:\app\MySql\bin (这里写自己的安装位置\bin)
  8. 一路确定退出

初始化

  1. win + R 打开运行
  2. 在运行中输入 cmd 并回车
  3. 在cmd中进入mysql文件夹
batch
# 进入mysql文件夹的bin目录
d:
cd app\MySql\bin

# 安装
mysqld install

# 初始化数据文件夹
mysqld --initialize --console
# 执行完成后会给出初始密码(看起来像乱码的那串字符串), 记下来, 后面登录需要用

# 启动
net start mysql

进入MySql

在cmd中输入 mysql -u root -p

根据提示输入密码(上面初始化的时候给你的密码)

输入密码 输入密码 登录完成 登录完成

修改密码

sql
-- 选择数据库
use mysql;
-- 更新密码
update user set authentication_string=password('新密码') where user='root' and Host='localhost';
-- 刷新权限
flush privileges;

use mysql; 失败报错则使用

sql
-- 修改密码
alter user user() identified by '密码';
-- 退出重进
exit

Linux设置ssh并通过ssh密钥登陆

运维部署

进入 .ssh

bash
# 进入 .ssh 文件夹
cd ~/.ssh

处理旧密钥

bash
# 处理旧的密钥文件
mv id_rsa id_rsa.bak
mv id_rsa.pub id_rsa.pub.bak

创建密钥

bash
# 输入后按3次回车
ssh-keygen -t rsa

公钥写入到文件

bash
# 将公钥写入authorized_keys
cat id_rsa.pub >> authorized_keys

问题

若出现问题无法登陆,则检查日志 /var/log/secure

写入公钥后无法登陆

Authentication refused: bad ownership or modes for file /root/.ssh/authorized_keys

原因:

sshd 为了安全,对属主的目录和文件权限有所要求。如果权限不对,则 ssh 的免密码登陆不生效

用户目录权限为 755 或者 700,就是不能是 77x

.ssh 目录权限一般为 755 或者 700

rsa_id.pub 及 authorized_keys 权限一般为 644

rsa_id 权限必须为 600

bash
# 设置权限(权限错误会无法登陆)
cd ~/.ssh
chmod 644 authorized_keys id_rsa.pub && chmod 600 id_rsa && chmod 700 .

Ubuntu20.04安装&配置下载源/中文

运维部署

下载ISO & 安装

官网下载,这里选LTS(长期支持版)

这里我用的vmware虚拟机安装的ubuntu,如果要在实体机上安装ubuntu的话,可以使用ubuntu官网推荐的rufus

安装过程比较长并且没有什么需要操作的地方,跳过

配置下载源

安装好系统后,默认是英文,系统默认没有附带中文的语言文件,要更换语言就得下载。

下载之前首先要设置下载源,国内不配置下载源下载会非常慢(如果有弹窗让你更新的话先放着,等配置好下载源之后再更新)

关闭并且重载

等到进度条走完就完成了换源(如果有报错跳过即可)

更换系统语言

安装完成后

设置格式

设置完成后重启就是中文得了

不要忘了设置输入法 不要忘了设置输入法

其他设置

标准文件夹改名

将语言设置为中文后系统会询问是否改名标准文件夹,这里我选择不改

原因是之前用centos7(gnome桌面),中文输入法有时会失灵,无法输入中文,没办法进入中文名字的文件夹

自动息屏

时区

SU & ROOT

ubuntu默认不允许直接使用root账户登陆,需要使用时请使用 su 指令切换到 root 账户,使用完毕之后用 exit 指令退出

第一次使用 su 切换toot账户之前需要先为root账户设置密码

输入 sudo passwd 为root账户设置密码,输入指令后需要输入3此密码,第一次是当前账户的密码,后两次是设置root账户的密码,输入后不显示是正常情况

代理

wget的时候是不走系统代理的,解决办法

export https_proxy=192.168.48.1:7890 export http_proxy=192.168.48.1:7890 export ftp_proxy=192.168.48.1:7890

这里的 192.168.48.1:7890 是我本机的代理,使用时修改成你的代理地址

远程连接/SSH

Ubuntu默认带了openssh-client,但是没有openssh-server

直接 apt install -y openssh-server 会提示

这里我们直接卸载已有的openssh-clileht

apt remove -y openssh-client

然后再安装openssh-server

apt install -y openssh-server

ps: 这里我使用的root账户安装,若是普通账户请在指令前添加 sudo

sudo apt remove -y openssh-client

sudo apt install -y openssh-server

腾讯云域名添加子域名解析

运维部署

进入DNSPod控制台,找到 我的域名

点击添加记录

比如这里我要设置我的域名e404.top的子域名www.e404.top

主机记录就写www,类型就是A,其他都默认即可

填写完成之后点击确认

关闭防火墙&安全组放行

运维部署

Windows关闭防火墙

打开控制面板,找到 控制面板\系统和安全\Windows Defender 防火墙 ,在左侧找到 启用或关闭WindowsDefender防火墙 点击

设置如图 设置如图

将两个网络的防火墙都关闭后确定

Linux关闭防火墙

以下两种方式任选一种即可,一种用不了的换另一种

systemctl

启动:systemctl start firewalld

查看状态:systemctl status firewalld 

停止:systemctl disable firewalld

禁用:systemctl stop firewalld

iptable

查看防火墙状态:service iptables status

停止防火墙:service iptables stop

启动防火墙:service iptables start

重启防火墙:service iptables restart

关闭防火墙自启:chkconfig iptables off

开启防火墙自启:chkconfig iptables on

vps安全组放行端口

在进入vps实例的管理界面,找到安全组,注意安装组里面有出站规则和入站规则

出站规则放行全部(出站就是vps里的进程通过端口访问外网的内容)

入站放行常用端口,(如果开服的话也同时放行服务器端口)

出站规则 出站规则 入站规则 入站规则

Java下载

运维部署

Minecraft1.17及以后的版本需要Java17

Minecraft1.16及以前的版本可以用Java8-15

推荐使用8/11这两个LTS的版本,LTS意为长期支持版本

高版本Java优点

包含更加合理高效的GC(垃圾回收)机制,运行效率更高

高版本Java缺点

一些插件或mod可能尚不支持高版本的Java

各种安装包的区别

一般Java分为Jre和Jdk,Jdk要略微大一些,但是从使用角度来看并没有什么区别

如果你的操作系统是64位的,下载时请选择64位(x86-6464bit

如果你知道如何配置Path,也可以下载zip或tgz格式的压缩包,并在解压后自行配置Path,否则请下载exe或msi格式(linux选择rpm等)的安装包,安装包会帮你配置Path

linux配置path

win配置path

链接

提供一些我知道的下载链接,你可以自行选择

DragonWell8:https://github.com/alibaba/dragonwell8/releases/latest (仅JDK8,阿里巴巴优化版本)

DragonWell11:https://github.com/alibaba/dragonwell11/releases/latest (仅JDK11,阿里巴巴优化版本)

AdoptOpenJDK:https://adoptium.net/releases.html (包含各个版本的Jdk和Jre)

AzulZuluJDK:https://www.azul.com/downloads/?architecture=x86-64-bit&package=jdk (包含各个版本的Jdk和Jre)

OracleJDK:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html (仅Jdk)

OracleJRE:https://www.oracle.com/java/technologies/javase-downloads.html (仅Jre)