Overstars' 円盤

只要许愿就可以了。

img

这里不要写工作职责内的计划。

HISTORY

2022年3月~10月的情报收集与日程安排

TODO

gantt
title 工作计划
dateFormat   YY-MM-DD

section ini文件解析器阅读
    项目配置运行  : done , des1 , 2024-03-12 , 6h
    源码阅读 : crit, active, after des1 , 5d
    注释编写: des3, after des1 , 5d
    实践: des4, after des3, 10d

section Godot Engine实践
    下载配置 : 2024-03-15, 5d
    观看教程 : 10d
    上手实践(下载demo并运行) : 7d

守则

  • 拒绝临时的游戏邀约,开黑需要在当日20点之前提出预定。

  • 不要等待赛尔号开服拖到后半夜才睡,在白天使用脱机工具扫荡,尽可能自动化。

  • 大概以半个月一场codeforces的频率保持手感吧,不需要在意分数。还是打周日的力扣竞赛吧家人们。

职业

  • 定期关注相近岗位招聘描述与要求,大城市/家附近。
  • 每半年至少更新一次简历(不同方面)。
  • 摸清单位各部门组成和职责范围,统计所在部门相关业务。
  • Java程序员练级路线

JOBS

游戏

LEARNING

CS

设计模式

C++

Java

PROJECT

兴趣协作

计算机技术教程

C++类

其他语言

PRACTICE

API-DOC

TG链接

工具网站

自建服务器

组装

零件 功耗 价格
机箱+主板 ASRock DeskMini X600 Series 京东1299
CPU Ryzen 5 8500G(100-000000931) 45W 京东1109
显卡
SO-DIMM DDR5内存 DDR5 笔记本内存条 5600MHZ 16G 淘宝252
SSD SK hynix SC311 SATA 128G 现成的,M2接口应该兼容SATA协议
该主板不支持,换成铠侠RC20 NVME 512G了
HDD 希捷 ST2000LM003 2.5寸 32M PMR 2TB 淘宝389
M.2 插座 (Key E), 支持 2230 型 Wi-Fi / 蓝牙模块 淘宝35,应该送一块
散热器 利民 AXP90-X36 36mm双平台背板风扇 京东129

系统准备

获取ubuntu服务器版本:https://cn.ubuntu.com/download/server/step1,Ubuntu Server 可以免费下载和使用。

适合初学者的 Ubuntu 服务器教程

设置时间同步

东八区

1
sudo timedatectl set-timezone Asia/Shanghai

汉字语言支持

1
2
3
4
5
6
sudo apt update
sudo apt upgrade
sudo apt install language-pack-zh-hans
sudo apt install language-pack-ja
sudo apt install fonts-noto-cjk
sudo reboot

history显示操作时间

1
2
3
vim ~/.bashrc
export HISTTIMEFORMAT="%F %T "
source ~/.bashrc

基础设施

初始化设置

安装ubuntu sever时直接按照默认项配置即可,可以直接选择导入github的public key,方便后续直接ssh连接。

内网IP固定

image-20240906202005910

开启ssh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 查看是否安装了SSH服务
ps -ef |grep ssh

# 没有安装的话,执行下面语句
sudo apt-get update #先更新下资源列表
sudo apt-get install openssh-server #安装openssh-server
sudo ps -ef | grep ssh #查看是否安装成功
sudo systemctl restart sshd #重新启动SSH服务

# 进入ssh配置文件
sudo vim /etc/ssh/sshd_config
# 设置ssh服务开机启动
sudo systemctl enable ssh
# 查看ssh服务的状态
sudo systemctl status sshd

修改以下三项

1
2
3
Port 22
ListenAddress 0.0.0.0
PermitRootLogin yes

开启防火墙

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 开启防火墙
sudo ufw enable
# 启用防火墙日志
sudo ufw logging on
# 允许ssh服务通过防火墙
sudo ufw allow http
sudo ufw allow 80
sudo ufw allow https
sudo ufw allow 443
sudo ufw allow ssh
sudo ufw allow 22/tcp
sudo ufw allow smtp
# 使ssh配置文件生效
sudo systemctl restart ssh
sudo ufw reload
# 查看日志
sudo tail -f /var/log/ufw.log

