Post

通过WSL2、Docker 和 NPS 实现网站部署方案

本人纯小白,由于之前看了几篇文章和几个教学视频,在加上平时工作太过于无聊,而且在家又有闲着的笔记本,于是灵机一动想将本地电脑做成个人使用服务器,部署几个人的网站玩玩。为方便本地电脑直接使用的wsl2作为虚拟机,然后项目使用的docker,若

默认分类 阅读 0 点赞 0 评论 0

本人纯小白,由于之前看了几篇文章和几个教学视频,在加上平时工作太过于无聊,而且在家又有闲着的笔记本,于是灵机一动想将本地电脑做成个人使用服务器,部署几个人的网站玩玩。为方便本地电脑直接使用的wsl2作为虚拟机,然后项目使用的docker,若路由器有公网ipv4使用可以直接跳过内网穿透部分教程,内网穿透使用尝试过三种方案最终有两种得以实现:

  1. 本地服务器通过 cloudflare 实现的一键内网穿透,无需服务器但是cloudflare 为外网的网站,在国内访问延迟比较高。
  2. 本地服务器通过vps(需要一台服务器)进行内网穿透,vps服务器为香港的,相对第一种方案延迟低一点,若其他较远的服务器延迟高可尝试使用优选域名和id进行加速(我未使用)。
  3. 本地服务器通过vps(需要一台服务器)进行内网穿透,这个尝试的阿里云服务器,一开始挺好的帮定域名后贼快,但是没用几天提示需要网络备案,由于在外住房,又没办居住证等问题,最后放弃。

1. 安装和配置 WSL2

1.1 安装 Ubuntu 24.04

首先,我们需要在 Windows 系统上安装 WSL2,并安装 Ubuntu 24.04 作为 Linux 子系统。

参考官方教程:https://learn.microsoft.com/zh-cn/windows/wsl/install

  • 下载 Ubuntu 24.04 并进行安装。
  • 安装完成后,通过以下命令检查 WSL 版本:
wsl -l -v
  • 配置 WSL2 虚拟机资源,例如设置内存、交换分区和处理器:
-- 参考文件位置: C:\Users\Admin\.wslconfig
-- 参考网站: https://blog.csdn.net/weixin_45579994/article/details/112386425


[wsl2]
networkingMode=bridged
vmSwitch=WSLBridge
ipv6=false
memory=16GB
swap=4GB
processors=8
localhostForwarding=true

1.2 修改 WSL2 默认安装位置

如果未来系统空间不足,可以将 WSL2 的安装位置进行移动,具体操作可参考此教程

1.3 配置和管理 WSL 防火墙

为确保 Docker 和 NPS 能正常工作,需要开放相应的端口,或者禁用防火墙:

# 查看防火墙状态
sudo ufw status
# 开放 Docker 和 NPS 所需端口
sudo ufw allow 2375
sudo ufw allow 4533
# 禁用防火墙
sudo ufw disable
# 重启防火墙
sudo ufw reload
# 卸载
sudo apt-get remove ufw
# 禁用
sudo ufw disable

1.4 其他相关设置

windows卸载wsl下的ubuntu

https://blog.csdn.net/qq_43779149/article/details/130447527

直接在设置里面卸载就行

image-20241016172257934

wsl 设置默认用户

https://blog.csdn.net/qq_37085158/article/details/131041223

2. Docker 安装和配置

2.1 安装 Docker

在 WSL2 上使用 Ubuntu 安装 Docker 非常简单,执行以下命令即可:

# 安装 Docker
sudo apt install docker.io
# 启动 Docker 服务
sudo systemctl start docker
# 测试 Docker 是否安装成功
sudo docker run hello-world

可以通过 Docker 守护进程管理 Docker 容器:

# 重启 Docker 守护进程
sudo systemctl restart docker

2.2 安装 Docker-Compose

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具,通过以下命令安装 Docker Compose:

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

-- 常用相关指令
# 验证安装
docker-compose --version
# 参考网站
https://developer.baidu.com/article/details/2819402

# 第一次启动
docker compose up -d

# 重启
docker compose stop
docker compose start

# 升级
docker compose down
docker compose pull
docker compose up -d

# 查看日志
docker compose logs -f docs-navidrome-1

3. NPS 内网穿透

NPS(内网穿透)允许我们在没有公网 IP 的情况下,将本地服务暴露到公网。(可将本地项目端口绑定到对应域名上)

参考网站:https://www.youtube.com/watch?v=dL9-GeepjFg

参考文档:https://naiyous.com/500.html

个人理解勿喷:nps服务器放在vps服务器上,客户端在本地电脑,客户端与远程外网地址的vps服务器进行连接,在nps界面配置将本地的端口绑定到对应的域名上。域名需要在对应的域名服务商绑定到对应vps服务器上。

