wyywn 发布的文章

きみの目には何が映る もしかしたら無限の宇宙
你的眼中倒映着什么 莫非是无垠的宇宙
そこまで連れていこうか どうさ?
将我带到那里吧 怎么样?

明日も晴れるといいな
要是明天也是晴天就好了
いっそこのままきみを遠くへ奪い去りたいそんな気分
干脆就这样将你掳走 去到海角天涯 强忍着心中的冲动
線香花火よ永遠を刻め 火球のまんまで落ちないで
线香烟火啊 镌刻下永远吧 保持着火球的形状 不要落下
しんしん降る 真夏なのに
明明正值盛夏 却静静下着雪
狂ったのは世界のほうかぼくのほうか教えて
疯狂的是世界还是我 请告诉我
教えて
请告诉我
教えて
告诉我吧
はっとするような桜吹雪が
令人不禁屏息的樱花雪景
いっそこのまま時よ止まって きみが好きなまま大好きなままで
干脆就这样让时间停止 让我一直喜欢着你 保持着最爱你的自己
線香花火よ永遠に爆ぜろ 春眠暁だ
线香烟火啊 永远地绽开吧 现在是春眠之晓
いっそこのまま神話にもなろう 何が起きても立ち向かうぜ
干脆就这样化作神话吧 无论发生什么都正面以对
孤独の果ても虚数の海も越えていけるそんな旅団さ
足以跨越孤独的尽头与虚数之海 组成那般强大的旅团吧
夜明けだ 行こうか
天亮了 一起走吧
It's your secret!


歌手:She is Legend
作词:麻枝准
作曲:麻枝准
翻译:逗之助

过程

今天在配置新服务器时发现一个很奇怪的错误。安装php时,直接运行apt install php-fpm再在nginx配置文件中加入php8.3-fpm.sock的链接,竟然一直告诉我“File not found.”。装了多久服务器,愣是第一次遇到这种错误。重装php-fpm,换源再装什么的都试了个遍都没用。用systemctl status php8.3-fpm.service查看运行状态也一点问题没有。

找了一圈,都给我说是php没装好。没办法,只能自己摸索了。

/run/php目录下面,突然注意到一点:用户。

26c14484c689d69af070b090b0f965ee.png

php8.3-fpm.sock的拥有者www-data一般被用来管理网站内容。但在这里就不同了。我前两天安装nginx改根目录时也遇到同样奇怪的问题。明明位置是对的,目录权限也设成了777,但就是报错404 Not Found。在我跟上一台服务器的nginx配置对比时,我发现只要在nginx.conf内把user一项改掉就好了,随便改成默认账户还是root都行。这里我想可能遇到了同样的问题。于是我找到配置用户的位置(在/etc/php/8.3/fpm/pool.d/www.conf),同样把用户改为默认用户,再次重启服务,成功打印出phpinfo。

结论/解决方案

到php的配置文件www.conf(我的是在/etc/php/8.3/fpm/pool.d/www.conf)将所有的www-data用户改为你的默认账户(除了root账户)即可。

我这里把usergrouplisten.ownerlisten.group都改为了ubuntu

d7703db11d9bb947045f5457dbb24769.png

我在配置nginx时也有类似问题,将/etc/nginx/nginx.conf中第一行的user选项修改掉即可。

2e7304092af8b1e347512003711a0a3d.png


暂时不明白原因。总之记录一下,以免以后又碰到了再懵圈。

安装acme.sh

中国大陆用户(无法访问github)

  1. git clone https://gitee.com/neilpang/acme.sh.git
  2. cd acme.sh
  3. acme.sh --install -m (你的邮箱)

通用方法

curl https://get.acme.sh | sh -s email=(你的邮箱)
63ddb536899777e85aee9328a015d669.png

出现以上字样表明安装成功

签发证书

官网上有http方式和dns方式。若使用dns方式且自动验证,可以签发通配符证书,如*.wyywn.site