# 删除一条防火墙规则
sudo ufw status numbered
sudo ufw delete [自选数字]

禁止自动休眠

执行如下命令查看休眠模式的情况

1
systemctl status sleep.target

如果sleep状态是loaded,说明自动休眠开启

若masked,则已关闭自动休眠

1
2
3
4
sleep.target - Sleep
Loaded: loaded (/usr/lib/systemd/system/sleep.target; static)
Active: inactive (dead)
Docs: man:systemd.special(7)

关闭系统自动休眠

1
2
3
4
5
6
7
8
9
10
# 这些命令做了以下几点:
# 通过mask命令,你禁用了所有休眠相关的systemd目标。
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
# 如果你想要恢复自动休眠功能,可以使用以下命令:
sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target

####################################################
# 通过set-default命令,你设置默认的运行级别为多用户文本模式(即命令行界面)
sudo systemctl set-default multi-user.target
sudo systemctl set-default graphical.target

重新加载 systemd 配置

1
sudo systemctl restart systemd-logind.service

/etc/systemd/logind.conf 文件中的 IdleActionIdleActionSec 参数用于配置系统在用户空闲时的行为,IdleActionSec 指定在用户空闲多长时间后执行 IdleAction 的操作。

1
sudo vim /etc/systemd/logind.conf

设置如下

1
2
IdleAction=ignore
IdleActionSec=0

磁盘分区

增加交换分区

参考:https://cloud.tencent.com/developer/article/1835500来执行。

交换分区的大小通常为物理内存的 1 到 2 倍。

  1. 查看交换分区目前的大小

    1
    sudo swapon --show
  2. 查看可用的分配空间

    1
    free -h
  3. 关闭交换空间

    1
    sudo swapoff -a
  4. 删除交换空间

    1
        
  5. 创建交换文件

    1
    2
        $ sudo fallocate -l 1G /swap.img
    $ ls -lh /swap.img
  6. 启用交换文件

    1
    2
    3
    4
        $ sudo chmod 600 /swap.img
    $ ls -lh /swap.img
    $ sudo mkswap /swap.img
    $ sudo swapon /swap.img

查看ubuntu发现了几块硬盘:lsblk命令 – 查看系统的磁盘使用情况

1
2
3
4
5
6
7
8
9
10
lsblk #观察磁盘分区状态
-d ∶仅列出磁盘本身,并不会列出该磁盘的分区数据
-f ∶同时列出该磁盘内的文件系统名称
-i∶使用 ASCII的线段输出,不要使用复杂的编码(再某些环境下很有用)
-m ∶同时输出该装置在 /dev 底下的权限数据(rwx 的数据)
-p ∶列出该装置的完整文件名!而不是仅列出最后的名字而已。
-t ∶列出该磁盘装置的详细数据,包括磁盘队列机制、预读写的数据量大小等

sudo fdisk -l #查看系统有几块硬盘和每个硬盘的分区情况
sudo df -h #查看硬盘挂载情况和使用情况,只显示挂载的分区

装机默认只分配给了 / 100G磁盘,感觉不太够用。

image-20240907113314724

可以看出来第三块分区p3是有ssd的剩下所有内存的,只是没有分配,/home 可以单独分区,懒狗就不搞了,直接给 / 目录分配内存了。

按照Ubuntu 20.04.3-live-server 磁盘如何扩容操作即可。

1
2
3
su
1.例如增大至300G
lvextend -L 300G /dev/mapper/ubuntu--vg-ubuntu--lv

提示

1
2
3
4
5
yankf@overstars:/$ su
Password:
root@overstars:/# lvextend -L 300G /dev/mapper/ubuntu--vg-ubuntu--lv
Size of logical volume ubuntu-vg/ubuntu-lv changed from 100.00 GiB (25600 extents) to 300.00 GiB (76800 extents).
Logical volume ubuntu-vg/ubuntu-lv successfully resized.

