服务器部署Jupyter Lab,配置远程访问及开机启动

安装Jupyter Lab

pip3 install jupyterlab

生成配置文件

jupyter lab --generate-config

在配置文件中追加下面内容

c.NotebookApp.allow_remote_access = True
c.NotebookApp.open_browser = False
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.port = 8888
c.NotebookApp.password = '加密密码字符串'

加密密码字符串可以通过Python命令获得

from jupyter_server.auth import passwd
passwd()

手动启动Jupyter Lab

jupyter lab

此时浏览器打开http://ip:8888/lab就可以了

接下来配置自动启动

vim /etc/systemd/system/jupyterlab.service

写入以下内容

[Unit]
Description=JupyterLab
After=network.target
 
[Service]
Type=simple
PIDFile=/run/jupyterlab.pid
ExecStart=/usr/local/bin/jupyter lab --allow-root
User=root
WorkingDirectory=/home
Restart=on-failure
RestartSec=5
 
[Install]
WantedBy=multi-user.target

接下来使开机启动生效

systemctl enable jupyterlab.service
systemctl start jupyterlab.service

查看启动结果

systemctl status jupyterlab.service

最后reboot一下,如果重启之后可以浏览器访问,就是成功了

参考文章:https://blog.csdn.net/weixin_53742691/article/details/138424057


服务器部署Jupyter Lab,配置远程访问及开机启动

让Windows的Linux子系统支持使用显卡算力

训练大模型,Windows有一些不便,为了不损失性能,使用Windows的Linux子系统来训练,但Linux子系统默认不能使用显卡,所以,需要提前配置一下。

1,检查Windows版本,必须是Windows10 21H2及更高(含Windows11)

2,安装显卡驱动(一般出厂就安装好了,刚刚重装完系统的,安装一下)

3,在“启用或关闭Windows功能”里面,启用“适用于 Linux 的 Windows 子系统”和“虚拟机平台”,或者PowerShell运行下面命令

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

4,下载Linux WSL2内核包并安装

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

5,使用PowerShell将WLS2设置为默认版本

wsl --set-default-version 2

6,从Windows应用商店下载需要的Linux子系统并安装

7,查看显卡是否正常使用

nvidia-smi

如果在上述步骤之前已经安装了Linux子系统,需要先卸载再重新安装(我比较菜,没发现别的办法)

参考文章:https://huaweicloud.csdn.net/63563ce9d3efff3090b5bc6a.html


让Windows的Linux子系统支持使用显卡算力

利用frp的xtcp实现P2P远程桌面连接

被控端配置

serverAddr = "101.200.***.***"
serverPort = 7000

[[proxies]]
name = "mstsc_hp"
type = "xtcp"
secretKey = "123456"
localIP = "127.0.0.1"
localPort = 3389

主控端配置

serverAddr = "101.200.***.***"
serverPort = 7000

[[visitors]]
name = "mstsc_hp_visitor"
type = "xtcp"
serverName = "mstsc_hp"
secretKey = "123456"
bindAddr = "127.0.0.1"
bindPort = 6000
keepTunnelOpen = false

主控端的serverName必须与被控端的name一致,否则服务器无法匹配连接

在主控端电脑上打开远程桌面,输入127.0.0.1:6000,然后用被控端用户名密码登录就可以了

注意,写一个bat脚本,用于frpc的启动,再把该启动脚本添加到任务计划程序里,设置开机启动,无论用户是否登录都启动,这样被控端主机开机后才能自动连接frps,启动脚本如下

@echo off
:home
frpc -c frpc_p2p_2.toml
goto home

利用frp的xtcp实现P2P远程桌面连接

利用openwrt系统路由器和独立IP公网服务器远程唤醒电脑

由于现在运营商不为家用宽带提供独立IPv4或者光猫路由一体机不支持端口转发,导致没办法像以前用ADSL那样通过端口转发的方式直接远程唤醒电脑,所以,本文讲述如何使用公网IP服务器配合openwrt路由器来远程开机。

首先,在服务器上下载frp,开源地址:https://github.com/fatedier/frp

#我用的是amd64架构服务器,下载amd64版
wget https://github.com/fatedier/frp/releases/download/v0.59.0/frp_0.59.0_linux_amd64.tar.gz

解压并进入目录

tar -zxvf frp_0.59.0_linux_amd64.tar.gz
cd frp_0.59.0_linux_amd64

修改服务端配置文件

vim frps.toml

配置内容如下(自行修改)

#公网端口号
bindPort = 7000

#数据面板监听地址和端口号
webServer.addr = "0.0.0.0"
webServer.port = 7500
#数据面板用户名和密码
webServer.user = "root"
webServer.password = "123456"

#SSL证书和密钥
#webServer.tls.certFile = "server.crt"
#webServer.tls.keyFile = "server.key"

启动服务

./frps -c frps.toml

路由器端安装frpc,以下两个都要安装(我用的是GL·iNet SFT1200路由器,mips_siflower架构,其他架构自己找安装包,或者用源码自己编译)

到路由器luci里配置frpc或者直接在shell里配置

vim /etc/config/frpc
内容如下
config frpc 'main'
	option server 'frps'
	option client_file '/usr/bin/frpc'
	option login_fail_exit 'false'
	option run_user 'root'
	option protocol 'tcp'
	option tls_enable 'false'
	option enabled '1'

config server 'frps'
	option server_port '7000'
	option tcp_mux 'true'
	option alias '公网服务器'
	option server_addr '101.200.***.***'