HTTP方式DNS方式(自动验证)
简单方便,可配置一些无法设置dns记录的域名较复杂,需要到域名解析商获取API Key和ID
只能配置有限域名可签发通配符证书,后新增域名不用再配置

此处使用dns方式自动验证,http方式和dns方式手动验证较简单,可前往官方Wiki查看。

本人域名解析商为腾讯的DNSPod。前往控制台API密钥页面,切换到DNSPod Token栏目(不能使用腾讯云 API 密钥,否则会失败,见使用 dns_dp 自动申请证书时,出现 invalid domain。我一开始也被坑了),点击创建密钥并起名。生成后保存好IDToken
4d67e40d5621210095a49254e8828d5c.png

执行

export DP_Id="(你的ID)"
export DP_Key="(你的Token)"

签发通配符证书

acme.sh --issue --dns dns_dp -d (你的主域名) -d *.(你的主域名)

acme.sh --issue --dns dns_dp -d wyywn.site -d *.wyywn.site

输入后会运行较长时间

7acf18f1e0cbc36e33a3ecfaafe50139.png
4734422c644cdd0dec6ed9929996d8d9.png

如图,生成了4个文件,证书获取成功。

复制证书

对于nginx,运行

sh acme.sh --install-cert -d (你的主域名) \
--key-file       (你的nginx根目录)/key.pem  \
--fullchain-file (你的nginx根目录)/cert.pem \
--reloadcmd     "service nginx reload"

务必配置reloadcmd,可自动续签
3269197646c447c97669264dadef70c0.png

配置nginx

此时还不能直接访问。要到nignx根目录下,你的配置文件处设置监听配置,将http自动转发到https上。两个server字段分别配置80端口和443端口。配置如下

server {
    listen 80;
    server_name wyywn.site www.wyywn.site;
    return 301 https://$host$request_uri; #将http转发到https
}

server {
    listen 443 ssl;
    server_name wyywn.site www.wyywn.site;

    ssl_certificate cert.pem;
    ssl_certificate_key key.pem;

    …………
}

设置完成后运行service nginx restart,访问http网页发现已经自动跳到https,配置成功。

本文为配置Ubuntu 20.04版本方法,其他版本可能有差异。

配置代理

配置代理而非换源的好处:可以获取到官方服务器最新的版本,镜像服务器可能存在版本更新不及时,证书错误等一系列问题。到时候出问题头都大了。
  • 命令行

编辑文件

sudo nano /etc/profile.d/proxy.sh

写入内容

# set proxy config via profie.d - should apply for all users
export http_proxy="http://127.0.0.1:7890/"
export https_proxy="http://127.0.0.1:7890/"
#export ftp_proxy="http://127.0.0.1:7890/"
export no_proxy="127.0.0.1,localhost"
# For curl
export HTTP_PROXY="http://127.0.0.1:7890/"
export HTTPS_PROXY="http://127.0.0.1:7890/"
#export FTP_PROXY="http://127.0.0.1:7890/"
export NO_PROXY="127.0.0.1,localhost"

设置权限并运行

sudo chmod +x  /etc/profile.d/proxy.sh
source /etc/profile.d/proxy.sh

测试打印

env | grep -i proxy

4096340000.jpg

  • apt包管理器

编辑文件

sudo nano /etc/apt/apt.conf.d/80proxy

写入内容

Acquire::http::proxy "http://127.0.0.1:7890/";
Acquire::https::proxy "http://127.0.0.1:7890/";
#Acquire::ftp::proxy "ftp://127.0.0.1:7890/";

#将127.0.0.1替换为代理服务器的正确IP地址,如果需要身份验证,请设置如下:
#Acquire::http::proxy "http://<username>:<password>@<proxy>:<port>/";
#Acquire::https::proxy "https://<username>:<password>@<proxy>:<port>/";
#Acquire::ftp::proxy "ftp://<username>:<password>@<proxy>:<port>/";
  • conda环境

执行