image-20241016174736139

3.1 NPS 安装

首先,下载 NPS 客户端和服务器端,解压后进行配置:

# 解压 NPS 服务器端文件
tar -zxvf linux_amd64_server.tar.gz
# 配置 NPS 服务器
./nps -server=YOUR_SERVER_IP:8024 -vkey=your_vkey

3.2 设置 NPS 客户端

在本地设置 NPS 客户端,通过配置文件或命令行启动:

# 进入 NPS 客户端目录
cd /usr/myapps/nps
# 启动客户端
nohup ./npc -server=YOUR_SERVER_IP:8024 -vkey=your_vkey &

通过 NPS,将本地的 Web 服务映射到公网访问地址。

4. Cloudflare 内网穿透

1,Cloudflare 提供的内网穿透服务也可以作为 NPS 的备选方案,但由于速度原因不建议优先选择。你可以参考Cloudflare 内网穿透教程进行设置。网上也有许多相关教程

2,l站大佬一键内网穿透脚本,(此方法可行,本人也是使用的此方法才得以成功)

https://linux.do/t/topic/184885

5. 网站部署

5.1 使用 Docker 容器化部署网站

使用 Docker 部署网站服务可以简化服务器管理。下面以部署 Navidrome 音乐服务器为例:

5.1.1 Docker Compose 配置

参考视频:https://www.youtube.com/watch?v=7XtLD8y8EF0&t=206s

参考文章:https://iwanlab.com/docker-compose-install-navidrome/

说明:建文件夹用于该项目的存放目录,在目录内建docker-compose.yml文件,内容如下(有配置不需要可以跳过):

version: "3"
services:
 navidrome:
 image: deluan/navidrome:latest
 ports:
 - "4533:4533"
 restart: unless-stopped
 environment:
 ND_SCANSCHEDULE: 1m
 ND_LASTFM_ENABLED:
 ND_LASTFM_APIKEY: 05eaac206af0861c0c46410ce2ce542c # 修改成自己的APIKEY
 ND_LASTFM_SECRET: your_lastfm_secret # 修改成自己的SECRET
 ND_SPOTIFY_ID: 566a3d28728d4f0080a4aee45a6dbbd9 # 修改成自己的ID
 ND_SPOTIFY_SECRET: your_spotify_secret # 修改成自己的SECRET
 ND_LOGLEVEL: info
 ND_SESSIONTIMEOUT: 24h
 ND_BASEURL: ""
 volumes:
 - "/usr/myApps/navidrome/music/data:/data"
 - "/usr/myApps/navidrome/music:/music:ro"

5.1.2 启动服务

在配置完成后,使用 Docker Compose 启动服务:

# 启动 Navidrome
docker-compose up -d
# 查看日志
docker-compose logs -f

服务启动后,访问 http://localhost:4533 即可登录 Navidrome 音乐服务器。

6,其他相关文章

本人使用的是雨云服务器,里面有香港服务器且纯中文

推广连接:https://www.rainyun.com/NDg2Nzc2_

便宜vps列表

https://blog.laoda.de/vps

【VPS选购分享】Racknerd

https://iwanlab.com/vps-racknerd/

文件管理项目

https://blog.csdn.net/LogicLancer/article/details/136369214

LobeChat+ollama本地大模型项目

https://iwanlab.com/lobechat-ollama-deploy-offline/

继续阅读

全部归档
Kafka 核心原理详解:架构、存储、可靠性与消费机制
Kafka 核心原理详解:架构、存储、可靠性与消费机制

Kafka 是分布式流处理平台,本质是高吞吐、可持久化的消息队列,解决上下游数据时间差问题。消息系统有点对点(Queue)和发布订阅(Pub/Sub)两种模式,Kafka 通过消费者组实现组内点对点、组间发布订阅。架构核心包括 Producer、Broker、Topic、Partition(含 Leader 和 Follower 副本)、Consumer Group 及 Zookeeper。存储采用 Segment 文件(.log 存储数据,.index 稀疏索引),通过二分查找快速定位消息。生产者可靠性依赖 ACK 机制(0/1/-1),acks=-1 时需 ISR(同步副本)全部确认;副本通过 HW 和 LEO 水位线保证一致性。幂等性基于 PID 和序列号实现单分区去重,事务支持跨分区原子性。消费者使用 Pull 模式,分区分配策略有 RoundRobin、Range、Sticky;Offset 存储在 __consumer_offsets 主题,支持同步和异步提交。Kafka 常与 Flume 集成,Flume 负责采集,Kafka 负责缓冲分发。

评论