lsblk 看一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@overstars:/# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 104.2M 1 loop /snap/core/17200
loop1 7:1 0 74.3M 1 loop /snap/core22/1586
loop2 7:2 0 132M 1 loop /snap/docker/2932
loop3 7:3 0 38.7M 1 loop /snap/postgresql10/47
loop4 7:4 0 38.8M 1 loop /snap/snapd/21759
loop5 7:5 0 74.3M 1 loop /snap/core22/1612
sda 8:0 0 1.8T 0 disk
nvme0n1 259:0 0 465.8G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot/efi
├─nvme0n1p2 259:2 0 2G 0 part /boot
└─nvme0n1p3 259:3 0 462.7G 0 part
└─ubuntu--vg-ubuntu--lv 252:0 0 300G 0 lvm /

将第二块硬盘分一部分空间给data

lsblk 可以看到 sda 还有1.8T的空间没有分区,打算分一部分给 /data

查看已有磁盘

1
sudo fdisk -l

进入 sda 进行分区

1
sudo fdisk /dev/sda

输入 n

Partition type,输入 p

输入分区号 1

First sector (2048-3907029167, default 2048),默认即可

新建500G的分区,输入 500G ,即 1048578047

提示

1
2
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-3907029167, default 3907029167): 1048578047
Created a new partition 1 of type 'Linux' and of size 500 GiB.

移除签名,输入 y

写入,输入 w

再次执行sudo fdisk -l 查看是否创建

将新分区格式化为 ext4 ,性能相对于 ext3 有很大提升,且支持单个16G、系统1EB的文件量。

1
2
3
df -T
lsblk -f
sudo mkfs -t ext4 /dev/sda1
1
2
sudo mkdir /data #新建
sudo mount /dev/sda1 /data #挂载

查看uuid,找到新分区id

1
sudo blkid

提示

1
2
3
4
5
6
7
8
9
10
11
12
yankf@overstars:/$ sudo blkid
/dev/nvme0n1p3: UUID="mERgFh-lRJc-Firn-URSm-mg3p-2Mji-RrayJj" TYPE="LVM2_member" PARTUUID="6c5ca1e2-465f-4daa-8e8c-8b79d109d3a9"
/dev/nvme0n1p1: UUID="CA72-30F7" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="55cd3410-aee6-41ea-afe2-9d93e4da041b"
/dev/nvme0n1p2: UUID="10ded670-c854-45c7-bbb5-bd1d4fac82f1" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="268b6989-4bd3-47dd-9acc-65d8bb004998"
/dev/mapper/ubuntu--vg-ubuntu--lv: UUID="1c6a9158-f60c-4d12-8a82-aba82f3e6afd" BLOCK_SIZE="4096" TYPE="ext4"
/dev/loop1: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop4: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop2: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop0: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/sda1: UUID="4a1a3251-c5d5-4eff-b085-67851647362d" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="002bacfb-01"
/dev/loop5: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop3: BLOCK_SIZE="131072" TYPE="squashfs"

将新分区的 uuid 写入 /etc/fstab

1
sudo vim /etc/fstab

加入一行

1
2
UUID格式的文件系统                         挂载点 文件系统类型 挂载选项 转储选项 检查顺序
UUID=4a1a3251-c5d5-4eff-b085-67851647362d /data ext4 defaults 0 2

更改 /data 的权限

1
2
sudo chown yankf:yankf /data
sudo chmod +777 -R /data

公网通过域名访问

域名与DDNS

可以在腾讯云域名购买一个域名,之后去 DNSPod 管理控制台 验证、添加。

购买域名时会问你要不要买专业版DNS解析,可以仔细看看这个云解析 DNS 版本套餐差异,决定买不买,个人使用没必要买。

提交订单前需要已实名审核的信息模板,审核很耗时间,记得提前搞。

【DNS解析】如何设置DDNS(动态域名解析)

DDNS其实就是不断把自己的域名和目前的公网IP更新给dns运营商

在dnspod这里创建API 密钥,注意保存。

按照ArDNSPod项目进行DDNS设置,添加如下定时任务,每30分钟执行一次。

1
*/30 * * * * yankf /home/yankf/shells/dnspod-shell/ddnspod.sh

可以通过grep CRON /var/log/syslog命令查看执行记录。

SSL证书

  • SSL协议:Let’s Encrypt
  • Certbot:自动获取和安装 Let’s Encrypt 的免费 SSL/TLS 证书。

音频服务器