conda config --set proxy_servers.http http://127.0.0.1:7890
conda config --set proxy_servers.https http://127.0.0.1:7890

使用LVM管理磁盘

优点:可以动态管理磁盘大小,将多块不同硬盘合成为一个连续分区,避免了考虑逻辑卷在硬盘上的位置。
缺点:管理比较麻烦,不能在Windows上访问(包括使用DiskGenius等管理软件)。
  • 调整磁盘大小

使用df -h命令查看信息
3257334219.jpg
可见lvm管理的分区/dev/mapper/ubuntu--vg-ubuntu--lv
使用vgs命令查看信息

root@wyyinspiron:/home/wyy# vgs
    /dev/sdb: open failed: No medium found
    /dev/sdb: open failed: No medium found
    VG        #PV #LV #SN Attr   VSize    VFree 
    ubuntu-vg   1   1   0 wz--n- <109.79g 54.89g

使用vgdisplay命令查看具体信息

root@wyyinspiron:/home/wyy# vgdisplay
    /dev/sdb: open failed: No medium found
    /dev/sdb: open failed: No medium found
    --- Volume group ---
    VG Name               ubuntu-vg
    System ID             
    Format                lvm2
    Metadata Areas        1
    Metadata Sequence No  2
    VG Access             read/write
    VG Status             resizable
    MAX LV                0
    Cur LV                1
    Open LV               1
    Max PV                0
    Cur PV                1
    Act PV                1
    VG Size               <109.79 GiB
    PE Size               4.00 MiB
    Total PE              28105
    Alloc PE / Size       14052 / 54.89 GiB
    Free  PE / Size       14053 / 54.89 GiB
    VG UUID               fhqIse-SP9k-CTgd-oPgw-c1Q5-1JUe-dGp5es

可见当前盘上还有54.89g空间可以分配。
使用lvextend命令对/dev/mapper/ubuntu--vg-ubuntu--lv进行操作,如增加40G。

lvextend -L +40G /dev/mapper/ubuntu--vg-ubuntu--lv

root@wyyinspiron:/home/wyy# lvextend -L +40G /dev/mapper/ubuntu--vg-ubuntu--lv
    /dev/sdb: open failed: No medium found
    /dev/sdb: open failed: No medium found
    Size of logical volume ubuntu-vg/ubuntu-lv changed from 54.89 GiB (14052 extents) to 94.89 GiB (24292 extents).
    Logical volume ubuntu-vg/ubuntu-lv successfully resized.

使用resize2fs命令实行修改

resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

root@wyyinspiron:/home/wyy# resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
    resize2fs 1.45.5 (07-Jan-2020)
    Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required
    old_desc_blocks = 7, new_desc_blocks = 12
    The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 24875008 (4k) blocks long.

再次运行df -h,可见该文件系统容量已扩大。

参考链接:Ubuntu LVM分区扩容:轻松实现磁盘空间扩展,告别空间不足烦恼

前言

一直想本地运行Deepseek等大模型,但苦于主机用的是传统“神卡”rx580,Rocm什么的不支持,跑不起来。于是在万能的某宝找到了这款Tesla P4显卡,400不到的价格配上8G显存,感觉还不错。而且处于Ollama支持的CUDA版本之内。唯一的缺点就是这卡是被动散热,没有风扇。需要自己买风扇来搭配。用的是旧整机,cpu和主板属于50包邮都不值的水平。但跑AI主要靠显卡,内存稍微大点也就够用了。
4077134945.webp

安装

  • 安装前说明

安装时本人参考的说明已经过时,结果遇到了错误,最新版的驱动12.9已经支持P4了。尽信书则不如无书,请根据实际版本来合理选择版本。

  1. 系统

本人使用了Ubuntu 20.04 LTS server作系统,原因是找到了这个系统现成的教程,搭建环境不会那么复杂。(理论上22.04,24.04也能跑,CUDA Tool Kit现在更新了这两个版本,但我没试)

  1. 安装显卡驱动