config rule
	option name 'wol'
	option local_port '9'
	option type 'udp'
	option remote_port '29999'
	option local_ip '192.168.8.255'

注意,远程唤醒本地端口为9,远程端口自定义,但不能与公网服务器现有端口冲突,本地IP为直接广播地址,如路由器地址192.168.8.1,子网掩码长度24,即子网掩码为255.255.255.0,则直接广播地址为192.168.8.255,注意,千万不可以用受限广播地址(即255.255.255.255),否则网卡收不到魔幻数据包。

接下来下载wake on lan软件,网上一搜一大堆,IP地址就是公网服务器IP,端口号就是上面配置文件中的remote_port,我的是29999,MAC地址可以登录路由器管理页面查看一下客户端MAC,电脑BIOS再设置一下允许wake on lan,并在网卡设置中允许魔幻数据包唤醒,这部分很简单,根据自己的电脑型号查一查就知道了

到这里,远程唤醒就实现啦

接下来还要检测远程开机状态,在被远程唤醒电脑上,下载frp,配置如下

serverAddr = "101.200.***.***"
serverPort = 7000

[[proxies]]
name = "rpc_hp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 135
remotePort = 13599

我把本地135端口暴露在了公网上,公网端口为13599,wake on lan软件检测到公网ip的13599端口开放,说明电脑已成功开机。一般来说,暴露3389端口更好,但后面还要用3389做P2P的远程控制,就用135端口啦(用别的端口也行,只不过要保证那个端口一定是随系统开关的)


利用openwrt系统路由器和独立IP公网服务器远程唤醒电脑

利用acme.sh和阿里dns接口申请免费通配符证书

#!/bin/bash

#开启alias功能
shopt -s expand_aliases

#安装acme.sh(已安装的请忽略)
#apt-get install socat
#curl https://get.acme.sh | sh -s email=emailname@domain.com

#环境变量
export DOMAIN="example.com"
export Ali_Key="阿里云AccessKeyId"
export Ali_Secret="阿里云AccessKeySecret"

#acme.sh所在路径 别名
alias acme="/usr/local/acme.sh/acme.sh"

#设置默认证书供应商(我选择了zerossl)
acme --set-default-ca --server zerossl #letsencrypt
#签发证书
acme --issue -d ${DOMAIN} -d *.${DOMAIN} --dns dns_ali --keylength 2048


利用acme.sh和阿里dns接口申请免费通配符证书

Ubuntu Linux中修改tinyCore内核,并重新打包ISO

首先在mnt下创建tinyCore

mkdir /mnt/tinyCore

然后挂载ISO

mount -t iso9660 -o loop Core-current.iso /mnt/tinyCore

创建目录tinyCore

mkdir tinyCore

将ISO文件复制出来,以便修改

cp /mnt/tinyCore/* tinyCore/boot/ -r

卸载ISO

umount /mnt/tinyCore
rm -rfv /mnt/tinyCore

进入内核所在目录并修改内核文件名

cd tinyCore/boot/
mv core.gz core.cpio.gz

创建新目录用于存放内核文件,并解包内核

gunzip core.cpio.gz
mkdir newCore
cd newCore
cpio -i -F ../core.cpio
rm -rfv ../core.cpio

自行修改文件

打包并压缩、重命名内核

find . | cpio -o -H newc > ../core.cpio
cd ../
gzip -9 core.cpio
mv core.cpio.gz core.gz

删除临时文件夹

rm -rfv ./newCore/

制作ISO镜像

cd ../

mkisofs -r -V "New Tiny Core" -cache-inodes -J -l \
-b boot/isolinux/isolinux.bin \
-c boot/isolinux/boot.cat \
-no-emul-boot -boot-load-size 4 \
-boot-info-table -o "../new_tiny_core.iso" .

注意:全程在su用户下进行


Ubuntu Linux中修改tinyCore内核,并重新打包ISO

私有化部署koodo-reader

Koodo Reader是一款非常优秀的电脑端电子书阅读器,无账户系统,纯前端实现,轻量,易用,界面美观,支持格式多,本文讲述如何私有化部署.

首先到github上下载源代码,直接ZIP打包下载,链接:https://github.com/koodo-reader/koodo-reader,或者直接用GIT克隆:

git clone https://github.com/koodo-reader/koodo-reader.git

获取源代码后,在源代码根目录执行以下命令安装依赖

yarn

安装完后,可以使用以下命令直接启动

yarn start

也可以使用以下命令生成编译后的程序包,生成结果在build目录中

yarn build

编译后的包直接放在WEB服务器上即可,纯前端,无需数据库,无需其他脚本解释器支持,只需支持HTML即可,编译过程十分消耗内存,并且过程漫长,请耐心等待。

效果图


私有化部署koodo-reader

PHP使用PhpSpreadsheet读取Excel表格

使用composer安装phpspreadsheet库

composer require phpoffice/phpspreadsheet

使用迭代器读取激活的工作表并输出全部单元格内容

<?php
require 'vendor/autoload.php'; // 引入自动加载器
use PhpOffice\PhpSpreadsheet\IOFactory;
 
$spreadsheet = IOFactory::load('path_to_your_file.xlsx'); // 指定 xlsx 文件路径
$worksheet = $spreadsheet->getActiveSheet(); // 获取当前活动工作表
 
// 遍历每一行数据
foreach ($worksheet->getRowIterator() as $row) {
    foreach ($row->getCellIterator() as $cell) {
        echo $cell->getValue(), "\t"; // 输出单元格值(制表符分隔)
    }
    echo "<br>"; // 换行
}
?>

PHP使用PhpSpreadsheet读取Excel表格