分类 默认分类 下的文章

过程

今天在配置新服务器时发现一个很奇怪的错误。安装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版本

参考链接