正常安装后运行lspci | grep -i nvidia,会出现显卡名称如下:
3309178401.jpg
检查可用的驱动ubuntu-drivers devices,可见
1318857945.jpg
这里没有使用sudo ubuntu-drivers autoinstall自动安装驱动,是因为自动安装的驱动可能在后面安装CUDA时出现兼容性问题,而是使用了nvidia-driver-470版本(nvidia-driver-470-server、nvidia-driver-575版本应该也行)。运行sudo apt install nvidia-driver-470,安装完成后重启电脑,再次运行nvidia-smi可以看到显卡信息。注意此时显示的CUDA Version是最高可安装的版本,还未安装CUDA。
551544298.jpg

3.安装 CUDA
访问CUDA Toolkit Downloads,依次选择Linux>x86_64>Ubuntu>20.04>deb_local,网站会自动生成安装步骤。按照此步骤安装即可。
306141839.jpg
对于Driver Installer的选择,传统闭源版本性能更高,因此选择后者进行安装。
1354980924.jpg
理论上安装后输入nvcc -V,会输出CUDA版本,但本人此时运行后提示"
Command 'nvcc' not found"。经查找后,应该是程序没有加入PATH。因此cd /usr/local/cuda/bin进入文件夹,ls后存在nvcc文件,直接将cuda路径加入系统路径即可。
编辑文件:

nano ~/.bashrc

在末尾添加以下内容:

#添加CUDA
export LD_LIBRARY_PATH=/usr/local/cuda/lib
export PATH=$PATH:/usr/local/cuda/bin

更新配置文件:

source ~/.bashrc

再次运行nvcc -V,输出CUDA版本,即为安装成功。
680558350.jpg

  1. 安装cuDNN

访问cuDNN Archive,选择Download cuDNN v8.9.7 (December 5th, 2023), for CUDA 12.x,下载Local Installer for Ubuntu20.04 x86_64 (Deb)。下载时要求注册nvidia开发者账号。按照要求注册即可。
3412043289.jpg
将文件传入电脑,运行

sudo dpkg -i cudnn-local-repo-ubuntu2004-8.9.7.29_1.0-1_amd64.deb

根据提示运行

sudo cp /var/cudnn-local-repo-ubuntu2004-8.9.7.29/cudnn-local-30472A84-keyring.gpg /usr/share/keyrings/

来安装key。可用性将在安装Pytorch后验证。

  1. 安装Ollama

到Ollama官网Download Ollama,选择Linux后出现自动安装脚本。运行

curl -fsSL https://ollama.com/install.sh | sh

来安装。安装后会能够自动检测显卡。Ollama使用很简单,在此不过多赘述。

  1. 安装Anaconda和Pytorch

先下载安装脚本:

wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh

然后赋予可执行权限并执行:

chmod +x Anaconda3-2024.10-1-Linux-x86_64.sh
sh Anaconda3-2024.10-1-Linux-x86_64.sh

按照提示完成安装。
安装时注意安装位置。安装完成后执行conda。若出现conda: command not found,请同样编辑.bashrc文件

nano ~/.bashrc

在末尾添加以下内容:

#替换{path}为自己的安装位置
export PATH="{path}/anaconda3/bin:$PATH"

更新配置文件:

source ~/.bashrc

安装完成后,创建一个pytorch环境,并激活

conda create --name pytorch python=3.10 conda activate pytorch

由于Pytorch官网去除了conda支持,本文参考另一篇文章进行安装。执行以下命令完成PyTorch环境部署

conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia

完成后,运行python进入shell。

>>> import torch
>>> torch.cuda.is_available() #检查cuda是否可用
>>> torch.cuda.get_device_name(0) #查看设备名称
>>> torch.cuda.get_device_properties(0).total_memory #查看显存大小
>>> torch.version.cuda #查看cuda版本
>>> torch.backends.cudnn.is_available() # 检查cudnn是否可用
>>> torch.backends.cudnn.version() # 查看cudnn版本

参考链接