分类 分享 下的文章

cloudflare 解析的域名 可以使用泛域名的ssl证书,并且可以直接重定向至https,有了这个之后如果使用lnmp来新建站点,可以不需要勾选添加ssl,并且在实际使用中,会默认使用https连接。

但是对于wordpress来说,新建文章需要站点的url和数据库中的一致。因为这个https实际上不是这个子域的,所以在安装的时候,默认会给你写成http。所以只需要将http改为https即可。

202508291700

需要将 站点地址 改为 https即可。
如果不小心将wordpress地址也改为了https,就好出现重定向过多,导致无法进入后台
这个时候可以连上数据库,修改wp_options表中的site_url字段将https改回http即可。

后端有点问题一直拖到现在,学长在摸鱼,我也闲着无聊先去看下。

主要是python脚本没有跑起来。

  1. 看下原来的代码在哪个地方用到python

我发现之前上传的是我有改过的,可能是因为我有部分的地方改过所以导致了用不了

服务器上面是没有安装python3.11的,所以得装一个python3.11

问了一下gpt,直接就是下了源码然后编译,目前来看还算是比较顺利

离线安装的依赖版本和本地的python版本一致

因为我电脑上的是3.12,服务器上需要的是3.11

所以之前本地打包的依赖服务器的安装不了

现在得先在本地启一个3.11的虚拟环境然后在虚拟环境下再来下载这些依赖

先是用scoop安装一下python311

scoop bucket add versions
scoop install versions/python311

然后创建一个虚拟环境

python311 -m venv py311env

然后激活虚拟环境(我用的是git bash)

source py311env/Scripts/activate

之后再下载依赖

mkdir my_pkgs
cd my_pkgs

pip download pandas scikit-learn keras numpy openpyxl matplotlib mysql-connector-python

然后打包成tar,在服务器上解压,再用pip安装

pip3 install --no-index --find-links=. pandas scikit-learn keras numpy openpyxl matplotlib mysql-connector-python

有点尴尬,忘记了电脑是windows,下的依赖只能是windows用不能给linux用

现在是打算用wsl重复一下上面的步骤

wsl上面需要还是手动编译一个python3.11

先要安装一下编译的依赖:

sudo su # 获取权限
sudo apt-get update
# 随文章进行而更新,依赖应该是全的
sudo apt-get install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget

然后就是编译安装

cd /opt
wget https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz # 下载python
tar -xzf Python-3.11.9.tgz
cd Python-3.11.9

# 安装编译依赖(如果有权限,可以让管理员预装)
# CentOS: yum groupinstall "Development Tools"
# Debian/Ubuntu: apt-get install build-essential

# 编译并安装到自定义目录(不要覆盖系统 Python 2.7)
sudo ./configure --prefix=/opt/python3.11 --enable-optimizations
sudo make -j$(nproc)    # 编译时间较长
sudo make install

配置环境变量:

# 加入环境变量
echo 'export PATH=/opt/python3.11/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

# 验证版本
python3 --version

目前来说还算顺利

后面下载依赖的时候不知道为什么还是下的3.12的版本,可能pip直接安装是这样的?不懂,还是得建一个虚拟环境试下

创建虚拟环境失败,其实之前编译的时候有问题,但是我直接给忽略了,现在看来应该是编译出问题了,感觉wsl好像什么都没有。

问了一个gpt报错,说是因为少了依赖,先下完依赖之后再更新

还是得建一个虚拟环境,不过python的安装倒是顺利,不错。

目前好像是因为说内网的那个linux的版本比较老,一些包不支持,所以得专门下载低版本去安装希望顺利

可以先查看一下支持哪些平台

python3 -m pip debug --verbose

然后对于某一个包可以指定平台下载,例如:

pip download \
  --only-binary=:all: \
  --platform manylinux2014_x86_64 \
  --python-version 311 \
  --implementation cp \
  --abi cp311 \
  Pillow==10.0.1

目前都挺顺利的,但是到了要运行的时候发现内部少了Python 标准库模块 ctypes

应该是编译的问题,问了一下gpt说是服务器少了libffi 开发依赖
所以现在是先让那边的管理员看能不能解决,或者干脆帮忙装一下python3.11,唉。

至少可以先停一会儿了。

后面因为连不了网,他们那边也是没有解决方法,只能是我这里继续。

我查了一下linux版本是Centos7,然后网上找了一个rpm的包

