本文介绍如何配置承载 Patpat Online 的服务器。
本章节介绍如何从初始化的服务器开始,配置之后所需要的基础服务器环境。
服务器的配置尽可能高一些,如 2 核 8 GB,推荐 4 核 16 GB。投入使用时,也推荐有较大的硬盘(128 GB)存储学生的提交(以及镜像)。
首先,如果有默认密码,首先更改 root
用户的默认密码,参考这篇文章。
Patpat Online 部署相关操作均不使用 root 用户,因此需要添加新用户。同时,为了实现 CI/CD,该用户在执行 sudo 命令时不能输入密码,参考 Create Sudo-Enabled User on Linux。配置好用户后,接下来所有操作都使用该用户完成。
为什么不用 root 用户?因为不想直接操作 root。如果你执意使用 root,那么之后脚本中所有涉及
sudo
的地方都要改动。如果使用云平台虚拟机,则无法使用 root 用户,也无法添加新用户,因此直接使用 buaa 即可。
对于服务器连接,推荐首先配置 SSH,可参考这篇文章中的这一节。
接下来配置交换文件,从而减少服务器内存不足的可能性,具体参考 Configure Swap Space for Linux Server,具体交换文件的大小参考文中给出的链接。
注意,如果之后需要设置防火墙,或者由于防火墙的启用导致访问出错,可以参考如下链接。
如果使用云平台虚拟机,需要每次使用 buaalogin
手动联网。
此外,推荐使用 Visual Studio Code 远程连接服务器,并使用 Docker 插件,简化相关操作。
本章节介绍宿主机上依赖的安装与配置,包括数据库、消息队列、Docker 和 K3s。
TODO:如果之后能将这些所有依赖都容器化,或许是更好的。
参考 Basic Serving and Proxying in Nginx,不使用容器。
参考 Deploy MySQL on Linux Server,需要添加 admin 用户允许远程连接,之后应用部署使用该用户连接 MySQL。不使用容器。
对于数据库的使用,正式投入生产使用 patpat-prod
,生产环境测试使用 patpat-stag
,本地测试使用 patpat-dev
。初始化数据库使用 PatBoot 项目中的 init.sql
,位于的 resources 目录下。生产环境注意更改 SQL 中 root 用户的默认密码,或是项目启动后,登录 root 账号更改密码。
参考 Setting Up RabbitMQ,使用 Docker 部署 RabbitMQ,需要添加 rabbit 用户允许远程连接,之后应用部署使用该用户连接 RabbitMQ。配置好后,可以通过 15672 端口访问 RabbitMQ 控制面板。
这里不用让 K3s 接管 RabbitMQ,让它作为单独的服务即可。
为什么使用 Docker 部署 RabbitMQ?因为直接安装非常麻烦,还容易出错。
参考 Deployment Practice With Kubernetes 中 Docker 和 K3s 安装和配置的相关说明,并根据其中 Troubleshoot 部分禁用所有插件。
对于 Docker,需要允许不用 sudo
执行,具体配置如下,使用具体的用户名。
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
pause
镜像为 K3s 所必须的,可以通过阿里云镜像 pull 到本地。
sudo docker pull registry.cn-hangzhou.aliyuncs.com/rancher/mirrored-pause:3.6
sudo docker tag registry.cn-hangzhou.aliyuncs.com/rancher/mirrored-pause:3.6 rancher/mirrored-pause:3.6
如果使用软件学院云平台服务器,申请额外磁盘时需要手动扩容,具体扩容方式如下。(来自 GPT 4o)
初始 lsblk
命令结果如下。
...
sda 8:0 0 128G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 127G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 15G 0 lvm /
扩容步骤如下,直接复制命令操作即可,如果虚拟机有变化,那么根据具体情况更改命令即可。
To resize the ubuntu--vg-ubuntu--lv
logical volume to use the full space of sda3
, you need to:
- Resize the Physical Volume: Ensure the physical volume (
sda3
) uses all available space. - Resize the Logical Volume: Expand the logical volume (
ubuntu--vg-ubuntu--lv
). - Resize the Filesystem: Ensure the filesystem on the logical volume grows to the new size.
Here's a step-by-step guide:
Ensure the sda3
partition is fully recognized as part of the volume group (ubuntu--vg
). Run the following command to resize the physical volume:
sudo pvresize /dev/sda3
Now, expand the logical volume to use the additional space. You can check the size before resizing using:
sudo lvdisplay
Resize the logical volume:
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
This command resizes the logical volume to take up all the free space in the volume group.
Finally, resize the filesystem on the logical volume to use the new size:
- For ext4 or ext3 filesystems:
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
- For XFS filesystems (if applicable):
sudo xfs_growfs /dev/ubuntu-vg/ubuntu-lv
Check if the logical volume has been resized properly by running:
lsblk
df -h
This should now show that the logical volume has been expanded to match the size of sda3
.