https://ftp.iij.ad.jp/pub/linux/centos-vault/centos/7.7.1908/cr/x86_64/Packages/

https://ftp.iij.ad.jp/pub/linux/centos-vault/centos/7.7.1908/cr/x86_64/Packages/libffi-devel-3.0.13-19.el7.x86_64.rpm

本地安装了一下这个依赖,然后再重新编译,目前貌似没有什么问题,一切顺利

sudo yum install ./*.rpm

装好了之后,重新编译python3之后又运行了一遍脚本,然后补装了一个库,总归是可行了。

之后就是把服务重新启动一下,过一两天看下数据库的数据,如果没有问题的话,这个就解决了,可喜可贺,可喜可贺。

以微调 BERT 进行文本分类为例介绍Google Colab基本使用方式

微调模型的基本流程(以 Transformers 为例)

  1. 准备环境

    • 使用 GPU
    • 安装需要的库(如 transformersdatasetsaccelerate
  2. 加载预训练模型

    • bert-base-uncased, gpt2, llama, chatglm
  3. 准备数据集

    • 本地上传 / 从 Hugging Face 加载 / 自己合成
  4. 设置 Trainer / FineTuning 参数

    • 学习率、epoch、batch size 等
  5. 开始训练(Colab GPU 上)

    • 可以保存权重到 Google Drive
  6. 保存 / 推理 / 导出模型

0. 基本使用

打开colab

url: https://colab.research.google.com/

在导航栏点击file

image-20250701011002698

选择 New notebook in Drive ,后续会保存在你的google drive里

image-20250701012740138

或者在进入网页之后的弹窗里选择 + New notebook

image-20250701011050081

之后会自动创建一个 .ipynb 格式的文件

image-20250701011220403

之后可以在红色框住的地方输入python代码,然后点击左边的黑色开始按钮执行。

例如第一步想要安装一些微调模型必须的python库可以输入

!pip install transformers datasets accelerate

然后点击执行会有如下的反应:

image-20250701011323862

image-20250701011338649

在执行完成之后,原来的开始键旁边会有一个绿色的小勾,提示说运行完成,之后可以在下面查看运行的日志

image-20250701011531432

如果想要隐藏这个日志,可以点击开始键下面的按钮,然后选择第一个 Show/hide output

image-20250701011651038

之后就会将日志进行隐藏,如果想要查看日志,可以再次选择这个选项 Show hidden output

image-20250701011751607


之后想要运行新的python代码可以点击上方的 + Code

image-20250701011955907

点击之后在原来代码框的下方就会出现一个新的代码框

image-20250701012011915

也可以点击 + Text 然后添加一个文本框(markdown格式)作为注释或者对代码的说明

image-20250701012136463

编辑完文字之后点击别处就可以保存,如果想再次编辑只需要双击这个文本框即可

image-20250701012259024

除了在导航栏外,也可以直接将鼠标移动到代码块或者文本块下,会出现两个选项,选择想要的一项即可。

image-20250701012434625

主要代码:

1. 安装库

!pip install transformers>=4.3 datasets accelerate
!pip install --upgrade datasets fsspec

2. 加载预训练模型和 tokenizer

from transformers import AutoTokenizer, AutoModelForSequenceClassification

model_name = "bert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)

3. 加载数据集

from datasets import load_dataset

dataset = load_dataset("imdb")
tokenized = dataset.map(lambda x: tokenizer(x["text"], truncation=True, padding="max_length"), batched=True)
load_dataset("imdb") 中,"imdb" 是 Hugging Face Datasets 库 中的一个 内置数据集名称,表示 IMDB 电影评论数据集,是一个经典的二分类情感分析任务数据集。

4. 使用 Trainer 微调

from transformers import Trainer, TrainingArguments

args = TrainingArguments(
    output_dir="./results",
    per_device_train_batch_size=8,
    per_device_eval_batch_size=8,
    num_train_epochs=2,
    save_steps=500,
    logging_dir='./logs',
    report_to="none",
)

trainer = Trainer(
    model=model,
    args=args,
    train_dataset=tokenized["train"].shuffle().select(range(2000)),  # 小规模训练
    eval_dataset=tokenized["test"].shuffle().select(range(500)),
)

trainer.train()

使用 GPU(Colab 设置)

点击菜单栏「Runtime(运行时) → Change runtime type(更改运行时类型)」,选择 GPU 或 TPU」,训练速度可以大大提高。

数据 & 模型保存

你可以将训练过程中的模型、日志保存在 Google Drive 上:

from google.colab import drive
drive.mount('/content/drive')

# 保存模型
model.save_pretrained("/content/drive/MyDrive/bert_finetuned")
tokenizer.save_pretrained("/content/drive/MyDrive/bert_finetuned")

今天帮忙部署一下实验室接的一个项目的后端
出了几个比较大的问题,好在最后还是成功的完成了工作

第一个就是公司的服务器不能连外部的局域网,所以这就导致了不能使用git从仓库来拉取项目,只能是手动的上传。
他们那边的运维工具是堡垒机,说实话我还是第一次见,觉得很新奇。
和那种直接将服务器ip和账号密码给你的模式不同,他们是有一个统一的终端来保存这些服务器的信息,当选择特定的要运维的服务器的时候可以选择本地或者跳板机的ssh应用连接到服务器。
一开始因为本地的xshell没有配xfrp,然后不能上传文件,在这里卡了很久。
事实上一开始我都不知道服务器不能连外网。
因为不能连外网,所以不能用git来拉取,还有就是不能使用go mod tidy。
说实话这两步恶心了我很久。
对于前一个其实一开始就想过todesk把文件传过去,然后用xfrp传过去。
但是那边用windows应用连接不能访问本地的文件,后面想这个windows应用连接应该就是用堡垒机,或者说跳板机连接。
之后换本地连接,但是本地的xshell没有配xfrp,一开始想的是用rz -E,但是没有安装lrzsz
而且因为是内网所以安装不了。
后来就是我自己尝试安装xfrp,但是发现要使用的话安装7和5都让用(注xshell版本是5),一直提示要更新,更新到8之后确实可以用,但是在xshell界面跳转到xfrp界面时会发现报错,并且连接就掉了(指xfrp)xshell还健在。
其实在安装xfrp的过程中还把机器差点搞崩溃了
幸亏后面冒死重启没事
最后无奈还是求助了那边的运维,后面下午的时候他们装了一个版本为4的xshell和xfrp终于可以用了

下午的时候将go的项目文件上传
上传之后发现了一个大问题就是因为得装依赖,用go mod tidy
这个过程需要联网,所以行不通
后面想到要不就在本地编译一下再上传
但是后来发现由于之前项目负责人留下的技术债,导致在编译的时候有一个文件路径的变量是使用的当前编译环境的路径并且写死。
后面发现修改起来很困难,一度想放弃。
之后没办法在5点多的时候和那边的运维反映,然后他们说要连外网得申请,
找谁申请?谁负责找谁。 ……
后来去找了另外一个公司那边的人,这次干脆说服务器不允许连外网,让我自己想办法解决。

后面想过直接将本地gopath下面的依赖打包,然后传到服务器的gopath,但是还是会强制的使用go download
之后了解了一下知道了有 go mod vendor这一条指令,可以将项目用到的依赖打包
之后只要将vendor文件夹放到服务器项目的根目录下就可以了
不过后面还是出问题了
因为go mod和go sum和我开发的环境对不上,所以少了一些对应版本的依赖
后来发现是因为一开始我为了将项目拖进去,使用的是gitee上下载的zip包,不是本地在开发的
所以可能会有些出路。
后来我想过将go.mod和go.sum直接替换,但是失败了,也尝试过将部分依赖的版本号,手动修改到和开发环境一致,但是也失败了。

最后没办法就在下的master的zip包里运行了一次go mod vendor,然后将这里面的vendor包传到服务器。
最后是成功运行了,但是有报错,后面问了一下学长,主要是sonic包导入有问题。
这个sonic包是字节跳动的一个包,说是有魔法,正常用download下,下不干净,必须要用go get。
其实到这里的时候我的耐心快要没了。
不过最后突然灵光一现,将本地开发环境和vendor文件夹一块打包成zip
传到服务器,然后解压
最后成了。
我觉得成的原因主要就是这最后一次是整体传上去而不是分开的。

后面的任务就简单了,调试一下,配一下日志。我的工作结束了。
之后前端unity的部署,还有数据库方面的检查就是另外两位学长的工作了。
一下子就轻松了。

这次的部署任务还是很开心的,总体来说。因为对于我来说,这也是第一次给企业部署项目,多少也有点激动。也学到了挺多经验的。而且我已经很久没有做过运维性质的活了,真的感觉挺不错。当然这个不错是建立在我成功,并且不用返工的前提下,hhh。